summaryrefslogtreecommitdiff
path: root/tran/instrclarfreq.alg
diff options
context:
space:
mode:
Diffstat (limited to 'tran/instrclarfreq.alg')
-rw-r--r--tran/instrclarfreq.alg29
1 files changed, 29 insertions, 0 deletions
diff --git a/tran/instrclarfreq.alg b/tran/instrclarfreq.alg
new file mode 100644
index 0000000..3e408b6
--- /dev/null
+++ b/tran/instrclarfreq.alg
@@ -0,0 +1,29 @@
+(INSTRCLAR-FREQ-ALG
+(NAME "clarinet_freq")
+(ARGUMENTS ("double" "freq") ("sound_type" "breath_env") ("sound_type" "freq_env")
+ ("rate_type" "sr"))
+(STATE ("struct instr *" "clar" "initInstrument(CLARINET, round(sr));
+ controlChange(susp->clar, 1, 0.0);")
+ ("int" "temp_ret_value" "noteOn(susp->clar, freq, 1.0)")
+ ("double" "frequency" "freq"))
+(START (min breath_env))
+(NOT-IN-INNER-LOOP "temp_ret_value")
+(CONSTANT "frequency")
+(SAMPLE-RATE "sr")
+(MATCHED-SAMPLE-RATE freq_env breath_env)
+(TERMINATE (min breath_env))
+(INNER-LOOP "
+ controlChange(clar, 128, CLAR_CONTROL_CHANGE_CONST * breath_env);
+ setFrequency(clar, frequency + freq_env);
+ output = (sample_type) tick(clar)")
+(SUPPORT-HEADER "
+ #define CLAR_CONTROL_CHANGE_CONST 128
+")
+(SUPPORT-FUNCTIONS "
+ #include \"instr.h\"
+")
+(FINALIZATION "
+ deleteInstrument(susp->clar);
+")
+)
+