From e1e2e7869d8421fea707877918f56aeca0aac6e9 Mon Sep 17 00:00:00 2001 From: kevin Date: Sat, 10 May 2025 12:00:05 -0400 Subject: [PATCH] perf/perf_caw.cfg : Many changes. --- src/caw/perf/perf_caw.cfg | 532 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 517 insertions(+), 15 deletions(-) diff --git a/src/caw/perf/perf_caw.cfg b/src/caw/perf/perf_caw.cfg index 2fe963c..a5307db 100644 --- a/src/caw/perf/perf_caw.cfg +++ b/src/caw/perf/perf_caw.cfg @@ -43,7 +43,7 @@ procs: { voc: { class:piano_voice, in:{ _.in:_.vctl.out_ }, out:{ _.done_fl:_.vctl.done_fl_ }, - args:{ wtb_fname:"~/temp/wt6/wt_bank.json", wtb_instr:"piano" } }, + args:{ wtb_fname:"~/media/audio/wt6/wt_bank.json", wtb_instr:"piano" } }, //voc: { class:midi_voice, in:{_.in:_.vctl.out_ }, out:{ _.done_fl:_.vctl.done_fl_ }, args:{chCnt:2, gain:0.2 } }, } } @@ -122,7 +122,7 @@ procs: { voc: { class:piano_voice, in:{ _.in:_.vctl.out_ }, out:{ _.done_fl:_.vctl.done_fl_ }, - args:{ wtb_fname:"~/temp/wt6/wt_bank.json", wtb_instr:"piano" } }, + args:{ wtb_fname:"~/media/audio/wt6/wt_bank.json", wtb_instr:"piano" } }, //voc: { class:midi_voice, in:{ _.in:_.vctl.out_ }, out:{ _.done_fl:_.vctl.done_fl_ }, args:{print_fl:false, chCnt:2, gain:0.2 } }, } @@ -256,7 +256,7 @@ procs: { voc: { class:piano_voice, in:{ _.in:_.vctl.out_ }, out:{ _.done_fl:_.vctl.done_fl_ }, - args:{ wtb_fname:"~/temp/wt6/wt_bank.json", wtb_instr:"piano" } }, + args:{ wtb_fname:"~/media/audio/wt6/wt_bank.json", wtb_instr:"piano" } }, pva: { class: pv_analysis, in:{ in:voc.out }, args:{ wndSmpN:512, hopSmpN:128, hzFl:false } }, sd: { class: spec_dist, in:{ in:pva.out }, preset:kc, args:{ bypass:false } }, @@ -321,21 +321,24 @@ network: { procs: { - player: { class:score_player, args:{ fname:"$/score_20240504.csv" }, ui: { create_fl:true } }, + player: { class:score_player, args:{ fname:"$/score_20240504.csv",b_meas:0, e_meas:500, start:true }, ui: { create_fl:true } }, pian_vt:{ class: vel_table, in:{ in:player.out }, args:{ vel_tbl_fname:"$/vel_table_perf.json", vel_tbl_label:"spirio_1" }}, samp_vt:{ class: vel_table, in:{ in:player.out }, args:{ vel_tbl_fname:"$/vel_table_perf.json", vel_tbl_label:"ivory" }}, //stop: { class: halt, in:{ in:player.done_fl }} - //mout: { class: midi_out, in:{ rin:pian_vt.out }, args:{ print_fl:false, dev_label:"Fastlane", port_label:"Fastlane MIDI A" } } - //mout: { class: midi_out, in:{ rin:pian_vt.out }, args:{ print_fl:false, dev_label:"iRig MIDI 2", port_label:"iRig MIDI 2 MIDI 1" } } + //mout: { class: midi_out, in:{ rin:pian_vt.out }, args:{ print_fl:false, dev_label:"Fastlane", port_label:"Fastlane MIDI A" } ui: { create_fl:true }} + mout: { class: midi_out, in:{ rin:pian_vt.out }, args:{ print_fl:false, dev_label:"iRig MIDI 2", port_label:"iRig MIDI 2 MIDI 1" } ui: { create_fl:true }} - vctl: { class: poly_voice_ctl, in:{ in:samp_vt.out }, args:{ voice_cnt:25 } }, - ps: { class: gutim_ps, preset:init, in:{ in:player.out, midi_in_:vctl.out_, reset:player.start }, + vctl: { class: poly_voice_ctl, in:{ in:samp_vt.out }, args:{ voice_cnt:50 } }, + ps: { class: gutim_ps, preset:init, in:{ in:player.out, midi_in_:vctl.out_, reset:player.start, loc_cnt:player.loc_cnt }, + preset: "init", args:{ fname:"$/m1_458_trans_5.txt" }, ui: { create_fl:true } } - + + xform_igain: { class: number, args:{ in:1.0f }, ui: { create_fl:true } }, + voice_poly: { class: poly, in: { @@ -348,9 +351,13 @@ procs: { voc: { class:piano_voice, in:{ _.in:_.vctl.out_ }, out:{ _.done_fl:_.vctl.done_fl_ }, - args:{ wtb_fname:"~/temp/wt6/wt_bank.json", wtb_instr:"piano" } }, - pva: { class: pv_analysis, in:{ in:voc.out, _.wndSmpN:_.ps.wnd_smp_cnt_ }, args:{ wndSmpN:512, hopSmpN:128, hzFl:false } }, + args:{ wtb_fname:"~/media/audio/wt6/wt_bank.json", + wtb_instr:"piano", + rls_coeff: 0.95 } }, + g: { class: audio_gain, in:{ in:voc.out, gain:_.xform_igain.out } }, + pva: { class: pv_analysis, in:{ in:g.out, enable:voc.gate_fl, _.wndSmpN:_.ps.wnd_smp_cnt_ }, args:{ wndSmpN:512, hopSmpN:128, hzFl:false } }, sd: { class: spec_dist, in:{ in:pva.out, + enable:voc.gate_fl, _.ceiling:_.ps.ceiling_, _.expo:_.ps.expo_, _.thresh:_.ps.thresh_, @@ -358,8 +365,9 @@ _.lwr:_.ps.lwr_, _.mix:_.ps.mix_ }, preset:kc, args:{ bypass:false } }, - pvs: { class: pv_synthesis, in:{ in:sd.out } }, + pvs: { class: pv_synthesis, in:{ in:sd.out, enable:voc.gate_fl } }, cmp: { class: compressor, in:{ in:pvs.out, + enable:voc.gate_fl, _.igain:_.ps.c_igain_, _.ogain:_.ps.c_ogain_ }, preset:kc, args:{ bypass:false } }, @@ -387,16 +395,510 @@ // delay the incoming signal to sync it with the piano sync_delay { class: audio_delay, in: { in:merge.out }, args:{ delayMs:400 }} - aout: { class: audio_out, in:{ in:sync_delay.out }, args:{ dev_label:"main" } }, + //aout: { class: audio_out, in:{ in:sync_delay.out }, args:{ dev_label:"main" } }, - //sel_two: { class: audio_split, in:{ in:sync_delay.out } args:{ select[0,0,1,1]} } - //aout: { class: audio_out, in:{ in:sel_two.out0 }, args:{ dev_label:"main" } }, + sel_two: { class: audio_split, in:{ in:sync_delay.out } args:{ select[0,0,1,1]} } + aout: { class: audio_out, in:{ in:sel_two.out0 }, args:{ dev_label:"main" } }, + //af: { class: audio_file_out, in: { in:sync_delay.out }, args:{ fname:"$/out.wav"} } + //aout: { class: audio_out, in:{ in:dry_poly_mix.out }, args:{ dev_label:"main" } }, } } } + ex_06_live_sampler: { + + + network: { + + procs: { + m_in: { class:midi_in }, + + vctl: { class: poly_voice_ctl, in:{ in:m_in.r_out }, args:{ voice_cnt:25 } }, + voice_poly: { + class: poly, + in: { + count:vctl.voice_cnt, + } + + args: { parallel_fl:true } + + network: { + procs: { + voc: { class:piano_voice, in:{ _.in:_.vctl.out_ }, + out:{ _.done_fl:_.vctl.done_fl_ }, + args:{ wtb_fname:"~/media/audio/wt6/wt_bank.json", + wtb_instr:"piano", + rls_coeff: 0.95 } }, + } + } + } + + voice_mix: { class: audio_mix, in:{ in_:voice_poly.voc_.out } args:{ igain_:1.0 }}, + + aout: { class: audio_out, in:{ in:voice_mix.out }, args:{ dev_label:"main" } }, + + + } + } + } + + ex_06_live_sampler_fx: { + + network: { + + procs: { + m_in: { class:midi_in }, + + vctl: { class: poly_voice_ctl, in:{ in:m_in.r_out }, args:{ voice_cnt:25 } }, + ps: { class: gutim_ps, preset:init, in:{ in:m_in.r_out, midi_in_:vctl.out_ }, + preset: "init", + args:{ fname:"$/m1_458_trans_5.txt" }, + ui: { create_fl:true } } + + + xform_igain: { class: number, args:{ in:1.0f }, ui: { create_fl:true } }, + + voice_poly: { + class: poly, + in: { + count:vctl.voice_cnt, + } + + args: { parallel_fl:true } + + network: { + procs: { + + voc: { class:piano_voice, in:{ _.in:_.vctl.out_ }, + // out:{ _.done_fl:_.vctl.done_fl_ }, + args:{ wtb_fname:"~/media/audio/wt6/wt_bank.json", + wtb_instr:"piano", + rls_coeff: 0.95 } }, + + g: { class: audio_gain, in:{ in:voc.out, gain:_.xform_igain.out } }, + pva: { class: pv_analysis, in:{ in:g.out, _.enable:_.vctl.gate_fl_, _.wndSmpN:_.ps.wnd_smp_cnt_ }, args:{ wndSmpN:512, hopSmpN:128, hzFl:false } }, + sd: { class: spec_dist, in:{ in:pva.out, + _.enable:_.vctl.gate_fl_, + _.ceiling:_.ps.ceiling_, + _.expo:_.ps.expo_, + _.thresh:_.ps.thresh_, + _.upr:_.ps.upr_, + _.lwr:_.ps.lwr_, + _.mix:_.ps.mix_ }, preset:kc, args:{ bypass:false } }, + + pvs: { class: pv_synthesis, in:{ in:sd.out, _.enable:_.vctl.gate_fl_ } }, + cmp: { class: compressor, in:{ in:pvs.out, + _.enable:_.vctl.gate_fl_, + _.igain:_.ps.c_igain_, + _.ogain:_.ps.c_ogain_ }, preset:kc, args:{ bypass:false } }, + + ogain: { class: audio_gain, in:{ in:cmp.out, _.gain:_.ps.dry_gain_ } }, + + vdet: { class: voice_detector, in:{ in:ogain.out, _.enable_fl:_.vctl.gate_fl_ } out:{ _.done_fl:_.vctl.done_fl_ }, args:{ rls_thresh:0.01 } } + + } + } + } + + voice_mix: { class: audio_mix, in:{ in_:voice_poly.ogain_.out } args:{ igain_:1.0 }}, + + aout: { class: audio_out, in:{ in:voice_mix.out }, args:{ dev_label:"main" } }, + + + } + } + } + + ex_07_score_follow : { + + //non_real_time_fl:true, + //dur_limit_secs:20.0, + + network: { + procs: { + mf: { class:midi_file, args:{ alt_csv_fname:"$/taka_1_5_midi.csv" }, ui: { create_fl:true } }, + sf: { class:score_follower_2, in:{ in:mf.r_out, reset_trigger:mf.start }, args:{ b_loc:4232, e_loc:4707, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + samp_vt:{ class: vel_table, in:{ in:sf.out }, args:{ vel_tbl_fname:"$/vel_table_perf.json", vel_tbl_label:"ivory" }}, + + } + } + } + + ex_08_score_follow : { + + //non_real_time_fl:true, + //dur_limit_secs:10.0, + //profile_fl:true, + + network: { + procs: { + /* + flist: { class:string_list, ui:{ create_fl:true }, args:{ + list:[ "/home/kevin/src/currawong/audio/shiau_uen/record_3/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_4/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_5/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_6/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_7/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_11/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_12/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_13/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_15/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_16/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_17/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_18/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_20/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_21/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_22/fix_midi.csv", + "/home/kevin/src/currawong/audio/shiau_uen/record_23/fix_midi.csv"] + } + } + mf: { class:midi_file, in:{ alt_csv_fname:flist.out}, ui: { create_fl:true } }, + sf: { class:score_follower_2, in:{ in:mf.r_out, reset_trigger:mf.start }, args:{ b_loc:481, e_loc:540, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + */ + /* + flist: { class:string_list, ui:{ create_fl:true }, args:{ + list:[ "/home/kevin/temp/arseniy_1/record_0/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_1/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_2/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_3/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_4/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_5/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_6/midi_am_sf.csv"] + } + } + mf: { class:midi_file, in:{ alt_csv_fname:flist.out}, ui: { create_fl:true } }, + sf: { class:score_follower_2, in:{ in:mf.r_out, reset_trigger:mf.start }, args:{ b_loc:481, e_loc:540, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + */ + /* + flist: { class:string_list, ui:{ create_fl:true }, args:{ + list:[ "/home/kevin/temp/arseniy_1/record_7/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_8/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_9/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_10/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_11/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_12/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_13/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_14/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_15/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_16/midi_am_sf.csv"] + } + } + mf: { class:midi_file, in:{ alt_csv_fname:flist.out}, ui: { create_fl:true } }, + sf: { class:score_follower_2, in:{ in:mf.r_out, reset_trigger:mf.start }, args:{ b_loc:776, e_loc:807, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + */ + /* + flist: { class:string_list, ui:{ create_fl:true }, args:{ + list:[ "/home/kevin/temp/arseniy_1/record_17/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_18/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_19/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_20/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_21/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_22/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_23/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_24/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_25/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_26/midi_am_sf.csv"] + } + } + mf: { class:midi_file, in:{ alt_csv_fname:flist.out}, ui: { create_fl:true } }, + sf: { class:score_follower_2, in:{ in:mf.r_out, reset_trigger:mf.start }, args:{ b_loc:2455, e_loc:2608, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + */ + + flist: { class:string_list, ui:{ create_fl:true }, args:{ + list:[ "/home/kevin/temp/arseniy_1/record_27/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_28/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_29/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_30/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_31/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_32/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_33/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_34/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_35/midi_am_sf.csv"] + } + } + mf: { class:midi_file, in:{ alt_csv_fname:flist.out}, ui: { create_fl:true } }, + sf: { class:score_follower_2, in:{ in:mf.r_out, reset_trigger:mf.start }, args:{ b_loc:3967, e_loc:4124, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + + /* + flist: { class:string_list, ui:{ create_fl:true }, args:{ + list:[ "/home/kevin/temp/arseniy_1/record_36/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_37/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_38/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_39/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_40/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_41/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_42/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_43/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_44/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_45/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_46/midi_am_sf.csv"] + } + } + mf: { class:midi_file, in:{ alt_csv_fname:flist.out}, ui: { create_fl:true } }, + sf: { class:score_follower_2, in:{ in:mf.r_out, reset_trigger:mf.start }, args:{ b_loc:6106, e_loc:6167, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + */ + /* + flist: { class:string_list, ui:{ create_fl:true }, args:{ + list:[ "/home/kevin/temp/arseniy_1/record_47/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_48/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_49/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_50/midi_am_sf.csv", + "/home/kevin/temp/arseniy_1/record_51/midi_am_sf.csv"] + } + } + mf: { class:midi_file, in:{ alt_csv_fname:flist.out}, ui: { create_fl:true } }, + sf: { class:score_follower_2, in:{ in:mf.r_out, reset_trigger:mf.start }, args:{ b_loc:7702, e_loc:7825, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + */ + + //mf: { class:midi_file, args:{ start:true, alt_csv_fname:"/home/kevin/temp/arseniy_1/record_25/midi_am_sf.csv"}, ui: { create_fl:true } }, + //sf: { class:score_follower_2, in:{ in:mf.r_out, reset_trigger:mf.start }, args:{ b_loc:2455, e_loc:2608, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + + samp_vt:{ class: vel_table, in:{ in:sf.out }, args:{ vel_tbl_fname:"$/vel_table_perf.json", vel_tbl_label:"ivory" }}, + pian_vt:{ class: vel_table, in:{ in:sf.out }, args:{ vel_tbl_fname:"$/vel_table_perf.json", vel_tbl_label:"spirio_1" }}, + + //mout: { class: midi_out, in:{ rin:mf.r_out }, args:{ print_fl:false, dev_label:"iRig MIDI 2", port_label:"iRig MIDI 2 MIDI 1" } ui: { create_fl:true }} + //mout: { class: midi_out, in:{ rin:pian_vt.out }, args:{ print_fl:false, dev_label:"Fastlane", port_label:"Fastlane MIDI A" } } + + vctl: { class: poly_voice_ctl, in:{ in:samp_vt.out , reset:mf.start}, args:{ voice_cnt:20 } }, + ps: { class: gutim_ps, preset:init, in:{ in:sf.out, midi_in_:vctl.out_, reset:mf.start, loc_cnt:sf.loc_cnt }, + preset: "init", + args:{ fname:"$/m1_458_trans_5.txt" }, + ui: { create_fl:true } } + + xform_igain: { class: number, args:{ in:1.0f }, ui: { create_fl:true } }, + + voice_poly: { + class: poly, + in: { count:vctl.voice_cnt }, + args: { parallel_fl:true, thread_cnt:8, cpu_affinityL:[2,3,4,6,8,9,10,11] }, + + network: { + procs: { + voc: { class:piano_voice, in:{ _.in:_.vctl.out_ }, + out:{ _.done_fl:_.vctl.done_fl_ }, + args:{ wtb_fname:"~/media/audio/wt6/wt_bank.json", + wtb_instr:"piano", + rls_coeff: 0.99 } }, + + g: { class: audio_gain, in:{ in:voc.out, gain:_.xform_igain.out } }, + pva: { class: pv_analysis, in:{ in:g.out, enable:voc.gate_fl, _.wndSmpN:_.ps.wnd_smp_cnt_ }, args:{ wndSmpN:512, hopSmpN:128, hzFl:false } }, + sd: { class: spec_dist, in:{ in:pva.out, + enable:voc.gate_fl, + _.ceiling:_.ps.ceiling_, + _.expo:_.ps.expo_, + _.thresh:_.ps.thresh_, + _.upr:_.ps.upr_, + _.lwr:_.ps.lwr_, + _.mix:_.ps.mix_ }, preset:kc, args:{ bypass:false } }, + + pvs: { class: pv_synthesis, in:{ in:sd.out, enable:voc.gate_fl } }, + cmp: { class: compressor, in:{ in:pvs.out, + enable:voc.gate_fl, + _.igain:_.ps.c_igain_, + _.ogain:_.ps.c_ogain_ }, preset:kc, args:{ bypass:false } }, + + ogain: { class: audio_gain, in:{ in:cmp.out, _.gain:_.ps.dry_gain_ } }, + } + + } + } + + + //am: { class: audio_merge, in: { in_:voice_poly.voc_.out} } + //am: { class: audio_merge, in: { in_:voice_poly.ogain_.out} } + //af: { class: audio_file_out, in: { in:am.out }, args:{ fname:"$/out_fx.wav"} } + + wet_poly_mix: { class: audio_mix, in:{ in_:voice_poly.ogain_.out } args:{ igain_:1.0 }}, + dry_poly_mix: { class: audio_mix, in:{ in_:voice_poly.voc_.out} args:{ igain_:1.0 }}, + + + // apply the wet/dry gain balance + wd_bal: { class: balance, args{}}, + wet_bal_gain: { class: audio_gain, in:{ in:wet_poly_mix.out, gain:wd_bal.out } }, + dry_bal_gain: { class: audio_gain, in:{ in:dry_poly_mix.out, gain:wd_bal.inv_out } }, + + mstr_wet_out: { class: audio_gain, in:{ in:wet_bal_gain.out }, args:{ gain:0.5 } } + mstr_dry_out: { class: audio_gain, in:{ in:dry_bal_gain.out }, args:{ gain:0.5 } }, + + + // merge the wet/dry signals into a single 4 channel signal + merge: { class: audio_merge, in:{ in0:mstr_wet_out.out, in1:mstr_dry_out.out } }, + + // delay the incoming signal to sync it with the piano + sync_delay { class: audio_delay, in: { in:merge.out }, args:{ delayMs:400 }} + + aout: { class: audio_out, in:{ in:sync_delay.out }, args:{ dev_label:"main" } }, + + //sel_two: { class: audio_split, in:{ in:sync_delay.out } args:{ select[0,0,1,1]} } + //aout: { class: audio_out, in:{ in:sel_two.out0 }, args:{ dev_label:"main" } }, + + //wd_mix: { class:audio_mix, in:{ in0:mstr_wet_out.out, in1:mstr_dry_out.out } args:{igain_:0.8}} + + //aout: { class: audio_out, in:{ in:wd_mix.out }, args:{ dev_label:"main" } }, + + //af: { class: audio_file_out, in: { in:wd_mix.out }, args:{ fname:"$/out.wav"} } + + //aout: { class: audio_out, in:{ in:dry_poly_mix.out }, args:{ dev_label:"main" } }, + + + + } + } + } + + ex_09_string_list : { + + network: { + procs: { + slst: { class:string_list, ui:{ create_fl:true }, args:{ + list:[ "/home/kevin/src/currawong/audio/workshop/beck1/record_0/midi.csv", + "/home/kevin/src/currawong/audio/workshop/beck1/record_1/midi.csv", + "/home/kevin/src/currawong/audio/workshop/beck1/record_2/midi.csv"] + } + } + + print: { class: print, in: { in:slst.out, eol_fl:slst.out }, args:{ text:["string","output"] }} + } + } + } + + + ex_10_sampler_playback : { + + non_real_time_fl:true, + dur_limit_secs:60.0, + profile_fl:true, + + network: { + procs: { + + + mf: { class:midi_file, args:{ start:true, alt_csv_fname:"/home/kevin/src/currawong/audio/workshop/beck1/record_2/fix_midi.csv"}, ui: { create_fl:true } }, + //mf: { class:midi_file, args:{ start:true, alt_csv_fname:"$/test_0.csv"}, ui: { create_fl:true } }, + vctl: { class: poly_voice_ctl, in:{ in:mf.r_out }, args:{ voice_cnt:50 } }, + + voice_poly: { + class: poly, + in: { + count:vctl.voice_cnt, + } + + args: { parallel_fl:true } + + network: { + procs: { + voc: { class:piano_voice, in:{ _.in:_.vctl.out_ }, + out:{ _.done_fl:_.vctl.done_fl_ }, + args:{ wtb_fname:"~/media/audio/wt6/wt_bank.json", + wtb_instr:"piano", + rls_coeff: 0.99, + rls_thresh: 0.01} }, + } + + } + } + + dry_poly_mix: { class: audio_mix, in:{ in_:voice_poly.voc_.out} args:{ igain_:1.0 }}, + af: { class: audio_file_out, in: { in:dry_poly_mix.out }, args:{ fname:"$/out.wav"} } + + //am: { class: audio_merge, in: { in_:voice_poly.voc_.out} } + //af: { class: audio_file_out, in: { in:am.out }, args:{ fname:"$/out.wav"} } + + + //aout: { class: audio_out, in:{ in:dry_poly_mix.out }, args:{ dev_label:"main" } }, + + } + } + } + + ex_11_score_follow_rt : { + + //non_real_time_fl:true, + //dur_limit_secs:10.0, + + network: { + procs: { + + min: { class:midi_in } + + + sf: { class:score_follower_2, in:{ in:min.r_out }, args:{ b_loc:7702, e_loc:7825, score_fname:"$/score_20240504.csv"}, ui: { create_fl:true } } + samp_vt:{ class: vel_table, in:{ in:sf.out }, args:{ vel_tbl_fname:"$/vel_table_perf.json", vel_tbl_label:"ivory" }}, + + //pian_vt:{ class: vel_table, in:{ in:sf.out }, args:{ vel_tbl_fname:"$/vel_table_perf.json", vel_tbl_label:"spirio_1" }}, + //mout: { class: midi_out, in:{ rin:pian_vt.out }, args:{ print_fl:false, dev_label:"iRig MIDI 2", port_label:"iRig MIDI 2 MIDI 1" } ui: { create_fl:true }} + + vctl: { class: poly_voice_ctl, in:{ in:samp_vt.out, reset:sf.reset_trigger }, args:{ voice_cnt:50 } }, + ps: { class: gutim_ps, preset:init, in:{ in:sf.out, midi_in_:vctl.out_, reset:sf.reset_trigger, loc_cnt:sf.loc_cnt }, + preset: "init", + args:{ fname:"$/m1_458_trans_5.txt" }, + ui: { create_fl:true } } + + xform_igain: { class: number, args:{ in:1.0f }, ui: { create_fl:true } }, + + voice_poly: { + class: poly, + in: { + count:vctl.voice_cnt, + } + + args: { parallel_fl:true } + + network: { + procs: { + voc: { class:piano_voice, in:{ _.in:_.vctl.out_ }, + out:{ _.done_fl:_.vctl.done_fl_ }, + args:{ wtb_fname:"~/media/audio/wt6/wt_bank.json", + wtb_instr:"piano", + rls_coeff: 0.97 } }, + g: { class: audio_gain, in:{ in:voc.out, gain:_.xform_igain.out } }, + pva: { class: pv_analysis, in:{ in:g.out, enable:voc.gate_fl, _.wndSmpN:_.ps.wnd_smp_cnt_ }, args:{ wndSmpN:512, hopSmpN:128, hzFl:false } }, + sd: { class: spec_dist, in:{ in:pva.out, + enable:voc.gate_fl, + _.ceiling:_.ps.ceiling_, + _.expo:_.ps.expo_, + _.thresh:_.ps.thresh_, + _.upr:_.ps.upr_, + _.lwr:_.ps.lwr_, + _.mix:_.ps.mix_ }, preset:kc, args:{ bypass:false } }, + + pvs: { class: pv_synthesis, in:{ in:sd.out, enable:voc.gate_fl } }, + cmp: { class: compressor, in:{ in:pvs.out, + enable:voc.gate_fl, + _.igain:_.ps.c_igain_, + _.ogain:_.ps.c_ogain_ }, preset:kc, args:{ bypass:false } }, + + ogain: { class: audio_gain, in:{ in:cmp.out, _.gain:_.ps.dry_gain_ } }, + } + + } + } + + wet_poly_mix: { class: audio_mix, in:{ in_:voice_poly.ogain_.out } args:{ igain_:1.0 }}, + dry_poly_mix: { class: audio_mix, in:{ in_:voice_poly.voc_.out} args:{ igain_:1.0 }}, + + + // apply the wet/dry gain balance + wd_bal: { class: balance, args{}}, + wet_bal_gain: { class: audio_gain, in:{ in:wet_poly_mix.out, gain:wd_bal.out } }, + dry_bal_gain: { class: audio_gain, in:{ in:dry_poly_mix.out, gain:wd_bal.inv_out } }, + + mstr_wet_out: { class: audio_gain, in:{ in:wet_bal_gain.out }, args:{ gain:0.5 } } + mstr_dry_out: { class: audio_gain, in:{ in:dry_bal_gain.out }, args:{ gain:0.5 } }, + + + // merge the wet/dry signals into a single 4 channel signal + merge: { class: audio_merge, in:{ in0:mstr_wet_out.out, in1:mstr_dry_out.out } }, + + aout: { class: audio_out, in:{ in:merge.out }, args:{ dev_label:"main" } }, + + + + } + } + } } \ No newline at end of file