summaryrefslogtreecommitdiff
path: root/tran/instrsaxall.alg
diff options
context:
space:
mode:
Diffstat (limited to 'tran/instrsaxall.alg')
-rw-r--r--tran/instrsaxall.alg38
1 files changed, 38 insertions, 0 deletions
diff --git a/tran/instrsaxall.alg b/tran/instrsaxall.alg
new file mode 100644
index 0000000..bcc61ad
--- /dev/null
+++ b/tran/instrsaxall.alg
@@ -0,0 +1,38 @@
+(INSTRSAX-COMPLETE-ALG
+(NAME "sax_all")
+(ARGUMENTS ("double" "freq") ("sound_type" "breath_env") ("sound_type" "freq_env")
+ ("double" "vibrato_freq") ("double" "vibrato_gain")
+ ("sound_type" "reed_stiffness") ("sound_type" "noise")
+ ("sound_type" "blow_pos") ("sound_type" "reed_table_offset")
+ ("rate_type" "sr"))
+(STATE ("struct instr *" "sax" "initInstrument(SAXOFONY, round(sr));
+ noteOn(susp->sax, freq, 1.0);
+ controlChange(susp->sax, 29, SAX_CONTROL_CHANGE_CONST * vibrato_freq);
+ controlChange(susp->sax, 1, SAX_CONTROL_CHANGE_CONST * vibrato_gain);")
+ ("double" "frequency" "freq"))
+(START (min breath_env))
+(MATCHED-SAMPLE-RATE freq_env breath_env
+ reed_stiffness noise blow_pos reed_table_offset)
+(CONSTANT "frequency")
+(ALWAYS-SCALE freq_env breath_env reed_stiffness noise blow_pos reed_table_offset)
+(SAMPLE-RATE "sr")
+(TERMINATE (min breath_env))
+(INNER-LOOP "
+ controlChange(sax, 128, SAX_CONTROL_CHANGE_CONST * breath_env);
+ controlChange(sax, 2, SAX_CONTROL_CHANGE_CONST * reed_stiffness);
+ controlChange(sax, 4, SAX_CONTROL_CHANGE_CONST * noise);
+ controlChange(sax, 11, SAX_CONTROL_CHANGE_CONST * blow_pos);
+ controlChange(sax, 26, SAX_CONTROL_CHANGE_CONST * reed_table_offset);
+ setFrequency(sax, frequency + freq_env);
+ output = (sample_type) tick(sax)")
+(SUPPORT-HEADER "
+ #define SAX_CONTROL_CHANGE_CONST 128
+")
+(SUPPORT-FUNCTIONS "
+ #include \"instr.h\"
+")
+(FINALIZATION "
+ deleteInstrument(susp->sax);
+")
+)
+