X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpretor/preprocessor/faust-0.9.47mr3/examples/faust-stk/uniBar.dsp diff --git a/interpretor/preprocessor/faust-0.9.47mr3/examples/faust-stk/uniBar.dsp b/interpretor/preprocessor/faust-0.9.47mr3/examples/faust-stk/uniBar.dsp deleted file mode 100644 index b3398d5..0000000 --- a/interpretor/preprocessor/faust-0.9.47mr3/examples/faust-stk/uniBar.dsp +++ /dev/null @@ -1,101 +0,0 @@ -declare name "UniBar"; -declare description "Nonlinear Banded Waveguide Models"; -declare author "Romain Michon"; -declare copyright "Romain Michon (rmichon@ccrma.stanford.edu)"; -declare version "1.0"; -declare licence "STK-4.3"; // Synthesis Tool Kit 4.3 (MIT style license); -declare description "This instrument uses banded waveguide. For more information, see Essl, G. and Cook, P. Banded Waveguides: Towards Physical Modelling of Bar Percussion Instruments, Proceedings of the 1999 International Computer Music Conference."; - -import("music.lib"); -import("instrument.lib"); - -//==================== GUI SPECIFICATION ================ - -freq = nentry("h:Basic_Parameters/freq [1][unit:Hz] [tooltip:Tone frequency]",440,20,20000,1); -gain = nentry("h:Basic_Parameters/gain [1][tooltip:Gain (value between 0 and 1)]",0.8,0,1,0.01); -gate = button("h:Basic_Parameters/gate [1][tooltip:noteOn = 1, noteOff = 0]"); - -select = nentry("h:Physical_and_Nonlinearity/v:Physical_Parameters/Excitation_Selector -[2][tooltip:0=Bow; 1=Strike]",0,0,1,1); -integrationConstant = hslider("h:Physical_and_Nonlinearity/v:Physical_Parameters/Integration_Constant -[2][tooltip:A value between 0 and 1]",0,0,1,0.01); -baseGain = hslider("h:Physical_and_Nonlinearity/v:Physical_Parameters/Base_Gain -[2][tooltip:A value between 0 and 1]",1,0,1,0.01); -bowPressure = hslider("h:Physical_and_Nonlinearity/v:Physical_Parameters/Bow_Pressure -[2][tooltip:Bow pressure on the instrument (Value between 0 and 1)]",0.2,0,1,0.01); -bowPosition = hslider("h:Physical_and_Nonlinearity/v:Physical_Parameters/Bow_Position -[2][tooltip:Bow position on the instrument (Value between 0 and 1)]",0,0,1,0.01); - -//==================== MODAL PARAMETERS ================ - -preset = 1; - -nMode(1) = 4; - -modes(1,0) = 1; -basegains(1,0) = pow(0.9,1); -excitation(1,0) = 1*gain/nMode(1); - -modes(1,1) = 2.756; -basegains(1,1) = pow(0.9,2); -excitation(1,1) = 1*gain/nMode(1); - -modes(1,2) = 5.404; -basegains(1,2) = pow(0.9,3); -excitation(1,2) = 1*gain/nMode(1); - -modes(1,3) = 8.933; -basegains(1,3) = pow(0.9,4); -excitation(1,3) = 1*gain/nMode(1); - -//==================== SIGNAL PROCESSING ================ - -//----------------------- Synthesis parameters computing and functions declaration ---------------------------- - -//the number of modes depends on the preset being used -nModes = nMode(preset); - -//bow table parameters -tableOffset = 0; -tableSlope = 10 - (9*bowPressure); - -delayLengthBase = SR/freq; - -//delay lengths in number of samples -delayLength(x) = delayLengthBase/modes(preset,x); - -//delay lines -delayLine(x) = delay(4096,delayLength(x)); - -//Filter bank: bandpass filters (declared in instrument.lib) -radius = 1 - PI*32/SR; -bandPassFilter(x) = bandPass(freq*modes(preset,x),radius); - -//Delay lines feedback for bow table lookup control -baseGainApp = 0.8999999999999999 + (0.1*baseGain); -velocityInputApp = integrationConstant; -velocityInput = velocityInputApp + _*baseGainApp,par(i,(nModes-1),(_*baseGainApp)) :> +; - -//Bow velocity is controled by an ADSR envelope -maxVelocity = 0.03 + 0.1*gain; -bowVelocity = maxVelocity*adsr(0.02,0.005,90,0.01,gate); - -//stereoizer is declared in instrument.lib and implement a stereo spacialisation in function of -//the frequency period in number of samples -stereo = stereoizer(delayLengthBase); - -//----------------------- Algorithm implementation ---------------------------- - -//Bow table lookup (bow is decalred in instrument.lib) -bowing = bowVelocity - velocityInput <: *(bow(tableOffset,tableSlope)) : /(nModes); - -//One resonance -resonance(x) = + : + (excitation(preset,x)*select) : delayLine(x) : *(basegains(preset,x)) : bandPassFilter(x); - -process = - //Bowed Excitation - (bowing*((select-1)*-1) <: - //nModes resonances with nModes feedbacks for bow table look-up - par(i,nModes,(resonance(i)~_)))~par(i,nModes,_) :> + : - //Signal Scaling and stereo - *(14) : stereo : instrReverb;