cwtest/cfg : Updates

This commit is contained in:
kevin 2023-03-20 19:48:24 -04:00
parent 2bcad4cf40
commit 3d604c139f
11 changed files with 78718 additions and 0 deletions

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
# directories to ignore
libcw
backup
.deps
autom4te.cache

View 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/temp/audio_midi_record"
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: 80,
// do not play damper values that are in this range
damper_dead_band_enable_fl: true,
damper_dead_band_min_value: 1,
damper_dead_band_max_value: 55,
//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",
activeFl: 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: [],
}
}
}
}

View File

@ -0,0 +1,22 @@
{
balanced_mix: {
doc: "This is a two channel balancer network.",
network: {
ain: { class: port, source:audio_merge.in, doc:"Audio input."},
ain_alt:{ class: port, source:audio_merge.in, doc:"Alternate audio input."},
bal_in { class: port, source:balance.in, doc:"Mix balance control." },
bal: { class: balance, in:{ in:bal_in.out } },
merge: { class: audio_merge, in:{ in.0:ain, in.1:ain_alt } }
gain: { class: audio_gain in:{ in:merge.out, gain:bal.out } },
aout: { class: port, type: audio, in:{ gain.out } }
}
}
}

View 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: 512, 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: 512,
hopSmpN: 128
}
kc: {
wndSmpN: 512,
hopSmpN: 128
}
a: {
wndSmpN: 512,
hopSmpN: 128
}
b: {
wndSmpN: 512,
hopSmpN: 128
}
c: {
wndSmpN: 512,
hopSmpN: 128
}
d: {
wndSmpN: 512,
hopSmpN: 128
}
f_1: {
wndSmpN: [512,1024]
hopSmpN: 128
}
f_2: {
wndSmpN: [1024,512]
hopSmpN: 128
}
f_3: {
wndSmpN: [512,1024]
hopSmpN: 128
}
f_4: {
wndSmpN: [1024,512]
hopSmpN: 128
}
g: {
wndSmpN: 512,
hopSmpN: 128
}
g_a: {
wndSmpN: 512,
hopSmpN: 128
}
g_1_a: {
wndSmpN: 512,
hopSmpN: 128
}
g_1_d: {
wndSmpN: 512,
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: 8.0
ogain: 1.0
}
f_2: {
igain: 8.0
ogain: 1.0
}
f_3: {
igain: 8.0
ogain: 1.0
}
f_4: {
igain: 8.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."}
}
}
}

View File

@ -0,0 +1,327 @@
{
test: {
preset_sel: {
params: {
score_fn: "~/src/cwtest/src/cwtest/cfg/gutim_full/score/temp.csv",
record_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/preset_select",
//record_fn: "preset_sel_20220423",
//record_fn: "preset_sel_20220507",
record_fn: "unknown",
record_fn_ext: "txt",
flow_proc_dict_fn: "~/src/cwtest/src/cwtest/cfg/gutim_full/flow_proc_dict.cfg",
vel_table_fname: "~/src/cwtest/src/cwtest/cfg/gutim_full/vel_table/vel_table.json"
vel_table_backup_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/vel_table/backup"
crossFadeSrate: 48000.0, // TODO: move to flow cfg. and set via 'system default sample rate'
crossFadeCount: 3,
beg_play_loc: 0, //0, //12431, // coda 11499,
end_play_loc: 0, //59, //14726, // coda 12426,
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: false,
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",
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 } }
*/
}
}
}
}

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 it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,322 @@
{
test: {
preset_sel: {
params: {
score_fn: "~/src/cwtest/src/cwtest/cfg/gutim_full/score/temp.csv",
record_dir: "~/src/cwtest/src/cwtest/cfg/gutim_full/preset_sel",
record_fn: "unknown",
record_fn_ext: "txt",
flow_proc_dict_fn: "~/src/cwtest/src/cwtest/cfg/gutim_full/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",
// 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, 3, 5, 7, 9 , 11, 13, 16, 19, 22, 25, 28, 32, 36, 40, 44, 48, 53, 58, 63, 68, 73, 78, 84, 89 ]
//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",
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 } }
*/
}
}
}
}

View File

@ -0,0 +1,77 @@
{
"tables": [
{
"table": [
1,
5,
10,
16,
21,
26,
32,
37,
42,
48,
53,
58,
64,
69,
74,
80,
85,
90,
96,
101,
106,
112,
117,
122,
127
],
"enableFl": true,
"defaultFl": true,
"device": "sampler",
"name": "ivory"
},
{
"table": [
1,
3,
5,
7,
9,
12,
15,
18,
22,
26,
30,
34,
36,
40,
44,
48,
52,
56,
60,
64,
66,
72,
76,
80,
83
],
"enableFl": true,
"defaultFl": true,
"device": "piano",
"name": "spirio"
}
],
"incr_pitch": 3,
"max_pitch": 108,
"min_pitch": 22,
"pseq_velocity": 64,
"vseq_pitch": 60,
"note_off_ms": 250,
"note_on_ms": 500
}