diff --git a/flow/proc_dict.cfg b/flow/proc_dict.cfg index 05f689a..83ae88a 100644 --- a/flow/proc_dict.cfg +++ b/flow/proc_dict.cfg @@ -67,6 +67,11 @@ gain: { type:coeff, value:1.0, doc:"Gain coefficient." } out: { type:audio, doc:"Audio output." }, } + presets: + { + mute_off: { gain:1 }, + mute_on: { gain:0 } + } } audio_split: { @@ -160,12 +165,13 @@ pv_analysis: { vars: { - in: { type:audio, flags:["src"], doc:"Audio input." }, - maxWndSmpN: { type:uint, value: 512, 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." } + in: { type:audio, flags:["src"], doc:"Audio input." }, + maxWndSmpN: { type:uint, value: 512, 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." }, + //args: { type:record, doc:"Parameter record with fields 'wndSmpN' and 'hopSmpN'." }, + out: { type:spectrum, doc:"Spectrum output." } } presets: { @@ -647,11 +653,11 @@ // string,cfg,numeric (uint,int,float,double) list: { vars: { - cfg_fname: { type:string, value:"", flags:["init"], doc:"List cfg file." }, - in: { type:uint, flags:["src"], doc:"List selection index." }, - list: { type:cfg, value:{} doc:"List as a 'cfg' object." }, - out: { type:runtime, doc:"List output value." }, - value: { type:runtime, flags["mult"], doc:"List 'mult' output per list value." }, + cfg_fname: { type:string, flags:["init"], value:"", doc:"List cfg file." }, + in: { type:uint, flags:["src"], doc:"List selection index." }, + list: { type:cfg, flags:["init"], value:{} doc:"List as a 'cfg' object." }, + out: { type:runtime, doc:"List output value." }, + value: { type:runtime, flags["mult"], doc:"List 'mult' output per list value." }, } } @@ -693,8 +699,10 @@ midi_voice: { vars: { - in: { type:midi, doc:"MIDI in" }, - out: { type:audio, doc:"Audio out" } + in: { type:midi, doc:"MIDI in" }, + gain: { type:coeff, value:1.0, doc:"Audio gain." }, + chCnt: { type:uint, flags["init"], doc:"Output audio channel count."}, + out: { type:audio, doc:"Audio out" } done_fl: { type:bool, value:false, doc:"Triggers when voice is available."} } }, @@ -705,7 +713,7 @@ vars: { - in: { type:midi, doc:"MIDI input."}, + in: { type:record, doc:"MIDI input."}, voice_cnt: { type:uint, value:3, flags:["init"], doc:"Count of voices." }, out: { type:midi, flags:["mult"], doc:"MIDI output to voices. One per voice." }, done_fl: { type:bool, value:false, flags:["mult"], doc:"Voice available feedback triggers from voices. One per voice."}, @@ -780,5 +788,142 @@ } } + poly_xform_ctl: { + doc: ["When frag_id changes route "], + vars: { + out_ch_cnt:{ type:uint, flags:["init"], doc:"Count of audio output channels."}, + in: { type:audio, flags:["src","mult"], doc:"Audio input." }, + midi: { type:midi, flags:["mult"], doc:"Per audio channel MIDI message from poly_voice_ctl." }, + donefl: { type:bool, flags["mult"], doc:"Per audio channel voice 'available' flags." }, + out_ch_idx:{ type:uint, value:0, doc:"Transform preset id. Change indicates that successive notes should go to a new output." }, + out: { type:audio, flags:["mult"] doc:"Audio output."}, + } + } + + score_player: { + doc: [ "Generate MIDI and score location information from a score file." ] + vars: { + fname: { type:string, flags:["init"], value:"", doc:"Score file name." }, + vel_tbl_fname:{ type:string, flags:["init"], value:"", doc:"Velocity table filename as create by vwVelTableTuner." }, + vel_tbl_label:{ type:string, value:"", doc:"Name of the active velocity table referenced by 'vel_fname."}, + //out: { type:midi, doc:"MIDI output." }, + loc: { type:uint, value:0, doc:"Score location output." }, + done_fl: { type:bool, value:false, doc:"Emits true on done." }, + out: { type:record, doc:"Score event record.", + fmt: { + fields: { + midi: { type:m3, doc:"MIDI channel event message" }, + loc: { type:uint, value:-1, doc:"Score location id." }, + meas: { type:uint, value:-1, doc:"Score measure." } + } + } + } + } + }, + + // out: { type:record + // fmt: { + // fields: { + // midi: { type:midi, doc:"MIDI channel event message."}, + // loc: { type:uint, value:-1, doc:"Score location id."}, + // meas: { type:uint, value:-1, doc:"Score measure location."} + // blah: { type:group, doc:"My group" + // fields: { + // foo: { type:float, value:3, doc:"Three, always three"} + // } + // } + // } + // } + + + score_follower: { + doc:[ "MIDI score follower: Sets the 'loc' field of the output record according to the score location." ] + vars: { + in: { type:record, doc:"Input record with 'midi' and 'loc' fields." }, + dyntbl_fname: { type:string, flags:["init"], value:"", doc:"Dynamics reference table file name." }, + score_fname: { type:string, flags:["init"], value:"", doc:"Score file with location information." }, + score_wnd: { type:uint, flags:["init"], value:7, doc:"Count of locations in the score search window." }, + midi_wnd: { type:uint, flags:["init"], value:15, doc:"Count of MIDI events to align in the score search window." }, + print_fl: { type:bool, flags:["init"], value:false, doc:"Set to print log of score follower state." }, + back_track_fl: { type:bool, flags["init"], value:false, doc:"Set if the score follower is allowed to report locations out of order." }, + loc: { type:uint, doc:"Score location." }, + out: { type:record, doc:"Input record with the 'loc' field set ." } + } + } + + + preset_select: { + doc:[ "Given a score location return a preset id and record."], + vars: { + cfg: { type:cfg, flags:["init"], preset:"init", doc:"Initial preset configuration." }, + preset_proc: { type:string, flags:["init"], value:"", doc:"Proc containing a network to search for preset label->value mappings." }, + xf_cnt: { type:uint, flags:["init"], value:3, doc:"Transform channel count." }, + in: { type:record, doc:"Input record with 'loc' field." }, + fname: { type:string, flags:["init"], value:"", doc:"Preset file name."}, + loc: { type:uint, value:0, doc:"Seek to location." }, + + out_idx:{ type:uint, value:0, doc:"Transform output index." }, + xf_args: { type:record, flags["mult"], doc:"Transform parameter record." + fmt: { + fields: { + pva: { type:group, doc:"Phase vocoder parameters", + fields: { + hopSmpN: { type: uint, doc:"Hop sample count." }, + wndSmpN: { type: uint, doc:"Window sample count." }, + } + } + sd: { type:group, doc:"Spectrum distortion parameters.", + fields: { + bypass: { type:bool, value:false, doc:"Copy input direcly to output." }, + ceiling:{ type:coeff, value:30.0, doc:"Ceiling parameter." }, + expo: { type:coeff, value: 2.0, doc:"Exponent parameter." }, + thresh: { type:coeff, value:54.0, doc:"Threshold parameter." }, + upr: { type:coeff, value:-0.7, doc:"Upper slope parameter." }, + lwr: { type:coeff, value: 2.0, doc:"Lower slope parameter." }, + mix: { type:coeff, value: 0.0, doc:"Basic/bump mix parameter."}, + } + } + cmp: { type:group, doc:"Dynamics compreessor parameters", + fields: { + bypass: { type:bool, value:false, doc:"Bypass the compressor."}, + igain: { type:coeff, value: 1.0, doc:"Input gain."}, + thresh: { type:coeff, value: 90.0, doc:"Attack threshold in dB."}, + ratio: { type:coeff, value: 2.0, doc:"Compression ratio."}, + atk_ms: { type:coeff, value: 20.0, doc:"Attack time in milliseconds."}, + rls_ms: { type:coeff, value: 20.0, doc:"Release time in milliseconds."}, + wnd_ms: { type:coeff, value: 200.0, doc:"RMS calc. window length in milliseconds."}, + maxWnd_ms: { type:coeff, value: 1000.0, doc:"Maximim (allocated) window length in milliseconds."}, + ogain: { type:coeff, value: 1.0, doc:"Output gain."}, + } + } + } + } + } + } + + presets: { + init: { + cfg: { + 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 + + }, + + } + } + }, + + }