From 84471831377ef60d5bf5a5c9e9870a980a50640e Mon Sep 17 00:00:00 2001 From: kevin Date: Sun, 30 Apr 2023 21:28:24 -0400 Subject: [PATCH] Added gutim_full/gutim_perf.cfg, gutim_fill/vel_table/vel_table_perf.json --- src/cwtest/cfg/gutim_full/gutim_perf.cfg | 336 ++++++++++++++++++ .../gutim_full/vel_table/vel_table_perf.json | 77 ++++ 2 files changed, 413 insertions(+) create mode 100644 src/cwtest/cfg/gutim_full/gutim_perf.cfg create mode 100644 src/cwtest/cfg/gutim_full/vel_table/vel_table_perf.json diff --git a/src/cwtest/cfg/gutim_full/gutim_perf.cfg b/src/cwtest/cfg/gutim_full/gutim_perf.cfg new file mode 100644 index 0000000..aed7dbe --- /dev/null +++ b/src/cwtest/cfg/gutim_full/gutim_perf.cfg @@ -0,0 +1,336 @@ +{ + test: { + + preset_sel: { + + params: { + //score_fn: "~/src/cwtest/src/cwtest/cfg/gutim_full/score/temp.csv", + score_fn: "~/temp/shiau_uen_sf/5/play_score.csv", + + record_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/preset_select", + //record_fn: "preset_sel_20220423", + //record_fn: "preset_sel_20220507", + record_fn: "unknown", + + record_fn_ext: "txt", + + flow_proc_dict_fn: "~/src/cwtest/src/cwtest/cfg/gutim_full/flow_proc_dict.cfg", + vel_table_fname: "~/src/cwtest/src/cwtest/cfg/gutim_full/vel_table/vel_table_perf.json" + vel_table_backup_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/vel_table/backup" + + //crossFadeSrate: 48000.0, // TODO: move to flow cfg. and set via 'system default sample rate' + crossFadeCount: 3, + + beg_play_loc: 0, //0, //12431, // coda 11499, + end_play_loc: 0, //59, //14726, // coda 12426, + + score_follower: { + "score_csv_fname": "~/src/cwtest/src/cwtest/cfg/gutim_full/cm_score.csv", + "search_area_locN": 10, + "key_wnd_locN": 7, + }, + + + presets: { + preset_labelL: [ "dry", "a", "b", "c", "d", "f1", "f2", "f3", "f4", "g", "ga", "g1a", "g1d" ], + default_gain: 1.0, + default_wet_dry_gain: 0.5, + default_fade_ms: 50.0, + default_preset: "dry", + + default_master_wet_in_gain: 1.0, + default_master_wet_out_gain: 1.0, + default_master_dry_gain: 1.0, + default_master_sync_delay_ms: 400, // spirio 400 + + }, + + midi_play_record: { + max_midi_msg_count: 32768, + midi_timer_period_micro_sec: 15000, + all_off_delay_ms: 2500, // delay after stop time to turn off all notes + log_in_flag: false, + log_out_flag: false, + half_pedal_flag: false, + min_damper_down_time_ms: 0, + + midi_device_list: [ + { + // SAMPLER + enableFl: true, + + //midi_out_device: "Fastlane", + //midi_out_port: "Fastlane MIDI B", + + //midi_out_device: "MIDIFACE 2x2", + //midi_out_port: "MIDIFACE 2x2 Midi Out 1", + + midi_out_device: "Scarlett 18i20 USB", + midi_out_port: "Scarlett 18i20 USB MIDI 1", + + //midi_out_device: "PipeWire-RT-Event", + //midi_out_port: "input", + + force_damper_down_fl: false, + force_damper_down_threshold: 35, + force_damper_down_velocity: 80, + + // spirio 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 + //vel_table: [ 1, 4, 10, 12, 12, 18, 24, 24, 30, 36, 36, 44, 48, 52, 58, 64, 64, 70, 76, 82, 88, 94,100,106, 112 ] + //vel_table: [ 1, 4, 10, 12, 12, 18, 24, 24, 30, 36, 36, 44, 48, 52, 54, 58, 58, 64, 68, 72, 76, 80, 84, 98, 102 ] + //vel_table: [ 1, 5 10, 16, 21, 26, 32, 37, 42, 48, 53, 58, 64, 69, 74, 80, 85, 90, 96,101,106,112,117,122,127 ] , + + + scale_chord_notes_enable_fl: false, + scale_chord_notes_factor: 0.05, + + }, + { + //SPIRIO + + enableFl: true, + //midi_out_device: "Fastlane", + //midi_out_port: "Fastlane MIDI A", + + //midi_out_device: "MIDIFACE 2x2", + //midi_out_port: "MIDIFACE 2x2 Midi Out 2", + + midi_out_device: "iRig MIDI 2", + midi_out_port: "iRig MIDI 2 MIDI 1", + + //midi_out_device: "PC-300", + //midi_out_port: "PC-300 MIDI 1", + + // p4- + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 + //vel_table: [ 1, 3, 5, 7, 9 , 12, 15, 18, 22, 26, 30, 34, 36, 40, 44, 48, 52, 56, 60, 64, 66, 72, 76, 80, 83 ] + //vel_table: [ 1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 36, 40, 44, 48, 52, 56, 60, 65, 70, 75, 80, 87, 94, 102 ] + //vel_table: [ 1, 4, 10, 12, 12, 18, 24, 24, 30, 36, 36, 44, 48, 52, 54, 58, 58, 64, 68, 72, 76, 80, 84, 98, 102 ] + //vel_table: [ 1, 4, 10, 12, 12, 18, 24, 24, 30, 36, 36, 44, 48, 52, 58, 64, 64, 70, 76, 82, 88, 94,100,106,112 ] + //vel_table: [ 1, 5 10, 16, 21, 26, 32, 37, 42, 48, 53, 58, 64, 69, 74, 80, 85, 90, 96,101,106,112,117,122,127 ] , + + // pedal down velocity input/output mapping + //pedal: { + // up_id: 0, + // up_vel: 0, + // down_id: 127, + // down_vel: 75, + // half_down_id: 64, + // half_down_vel: 43, + // half_up_id: 63, + // half_up_vel: 43 + // + //}, + + + force_damper_down_fl: false, + force_damper_down_threshold: 35, + force_damper_down_velocity: 80, + + scale_chord_notes_enable_fl: false, + scale_chord_notes_factor: 0.5, + }, + + ], + } + }, + + + io: { + callbackMutexTimeOutMs: 100, + } + + ui: { + physRootDir: "~/src/cwtest/src/libcw/html/preset_sel", + dfltPageFn: "index.html", + port: 5687, + rcvBufByteN: 2048, + xmtBufByteN: 2048, + fmtBufByteN: 4096, + websockTimeOutMs: 50, // max time out while blocking for a websock event + idleMsgPeriodMs: 50, // period without messages before an idle message is generated + uiCfgFn: "ui.cfg", // default UI resource description + asyncFl: false + }, + + serial: { + pollPeriodMs: 50, + recvBufByteN: 512, + + array: [ + { + enableFl: false, + asyncFl: false, + label: "port1", // User label + device: "/dev/ttyUSB0", // Serial device name + baud: 115200, + bits: 8, + stop: 1, + parity: "no", + } + ] + + }, + + + midi: { + parserBufByteN: 1024, + asyncFl: true, + + }, + + audio: { + meterMs: 50, // audio meter filter length and meter callback period + threadTimeOutMs: 50, // audio thread cond var time out + + groupL: [ + { + enableFl: true, // (req) + asyncFl: true, + label: "main", // (req) User label + id: 0, // (req) User id (can also be set at runtime) + srate: 48000, // (req) Sample rate used by all devices in this group + dspFrameCnt: 64 // (req) Size of DSP processing buffers + } + ], + + deviceL: [ + { + // System device name + + device: "Scarlett 18i20 USB USB Audio", + //device: "USB Audio CODEC USB Audio", + //device: "HDA Intel PCH CS4208 Analog", + + activeFl: true, // (req) + meterFl: true, // (opt) + label: "main", // (req) User label + userId: 0, // (opt) User id (can also be set at runtime) + framesPerCycle: 512, // (req) Samples per audio device cycle + cycleCnt: 3, // (req) Count of device cycle buffers. + inGroup: "main", // (opt) All devices in a group must be 'ready' to source + outGroup: "main", // (opt) or sink data before an audio callback is made for that group + } + ] + }, + + socket: { + + asyncFl: false, + maxSocketCnt: 10, + recvBufByteCnt: 4096, + threadTimeOutMs: 50, + socketL: [], + } + + + + flow: { + framesPerCycle: 64, // time-domain audio cycles frame per cycle + maxCycleCount: 15000, // 0 disables maxCycleCount + printNetworkFl: false, // print the network instance + printClassDictFl: false, // print the class description dictionary + + + network: { + aud_in: { class: audio_in, args:{ default:{dev_label:"main"} } }, + + // select the first six channels: ivory, mic, vsl + split_in: { class: audio_split, in:{ in:aud_in.out } args:{ default:{select[1,1,1,1,1,1 ]}} } + + // delay the incoming audio signal to sync it with the piano + sync_delay { class: audio_delay, in: { in:split_in.out }, args:{ default:{ delayMs:400 } }} + + // select the first two channels to feed into the transform + sync_split: { class: audio_split, in:{ in:sync_delay.out } args:{ default:{select[1,1]}} } + + mstr_wet_in_gain: { class: audio_gain, in:{ in:sync_split.out } } + + // wet signal processing chain + wet_in_gain: { class: audio_gain, in:{ in:mstr_wet_in_gain.out } }, + pva: { class: pv_analysis, in:{ in:wet_in_gain.out }, args:{ default:{ wndSmpN:512, hopSmpN:128, hzFl:false } } }, + + sd: { class: spec_dist, in:{ in:pva.out }, preset:kc, args:{ bypass:false } }, + pvs: { class: pv_synthesis, in:{ in:sd.out } }, + cmp: { class: compressor, in:{ in:pvs.out }, preset:kc, args:{ bypass:false } }, + wet_out_gain: { class: audio_gain, in:{ in:cmp.out } }, + + //wet_out_gain: { class: audio_gain, in:{ in:pvs.out } }, + + mute_wet: { class: audio_gain, in:{ in:wet_out_gain.out } }, + + // apply the wet/dry gain balance + wd_bal: { class: balance, args{}}, + wet_bal_gain: { class: audio_gain, in:{ in:mute_wet.out, gain:wd_bal.out } }, + dry_bal_gain: { class: audio_gain, in:{ in:sync_split.out, gain:wd_bal.inv_out } }, + + mstr_wet_out_gain: { class: audio_gain, in:{ in:wet_bal_gain.out } } + mstr_dry_out_gain: { class: audio_gain, in:{ in:dry_bal_gain.out } }, + + + // merge the wet/dry signals into a single 4 channel signal + merge: { class: audio_merge, in:{ in0:mstr_wet_out_gain.out, in1:mstr_dry_out_gain.out, in2:mstr_wet_out_gain.out, in3:mstr_dry_out_gain.out } }, + + aout: { class: audio_out, in:{ in:merge.out }, args:{ default:{dev_label:"main"} } }, + + //af_merge { class: audio_merge, in:{ in0:mstr_wet_out_gain.out, in1:sync_delay.out } }, + + //af_out: { class: audioFileOut, in:{ in:af_merge.out }, args:{ default:{fname:"/home/kevin/temp/temp.wav"}}}, + + } + + presets: { + + dry: { mute_wet: { gain:0 } }, + a: { pva:a, sd:a, cmp:a, mute_wet:{ gain:1 } }, + b: { pva:b, sd:b, cmp:b, mute_wet:{ gain:1 } }, + c: { pva:c, sd:c, cmp:c, mute_wet:{ gain:1 } }, + d: { pva:d, sd:d, cmp:d, mute_wet:{ gain:1 } }, + f1: { pva:f_1, sd:f_1, cmp:f_1, mute_wet:{ gain:1 } }, + f2: { pva:f_2, sd:f_2, cmp:f_2, mute_wet:{ gain:1 } }, + f3: { pva:f_3, sd:f_3, cmp:f_3, mute_wet:{ gain:1 } }, + f4: { pva:f_4, sd:f_4, cmp:f_4, mute_wet:{ gain:1 } }, + g: { pva:g, sd:g, cmp:g, mute_wet:{ gain:1 } }, + ga: { pva:g_a sd:g_a, cmp:g_a, mute_wet:{ gain:1 } }, + g1a: { pva:g_1_a sd:g_1_a, cmp:g_1_a, mute_wet:{ gain:1 } }, + g1d: { pva:g_1_d sd:g_1_d, cmp:g_1_d, mute_wet:{ gain:1 } } + + /* + dry: { mute_wet: { gain:0 } }, + a: { sd:a, cmp:a, mute_wet:{ gain:1 } }, + b: { sd:b, cmp:b, mute_wet:{ gain:1 } }, + c: { sd:c, cmp:c, mute_wet:{ gain:1 } }, + d: { sd:d, cmp:d, mute_wet:{ gain:1 } }, + f1: { sd:f_1, cmp:f_1, mute_wet:{ gain:1 } }, + f2: { sd:f_2, cmp:f_2, mute_wet:{ gain:1 } }, + f3: { sd:f_3, cmp:f_3, mute_wet:{ gain:1 } }, + f4: { sd:f_4, cmp:f_4, mute_wet:{ gain:1 } }, + g: { sd:g, cmp:g, mute_wet:{ gain:1 } }, + ga: { sd:g_a, cmp:g_a, mute_wet:{ gain:1 } }, + g1a: { sd:g_1_a, cmp:g_1_a, mute_wet:{ gain:1 } }, + g1d: { sd:g_1_d, cmp:g_1_d, mute_wet:{ gain:1 } } + */ + + /* + dry: { mute_wet: { gain:0 } }, + a: { pva:a, sd:a, mute_wet:{ gain:1 } }, + b: { pva:b, sd:b, mute_wet:{ gain:1 } }, + c: { pva:c, sd:c, mute_wet:{ gain:1 } }, + d: { pva:d, sd:d, mute_wet:{ gain:1 } }, + f1: { pva:f_1, sd:f_1, mute_wet:{ gain:1 } }, + f2: { pva:f_2, sd:f_2, mute_wet:{ gain:1 } }, + f3: { pva:f_3, sd:f_3, mute_wet:{ gain:1 } }, + f4: { pva:f_4, sd:f_4, mute_wet:{ gain:1 } }, + g: { pva:g, sd:g, mute_wet:{ gain:1 } }, + ga: { pva:g_a sd:g_a, mute_wet:{ gain:1 } }, + g1a: { pva:g_1_a sd:g_1_a, mute_wet:{ gain:1 } }, + g1d: { pva:g_1_d sd:g_1_d, mute_wet:{ gain:1 } } + */ + + } + } + + + } + +} diff --git a/src/cwtest/cfg/gutim_full/vel_table/vel_table_perf.json b/src/cwtest/cfg/gutim_full/vel_table/vel_table_perf.json new file mode 100644 index 0000000..09e8cf2 --- /dev/null +++ b/src/cwtest/cfg/gutim_full/vel_table/vel_table_perf.json @@ -0,0 +1,77 @@ +{ + "tables": [ + { + "table": [ + 1, + 5, + 10, + 16, + 21, + 26, + 32, + 37, + 42, + 48, + 53, + 58, + 64, + 69, + 74, + 80, + 85, + 90, + 96, + 101, + 106, + 112, + 117, + 122, + 127 + ], + "enableFl": false, + "defaultFl": true, + "device": "sampler", + "name": "ivory" + }, + { + "table": [ + 1, + 3, + 5, + 7, + 9, + 12, + 15, + 18, + 22, + 26, + 30, + 34, + 36, + 40, + 44, + 48, + 52, + 56, + 60, + 64, + 66, + 72, + 76, + 80, + 83 + ], + "enableFl": false, + "defaultFl": true, + "device": "piano", + "name": "spirio" + } + ], + "incr_pitch": 3, + "max_pitch": 108, + "min_pitch": 22, + "pseq_velocity": 64, + "vseq_pitch": 60, + "note_off_ms": 250, + "note_on_ms": 500 +}