cwtest/cfg : Updates
This commit is contained in:
parent
2bcad4cf40
commit
3d604c139f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,5 +1,6 @@
|
||||
# directories to ignore
|
||||
libcw
|
||||
backup
|
||||
|
||||
.deps
|
||||
autom4te.cache
|
||||
|
166
src/cwtest/cfg/audio_midi_record/audio_midi_record.cfg
Normal file
166
src/cwtest/cfg/audio_midi_record/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/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: [],
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
22
src/cwtest/cfg/flow_subnet.cfg
Normal file
22
src/cwtest/cfg/flow_subnet.cfg
Normal 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 } }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
525
src/cwtest/cfg/gutim_full/flow_proc_dict.cfg
Normal file
525
src/cwtest/cfg/gutim_full/flow_proc_dict.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: 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."}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
327
src/cwtest/cfg/gutim_full/gutim.cfg
Normal file
327
src/cwtest/cfg/gutim_full/gutim.cfg
Normal 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 } }
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
32328
src/cwtest/cfg/gutim_full/preset_select/m1_350.txt
Normal file
32328
src/cwtest/cfg/gutim_full/preset_select/m1_350.txt
Normal file
File diff suppressed because it is too large
Load Diff
1
src/cwtest/cfg/gutim_full/preset_select/m350-458.txt
Normal file
1
src/cwtest/cfg/gutim_full/preset_select/m350-458.txt
Normal file
File diff suppressed because one or more lines are too long
27211
src/cwtest/cfg/gutim_full/score/temp.csv
Normal file
27211
src/cwtest/cfg/gutim_full/score/temp.csv
Normal file
File diff suppressed because it is too large
Load Diff
17738
src/cwtest/cfg/gutim_full/score/temp.txt
Normal file
17738
src/cwtest/cfg/gutim_full/score/temp.txt
Normal file
File diff suppressed because it is too large
Load Diff
322
src/cwtest/cfg/gutim_full/temp.cfg
Normal file
322
src/cwtest/cfg/gutim_full/temp.cfg
Normal 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 } }
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
77
src/cwtest/cfg/gutim_full/vel_table/vel_table.json
Normal file
77
src/cwtest/cfg/gutim_full/vel_table/vel_table.json
Normal 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
|
||||
}
|
Loading…
Reference in New Issue
Block a user