diff --git a/examples/physicalmodel.dsp b/examples/physicalmodel.dsp new file mode 100644 index 0000000..6082ae7 --- /dev/null +++ b/examples/physicalmodel.dsp @@ -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; diff --git a/examples/test1.dsp b/examples/synth.dsp similarity index 84% rename from examples/test1.dsp rename to examples/synth.dsp index 04c8599..b40b45b 100644 --- a/examples/test1.dsp +++ b/examples/synth.dsp @@ -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); 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]"); @@ -21,13 +21,13 @@ gate = button("gate [switch:1]"); 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_g = vbargraph("[light_green: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_g = vbargraph("[switchlight_green:3]", 0, 1); diff --git a/src/FaustEngine.cpp b/src/FaustEngine.cpp index 3a09e7e..4242a8f 100644 --- a/src/FaustEngine.cpp +++ b/src/FaustEngine.cpp @@ -63,7 +63,6 @@ struct RackUI : public GenericUI return -1; } } catch (invalid_argument& e) { - cerr << "ERROR : " << e.what() << endl; return -1; } } @@ -96,14 +95,14 @@ struct RackUI : public GenericUI float state = block->switches[index-1]; // Detect upfront if (state == 1.0 && (state != fCheckBoxes[zone].fLast)) { - // Swich button state + // Switch button state *zone = !*zone; // And set the color block->switchLights[index-1][0] = *zone; block->switchLights[index-1][1] = *zone; block->switchLights[index-1][2] = *zone; } - // Always keep previous button state + // Keep previous button state fCheckBoxes[zone].fLast = state; }); } @@ -205,10 +204,14 @@ class FaustEngine : public ScriptEngine { 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); - #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 string error_msg;