cwtest/cfg : Many updates
This commit is contained in:
parent
0dd460f33f
commit
a9ddce7877
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,6 +1,10 @@
|
||||
# directories to ignore
|
||||
libcw
|
||||
backup
|
||||
data
|
||||
data1
|
||||
data_perf_vel_study
|
||||
midi_record
|
||||
|
||||
.deps
|
||||
autom4te.cache
|
||||
|
166
src/cwtest/cfg/audio_midi_record.cfg
Normal file
166
src/cwtest/cfg/audio_midi_record.cfg
Normal file
@ -0,0 +1,166 @@
|
||||
{
|
||||
test: {
|
||||
audio_midi:
|
||||
{
|
||||
record_dir: "/home/kevin/temp/shiau_uen",
|
||||
//record_dir: "/home/kevin/src/currawong/audio/video_trailer/beck",
|
||||
//record_dir: "/home/kevin/src/currawong/audio/workshop/beck2",
|
||||
record_folder: "record",
|
||||
record_fn_ext: "am",
|
||||
max_midi_msg_count: 32768,
|
||||
//midi_timer_period_micro_sec: 15000,
|
||||
//midi_out_device: "Fastlane",
|
||||
//midi_out_port: "Fastlane MIDI A",
|
||||
audio_in_ch_map: [4 5 ],
|
||||
audio_out_ch_map: [0, 1 ]
|
||||
|
||||
midi_play_record: {
|
||||
max_midi_msg_count: 32768,
|
||||
midi_timer_period_micro_sec: 15000,
|
||||
all_off_delay_ms: 0, // 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: [
|
||||
// piano
|
||||
{
|
||||
enableFl: true,
|
||||
//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: "iRig MIDI 2",
|
||||
midi_out_port: "iRig MIDI 2 MIDI 1",
|
||||
|
||||
//midi_out_device: "Fastlane",
|
||||
//midi_out_port: "Fastlane MIDI A",
|
||||
|
||||
force_damper_down_fl: false,
|
||||
force_damper_down_threshold: 35,
|
||||
force_damper_down_velocity: 127,
|
||||
|
||||
// do not play damper values that are in this range
|
||||
damper_dead_band_enable_fl: false,
|
||||
damper_dead_band_min_value: 1,
|
||||
damper_dead_band_max_value: 30,
|
||||
|
||||
//midi_out_device: "PipeWire-RT-Event",
|
||||
//midi_out_port: "input",
|
||||
|
||||
// pedal down velocity input/output mapping
|
||||
//pedal: {
|
||||
// down_id: 127,
|
||||
// down_vel: 75,
|
||||
// half_down_id: 64,
|
||||
// half_down_vel: 43,
|
||||
// half_up_id: 63,
|
||||
// half_up_vel: 43
|
||||
//
|
||||
//},
|
||||
|
||||
// 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
|
||||
// spirio 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 ] ,
|
||||
|
||||
//scale_chord_notes_enable_fl: true,
|
||||
//scale_chord_notes_factor: 0.5,
|
||||
|
||||
}
|
||||
//{ midi_out_device: "PipeWire-RT-Event", midi_out_port: "input" },
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
io: {
|
||||
callbackMutexTimeOutMs: 100,
|
||||
}
|
||||
|
||||
ui: {
|
||||
physRootDir: "/home/kevin/src/cwtest/src/libcw/html/audio_midi",
|
||||
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/ttyACM0", // Serial device name
|
||||
baud: 38400,
|
||||
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",
|
||||
//device: "ICUSBAUDIO7D USB Audio",
|
||||
|
||||
enableFl: true, // (req)
|
||||
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: [],
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
366
src/cwtest/cfg/bkgd.cfg
Normal file
366
src/cwtest/cfg/bkgd.cfg
Normal file
@ -0,0 +1,366 @@
|
||||
{
|
||||
test: {
|
||||
|
||||
preset_sel: {
|
||||
|
||||
params: {
|
||||
//score_fn: "~/src/currawong/projects/score_proc/data/play_file.csv",
|
||||
score_fn: "~/src/cwtest/src/cwtest/cfg/preset_sel/score/20220423/temp.csv",
|
||||
//score_fn: "~/src/currawong/audio/workshop/beck2/record_2/play_score.csv",
|
||||
|
||||
record_dir: "~/src/cwtest/src/cwtest/cfg/preset_sel/preset_sel_fragments",
|
||||
record_fn: "m350-458_bkgd_audio_file", //"m302-325",
|
||||
record_fn_ext: "txt",
|
||||
|
||||
flow_proc_dict_fn: "~/src/cwtest/src/cwtest/cfg/flow_proc_dict.cfg",
|
||||
|
||||
crossFadeSrate: 48000.0, // TODO: move to flow cfg. and set via 'system default sample rate'
|
||||
crossFadeCount: 3,
|
||||
|
||||
beg_play_loc: 12489, // 302 9187, // coda 11499,
|
||||
end_play_loc: 14726, // 10109, // coda 12426,
|
||||
|
||||
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: 500.0,
|
||||
default_preset: "dry",
|
||||
|
||||
default_master_wet_in_gain: 1.0,
|
||||
default_master_wet_out_gain: 0.4,
|
||||
default_master_dry_gain: 1.0,
|
||||
default_master_sync_delay_ms: 0, // 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: 250,
|
||||
|
||||
midi_device_list: [
|
||||
// sampler
|
||||
{
|
||||
enableFl: true,
|
||||
|
||||
//midi_out_device: "Fastlane",
|
||||
//midi_out_port: "Fastlane MIDI A",
|
||||
|
||||
//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",
|
||||
|
||||
force_damper_down_fl: false,
|
||||
force_damper_down_threshold: 35,
|
||||
force_damper_down_velocity: 80,
|
||||
|
||||
//midi_out_device: "PipeWire-RT-Event",
|
||||
//midi_out_port: "input",
|
||||
|
||||
// pedal down velocity input/output mapping
|
||||
/*
|
||||
pedal: {
|
||||
down_id: 127,
|
||||
down_vel: 75,
|
||||
half_down_id: 64,
|
||||
half_down_vel: 43,
|
||||
half_up_id: 63,
|
||||
half_up_vel: 43
|
||||
|
||||
},
|
||||
*/
|
||||
|
||||
// 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,
|
||||
|
||||
},
|
||||
// piano
|
||||
{
|
||||
|
||||
enableFl: true,
|
||||
midi_out_device: "Fastlane",
|
||||
midi_out_port: "Fastlane MIDI B",
|
||||
//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",
|
||||
|
||||
//midi_out_device: "PipeWire-RT-Event",
|
||||
//midi_out_port: "input" ,
|
||||
|
||||
|
||||
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
|
||||
|
||||
},
|
||||
|
||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 34
|
||||
//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 ] ,
|
||||
|
||||
force_damper_down_fl: false,
|
||||
force_damper_down_threshold: 35,
|
||||
force_damper_down_velocity: 80,
|
||||
|
||||
scale_chord_notes_enable_fl: true,
|
||||
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: false,
|
||||
|
||||
},
|
||||
|
||||
audio: {
|
||||
meterMs: 50, // audio meter filter length and meter callback period
|
||||
threadTimeOutMs: 50, // audio thread cond var time out
|
||||
|
||||
|
||||
files: [
|
||||
{
|
||||
enableFl: true,
|
||||
device_label:"my_audio_io_file",
|
||||
|
||||
//in_fname: "/home/kevin/temp/coda_0_a_new.wav",
|
||||
//in_rewindow_on_start_fl: true,
|
||||
|
||||
out_fname: "/home/kevin/temp/temp.wav",
|
||||
out_rewind_on_start_fl: true,
|
||||
out_ch_count: 6,
|
||||
|
||||
}
|
||||
]
|
||||
|
||||
groupL: [
|
||||
{
|
||||
enableFl: true, // (req)
|
||||
asyncFl: true, // (req) Use an asynchronous callback
|
||||
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",
|
||||
//device: "ICUSBAUDIO7D USB Audio"
|
||||
|
||||
enableFl: true, // (req)
|
||||
meterFl: true, // (opt)
|
||||
label: "dev", // (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
|
||||
},
|
||||
{
|
||||
// System device name
|
||||
device: "my_audio_io_file",
|
||||
clockSrcDev: "dev",
|
||||
syncToClockSrcDevInputFl: true, // false = sync to clockSrcDev output
|
||||
|
||||
enableFl: true, // (req)
|
||||
meterFl: false, // (opt)
|
||||
label: "dev_file", // (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_0: {
|
||||
framesPerCycle:64,
|
||||
maxCycleCount:15000,
|
||||
printNetworkFl: false, // print the network instance
|
||||
printClassDictFl: false, // print the class description dictionary
|
||||
|
||||
network: {
|
||||
srcFn: { class: audioFileIn, argLabel:"default", args:{ default:{fname:"/home/kevin/src/currawong/audio/pianist_excerpt/pianist.wav", eofFl:true } } },
|
||||
dstFn: { class: audioFileOut, in:{ in:srcFn.out }, args:{ default:{fname:"/home/kevin/temp/audio_flow_out_1.wav"} } },
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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:"dev"} } },
|
||||
|
||||
// ivory dry
|
||||
ivory: { class: audio_split, in:{ in:aud_in.out } args:{ default:{select[1,1,0,0]}} }
|
||||
|
||||
vsl: { class: audio_split, in:{ in:aud_in.out } args:{ default:{select[0,0,1,1]}} }
|
||||
|
||||
mstr_wet_in_gain: { class: audio_gain, in:{ in:ivory.out }, args:{}}
|
||||
|
||||
// wet signal processing chain
|
||||
wet_in_gain: { class: audio_gain, in:{ in:mstr_wet_in_gain.out }, args:{}},
|
||||
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 }},
|
||||
|
||||
//wet_bal_gain: { class: audio_gain, in:{ in:mute_wet.out, gain:wd_bal.out }},
|
||||
//dry_bal_gain: { class: audio_gain, in:{ in:aud_in.out, gain:wd_bal.inv_out }},
|
||||
|
||||
mstr_wet_out_gain: { class: audio_gain, in:{ in:mute_wet.out }}
|
||||
mstr_dry_out_gain: { class: audio_gain, in:{ in:aud_in.out }},
|
||||
|
||||
// apply the wet/dry gain balance
|
||||
wd_bal: { class: balance },
|
||||
wd_mix: { class: audio_mix, in:{ in0:mstr_wet_out_gain.out, in1:mstr_dry_out_gain.out, gain0:wd_bal.out, gain1:wd_bal.inv_out }}
|
||||
|
||||
|
||||
// merge the wet/dry signals into a single 4 channel signal
|
||||
merge: { class: audio_merge, in:{ in0:mstr_wet_out_gain.out, in1:wd_mix.out, in2:vsl.out } },
|
||||
|
||||
//aout: { class: audio_out, in:{ in:merge.out }, args:{ default:{dev_label:"dev"} } },
|
||||
|
||||
//sel_dry: { class: audio_split, in:{ in:aud_in.out } args:{ default:{select[0,0,1,1,1,1 ]}} }
|
||||
|
||||
//merge: { class: audio_merge, in:{ in0:mstr_wet_out_gain.out, in1:aud_in.out } },
|
||||
|
||||
af_out: { class: audio_out, in:{ in:merge.out }, args:{ default:{dev_label:"dev_file"} } },
|
||||
|
||||
//ain_mtr: { class: audio_meter, in:{ in:aud_in.out } }
|
||||
|
||||
}
|
||||
|
||||
presets: {
|
||||
|
||||
dry: { mute_wet: { gain:1 }, wd_bal:{ in:1.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: { 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 } }
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
366
src/cwtest/cfg/coda.cfg
Normal file
366
src/cwtest/cfg/coda.cfg
Normal file
@ -0,0 +1,366 @@
|
||||
{
|
||||
test: {
|
||||
|
||||
preset_sel: {
|
||||
|
||||
params: {
|
||||
//score_fn: "~/src/currawong/projects/score_proc/data/play_file.csv",
|
||||
score_fn: "~/src/cwtest/src/cwtest/cfg/preset_sel/score/20220423/temp.csv",
|
||||
//score_fn: "~/src/currawong/audio/workshop/beck2/record_2/play_score.csv",
|
||||
|
||||
record_dir: "~/src/cwtest/src/cwtest/cfg/preset_sel/preset_sel_fragments",
|
||||
record_fn: "m350-458_coda_audio_file", //"m302-325",
|
||||
record_fn_ext: "txt",
|
||||
|
||||
flow_proc_dict_fn: "~/src/cwtest/src/cwtest/cfg/flow_proc_dict_coda.cfg",
|
||||
|
||||
crossFadeSrate: 48000.0, // TODO: move to flow cfg. and set via 'system default sample rate'
|
||||
crossFadeCount: 3,
|
||||
|
||||
beg_play_loc: 12431, // 302 9187, // coda 11499,
|
||||
end_play_loc: 14726, // 10109, // coda 12426,
|
||||
|
||||
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: 500.0,
|
||||
default_preset: "dry",
|
||||
|
||||
default_master_wet_in_gain: 1.0,
|
||||
default_master_wet_out_gain: 0.4,
|
||||
default_master_dry_gain: 1.0,
|
||||
default_master_sync_delay_ms: 0, // 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: 250,
|
||||
|
||||
midi_device_list: [
|
||||
// sampler
|
||||
{
|
||||
enableFl: true,
|
||||
|
||||
//midi_out_device: "Fastlane",
|
||||
//midi_out_port: "Fastlane MIDI A",
|
||||
|
||||
//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",
|
||||
|
||||
force_damper_down_fl: false,
|
||||
force_damper_down_threshold: 35,
|
||||
force_damper_down_velocity: 80,
|
||||
|
||||
//midi_out_device: "PipeWire-RT-Event",
|
||||
//midi_out_port: "input",
|
||||
|
||||
// pedal down velocity input/output mapping
|
||||
/*
|
||||
pedal: {
|
||||
down_id: 127,
|
||||
down_vel: 75,
|
||||
half_down_id: 64,
|
||||
half_down_vel: 43,
|
||||
half_up_id: 63,
|
||||
half_up_vel: 43
|
||||
|
||||
},
|
||||
*/
|
||||
|
||||
// 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,
|
||||
|
||||
},
|
||||
// piano
|
||||
{
|
||||
|
||||
enableFl: true,
|
||||
midi_out_device: "Fastlane",
|
||||
midi_out_port: "Fastlane MIDI B",
|
||||
//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",
|
||||
|
||||
//midi_out_device: "PipeWire-RT-Event",
|
||||
//midi_out_port: "input" ,
|
||||
|
||||
|
||||
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
|
||||
|
||||
},
|
||||
|
||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 34
|
||||
//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 ] ,
|
||||
|
||||
force_damper_down_fl: false,
|
||||
force_damper_down_threshold: 35,
|
||||
force_damper_down_velocity: 80,
|
||||
|
||||
scale_chord_notes_enable_fl: true,
|
||||
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: false,
|
||||
|
||||
},
|
||||
|
||||
audio: {
|
||||
meterMs: 50, // audio meter filter length and meter callback period
|
||||
threadTimeOutMs: 50, // audio thread cond var time out
|
||||
|
||||
|
||||
files: [
|
||||
{
|
||||
enableFl: true,
|
||||
device_label:"my_audio_io_file",
|
||||
|
||||
//in_fname: "/home/kevin/temp/coda_0_a_new.wav",
|
||||
//in_rewindow_on_start_fl: true,
|
||||
|
||||
out_fname: "/home/kevin/temp/temp.wav",
|
||||
out_rewind_on_start_fl: true,
|
||||
out_ch_count: 6,
|
||||
|
||||
}
|
||||
]
|
||||
|
||||
groupL: [
|
||||
{
|
||||
enableFl: true, // (req)
|
||||
asyncFl: true, // (req) Use an asynchronous callback
|
||||
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",
|
||||
//device: "ICUSBAUDIO7D USB Audio"
|
||||
|
||||
enableFl: true, // (req)
|
||||
meterFl: true, // (opt)
|
||||
label: "dev", // (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
|
||||
},
|
||||
{
|
||||
// System device name
|
||||
device: "my_audio_io_file",
|
||||
clockSrcDev: "dev",
|
||||
syncToClockSrcDevInputFl: true, // false = sync to clockSrcDev output
|
||||
|
||||
enableFl: true, // (req)
|
||||
meterFl: false, // (opt)
|
||||
label: "dev_file", // (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_0: {
|
||||
framesPerCycle:64,
|
||||
maxCycleCount:15000,
|
||||
printNetworkFl: false, // print the network instance
|
||||
printClassDictFl: false, // print the class description dictionary
|
||||
|
||||
network: {
|
||||
srcFn: { class: audioFileIn, argLabel:"default", args:{ default:{fname:"/home/kevin/src/currawong/audio/pianist_excerpt/pianist.wav", eofFl:true } } },
|
||||
dstFn: { class: audioFileOut, in:{ in:srcFn.out }, args:{ default:{fname:"/home/kevin/temp/audio_flow_out_1.wav"} } },
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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:"dev"} } },
|
||||
|
||||
// ivory dry
|
||||
ivory: { class: audio_split, in:{ in:aud_in.out } args:{ default:{select[1,1,0,0]}} }
|
||||
|
||||
vsl: { class: audio_split, in:{ in:aud_in.out } args:{ default:{select[0,0,1,1]}} }
|
||||
|
||||
mstr_wet_in_gain: { class: audio_gain, in:{ in:ivory.out }, args:{}}
|
||||
|
||||
// wet signal processing chain
|
||||
wet_in_gain: { class: audio_gain, in:{ in:mstr_wet_in_gain.out }, args:{}},
|
||||
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 }},
|
||||
|
||||
//wet_bal_gain: { class: audio_gain, in:{ in:mute_wet.out, gain:wd_bal.out }},
|
||||
//dry_bal_gain: { class: audio_gain, in:{ in:aud_in.out, gain:wd_bal.inv_out }},
|
||||
|
||||
mstr_wet_out_gain: { class: audio_gain, in:{ in:mute_wet.out }}
|
||||
mstr_dry_out_gain: { class: audio_gain, in:{ in:aud_in.out }},
|
||||
|
||||
// apply the wet/dry gain balance
|
||||
wd_bal: { class: balance },
|
||||
wd_mix: { class: audio_mix, in:{ in0:mstr_wet_out_gain.out, in1:mstr_dry_out_gain.out, gain0:wd_bal.out, gain1:wd_bal.inv_out }}
|
||||
|
||||
|
||||
// merge the wet/dry signals into a single 4 channel signal
|
||||
merge: { class: audio_merge, in:{ in0:mstr_wet_out_gain.out, in1:wd_mix.out, in2:vsl.out } },
|
||||
|
||||
//aout: { class: audio_out, in:{ in:merge.out }, args:{ default:{dev_label:"dev"} } },
|
||||
|
||||
//sel_dry: { class: audio_split, in:{ in:aud_in.out } args:{ default:{select[0,0,1,1,1,1 ]}} }
|
||||
|
||||
//merge: { class: audio_merge, in:{ in0:mstr_wet_out_gain.out, in1:aud_in.out } },
|
||||
|
||||
af_out: { class: audio_out, in:{ in:merge.out }, args:{ default:{dev_label:"dev_file"} } },
|
||||
|
||||
//ain_mtr: { class: audio_meter, in:{ in:aud_in.out } }
|
||||
|
||||
}
|
||||
|
||||
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: { 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 } }
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
75
src/cwtest/cfg/dspnet/dspnet.cfg
Normal file
75
src/cwtest/cfg/dspnet/dspnet.cfg
Normal file
@ -0,0 +1,75 @@
|
||||
{
|
||||
proc_dict:
|
||||
{
|
||||
audio_in: {
|
||||
help: "Audio input device.",
|
||||
vars: {
|
||||
device: { type:string, flags:['init'], doc:"Audio device" },
|
||||
# 'init' inidcates that this value may only be set when the proc instance is created
|
||||
out: { type:audio, doc:"Audio output" }
|
||||
}
|
||||
},
|
||||
|
||||
audio_out: {
|
||||
help: "Audio output device.",
|
||||
vars: {
|
||||
device: { type:string, flags:['init'], doc:"Audio device" },
|
||||
in: { type:audio, doc:"Audio input" }
|
||||
}
|
||||
},
|
||||
|
||||
audio_gain: {
|
||||
help: "Audio gain control.",
|
||||
vars: {
|
||||
in: { type:audio, doc:"Audio input." },
|
||||
gain: { type:real, default:1.0, doc:"Gain value." },
|
||||
out: { type:audio, doc:"Audio output." }
|
||||
}
|
||||
},
|
||||
|
||||
poly_audio_split: {
|
||||
help: "Audio poly split.",
|
||||
vars: {
|
||||
in: { type:audio, doc: "Audio input." },
|
||||
out: { type:audio, doc: "Audio output.", duplicate: { port:'in', source:'audio_ch_cnt' }
|
||||
}
|
||||
},
|
||||
|
||||
poly_audio_merge: {
|
||||
help: "Audio poly merge.",
|
||||
in: { type:audio, duplicate: { source:'poly_src'} doc: "Audio input." },
|
||||
# 'poly_src' duplicate 'in' for each poly instance on the other side of th input connection
|
||||
|
||||
out: { type:audio, doc: "Audio output." }
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
subnet_dict:
|
||||
{
|
||||
multi_ch_gain: {
|
||||
ports: {
|
||||
in: { proc: split, var: in }
|
||||
gain: { proc: gain, var: gain },
|
||||
out: { proc: merge, var: out },
|
||||
}
|
||||
|
||||
procs: {
|
||||
split: { type: poly_audio_split },
|
||||
gain: { type: audio_gain, in: { in:split.out }, poly:{ port: 'in', source: 'audio_ch_count' } },
|
||||
merge: { type: poly_audio_merge, in: { in:gain.out } }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
network_dict:
|
||||
{
|
||||
procs: {
|
||||
ain: { type: audio_input, device:"USB Audio Device" },
|
||||
gain: { type: mulit_ch_gain, in: { in:ain.out } args: { default:{ gain:0.5 }} }
|
||||
aout: { type: audio_output, device:"USB Audio Device", in: { in:gain.out } }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
525
src/cwtest/cfg/flow_proc_dict_1024.cfg
Normal file
525
src/cwtest/cfg/flow_proc_dict_1024.cfg
Normal file
@ -0,0 +1,525 @@
|
||||
{
|
||||
|
||||
balance: {
|
||||
vars: {
|
||||
in: { type:real, value:0.5, doc:"Input vaue" },
|
||||
out: { type:real, doc:"Ouput value. Same as input value."},
|
||||
inv_out: { type:real, doc:"1.0 minus output value."}
|
||||
}
|
||||
}
|
||||
|
||||
audio_in: {
|
||||
vars: {
|
||||
dev_label: { type:string, doc:"Audio device label." },
|
||||
out: { type:audio, doc:"Audio output" },
|
||||
}
|
||||
}
|
||||
|
||||
audio_out: {
|
||||
vars: {
|
||||
dev_label: { type:string, doc:"Audio device label." },
|
||||
in: { type:audio, flags:["src"], doc:"Audio input." }
|
||||
}
|
||||
}
|
||||
|
||||
audioFileIn: {
|
||||
vars: {
|
||||
fname: { type:string, doc:"Audio file name." },
|
||||
out:{ type:audio, doc:"Audio file output" },
|
||||
on_off:{ type:bool, value:false, doc:"1=on 0=off" },,
|
||||
seekSecs:{ type:real, value:0.0, doc:"Seek to the specified seconds offset." }
|
||||
eofFl:{ type:bool, eofFl: true, doc:"Set the system 'halt' flag when the audio is completely read."},
|
||||
}
|
||||
}
|
||||
|
||||
audioFileOut: {
|
||||
vars: {
|
||||
fname: { type:string, doc:"Audio file name." },
|
||||
bits: { type:uint, value:32, doc:"Audio file word width. (8,16,24,32,0=float32)."},
|
||||
in: { type:audio, flags:["src"], doc:"Audio file input." }
|
||||
}
|
||||
}
|
||||
|
||||
audio_gain: {
|
||||
vars: {
|
||||
in: { type:audio, flags:["src"], doc:"Audio input." },
|
||||
gain: { type:real, value:1.0, doc:"Gain coefficient." }
|
||||
out: { type:audio, doc:"Audio output." },
|
||||
}
|
||||
}
|
||||
|
||||
audio_split: {
|
||||
vars: {
|
||||
in: { type:audio, flags:["src"], doc:"Audio input." },
|
||||
select: { type:bool, doc:"Enable/Disable each channel" }
|
||||
gain: { type:real, value:1.0, doc:"Audio gain for each selected (output) channel." }
|
||||
out: { type:audio, doc:"Audio output." },
|
||||
}
|
||||
|
||||
presets:
|
||||
{
|
||||
mute_off: { gain:1 },
|
||||
mute_on: { gain:0 },
|
||||
}
|
||||
}
|
||||
|
||||
audio_duplicate: {
|
||||
vars: {
|
||||
in: { type:audio, flags:["src"], doc:"Audio input."},
|
||||
duplicate: { type: uint, doc:"Count of times to repeat this channel." },
|
||||
gain: { type: real, value:1.0, doc:"Audio gain." },
|
||||
out: { type:audio, doc:"Audio output containing repeat * input channel count channels."}
|
||||
}
|
||||
}
|
||||
|
||||
audio_merge: {
|
||||
vars: {
|
||||
in0: { type:audio, flags:["src"], doc:"First audio input." },
|
||||
in1: { type:audio, flags:["src"], doc:"Second audio input." },
|
||||
in2: { type:audio, flags:["src","src_opt"], doc:"Third audio input." },
|
||||
in3: { type:audio, flags:["src","src_opt"], doc:"Fourth audio input." },
|
||||
in4: { type:audio, flags:["src","src_opt"], doc:"Fifth audio input." },
|
||||
in5: { type:audio, flags:["src","src_opt"], doc:"Sixth audio input." },
|
||||
in6: { type:audio, flags:["src","src_opt"], doc:"Seventh audio input." },
|
||||
in7: { type:audio, flags:["src","src_opt"], doc:"Eigth audio input." },
|
||||
gain: { type:real, value:1.0, doc:"Audio gain for each selected (output) channel." }
|
||||
out: { type:audio, doc:"Audio output. Channel count is the sum of the input channel count." },
|
||||
}
|
||||
}
|
||||
|
||||
audio_mix: {
|
||||
vars: {
|
||||
in0: { type:audio, flags:["src"], doc:"First audio input." },
|
||||
in1: { type:audio, flags:["src"], doc:"Second audio input." },
|
||||
gain0: { type:real, value:0.5, doc:"Audio gain for input 0." },
|
||||
gain1: { type:real, value:0.5, doc:"Audio gain for input 1." },
|
||||
out: { type:audio, doc:"Audio output. Channel count is max of the input signal channels." },
|
||||
}
|
||||
}
|
||||
|
||||
audio_delay: {
|
||||
vars: {
|
||||
in: { type:audio, flags:["src"], doc:"Audio input." },
|
||||
maxDelayMs: { type:real, value:1000.0 doc:"Maximum possible delay in milliseconds." },
|
||||
delayMs: { type:real, doc:"Delay in milliseconds." },
|
||||
out: { type:audio, doc:"Audio output." },
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sine_tone: {
|
||||
vars: {
|
||||
srate: { type:real, value:48000.0, doc:"Sine tone sample rate."}
|
||||
chCnt: { type:uint, value:2, doc:"Output signal channel count."},
|
||||
hz: { type:real, value:440.0, doc:"Frequency in Hertz."},
|
||||
gain: { type:real, value:0.8, doc:"Signal frequency."},
|
||||
out: { type:audio, doc:"Audio output" },
|
||||
}
|
||||
|
||||
presets: {
|
||||
a: { hz:220 },
|
||||
b: { hz:880 },
|
||||
}
|
||||
}
|
||||
|
||||
pv_analysis: {
|
||||
vars: {
|
||||
in: { type:audio, flags:["src"], doc:"Audio input." },
|
||||
maxWndSmpN: { type:uint, value: 1024, doc:"Maximum window sample count." },
|
||||
wndSmpN: { type:uint, value: 1024, doc:"Window sample count." },
|
||||
hopSmpN: { type:uint, value: 128, doc:"Hop sample count." },
|
||||
hzFl: { type:bool, value: false, doc:"Calculate frequency via the method of phase changeof each bin." },
|
||||
out: { type:spectrum, doc:"Spectrum output." }
|
||||
}
|
||||
|
||||
presets: {
|
||||
|
||||
dry: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
kc: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
a: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
b: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
c: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
d: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
f_1: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
f_2: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
f_3: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
f_4: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
g: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
g_a: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
g_1_a: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
|
||||
g_1_d: {
|
||||
wndSmpN: 1024,
|
||||
hopSmpN: 128
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pv_synthesis: {
|
||||
vars: {
|
||||
in: { type:spectrum, flags:["src"], doc:"Spectrum input." },
|
||||
out: { type:audio, doc:"Audio output." }
|
||||
}
|
||||
}
|
||||
|
||||
spec_dist: {
|
||||
vars: {
|
||||
in: { type:spectrum, flags:["src"], doc:"Spectrum input." },
|
||||
|
||||
bypass: { type:bool, value: false, doc:"Copy input to output without transform."},
|
||||
ceiling: { type:real, value: 30.0, doc:"Ceiling parameter."},
|
||||
expo: { type:real, value: 2.0, doc:"Exponent parameter."},
|
||||
thresh: { type:real, value: 54.0, doc:"Threshold parameter."},
|
||||
upr: { type:real, value: -0.7, doc:"Upper slope parameter."},
|
||||
lwr: { type:real, value: 2.0, doc:"Lower slope parameter."},
|
||||
mix: { type:real, value: 0.0, doc:"Basic/Bump Mix parameter."},
|
||||
|
||||
out: { type:spectrum, doc:"Spectrum output." },
|
||||
|
||||
}
|
||||
|
||||
presets: {
|
||||
|
||||
dry: {
|
||||
|
||||
}
|
||||
|
||||
kc: {
|
||||
ceiling: 20.0,
|
||||
expo: 2.0,
|
||||
thresh: 65.0,
|
||||
upr: 0.0,
|
||||
lwr: 2.0,
|
||||
mix: 0.0
|
||||
}
|
||||
|
||||
a: {
|
||||
ceiling: 20.0
|
||||
expo: 2.0
|
||||
thresh: 60.0
|
||||
upr: [ -1.1, -0.99],
|
||||
lwr: 2.0
|
||||
mix: 0.0
|
||||
}
|
||||
|
||||
b: {
|
||||
ceiling: 20.0
|
||||
expo: 2.0
|
||||
thresh: [ 77.0, 74.0 ],
|
||||
upr: -0.5
|
||||
lwr: [ 3.0, 2.0 ],
|
||||
mix: 0.0
|
||||
}
|
||||
|
||||
c: {
|
||||
ceiling: 20.0
|
||||
expo: 2.0
|
||||
thresh: 80.0
|
||||
upr: -0.5
|
||||
lwr: 5.0
|
||||
mix: 0.0
|
||||
}
|
||||
|
||||
d: {
|
||||
ceiling: 20.0
|
||||
expo: 2.0
|
||||
thresh: 70.0
|
||||
upr: [ -3.9, 04.5]
|
||||
lwr: 4.0
|
||||
mix: 0.0
|
||||
}
|
||||
|
||||
f_1: {
|
||||
ceiling: 20.0
|
||||
expo: 2.0
|
||||
thresh: 50.0
|
||||
upr: -3.0
|
||||
lwr: 1.0
|
||||
mix: 0.0
|
||||
}
|
||||
|
||||
f_2: {
|
||||
ceiling: 20.0
|
||||
expo: 2.0
|
||||
thresh: 60.0
|
||||
upr: -3.0
|
||||
lwr: 1.0
|
||||
mix: 0.0
|
||||
}
|
||||
|
||||
f_3: {
|
||||
ceiling: 20.0
|
||||
expo: 2.0
|
||||
thresh: 55.0
|
||||
upr: -3.0
|
||||
lwr: 1.0
|
||||
mix: 0.0
|
||||
}
|
||||
|
||||
f_4: {
|
||||
ceiling: 20.0
|
||||
expo: 2.0
|
||||
thresh: 55.0
|
||||
upr: -5.0
|
||||
lwr: 1.0
|
||||
mix: 0.0
|
||||
}
|
||||
|
||||
g: {
|
||||
ceiling: 40.0
|
||||
expo: 8.0
|
||||
thresh: [60.0 64.0]
|
||||
upr: -0.7
|
||||
lwr: 8.0
|
||||
mix: 1.0
|
||||
}
|
||||
|
||||
g_a: {
|
||||
ceiling: 40.0
|
||||
expo: 2.0
|
||||
thresh: [50.0 54.0]
|
||||
upr: -0.7
|
||||
lwr: 2.0
|
||||
mix: 1.0
|
||||
}
|
||||
|
||||
g_1_a: {
|
||||
ceiling: 20.0
|
||||
expo: 2.0
|
||||
thresh: [50.0 54.0]
|
||||
upr: -0.7
|
||||
lwr: 8.0
|
||||
mix: 1.0
|
||||
}
|
||||
|
||||
g_1_d: {
|
||||
ceiling: [60.0 64.0]
|
||||
expo: [ 7.0 5.0]
|
||||
thresh: [40.0 34.0]
|
||||
upr: [-0.4 -0.3]
|
||||
lwr: [ 7.0 5.0]
|
||||
mix: 1.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
compressor: {
|
||||
vars: {
|
||||
in: { type:audio, flags:["src"] true, doc:"Audio input." },
|
||||
bypass: { type:bool, value: false, doc:"Bypass the compressor."},
|
||||
igain: { type:real, value: 1.0, doc:"Input gain."},
|
||||
thresh: { type:real, value: 90.0, doc:"Attack threshold in dB."},
|
||||
ratio: { type:real, value: 2.0, doc:"Compression ratio."},
|
||||
atk_ms: { type:real, value: 20.0, doc:"Attack time in milliseconds."},
|
||||
rls_ms: { type:real, value: 20.0, doc:"Release time in milliseconds."},
|
||||
wnd_ms: { type:real, value: 200.0, doc:"RMS calc. window length in milliseconds."},
|
||||
maxWnd_ms: { type:real, value: 1000.0, doc:"Maximim (allocated) window length in milliseconds."},
|
||||
ogain: { type:real, value: 1.0, doc:"Output gain."},
|
||||
out: { type:audio, doc:"Audio output." },
|
||||
}
|
||||
|
||||
presets: {
|
||||
dflt: {
|
||||
igain: 3.0
|
||||
thresh: 60.0
|
||||
ratio: 5.0
|
||||
atk_ms: 5.0
|
||||
rls_ms: 20.0
|
||||
wnd_ms:100.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
kc: {
|
||||
bypass: false
|
||||
igain: 3.0
|
||||
thresh: 80.0
|
||||
ratio: 2.0
|
||||
atk_ms: 20.0
|
||||
rls_ms: 1000.0
|
||||
wnd_ms: 200.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
input: {
|
||||
bypass: false
|
||||
igain: 2.0
|
||||
thresh: 30.0
|
||||
ratio: 12.0
|
||||
atk_ms: 5.0
|
||||
rls_ms: 20.0
|
||||
wnd_ms: 20.0
|
||||
ogain: 0.5
|
||||
}
|
||||
|
||||
dry: {
|
||||
|
||||
}
|
||||
|
||||
a: {
|
||||
igain: 6.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
b: {
|
||||
igain: 10.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
c: {
|
||||
igain: 11.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
d: {
|
||||
igain: 9.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
f_1: {
|
||||
igain: 6.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
f_2: {
|
||||
igain: 6.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
f_3: {
|
||||
igain: 6.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
f_4: {
|
||||
igain: 6.0
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
g: {
|
||||
igain: 10.0
|
||||
ogain: 0.75
|
||||
}
|
||||
|
||||
g_a: {
|
||||
igain: 10.0
|
||||
ogain: 0.75
|
||||
}
|
||||
|
||||
g_1_a: {
|
||||
igain: 10.0
|
||||
ogain: 0.75
|
||||
}
|
||||
|
||||
g_1_d: {
|
||||
igain: 10.0
|
||||
ogain: 0.75
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
limiter: {
|
||||
vars: {
|
||||
in: { type:audio, flags:["src"] true, doc:"Audio input." },
|
||||
bypass: { type:bool, value: false, doc:"Bypass the limiter."},
|
||||
igain: { type:real, value: 1.0, doc:"Input gain."},
|
||||
thresh: { type:real, value: 0.0, doc:"Linear (0.0-1.0) threshold."},
|
||||
ogain: { type:real, value: 1.0, doc:"Output gain."},
|
||||
out: { type:audio, doc:"Audio output." },
|
||||
}
|
||||
|
||||
presets: {
|
||||
dflt: {
|
||||
bypass: false,
|
||||
igain: 1.0
|
||||
thresh: 0.9,
|
||||
ogain: 1.0
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
dc_filter: {
|
||||
vars: {
|
||||
in: { type:audio, flags:["src"], doc:"Audio input." },
|
||||
bypass: { type:bool, value: false, doc:"Bypass the DC filter."},
|
||||
gain: { type:real, value: 1.0, doc:"Output gain."},
|
||||
out: { type:audio, doc:"Audio output." },
|
||||
}
|
||||
|
||||
presets: {
|
||||
dflt: {
|
||||
bypass: false,
|
||||
gain: 1.0
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
audio_meter: {
|
||||
vars: {
|
||||
in: { type:audio, flags:["src"], doc:"Audio input." },
|
||||
dbFl: { type:bool, value: true, doc:"Output in Decibels." },
|
||||
wndMs: { type:real, value: 100.0, doc:"RMS window length." },
|
||||
peakDb: { type:real, value: -10.0, doc:"Peak threshold." },
|
||||
out: { type:real, value: 0.0, doc:"Meter output." },
|
||||
peakFl: { type:bool, value: false, doc:"Peak output." }
|
||||
clipFl: { type:bool, value: false, doc:"Clip indicator output."}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -9,7 +9,7 @@
|
||||
perfDirL: [
|
||||
{ dir:"~/temp/shiau_uen_sf", fname:"play_score.csv" },
|
||||
{ dir:"~/src/cwtest/src/cwtest/cfg/gutim_full/midi_record", fname:"play_score.csv" },
|
||||
{ dir:"~/src/cwtest/src/cwtest/cfg/gutim_full/score", fname:"temp.csv" }
|
||||
{ dir:"~/src/cwtest/src/cwtest/cfg/gutim_full", fname:"temp.csv" }
|
||||
|
||||
]
|
||||
|
||||
|
385
src/cwtest/cfg/gutim_full/gutim_perf_new.cfg
Normal file
385
src/cwtest/cfg/gutim_full/gutim_perf_new.cfg
Normal file
@ -0,0 +1,385 @@
|
||||
{
|
||||
test: {
|
||||
|
||||
preset_sel: {
|
||||
|
||||
params: {
|
||||
score_fn: "~/src/cwtest/src/cwtest/cfg/gutim_full/score/temp.csv",
|
||||
|
||||
perfDirL: [
|
||||
{
|
||||
dir:"~/temp/shiau_uen_sf",
|
||||
fname:"play_score.csv",
|
||||
vel_table: []
|
||||
},
|
||||
|
||||
{
|
||||
dir:"~/src/cwtest/src/cwtest/cfg/gutim_full/midi_record",
|
||||
fname:"play_score.csv",
|
||||
vel_table: []
|
||||
},
|
||||
|
||||
{
|
||||
dir:"~/src/cwtest/src/cwtest/cfg/gutim_full",
|
||||
fname:"temp.csv",
|
||||
vel_table: [
|
||||
{ "device":"piano", "name":"ivory" }, // VSL uses Ivory vel table
|
||||
{ "device":"sampler", "name":"ivory" }
|
||||
]
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
record_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/preset_select",
|
||||
record_fn: "m1_458",
|
||||
//record_fn: "m224_234-5461_5691"
|
||||
//record_fn: "m279_287-8288_8609"
|
||||
//record_fn: "m357_361-11459_11586"
|
||||
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: 1, //0, //12431, // coda 11499,
|
||||
end_play_loc: 16354, //59, //14726, // coda 12426,
|
||||
live_mode_fl: false,
|
||||
|
||||
enable_recording_fl: false,
|
||||
midi_record_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/midi_record",
|
||||
midi_record_folder: "shiau_uen",
|
||||
sf_reset_loc: 1,
|
||||
|
||||
score_follower: {
|
||||
enable_flag: true,
|
||||
score_csv_fname: "/home/kevin/src/currawong/projects/score_proc/temp.csv",
|
||||
search_area_locN: 10,
|
||||
key_wnd_locN: 7,
|
||||
track_print_fl: false, // print output from the sfTrack unit
|
||||
track_results_backtrack_fl: false,
|
||||
|
||||
|
||||
dyn_ref: [
|
||||
{ mark: "silent", level:0, vel:1 },
|
||||
{ mark:"pppp-", level:1, vel:3 },
|
||||
{ mark:"pppp", level:2, vel:5 },
|
||||
{ mark:"pppp+", level:3, vel:7 },
|
||||
{ mark:"ppp-", level:4, vel:10 },
|
||||
{ mark:"ppp", level:5, vel:15 },
|
||||
{ mark:"ppp+", level:6, vel:20 },
|
||||
{ mark:"pp-", level:7, vel:25 },
|
||||
{ mark:"pp", level:8, vel:30 },
|
||||
{ mark:"pp+", level:9, vel:35 },
|
||||
{ mark:"p-", level:10, vel:40 },
|
||||
{ mark:"p", level:11, vel:45 },
|
||||
{ mark:"p+", level:12, vel:50 },
|
||||
{ mark:"mp-", level:13, vel:55 },
|
||||
{ mark:"mp", level:14, vel:60 },
|
||||
{ mark:"mp+", level:15, vel:65 },
|
||||
{ mark:"mf-", level:16, vel:70 },
|
||||
{ mark:"mf", level:17, vel:75 },
|
||||
{ mark:"mf+", level:18, vel:80 },
|
||||
{ mark:"f-", level:19, vel:85 },
|
||||
{ mark:"f", level:20, vel:90 },
|
||||
{ mark:"f+", level:21, vel:95 },
|
||||
{ mark:"ff", level:22, vel:100 },
|
||||
{ mark:"ff+", level:23, vel:105 },
|
||||
{ mark:"fff", level:24, vel:115 },
|
||||
{ mark:"fff+", level:25, vel:120 },
|
||||
{ mark:"ffff", level:26, vel:125 },
|
||||
]
|
||||
|
||||
},
|
||||
|
||||
|
||||
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,
|
||||
|
||||
label: "sampler",
|
||||
//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,
|
||||
|
||||
scale_chord_notes_enable_fl: false,
|
||||
scale_chord_notes_factor: 0.05,
|
||||
|
||||
},
|
||||
{
|
||||
//SPIRIO
|
||||
|
||||
enableFl: true,
|
||||
label: "piano",
|
||||
//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",
|
||||
|
||||
//midi_out_device: "PipeWire-RT-Event",
|
||||
//midi_out_port: "input",
|
||||
|
||||
// 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 } }
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
391
src/cwtest/cfg/gutim_full/gutim_perf_new_home.cfg
Normal file
391
src/cwtest/cfg/gutim_full/gutim_perf_new_home.cfg
Normal file
@ -0,0 +1,391 @@
|
||||
{
|
||||
test: {
|
||||
|
||||
preset_sel: {
|
||||
|
||||
params: {
|
||||
//score_fn: "~/src/cwtest/src/cwtest/cfg/gutim_full/score/temp.csv",
|
||||
score_fn: "~/src/currawong/projects/score_proc/temp.csv"
|
||||
|
||||
perfDirL: [
|
||||
|
||||
{
|
||||
dir:"~/src/cwtest/src/cwtest/cfg/gutim_full/data1/beck1",
|
||||
fname:"play_score_w_vt.csv",
|
||||
vel_table:[
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
dir:"~/src/cwtest/src/cwtest/cfg/gutim_full/data1/beck2",
|
||||
fname:"play_score_w_vt.csv",
|
||||
vel_table:[
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
dir:"~/src/cwtest/src/cwtest/cfg/gutim_full/data1/taka1",
|
||||
fname:"play_score_w_vt.csv",
|
||||
vel_table:[
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
dir:"~/src/cwtest/src/cwtest/cfg/gutim_full/data1/taka2",
|
||||
fname:"play_score_w_vt.csv",
|
||||
vel_table:[
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
dir:"~/src/cwtest/src/cwtest/cfg/gutim_full/data/score",
|
||||
fname:"temp.csv",
|
||||
vel_table: [
|
||||
{ "device":"piano", "name":"spirio" }, // VSL uses Ivory vel table
|
||||
{ "device":"sampler", "name":"ivory" }
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
]
|
||||
|
||||
|
||||
record_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/preset_select",
|
||||
record_fn: "m1_458_trans_5",
|
||||
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: 1, //0, //12431, // coda 11499,
|
||||
end_play_loc: 16354, //59, //14726, // coda 12426,
|
||||
live_mode_fl: false,
|
||||
|
||||
enable_recording_fl: false,
|
||||
midi_record_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/midi_record",
|
||||
midi_record_folder: "shiau_uen",
|
||||
sf_reset_loc: 1,
|
||||
|
||||
score_follower: {
|
||||
enable_flag: false,
|
||||
score_csv_fname: "/home/kevin/src/currawong/projects/score_proc/temp.csv",
|
||||
search_area_locN: 10,
|
||||
key_wnd_locN: 7,
|
||||
track_print_fl: false, // print output from the sfTrack unit
|
||||
track_results_backtrack_fl: false,
|
||||
|
||||
|
||||
dyn_ref: [
|
||||
{ mark: "silent", level:0, vel:1 },
|
||||
{ mark:"pppp-", level:1, vel:3 },
|
||||
{ mark:"pppp", level:2, vel:5 },
|
||||
{ mark:"pppp+", level:3, vel:7 },
|
||||
{ mark:"ppp-", level:4, vel:10 },
|
||||
{ mark:"ppp", level:5, vel:15 },
|
||||
{ mark:"ppp+", level:6, vel:20 },
|
||||
{ mark:"pp-", level:7, vel:25 },
|
||||
{ mark:"pp", level:8, vel:30 },
|
||||
{ mark:"pp+", level:9, vel:35 },
|
||||
{ mark:"p-", level:10, vel:40 },
|
||||
{ mark:"p", level:11, vel:45 },
|
||||
{ mark:"p+", level:12, vel:50 },
|
||||
{ mark:"mp-", level:13, vel:55 },
|
||||
{ mark:"mp", level:14, vel:60 },
|
||||
{ mark:"mp+", level:15, vel:65 },
|
||||
{ mark:"mf-", level:16, vel:70 },
|
||||
{ mark:"mf", level:17, vel:75 },
|
||||
{ mark:"mf+", level:18, vel:80 },
|
||||
{ mark:"f-", level:19, vel:85 },
|
||||
{ mark:"f", level:20, vel:90 },
|
||||
{ mark:"f+", level:21, vel:95 },
|
||||
{ mark:"ff", level:22, vel:100 },
|
||||
{ mark:"ff+", level:23, vel:105 },
|
||||
{ mark:"fff", level:24, vel:115 },
|
||||
{ mark:"fff+", level:25, vel:120 },
|
||||
{ mark:"ffff", level:26, vel:125 },
|
||||
]
|
||||
|
||||
},
|
||||
|
||||
|
||||
presets: {
|
||||
preset_labelL: [ "dry", "a", "b", "c", "d", "f1", "f2", "f3", "f4", "g", "ga", "g1a", "g1d" ],
|
||||
|
||||
alt_labelL: [ "A","B","C","D","E","F","G" ],
|
||||
|
||||
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,
|
||||
|
||||
label: "sampler",
|
||||
//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,
|
||||
|
||||
scale_chord_notes_enable_fl: false,
|
||||
scale_chord_notes_factor: 0.05,
|
||||
|
||||
},
|
||||
{
|
||||
//SPIRIO
|
||||
|
||||
enableFl: true,
|
||||
label: "piano",
|
||||
//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",
|
||||
|
||||
//midi_out_device: "PipeWire-RT-Event",
|
||||
//midi_out_port: "input",
|
||||
|
||||
// pedal down velocity input/output mapping
|
||||
/*
|
||||
pedal: {
|
||||
up_id: 0,
|
||||
up_vel: 0,
|
||||
down_id: 127,
|
||||
down_vel: 0,
|
||||
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: {
|
||||
parseBufByteCnt: 1024,
|
||||
appNameStr: "cwtest",
|
||||
fileDevName: "file_dev",
|
||||
fileDevReadAheadMicros: 3000,
|
||||
testFileLabel: "file_0",
|
||||
testFileEnableFl: false
|
||||
|
||||
file_ports: [
|
||||
|
||||
{ "label":"file_0",
|
||||
//"file": "/home/kevin/src/cwtest/src/cwtest/cfg/gutim_full/data1/beck1/record_4/midi.mid",
|
||||
"enable_fl": false },
|
||||
]
|
||||
|
||||
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
|
||||
multiPriPresetProbFl: false, // Use probability to select primary multi-preset
|
||||
multiSecPresetProbFl: true, // Use probability to select secondary multi-preset
|
||||
multiPresetInterpFl: false, // Interpolate between two selected multi-presets
|
||||
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: { pva:dry, sd:dry, cmp:dry, mute_wet:{ gain:0.0 } },
|
||||
a: { pva:a, sd:a, cmp:a, mute_wet:{ gain:1.0 } },
|
||||
b: { pva:b, sd:b, cmp:b, mute_wet:{ gain:1.0 } },
|
||||
c: { pva:c, sd:c, cmp:c, mute_wet:{ gain:1.0 } },
|
||||
d: { pva:d, sd:d, cmp:d, mute_wet:{ gain:1.0 } },
|
||||
f1: { pva:f_1, sd:f_1, cmp:f_1, mute_wet:{ gain:1.0 } },
|
||||
f2: { pva:f_2, sd:f_2, cmp:f_2, mute_wet:{ gain:1.0 } },
|
||||
f3: { pva:f_3, sd:f_3, cmp:f_3, mute_wet:{ gain:1.0 } },
|
||||
f4: { pva:f_4, sd:f_4, cmp:f_4, mute_wet:{ gain:1.0 } },
|
||||
g: { pva:g, sd:g, cmp:g, mute_wet:{ gain:1.0 } },
|
||||
ga: { pva:g_a sd:g_a, cmp:g_a, mute_wet:{ gain:1.0 } },
|
||||
g1a: { pva:g_1_a sd:g_1_a, cmp:g_1_a, mute_wet:{ gain:1.0 } },
|
||||
g1d: { pva:g_1_d sd:g_1_d, cmp:g_1_d, mute_wet:{ gain:1.0 } }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
1
src/cwtest/cfg/gutim_full/preset_select/m1_32.txt
Normal file
1
src/cwtest/cfg/gutim_full/preset_select/m1_32.txt
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_0.txt
Normal file
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_0.txt
Normal file
File diff suppressed because one or more lines are too long
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_1.txt
Normal file
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_1.txt
Normal file
File diff suppressed because one or more lines are too long
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_2.txt
Normal file
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_2.txt
Normal file
File diff suppressed because one or more lines are too long
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_3.txt
Normal file
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_3.txt
Normal file
File diff suppressed because one or more lines are too long
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_trans.txt
Normal file
1
src/cwtest/cfg/gutim_full/preset_select/m1_458_trans.txt
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
76055
src/cwtest/cfg/gutim_full/preset_select/m1_458_trans_3.txt
Normal file
76055
src/cwtest/cfg/gutim_full/preset_select/m1_458_trans_3.txt
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
390
src/cwtest/cfg/gutim_full/sampler_recording.cfg
Normal file
390
src/cwtest/cfg/gutim_full/sampler_recording.cfg
Normal file
@ -0,0 +1,390 @@
|
||||
{
|
||||
test: {
|
||||
|
||||
preset_sel: {
|
||||
|
||||
params: {
|
||||
score_fn: "~/src/cwtest/src/cwtest/cfg/gutim_full/score/temp.csv",
|
||||
|
||||
perfDirL: [
|
||||
{ dir: "~/temp/shiau_uen_sf",
|
||||
fname: "play_score.csv",
|
||||
vel_table: []
|
||||
},
|
||||
{ dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/midi_record",
|
||||
fname: "play_score.csv",
|
||||
vel_table:[]
|
||||
},
|
||||
{ dir:"~/src/cwtest/src/cwtest/cfg/gutim_full",
|
||||
fname:"temp.csv",
|
||||
vel_table: [
|
||||
{ "device":"piano", "name":"ivory" }, // VSL uses Ivory vel table
|
||||
{ "device":"sampler", "name":"ivory" }
|
||||
]
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
record_fn: "m1_458",
|
||||
//record_fn: "m1-7",
|
||||
record_fn_ext: "txt",
|
||||
|
||||
// NOTE: the presets and flow_proc_dict are begin taken from matt_20230610
|
||||
record_dir: "~/src/cwtest/src/cwtest/cfg/matt_20230610/cfg/preset_sel/preset_sel_fragments",
|
||||
flow_proc_dict_fn: "~/src/cwtest/src/cwtest/cfg/matt_20230610/cfg/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: 1, //0, //12431, // coda 11499,
|
||||
end_play_loc: 16354, //59, //14726, // coda 12426,
|
||||
live_mode_fl: false,
|
||||
|
||||
enable_recording_fl: false,
|
||||
midi_record_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/midi_record",
|
||||
midi_record_folder: "shiau_uen",
|
||||
sf_reset_loc: 1,
|
||||
|
||||
score_follower: {
|
||||
"enable_flag": false,
|
||||
"cm_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: 0.9,
|
||||
default_master_dry_gain: 0.9,
|
||||
default_master_sync_delay_ms: 0, // 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,
|
||||
label: "sampler",
|
||||
|
||||
//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,
|
||||
|
||||
|
||||
scale_chord_notes_enable_fl: false,
|
||||
scale_chord_notes_factor: 0.05,
|
||||
|
||||
},
|
||||
{
|
||||
//SPIRIO
|
||||
|
||||
enableFl: true,
|
||||
label: "piano",
|
||||
//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",
|
||||
|
||||
//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,
|
||||
|
||||
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
|
||||
|
||||
files: [
|
||||
{
|
||||
enableFl: true,
|
||||
device_label:"my_audio_io_file",
|
||||
|
||||
in_fname: "/home/kevin/temp/coda_0_d_ivory_vsl.wav",
|
||||
in_rewind_on_on_start_fl: true,
|
||||
in_cache_fl: true,
|
||||
in_use_internal_clock_fl: false, // file devices can be clocked by an internal thread
|
||||
// or by another device See 'clockSrcDev' and
|
||||
// 'syncToClockSrcDevInputFl' in the device specifation
|
||||
|
||||
out_fname: "/home/kevin/temp/full_recording_with_transforms_20231306.wav",
|
||||
out_rewind_on_start_fl: true,
|
||||
out_cache_fl: true,
|
||||
out_use_internal_clock_fl: false,
|
||||
out_ch_count: 6,
|
||||
out_cache_block_sec: 10 // output cache block size
|
||||
|
||||
}
|
||||
],
|
||||
|
||||
|
||||
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: "dev", // (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
|
||||
},
|
||||
{
|
||||
// System device name
|
||||
device: "my_audio_io_file", //
|
||||
clockSrcDev: "dev", // (opt) sync to the device 'dev'
|
||||
syncToClockSrcDevInputFl: false, // (opt) false = sync to clockSrcDev output
|
||||
|
||||
activeFl: true, // (req)
|
||||
meterFl: false, // (opt)
|
||||
label: "dev_file", // (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:"dev"} } },
|
||||
|
||||
// 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
|
||||
// NOTE THIS DELAY IS NOT USED - IT IS PATCHED AROUND
|
||||
sync_delay { class: audio_delay, in: { in:split_in.out }, args:{ default:{ delayMs:0 } }}
|
||||
|
||||
|
||||
// select VSL
|
||||
vsl_split: { class: audio_split, in:{ in:split_in.out } args:{ default:{select[0,0,1,1] }} }
|
||||
|
||||
// select the first two channels to feed into the transform
|
||||
sync_split: { class: audio_split, in:{ in:split_in.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"} } },
|
||||
|
||||
|
||||
// 1/2=ivory-wet 3/4=ivory-dry 5/6=VSL
|
||||
af_merge { class: audio_merge, in:{ in0:mstr_wet_out_gain.out, in1:mstr_dry_out_gain.out, in2:vsl_split.out } },
|
||||
|
||||
aout: { class: audio_out, in:{ in:af_merge.out }, args:{ default:{dev_label:"dev"} } },
|
||||
|
||||
aout_file: { class: audio_out, in:{ in:af_merge.out }, args:{ default:{dev_label:"dev_file"} } },
|
||||
|
||||
}
|
||||
|
||||
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 } }
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
24
src/cwtest/cfg/gutim_full/vel_table/vel_table_0.json
Normal file
24
src/cwtest/cfg/gutim_full/vel_table/vel_table_0.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"note_on_ms": 500, // duration of note
|
||||
"note_off_ms": 250, // duration between notes
|
||||
"midi_pitch": 60,
|
||||
"midi_velocity": 64,
|
||||
"min_pitch": 22,
|
||||
"max_pitch": 108,
|
||||
"pitch_incr": 3,
|
||||
|
||||
"tables": [
|
||||
{
|
||||
"enableFl": true,
|
||||
"name": "spirio",
|
||||
"device": "piano", // must be 'piano' or 'sampler'
|
||||
"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 ]
|
||||
},
|
||||
{
|
||||
"enableFl": true,
|
||||
"name": "ivory",
|
||||
"device": "sampler", // must be 'piano' or 'sampler'
|
||||
"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 ]
|
||||
}
|
||||
]
|
||||
}
|
356
src/cwtest/cfg/spec_dist.cfg
Normal file
356
src/cwtest/cfg/spec_dist.cfg
Normal file
@ -0,0 +1,356 @@
|
||||
{
|
||||
test: {
|
||||
|
||||
preset_sel: {
|
||||
|
||||
params: {
|
||||
//score_fn: "~/src/currawong/projects/score_proc/data/play_file.csv",
|
||||
score_fn: "~/src/cwtest/src/cwtest/cfg/preset_sel/score/20220423/temp.csv",
|
||||
//score_fn: "~/src/currawong/audio/workshop/beck2/record_2/play_score.csv",
|
||||
|
||||
record_dir: "~/src/cwtest/src/cwtest/cfg/preset_sel/preset_sel_fragments",
|
||||
record_fn: "m350-458", //"m302-325",
|
||||
record_fn_ext: "txt",
|
||||
|
||||
flow_proc_dict_fn: "~/src/cwtest/src/cwtest/cfg/flow_proc_dict.cfg",
|
||||
|
||||
crossFadeSrate: 48000.0, // TODO: move to flow cfg. and set via 'system default sample rate'
|
||||
crossFadeCount: 3,
|
||||
|
||||
beg_play_loc: 12431, // 302 9187, // coda 11499,
|
||||
end_play_loc: 14726, // 10109, // coda 12426,
|
||||
|
||||
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: 500.0,
|
||||
default_preset: "dry",
|
||||
|
||||
default_master_wet_in_gain: 1.0,
|
||||
default_master_wet_out_gain: 0.4,
|
||||
default_master_dry_gain: 1.0,
|
||||
default_master_sync_delay_ms: 0, // 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: 250,
|
||||
|
||||
midi_device_list: [
|
||||
// sampler
|
||||
{
|
||||
enableFl: true,
|
||||
|
||||
midi_out_device: "Fastlane",
|
||||
midi_out_port: "Fastlane MIDI A",
|
||||
|
||||
//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",
|
||||
|
||||
force_damper_down_fl: false,
|
||||
force_damper_down_threshold: 35,
|
||||
force_damper_down_velocity: 80,
|
||||
|
||||
//midi_out_device: "PipeWire-RT-Event",
|
||||
//midi_out_port: "input",
|
||||
|
||||
// pedal down velocity input/output mapping
|
||||
/*
|
||||
pedal: {
|
||||
down_id: 127,
|
||||
down_vel: 75,
|
||||
half_down_id: 64,
|
||||
half_down_vel: 43,
|
||||
half_up_id: 63,
|
||||
half_up_vel: 43
|
||||
|
||||
},
|
||||
*/
|
||||
|
||||
// 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,
|
||||
|
||||
},
|
||||
// piano
|
||||
{
|
||||
|
||||
enableFl: true,
|
||||
midi_out_device: "Fastlane",
|
||||
midi_out_port: "Fastlane MIDI B",
|
||||
//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",
|
||||
|
||||
//midi_out_device: "PipeWire-RT-Event",
|
||||
//midi_out_port: "input" ,
|
||||
|
||||
|
||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 34
|
||||
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 ] ,
|
||||
|
||||
force_damper_down_fl: false,
|
||||
force_damper_down_threshold: 35,
|
||||
force_damper_down_velocity: 80,
|
||||
|
||||
scale_chord_notes_enable_fl: true,
|
||||
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: false,
|
||||
|
||||
},
|
||||
|
||||
audio: {
|
||||
meterMs: 50, // audio meter filter length and meter callback period
|
||||
threadTimeOutMs: 50, // audio thread cond var time out
|
||||
|
||||
|
||||
files: [
|
||||
{
|
||||
enableFl: true,
|
||||
device_label:"my_audio_io_file",
|
||||
|
||||
//in_fname: "/home/kevin/temp/coda_0_a_new.wav",
|
||||
//in_rewindow_on_start_fl: true,
|
||||
|
||||
out_fname: "/home/kevin/temp/temp.wav",
|
||||
out_rewind_on_start_fl: true,
|
||||
out_ch_count: 6,
|
||||
|
||||
}
|
||||
]
|
||||
|
||||
groupL: [
|
||||
{
|
||||
enableFl: true, // (req)
|
||||
asyncFl: true, // (req) Use an asynchronous callback
|
||||
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",
|
||||
//device: "ICUSBAUDIO7D USB Audio"
|
||||
|
||||
enableFl: true, // (req)
|
||||
meterFl: true, // (opt)
|
||||
label: "dev", // (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
|
||||
},
|
||||
{
|
||||
// System device name
|
||||
device: "my_audio_io_file",
|
||||
clockSrcDev: "dev",
|
||||
syncToClockSrcDevInputFl: false, // false = sync to clockSrcDev output
|
||||
|
||||
enableFl: true, // (req)
|
||||
meterFl: false, // (opt)
|
||||
label: "dev_file", // (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_0: {
|
||||
framesPerCycle:64,
|
||||
maxCycleCount:15000,
|
||||
printNetworkFl: false, // print the network instance
|
||||
printClassDictFl: false, // print the class description dictionary
|
||||
|
||||
network: {
|
||||
srcFn: { class: audioFileIn, argLabel:"default", args:{ default:{fname:"/home/kevin/src/currawong/audio/pianist_excerpt/pianist.wav", eofFl:true } } },
|
||||
dstFn: { class: audioFileOut, in:{ in:srcFn.out }, args:{ default:{fname:"/home/kevin/temp/audio_flow_out_1.wav"} } },
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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"} } },
|
||||
aud_in: { class: audioFileIn, argLabel:"default", args:{ default:{fname:"/home/kevin/temp/coda_0_d_ivory_vsl.wav", eofFl:true } } },
|
||||
|
||||
// ivory dry
|
||||
split_in: { class: audio_split, in:{ in:aud_in.out } args:{ default:{select[1,1,0,0]}} }
|
||||
|
||||
mstr_wet_in_gain: { class: audio_gain, in:{ in:split_in.out }, args:{}}
|
||||
|
||||
// wet signal processing chain
|
||||
wet_in_gain: { class: audio_gain, in:{ in:mstr_wet_in_gain.out }, args:{}},
|
||||
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 }},
|
||||
|
||||
//wet_bal_gain: { class: audio_gain, in:{ in:mute_wet.out, gain:wd_bal.out }},
|
||||
//dry_bal_gain: { class: audio_gain, in:{ in:aud_in.out, gain:wd_bal.inv_out }},
|
||||
|
||||
mstr_wet_out_gain: { class: audio_gain, in:{ in:mute_wet.out }}
|
||||
mstr_dry_out_gain: { class: audio_gain, in:{ in:aud_in.out }},
|
||||
|
||||
// apply the wet/dry gain balance
|
||||
wd_bal: { class: balance },
|
||||
wd_mix: { class: audio_mix, in:{ in0:mstr_wet_out_gain.out, in1:mstr_dry_out_gain.out, gain0:wd_bal.out, gain1:wd_bal.inv_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 } },
|
||||
|
||||
//aout: { class: audio_out, in:{ in:mstr_wet_out_gain.out }, args:{ default:{dev_label:"main"} } },
|
||||
|
||||
//af_out: { class: audioFileOut, in:{ in:merge.out }, args:{ default:{fname:"/home/kevin/temp/coda_0_a_new.wav"}}},
|
||||
|
||||
aout: { class: audio_out, in:{ in:mstr_wet_out_gain.out }, args:{ default:{dev_label:"dev"} } },
|
||||
|
||||
//sel_dry: { class: audio_split, in:{ in:aud_in.out } args:{ default:{select[0,0,1,1,1,1 ]}} }
|
||||
|
||||
merge: { class: audio_merge, in:{ in0:mstr_wet_out_gain.out, in1:aud_in.out } },
|
||||
|
||||
af_out: { class: audio_out, in:{ in:merge.out }, args:{ default:{dev_label:"dev_file"} } },
|
||||
|
||||
//ain_mtr: { class: audio_meter, in:{ in:aud_in.out } }
|
||||
|
||||
}
|
||||
|
||||
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: { 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 } }
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
330
src/cwtest/cfg/video/video_1.cfg
Normal file
330
src/cwtest/cfg/video/video_1.cfg
Normal file
@ -0,0 +1,330 @@
|
||||
{
|
||||
test: {
|
||||
|
||||
preset_sel: {
|
||||
|
||||
params: {
|
||||
//score_fn: "~/src/currawong/projects/score_proc/data/play_file.csv",
|
||||
score_fn: "~/src/cwtest/src/cwtest/cfg/preset_sel/score/20220423/temp.csv",
|
||||
//score_fn: "~/src/currawong/audio/workshop/beck2/record_2/play_score.csv",
|
||||
|
||||
record_dir: "~/src/cwtest/src/cwtest/cfg/preset_sel/preset_sel_fragments",
|
||||
//record_fn: "preset_sel_20220423",
|
||||
//record_fn: "preset_sel_20220507",
|
||||
record_fn: "unknown",
|
||||
//record_fn: "m302-325",
|
||||
//record_fn: "m350-458",
|
||||
|
||||
//record_fn: "m1-7",
|
||||
record_fn_ext: "txt",
|
||||
|
||||
flow_proc_dict_fn: "~/src/cwtest/src/cwtest/cfg/flow_proc_dict.cfg",
|
||||
|
||||
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,
|
||||
|
||||
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: 250,
|
||||
|
||||
midi_device_list: [
|
||||
// piano
|
||||
{
|
||||
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,
|
||||
|
||||
},
|
||||
{
|
||||
|
||||
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: true,
|
||||
scale_chord_notes_factor: 0.5,
|
||||
},
|
||||
|
||||
//{ midi_out_device: "PipeWire-RT-Event", midi_out_port: "input" },
|
||||
],
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
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: false,
|
||||
|
||||
},
|
||||
|
||||
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",
|
||||
|
||||
enableFl: 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 } }
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user