| @@ -0,0 +1,44 @@ | |||||
| import("stdfaust.lib"); | |||||
| import("rack.lib"); | |||||
| frenchBell_ui = pm.frenchBell(strikePosition,strikeCutoff,strikeSharpness,gain,gate) | |||||
| with { | |||||
| strikePosition = nentry("v:frenchBell/[0]strikePosition", 0,0,4,1); | |||||
| strikeCutoff = hslider("v:frenchBell/[1]strikeCutOff", 6500,20,20000,1); | |||||
| strikeSharpness = hslider("v:frenchBell/[2]strikeSharpness", 0.5,0.01,5,0.01); | |||||
| // Connection with VCV knob and switch | |||||
| gain = hslider("v:frenchBell/[3]gain [knob:1]",1,0,1,0.01); | |||||
| gate = button("v:frenchBell/[4]gate [switch:1]"); | |||||
| }; | |||||
| freeverb_demo = _,_ <: (*(g)*fixedgain,*(g)*fixedgain : | |||||
| re.stereo_freeverb(combfeed, allpassfeed, damping, spatSpread)), | |||||
| *(1-g), *(1-g) :> _,_ | |||||
| with{ | |||||
| scaleroom = 0.28; | |||||
| offsetroom = 0.7; | |||||
| allpassfeed = 0.5; | |||||
| scaledamp = 0.4; | |||||
| fixedgain = 0.1; | |||||
| origSR = 44100; | |||||
| parameters(x) = hgroup("Freeverb",x); | |||||
| knobGroup(x) = parameters(vgroup("[0]",x)); | |||||
| // Connection with VCV knobs | |||||
| damping = knobGroup(vslider("[0] Damp [knob:2] [style: knob] [tooltip: Somehow control the | |||||
| density of the reverb.]",0.5, 0, 1, 0.025)*scaledamp*origSR/ma.SR); | |||||
| combfeed = knobGroup(vslider("[1] RoomSize [knob:3] [style: knob] [tooltip: The room size | |||||
| between 0 and 1 with 1 for the largest room.]", 0.5, 0, 1, 0.025)*scaleroom* | |||||
| origSR/ma.SR + offsetroom); | |||||
| spatSpread = knobGroup(vslider("[2] Stereo Spread [knob:4] [style: knob] [tooltip: Spatial | |||||
| spread between 0 and 1 with 1 for maximum spread.]",0.5,0,1,0.01)*46*ma.SR/origSR | |||||
| : int); | |||||
| g = parameters(vslider("[1] Wet [knob:5] [tooltip: The amount of reverb applied to the signal | |||||
| between 0 and 1 with 1 for the maximum amount of reverb.]", 0.3333, 0, 1, 0.025)); | |||||
| }; | |||||
| process = frenchBell_ui <: freeverb_demo; | |||||
| @@ -13,7 +13,7 @@ freq1 = hslider("freq1 [knob:2] [unit:Hz] [scale:lin]", 300, 200, 300, 1); | |||||
| vol2 = hslider("volume2 [knob:3]", 0.1, 0, 1, 0.01); | vol2 = hslider("volume2 [knob:3]", 0.1, 0, 1, 0.01); | ||||
| freq2 = hslider("freq2 [knob:4] [unit:Hz] ", 300, 200, 300, 1); | freq2 = hslider("freq2 [knob:4] [unit:Hz] ", 300, 200, 300, 1); | ||||
| // Using switches ([switch::N] metadata with :N from 1 to 6) | |||||
| // Using switches ([switch::N] metadata with N from 1 to 6) | |||||
| gate = button("gate [switch:1]"); | gate = button("gate [switch:1]"); | ||||
| @@ -21,13 +21,13 @@ gate = button("gate [switch:1]"); | |||||
| check = checkbox("check [switch:2]"); | check = checkbox("check [switch:2]"); | ||||
| // Using bargraph to control lights ([light_red|green|blue:::N] metadata with :N from 1 to 6, to control 3 colors) | |||||
| // Using bargraph to control lights ([light_red|green|blue:N] metadata with N from 1 to 6, to control 3 colors) | |||||
| light_1_r = vbargraph("[light_red:1]", 0, 1); | light_1_r = vbargraph("[light_red:1]", 0, 1); | ||||
| light_1_g = vbargraph("[light_green:1]", 0, 1); | light_1_g = vbargraph("[light_green:1]", 0, 1); | ||||
| light_1_b = vbargraph("[light_blue:1]", 0, 1); | light_1_b = vbargraph("[light_blue:1]", 0, 1); | ||||
| // Using bargraph to control switchlights ([switchlight_red|green|blue:::N] metadata with :N from 1 to 6, to control 3 colors) | |||||
| // Using bargraph to control switchlights ([switchlight_red|green|blue:N] metadata with N from 1 to 6, to control 3 colors) | |||||
| swl_2_r = vbargraph("[switchlight_red:3]", 0, 1); | swl_2_r = vbargraph("[switchlight_red:3]", 0, 1); | ||||
| swl_2_g = vbargraph("[switchlight_green:3]", 0, 1); | swl_2_g = vbargraph("[switchlight_green:3]", 0, 1); | ||||
| @@ -63,7 +63,6 @@ struct RackUI : public GenericUI | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| } catch (invalid_argument& e) { | } catch (invalid_argument& e) { | ||||
| cerr << "ERROR : " << e.what() << endl; | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| } | } | ||||
| @@ -96,14 +95,14 @@ struct RackUI : public GenericUI | |||||
| float state = block->switches[index-1]; | float state = block->switches[index-1]; | ||||
| // Detect upfront | // Detect upfront | ||||
| if (state == 1.0 && (state != fCheckBoxes[zone].fLast)) { | if (state == 1.0 && (state != fCheckBoxes[zone].fLast)) { | ||||
| // Swich button state | |||||
| // Switch button state | |||||
| *zone = !*zone; | *zone = !*zone; | ||||
| // And set the color | // And set the color | ||||
| block->switchLights[index-1][0] = *zone; | block->switchLights[index-1][0] = *zone; | ||||
| block->switchLights[index-1][1] = *zone; | block->switchLights[index-1][1] = *zone; | ||||
| block->switchLights[index-1][2] = *zone; | block->switchLights[index-1][2] = *zone; | ||||
| } | } | ||||
| // Always keep previous button state | |||||
| // Keep previous button state | |||||
| fCheckBoxes[zone].fLast = state; | fCheckBoxes[zone].fLast = state; | ||||
| }); | }); | ||||
| } | } | ||||
| @@ -205,10 +204,14 @@ class FaustEngine : public ScriptEngine { | |||||
| int run(const string& path, const string& script) override | int run(const string& path, const string& script) override | ||||
| { | { | ||||
| #if defined ARCH_MAC | |||||
| #if defined ARCH_LIN | |||||
| string temp_cache = "/var/tmp/VCV_" + generateSHA1(script); | |||||
| #elif defined ARCH_MAC | |||||
| string temp_cache = "/private/var/tmp/VCV_" + generateSHA1(script); | string temp_cache = "/private/var/tmp/VCV_" + generateSHA1(script); | ||||
| #else | |||||
| string temp_cache = "" + generateSHA1(script); | |||||
| #elif defined ARCH_WIN | |||||
| char buf[MAX_PATH+1] = {0}; | |||||
| GetTempPath(sizeof(buf), buf); | |||||
| string temp_cache = string(buf) + "/VCV_" + generateSHA1(script); | |||||
| #endif | #endif | ||||
| string error_msg; | string error_msg; | ||||