diff --git a/flow/proc_dict.cfg b/flow/proc_dict.cfg index cbe87f7..a13e8dc 100644 --- a/flow/proc_dict.cfg +++ b/flow/proc_dict.cfg @@ -1,4 +1,15 @@ { + + poly: { + vars: { + count: { type:uint, flags:["init"], value:1, doc:"Count of network duplicates." }, + parallel_fl: { type:bool, flags:["init"], value:false, doc:"True to run voices concurrently." } + preset_sfx_id:{ type:uint, value:-1, doc:"The voice index to assign the prefix to or -1 if there is no preset to assign." }, + preset_label: { type:string, value:"", doc:"The network preset to activate on voice channel 'preset_idx'." }, + } + } + + balance: { doc: [ "Stereo balance control." ] vars: { @@ -57,7 +68,7 @@ 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:ftime, value:0.0, doc:"Seek to the specified seconds offset." } + seekSecs:{ type:ftime, flags:["notify"], value:0.0, doc:"Seek to the specified seconds offset." } eofFl:{ type:bool, value: true, doc:"Set the system 'halt' flag when the audio is completely read."}, } } @@ -85,11 +96,11 @@ audio_split: { vars: { - in: { type:audio, flags:["src"], doc:"Audio input." }, - select: { type:cfg, flags:["init"], doc:"A list of integers where each value selects an output channel for the associated input channel." } - igain: { type:coeff, value:1.0, doc:"Audio gain for each input channel." } - ogain: { type:coeff, flags["mult"], value:1.0, doc:"Audio gain for each output channel." } - out: { type:audio, flags["mult"], doc:"Audio output." }, + in: { type:audio, flags:["src"], doc:"Audio input." }, + select: { type:cfg, flags:["init"], doc:"A list of integers where each value selects an output channel for the associated input channel." } + igain: { type:coeff, flags:["notify"], value:1.0, doc:"Audio gain for each input channel." } + ogain: { type:coeff, flags:["mult","notify"], value:1.0, doc:"Audio gain for each output channel." } + out: { type:audio, flags:["mult"], doc:"Audio output." }, } presets: @@ -120,27 +131,27 @@ audio_mix: { vars: { - in: { type:audio, flags:["src","mult"], doc:"Audio input." }, - igain: { type:coeff, flags:["mult"], value:0.5, doc:"Audio gain for input 0." }, - ogain: { type:coeff, value:1.0, doc:"Output gain." }, - out: { type:audio, doc:"Audio output. Channel count is max of the input signal channels." }, + in: { type:audio, flags:["src","mult"], doc:"Audio input." }, + igain: { type:coeff, flags:["notify","mult"], value:0.5, doc:"Audio gain for input 0." }, + ogain: { type:coeff, flags:["notify"], value:1.0, doc:"Output gain." }, + out: { type:audio, doc:"Audio output. Channel count is max of the input signal channels." }, } } audio_marker: { vars: { - in: { type:audio, flags:["src"], doc:"Audio input."}, - trigger: { type:all, value:0, doc:"Marker trigger."}, - out: { type:audio, doc:"Audio output."}, + in: { type:audio, flags:["src"], doc:"Audio input."}, + trigger: { type:all, flags:["notify"], value:0, doc:"Marker trigger."}, + out: { type:audio, doc:"Audio output."}, } } audio_delay: { vars: { in: { type:audio, flags:["src"], doc:"Audio input." }, - maxDelayMs: { type:ftime, value:1000.0 doc:"Maximum possible delay in milliseconds." }, - delayMs: { type:ftime, doc:"Delay in milliseconds." }, - out: { type:audio, doc:"Audio output." }, + maxDelayMs: { type:ftime, value:1000.0 doc:"Maximum possible delay in milliseconds." }, + delayMs: { type:ftime, flags:["notify"], doc:"Delay in milliseconds." }, + out: { type:audio, doc:"Audio output." }, } } @@ -177,13 +188,13 @@ pv_analysis: { vars: { - in: { type:audio, flags:["src"], doc:"Audio input." }, - enable: { type:bool, value: true, doc:"Enable/disable the processor."} - 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 change of each bin." }, - out: { type:spectrum, doc:"Spectrum output." } + in: { type:audio, flags:["src"], doc:"Audio input." }, + enable: { type:bool, value: true, doc:"Enable/disable the processor."} + maxWndSmpN: { type:uint, value: 1024, doc:"Maximum window sample count." }, + wndSmpN: { type:uint, flags:["notify"],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 change of each bin." }, + out: { type:spectrum, doc:"Spectrum output." } } presets: { @@ -270,15 +281,15 @@ spec_dist: { vars: { - in: { type:spectrum, flags:["src"], doc:"Spectrum input." }, - enable: { type:bool, value: true, doc:"Enable/disable this processor."}, - bypass: { type:bool, value: false, doc:"Copy input to output without transform."}, - 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."}, + in: { type:spectrum, flags:["src"], doc:"Spectrum input." }, + enable: { type:bool, flags:["notify"], value: true, doc:"Enable/disable this processor."}, + bypass: { type:bool, flags:["notify"], value: false, doc:"Copy input to output without transform."}, + ceiling: { type:coeff, flags:["notify"], value: 30.0, doc:"Ceiling parameter."}, + expo: { type:coeff, flags:["notify"], value: 2.0, doc:"Exponent parameter."}, + thresh: { type:coeff, flags:["notify"], value: 54.0, doc:"Threshold parameter."}, + upr: { type:coeff, flags:["notify"], value: -0.7, doc:"Upper slope parameter."}, + lwr: { type:coeff, flags:["notify"], value: 2.0, doc:"Lower slope parameter."}, + mix: { type:coeff, flags:["notify"], value: 0.0, doc:"Basic/Bump Mix parameter."}, out: { type:spectrum, doc:"Spectrum output." }, @@ -412,18 +423,18 @@ compressor: { vars: { - in: { type:audio, flags:["src"], doc:"Audio input." }, - enable: { type:bool, value: true, doc:"Same as bypass with opposite polarity." }, - 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."}, - out: { type:audio, doc:"Audio output." }, + in: { type:audio, flags:["src"], doc:"Audio input." }, + enable: { type:bool, flags:["notify"], value: true, doc:"Same as bypass with opposite polarity." }, + bypass: { type:bool, flags:["notify"], value: false, doc:"Bypass the compressor."}, + igain: { type:coeff, flags:["notify"], value: 1.0, doc:"Input gain."}, + thresh: { type:coeff, flags:["notify"], value: 90.0, doc:"Attack threshold in dB."}, + ratio: { type:coeff, flags:["notify"], value: 2.0, doc:"Compression ratio."}, + atk_ms: { type:coeff, flags:["notify"], value: 20.0, doc:"Attack time in milliseconds."}, + rls_ms: { type:coeff, flags:["notify"], value: 20.0, doc:"Release time in milliseconds."}, + wnd_ms: { type:coeff, flags:["notify"], value: 200.0, doc:"RMS calc. window length in milliseconds."}, + maxWnd_ms: { type:coeff, flags:["notify"], value: 1000.0, doc:"Maximim (allocated) window length in milliseconds."}, + ogain: { type:coeff, flags:["notify"], value: 1.0, doc:"Output gain."}, + out: { type:audio, doc:"Audio output." }, } presets: { @@ -529,12 +540,12 @@ limiter: { vars: { - in: { type:audio, flags:["src"], doc:"Audio input." }, - bypass: { type:bool, value: false, doc:"Bypass the limiter."}, - igain: { type:coeff, value: 1.0, doc:"Input gain."}, - thresh: { type:coeff, value: 0.0, doc:"Linear (0.0-1.0) threshold."}, - ogain: { type:coeff, value: 1.0, doc:"Output gain."}, - out: { type:audio, doc:"Audio output." }, + in: { type:audio, flags:["src"], doc:"Audio input." }, + bypass: { type:bool, flags:["notify"], value: false, doc:"Bypass the limiter."}, + igain: { type:coeff, flags:["notify"], value: 1.0, doc:"Input gain."}, + thresh: { type:coeff, flags:["notify"], value: 0.0, doc:"Linear (0.0-1.0) threshold."}, + ogain: { type:coeff, flags:["notify"], value: 1.0, doc:"Output gain."}, + out: { type:audio, doc:"Audio output." }, } presets: { @@ -579,21 +590,12 @@ } } - poly: { - vars: { - count: { type:uint, flags:["init"], value:1, doc:"Count of network duplicates." }, - parallel_fl: { type:bool, flags:["init"], value:false, doc:"True to run voices concurrently." } - preset_sfx_id:{ type:uint, value:-1, doc:"The voice index to assign the prefix to or -1 if there is no preset to assign." }, - preset_label: { type:string, value:"", doc:"The network preset to activate on voice channel 'preset_idx'." }, - } - } - sample_hold: { vars: { in: { type:audio, flags:["src"], doc:"Audio input source." }, - period_ms: { type:ftime, value:50, doc:"Sample period in milliseconds." }, - out: { type:sample, value:0.0, doc:"First value in the sample period." }, - mean: { type:sample, value:0.0, doc:"Mean value of samples in period." }, + period_ms: { type:ftime, flags:["notify"], value:50, doc:"Sample period in milliseconds." }, + out: { type:sample, value:0.0, doc:"First value in the sample period." }, + mean: { type:sample, value:0.0, doc:"Mean value of samples in period." }, } } @@ -612,16 +614,16 @@ "However, an explicit type may be set using the 'out_type' argument." ] vars: { - in: { type:numeric, value:0.0, flags["mult"], doc:"Set the current value."}, - trigger: { type:all, value:0.0, doc:"Send the currrent value on the next exec cycle."}, - out_type: { type:string, value:"", flags:["init"], doc:"The type of the output value."}, - out: { type:runtime, flags:["no_src"], doc:"Output numeric value."}, + in: { type:numeric, value:0.0, flags:["notify","mult"], doc:"Set the current value."}, + trigger: { type:all, value:0.0, flags:["notify"], doc:"Send the currrent value on the next exec cycle."}, + out_type: { type:string, value:"", flags:["init"], doc:"The type of the output value."}, + out: { type:runtime, flags:["no_src"], doc:"Output numeric value."}, } } halt:{ vars: { - in: { type:all, value:0.0, flags:["src"], doc:"Any value halts the network."}, + in: { type:all, value:0.0, flags:["src","notify"], doc:"Any value halts the network."}, } } @@ -632,36 +634,36 @@ // The data type of 'store' must be convertable to the data type of 'out'. reg: { vars: { - in: { type:all, flags:["src"], doc:"Input value."}, - store: { type:all, doc:"Alternate input value."}, - out: { type:runtime, flags:["no_src"], doc:"Output value."}, + in: { type:all, flags:["notify","src"], doc:"Input value."}, + store: { type:all, flags:["notify"], doc:"Alternate input value."}, + out: { type:runtime, flags:["notify","no_src"], doc:"Output value."}, } } timer: { vars: { - srate: { type:srate, value:0, flags["src"], doc:"Sample rate to use as the time base. 0=Use default system sample rate." }, - delay_ms: { type:ftime, value:0, doc:"Delay before the first output." }, - period_ms: { type:ftime, value:100, doc:"Timer period in milliseconds." }, - out: { type:bool, value:false, doc:"Output pulse." }, + srate: { type:srate, value:0, flags:["src"], doc:"Sample rate to use as the time base. 0=Use default system sample rate." }, + delay_ms: { type:ftime, value:0, flags:["notify"], doc:"Delay before the first output." }, + period_ms: { type:ftime, value:100, flags:["notify"], doc:"Timer period in milliseconds." }, + out: { type:bool, value:false, doc:"Output pulse." }, } } counter: { vars: { - trigger: { type:all, flags["src"], doc:"Counter increments with each toggle of trigger." }, - reset: { type:all, value:0.0, doc:"Reset the counter to the initial value." }, - init: { type:numeric, value:0.0, doc:"Counter initial value." }, - min: { type:numeric, value:0.0, doc:"Minimum output value." }, - max: { type:numeric, value:10.0, doc:"Maximum output value." }, - inc: { type:numeric, value:1.0, doc:"Incrment value." }, - repeat_fl: { type:bool, value:true, doc:"Repeat on reaching the limits." }, - mode: { type:string, value:"modulo", doc:"limit mode: 'modulo'=wrap, 'reverse'=count in opposite direction, 'clip'=repeat limit value."}, - out_type: { type:string, value:double, flags:["init"], doc:"The type of the output value." }, - upr_lim: { type:bool, value:false, flags:["no_src"], doc:"Outputs 'true' if the upper limit is reached." }, - lwr_lim: { type:bool, value:false, flags:["no_src"], doc:"Outputs 'true' if the lower limit is reached." }, - limit: { type:bool, value:false, flags:["no_src"], doc:"Outputs 'true' if the upper or lower limit is reached." }, - out: { type:runtime, value:0.0, doc:"Counter output value."}, + trigger: { type:all, flags:["notify","src"], doc:"Counter increments with each toggle of trigger." }, + reset: { type:all, flags:["notify"], value:0.0, doc:"Reset the counter to the initial value." }, + init: { type:numeric, value:0.0, doc:"Counter initial value." }, + min: { type:numeric, value:0.0, doc:"Minimum output value." }, + max: { type:numeric, value:10.0, doc:"Maximum output value." }, + inc: { type:numeric, value:1.0, doc:"Incrment value." }, + repeat_fl: { type:bool, value:true, doc:"Repeat on reaching the limits." }, + mode: { type:string, flags:["notify"], value:"modulo", doc:"limit mode: 'modulo'=wrap, 'reverse'=count in opposite direction, 'clip'=repeat limit value."}, + out_type: { type:string, flags:["init"], value:double, doc:"The type of the output value." }, + upr_lim: { type:bool, flags:["no_src"], value:false, doc:"Outputs 'true' if the upper limit is reached." }, + lwr_lim: { type:bool, flags:["no_src"], value:false, doc:"Outputs 'true' if the lower limit is reached." }, + limit: { type:bool, flags:["no_src"], value:false, doc:"Outputs 'true' if the upper or lower limit is reached." }, + out: { type:runtime, value:0.0, doc:"Counter output value."}, } } @@ -670,16 +672,16 @@ list: { vars: { 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." }, + in: { type:uint, flags:["notify","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." }, + value: { type:runtime, flags:["mult"], doc:"List 'mult' output per list value." }, } } add: { vars: { - in: { type:numeric, flags:["src","mult"], doc:"Operands" }, + in: { type:numeric, flags:["notify","src","mult"], doc:"Operands" }, otype: { type:string, value:double, flags:["init"], doc:"The type of the output value." }, out: { type:runtime, flags:["no_src"], doc:"Result" }, } @@ -687,7 +689,7 @@ preset: { vars: { - in: { type:string, flags:["src"], doc:"Preset to select." }, + in: { type:string, flags:["src","notify"], doc:"Preset to select." }, } } @@ -701,12 +703,12 @@ // 2. The only purpose for the 'srateSrc' is to get the sample rate of the system. vars: { - net: { type:string, doc:"Proc name of the poly network."}, - netSfxId: { type:uint, value: 0, doc:"Label sfx id of the source poly instance."}, - srateSrc: { type:audio, flags:["src"], doc:"Audio source to derive the sample rate."}, - durMs: { type:uint, value:1000, doc:"Cross-fade duration in milliseconds" }, - trigger: { type:all, doc:"Start cross-fade." }, - preset: { type:string, doc:"Preset to apply to the poly network." }, + net: { type:string, doc:"Proc name of the poly network."}, + netSfxId: { type:uint, value: 0, doc:"Label sfx id of the source poly instance."}, + srateSrc: { type:audio, flags:["src"], doc:"Audio source to derive the sample rate."}, + durMs: { type:uint, value:1000, doc:"Cross-fade duration in milliseconds" }, + trigger: { type:all, flags:["notify"], doc:"Start cross-fade." }, + preset: { type:string,flags:["notify"], doc:"Preset to apply to the poly network." }, gain: { type:coeff, flags:["mult"], value:0, doc:"Cross-fade gain output." } } @@ -717,7 +719,7 @@ vars: { 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."}, + chCnt: { type:uint, flags:["init"], doc:"Output audio channel count."}, out: { type:audio, doc:"Audio out" }, print_fl: { type:bool, value:false, doc:"Print MIDI message to console." }, done_fl: { type:bool, value:false, doc:"Triggers when voice is available."} @@ -752,28 +754,28 @@ test_pitch: { type:uint, value:0, doc:"Pitch to test." }, test_key_pitch: { type:uint, value:48, doc:"Base pitch to use for lowest velocity when in 'test' mode." }, - load_thread_cnt: { type:uint, flags["init"], value:16, doc:"Count of threads to use for wave table loading." } + load_thread_cnt: { type:uint, flags:["init"], value:16, doc:"Count of threads to use for wave table loading." } } }, print: { vars: { - in: { type:all, flags:["mult"], doc: "Value to print." }, - eol_fl: { type:all, doc: "Trigger an end-of-line." }, - text: { type:cfg, doc: "List of labels." }, + in: { type:all, flags:["mult"], doc: "Value to print." }, + eol_fl: { type:all, flags:["notify"], doc: "Trigger an end-of-line." }, + text: { type:cfg, flags:["notify"], doc: "List of labels." }, } } midi_msg: { vars: { - ch: { type:uint, value:0, doc:"MIDI channel input." }, - status: { type:uint, value:0, doc:"MIDI status input."}, - d0: { type:uint, value:0, doc:"MIDI data byte 0."}, - d1: { type:uint, value:0, doc:"MIDI data byte 1."}, - trigger: { type:all, value:0, doc:"Send message."}, - buf_cnt: { type:uint, value:16, flags:["init"], doc:"Length of internal msg buffer."}, - out: { type:midi, doc:"MIDI output."}, + ch: { type:uint, flags:["notify"], value:0, doc:"MIDI channel input." }, + status: { type:uint, flags:["notify"], value:0, doc:"MIDI status input."}, + d0: { type:uint, flags:["notify"], value:0, doc:"MIDI data byte 0."}, + d1: { type:uint, flags:["notify"], value:0, doc:"MIDI data byte 1."}, + trigger: { type:all, flags:["notify"], value:0, doc:"Send message."}, + buf_cnt: { type:uint, value:16, flags:["init"], doc:"Length of internal msg buffer."}, + out: { type:midi, doc:"MIDI output."}, } } @@ -817,8 +819,8 @@ 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." }, - trig: { type:all, doc:"Trigger to advance to next channel."}, + donefl: { type:bool, flags:["mult"], doc:"Per audio channel voice 'available' flags." }, + trig: { type:all, flags:["notify"], doc:"Trigger to advance to next channel."}, 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."}, } @@ -827,16 +829,16 @@ score_player: { doc: [ "Generate MIDI and score location information from a score file." ] vars: { - fname: { type:string, flags:["init"], value:"", doc:"Score file name." }, - stopping_ms: { type:uint, flags:["init"], value:5000, doc:"Maximum stopping time in milliseconds." }, - start: { type:all, value:false, doc:"Start playback" }, - stop: { type:all, value:false, doc:"Stop playback" }, - b_loc: { type:uint, value:0, doc:"Score begin location." }, - e_loc: { type:uint, value:0, doc:"Score end location." }, - b_meas: { type:uint, value:0, doc:"Score begin measure." }, - e_meas: { type:uint, value:0, doc:"Score end measure." }, - done_fl: { type:bool, value:false, doc:"Emits true on done." }, - out: { type:record, doc:"Score event record.", + fname: { type:string, flags:["init"], value:"", doc:"Score file name." }, + stopping_ms: { type:uint, flags:["init"], value:5000, doc:"Maximum stopping time in milliseconds." }, + start: { type:all, flags:["notify"], value:false, doc:"Start playback" }, + stop: { type:all, flags:["notify"], value:false, doc:"Stop playback" }, + b_loc: { type:uint, flags:["notify"], value:0, doc:"Score begin location." }, + e_loc: { type:uint, flags:["notify"], value:0, doc:"Score end location." }, + b_meas: { type:uint, flags:["notify"], value:0, doc:"Score begin measure." }, + e_meas: { type:uint, flags:["notify"], value:0, doc:"Score end measure." }, + 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" }, @@ -871,7 +873,7 @@ 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." }, + 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 ." } } @@ -921,25 +923,25 @@ cfg: { type:cfg, flags:["init"], doc:"Initial preset configuration." }, fname: { type:string, flags:["init"], value:"", doc:"Preset file name."}, in: { type:record, fmt:{ required:["loc"] }, doc:"Input record with 'loc' field." }, - loc: { type:uint, value:0, doc:"Seek to this location." }, - reset: { type:bool, value:false, doc:"Reset to initial state."}, - per_note_fl: { type:bool, value:false, doc:"Update the selected preset on every note, otherwise update on new location values." }, + loc: { type:uint, value:0, doc:"Seek to this location." }, + reset: { type:bool, flags:["notify"], value:false, doc:"Reset to initial state."}, + per_note_fl: { type:bool, value:false, doc:"Update the selected preset on every note, otherwise update on new location values." }, - pri_prob_fl: { type:bool, value: false, doc:"Select primary preset probabilstically." } - pri_uniform_fl: { type:bool, flags:["ui_disable"], value: false, doc:"Use a uniform probability distribution rather than an 'order' weighted distribution." }, - pri_dry_on_play_fl: { type: bool, flags:["ui_disable"], value: true, doc:"Select 'dry' if it is the manually selected preset." }, - pri_allow_all_fl: { type: bool, flags:["ui_disable"], value: false, doc:"Select from all possible presets rather than the presets with 'order' > 0." }, - pri_dry_on_sel_fl: { type: bool, flags:["ui_disable"], value: true, doc:"Select 'dry' if 'allow_all' is selected and 'dry' has 'order' > 0." }, + pri_prob_fl: { type:bool, flags:["notify"], value: false, doc:"Select primary preset probabilstically." } + pri_uniform_fl: { type:bool, flags:["notify","ui_disable"], value: false, doc:"Use a uniform probability distribution rather than an 'order' weighted distribution." }, + pri_dry_on_play_fl: { type: bool, flags:["notify","ui_disable"], value: true, doc:"Select 'dry' if it is the manually selected preset." }, + pri_allow_all_fl: { type: bool, flags:["notify","ui_disable"], value: false, doc:"Select from all possible presets rather than the presets with 'order' > 0." }, + pri_dry_on_sel_fl: { type: bool, flags:["notify","ui_disable"], value: true, doc:"Select 'dry' if 'allow_all' is selected and 'dry' has 'order' > 0." }, - interp_fl: { type: bool, value: false, doc:"Interpolate between the primary and secondary presets." }, - interp_dist: { type: float, flags:["ui_disable"], value: 0.5, doc:"Unit fractionaly distance between primary and secondary preset." }, - interp_rand_fl: { type: bool, flags:["ui_disable"], value: true, doc:"Randomly select the distance between the primary and secondary preset." }, + interp_fl: { type: bool, flags:["notify"], value: false, doc:"Interpolate between the primary and secondary presets." }, + interp_dist: { type: float, flags:["notify","ui_disable"], value: 0.5, doc:"Unit fractionaly distance between primary and secondary preset." }, + interp_rand_fl: { type: bool, flags:["notify","ui_disable"], value: true, doc:"Randomly select the distance between the primary and secondary preset." }, - sec_prob_fl: { type:bool, flags:["ui_disable"], value: false, doc:"Select secondary preset probabilstically." } - sec_uniform_fl: { type:bool, flags:["ui_disable"], value: false, doc:"Use a uniform probability distribution rather than an 'order' weighted distribution." }, - sec_dry_on_play_fl: { type: bool, flags:["ui_disable"], value: true, doc:"Select 'dry' if it is the manually selected preset." }, - sec_allow_all_fl: { type: bool, flags:["ui_disable"], value: false, doc:"Select from all possible presets rather than the presets with 'order' > 0." }, - sec_dry_on_sel_fl: { type: bool, flags:["ui_disable"], value: true, doc:"Select 'dry' if 'allow_all' is selected and 'dry' has 'order' > 0." }, + sec_prob_fl: { type:bool, flags:["notify","ui_disable"], value: false, doc:"Select secondary preset probabilstically." } + sec_uniform_fl: { type:bool, flags:["notify","ui_disable"], value: false, doc:"Use a uniform probability distribution rather than an 'order' weighted distribution." }, + sec_dry_on_play_fl: { type: bool, flags:["notify","ui_disable"], value: true, doc:"Select 'dry' if it is the manually selected preset." }, + sec_allow_all_fl: { type: bool, flags:["notify","ui_disable"], value: false, doc:"Select from all possible presets rather than the presets with 'order' > 0." }, + sec_dry_on_sel_fl: { type: bool, flags:["notify","ui_disable"], value: true, doc:"Select 'dry' if 'allow_all' is selected and 'dry' has 'order' > 0." }, midi_in: { type:midi, flags:["mult","no_ui"], doc:"Per voice MIDI in" },