|
- plugin ideas:
- - Mult with labels
- - so I can route a distance output to mult and label
- it as 'main seq gate output' to avoid tracing cables
- - event log
- - visualization of past triggers/gates
- - time series or sparkline-ish
- - more or less a scope but without y values and
- a very long time
- - could do diff colors for gates/triggers
- - or gates up and triggers down
- - wide module
- - multiple time view zooms
- - 1x, 2x, 5x, 10, 20x, 50x, etc
- - mostly for appearance or troubleshooting/debugging event stuff
- - could evolve to supporting playing the the history back
- - 1x speed or faster/slower
- - scrubbing?
- - multiple channels of events
- - Table module
- - "an oscillator is a phasor and a table"
- - phasor input (0.0 -> 1.0) or other scaled
- - value output
- - on step, read phasor value, look for a match
- in the table, output the value
- - ui
- - just a scrollable list?
- - columns
- - phasor
- - start range
- - end range
- - output value
- - buttons to add delete entry
- - a x, y graph display showing phasor in volts on X
- and table volts out on Y
- - load table from json in context menu
- - uses:
- - feed a sawtooth osc output into it to
- create rudimentary wave table
- - arbitrary quantizer
- - building block
- - fancy options
- - entries that map a range of phasor input
- values to a range of output values
- - map ranges could be linear/log etc
- - linear
- - slope
- - offset
- - sub ranges could be cos/sine/exp/some distribution etc
- - (similar to the old GIMP color gradient editor)
- - likely could use gimp gradient (ggr) files as a type of table
- - modulating the table offset or value amplitudes
- - credits module
- - widget that shows author, create/mod date, urls, license, other metainfo
- - would save into vcv file as module json data
- - use a rack_credits.json in ~/ or rack doc root to set the default
- - list of author/credit metadata
- - would get appended to if modified by new author
- - how to only update on 'save' or 'save as' ?
- - don't want to append on every autosave.vcv write
- - track a single 'last_edit' to persist on every toJson
- - then on load/fromJSON, add last_edit to author list
- - if there is a way for plugin to distinquish a 'real save' vs
- an 'autosave', then could use that.
- - how to tell when a patch has been 'modified'?
- - needed to avoid adding info on every save or autosave
- - slightly klugey way:
- - if plugin knows the patch it is in, could load patch .vcv/json
- data and compare to 'previous'.
- - chksum would be simplest
- - but could do a smarter/deeper compare diving into the data
- - uses:
- - a patch with the module includes the author info
- - if patch is shared (via patchstorage for ex), and modified
- by a different author, the module json would include info
- for the original author and modification author
- - just as a display widget when sharing a screen capture
- - concerns:
- - could probably be better implemented as a feature of the core vcv serialization
- - 'Equal and opposite'
- - two eqs with 'opposite' settings and an effects loop in between
- - before eq, after eq
- - same bands and q's, but opposite gain
- - ie, if 'before eq' boosts bass and treble by 10db and cuts mids by 12db
- then the 'after eq' would cut bass and treble by 10db and boost mids by 12db
- - an effects send and return in between
- - munge audio signal, send it to effect (a distortion for ex) and unmunge on the way out
- - the before/after transforms would automatically mirror each other
- - otherwise pointless since it could be done with other modules
- - other variations could exist for other reversible-ish transforms
- - dont have to be perfect or lossless
- - compress/expand
- - bitcrush / 'bit extropalate' (is that a thing?)
- - forward/reverse delay?
- - pitch shift (probably most interesting, but
- - transport gui module
- - play/stop/pause/fast forward/reverse/record buttons
- - gate and trig outputs for them
- - just buttons, but with a explicit purpose
- - uses
- - generative patches that need a 'press play to start'
- - specific values
- X - (mostly implemented in 'Specific Value' module)
- X - module with just text entrie fields for entering a float value
- and an output for that value
- - possibly with text widget in combo with a dial or inc/dec
- buttons (spinbox widget)
- X - or 'click and drag to change value'
- X - up/down for small value
- X - left/right for multiplier (middle = 1x, left = 0..1.0x, right >1.0x multi)
- X - 'up and to the left' for fine grained adjustments
- X - fancy
- X - maybe automatically also show CV v/oct freq or note equiv
- - incremental mode for voltage dial, to jump between quantized values,
- in particular between note values. Built in quantizer basically.
- - maybe gate out and button to click to send value and gate output together
- - Seq with per step gate length and rest length between steps
- - 'rest' steps basically
- - A cv 1v/oct display -> freq hz -> period secs -> bpm.
- - (more or less a multiple version of 'Specific Value')
- - ( could display v passed through and/or let you specify as text)
- - CV out
- - button to send gate
- - basically a keyboard with text/entry widgets to let you specify
- CV voltage/hz/period/note name
- - other possible things to display/select
- - midi note number
- - # of steps from a root
- - interval from a root ( third, flat fifth, etc)
- - staff / note
- - bpm (for a LFO or general nerdery)
- - SpecificNote
- - choose a specific note from options
- - possible UI that could be implemented like a
- imagemap (ie, use x,y of where clicked to pick note)
- - piano keyboard image
- - piano key style but 2d, with stacked one
- octave keys (kind of accordian-ish)
- - musical staffs
- - possibly with areas along X to indicate note length?
- - maybe left side of X axis for flat, middle for natural, right
- for sharp
- - just a grid
- - various alternative keyboard styles (hex, axis64, starrlab, jammer keyboard)
- - could use multiple instances and a 'Whats New Now' to combine them
- - generic voltage quantizer
- - based on 'table' module
- - except input CV is 'rounded' to edge of maps
- - see 'fancy options' for table module above
- - 'Attached file' module.
- - GUI file picker
- - add base64 of file to data to store in plugin Json.
- - Could be a list
- - would need to sort out how to only serialize/persist on 'real' save
- vs autosave (to avoid constantly saving the whole thing to autosave.vcv)
- - 'Attached Preset' module
- - more or less 'Attached File' but tweaked for including vcvm presets
- - automatically write out presets to current presets folder?
- - well, not automatically, but more or less just one interactive step
- like a 'save to presets folder' button
- - can a ModuleWidget subclass customize fromJson to allow a module to
- accept 'paste preset' from any plugin?
- - would be easiest UI for attaching a preset
- - 'Maze Table'
- - wave table, but with a maze
- - instead of phasor indexing an array, would "index" into
- a path along the maze graph
- - could have breadth first and depth first paths as options
- - use DAG style mazes (one and only one path out, no loops or cycles)
- - though cycles in maze could be analog for loops in waveform playback
- - maybe something hilbert curve esque?
- - Matrix clock
- - N x N matrix
- - each row defaults to a clock division
- - each column defaults to clock multiply
- - 0,0 defaults to 1x1 quarter note for tempo
- - rows default to 1,2,3,4,6,8,12,16, division
- - ditto for columns multi
- - but row/columns mult/div could be changed to anything
- - XY pad matrix mixer
- - matrix mixer with a JL-Modules/kaosspad/reactor style XY pad
- at each cross point
- - 1,1 -> top output and right output
- - 1,0 -> just top output
- - -1,-1 -> inverted output to top and right output
- - Matrix Mixer with multiple scenes that morph/interpolate
- - more or less like Bidoo ACNE except values morph
- between scenes insted of
- - 2.5 dimension matrix / mixer
- - 8x8 matrix but with an output at
- each crossing point
- - possibly with knob/param for output level
- of each output
- - maybe a per cross mute/solo
- - Much like the movies, the first one was the best.
- - text Notes module with CV/trigger control and multiple messages
- - like a plain notes module, but can react to input from
- patch
- - use case would be describing stages of a generative patch
- - or for adding info to screencast videos
- - Gate Divider
- - like gate length, but instead of generating one gate, it
- generates multiple gates that add up to gate length
- - how to seperate?
- - some fixed inbetween interval ("kerf")
- - divide into on and off gates
- - divide a 1s gate by 1 -> one .5s gate then a .5s 'rest'
- (and vice versa / inverse 10 or 01)
- - divide by 3 -> one .3333s gate, one .3333s rest, one .3333 gate
- ( ie, 101 or 010)
- - divide by 4 -> .25 gate, .25 rest, .25 gate, .25rest
- (1010, 0101)
- - divide by 5 -> .20 on, .20 off, .20 on, .20 off, .20 on
- (10101, 01010)
- - kind of similar to Walsh codes
- " Experimental Electronic Music Devices Employing Walsh Functions",
- "BERNARD A. HUTCHINS, JR"
- "JOURNAL OF THE AUDIO ENGINEERING SOCIETY, October 1973"
- (https://pdfs.semanticscholar.org/6b9c/30f94551aaf05f077aa491f31b196898cd90.pdf)
- - "Sequency" - theres a module name if I ever heard one.
- - Add DC blocker option to Big Mute Button ?
- - Whats New Now
- - multiple inputs, detect, choose and output the most recently change value
- - use to multiple multiple controllers (like Specific Value) together and
- use the 'active' one
- - for each input, track previous (N?) input value[s]
- - on each step, compare current value to previous
- - if different, it's 'new'
- - compare to some value precision (ie, the epsilon to use when comparing floats)
- - compare to some time precision (running average of last N values?)
- - if only one new/changed input, send the new value to the output
- - if multiple new/changed inputs, need to pick which to use
- - most recently chosen for output? ie, stick with input that first started changing
- - least recently chosen? kind of round robin
- - value that most recently started changing? (track how long each input has been changing,
- and choose the one that just "woke up")
- - output a trigger when output value is changing (for ex, a new cv note was detected, send a trigger
- to potentially start a gate...)
- - almost surely already exists with different name/terminology
- - maybe envelope followers and logic?
- - uses:
- - allow multiple CV controllers to be used (ie, a midi-to-cv, a SpecificValue, a TwelveKeys) with
- the final output being DWIM for user (ie, whatever changed last)
- - kind of multiplexing?
- - bet it would make weird noises at audio rate
- - options:
- - way to avoid discont/aliasing in output?
- - interpolation?
- - miniblep?
- - gate out for 'something is changing right now'
- - default output value (0?) if nothing is changing?
- - Blocked In DC!
- - just DC blocker, but I like the name
- - The Big VUte Button
- - The Big Mute Button, but with clickable
- stereo VU meters
- - CV Key Splitter Switch
- - one CV input
- - 12 (* N) outputs, one for each chromatic note
- - if CV in is 1.0V, then only the 'C' output sends signal
- - split a CV into output for each note
- - one octave 'small' version could do it for any octave
- (ie, C0, C-4, C5 all go out the C output)
- - larger versions
- - 5X 5x12 outputs
- - outputs correspond to specific note@octave
- - ie, C0 goes to C0 out, C4 goes to C4 out
- - 10X 10x12 outputs, for -5.0V to 5.0V coverage
- - possibly include a oct adjustment
- - maybe a fine tune
- - ie, a440 vs a437 etc
- - SpecificValue style text box?
- - possibly note-on/note-off style trigger outputs
- - ditto for a gate
- - start gate when new output is chosen, end it
- when the next note is detected
- - maybe some sort of keyboard like widget?
- - CV Key Range
- - like CV Key Splitter Switch except outputs to a set
- of range/group outputs
- - each note has choice of which group/range it goes to
- - set of N (4?) buttons? (could go to more than one range...)
- - a knob with detents?
- - in some way range would just be a more specific version the
- Table module with CV/note specific UI
- (ie, a map of an input to one or more output values)
- - incoming CV split into N ranges
- (bass/treble, bass/baritone/alto/soprano)
- - ranges can overlap
- - two knob/param for each range (low and high)
- - could use FloatFiend/NoteName field from SpecificValue
- for text entry
- - presets/default for
- - bass/treble
- - bass/baritone/alto/soprano/tenor
- - rumble or sub bass / bass / treble
- - below human / human / above human
- - Audio Key Splitter/Range
- - like CV Key stuff, except with audio inputs
- - needs fft magic likely (or at least filters)
- - detect the main harmonics of audio and send output to
- note specific output
- - possibly more than one harmonic
- - ie, audio with fundamental at C4, and another strong harmonic at
- G5 would output from C4 and G5 outputs
- - outputs could be trigger/gate or corresponding CV value
- - or out to some set/group/range of outputs
- - CV value would be Pitch-To-CV
- - Etch-a-Sketch like visualizer
- - X and Y inputs
- - trigger in for 'turn upside down and shake' / reset
- - more or less stylized oscilliscope
- - Timing tuner / temporal heatmap
- - visualizer of where in a 'beat' different inputs (gates/triggers) happen
- - display would be bar graph / histogram like
- - X range would be time between beats
- - X=0 start of clock beat, x=1.0 end of clock beat (assuming 0->1,0 for
- arbitrary range)
- - Y value would be count of other event inputs
- - kind of specialized oscillioscope that accumulates values and is
- triggered for each clock pulse
- - why?
- - might look neat?
- - use for 'tuning' / tweak multiple event sources
- - Timing Chart? Beat Map? Splay Visualizer? Beat Tuner?
- - 2d Scatter Plot
- - visualizer
- - 2 CV/audio inputs (X, Y)
- - Clock or trigger input
- - on trigger, grab the values of each input, plot on graph
- - more or less just an oscillioscope with very short sample
- - Increment / Counter
- - dedicated 'count triggers since reset' module
- - freq counter-ish
- - can be implemented with other modules, but dedicate UX might
- be useful (seems to be a commonly asked question)
- - CV Value to trigger
- - converts cv value into distinct trigger outputs
- - CV in
- - Range param
- - Increment param / Divisions
- - Some large number of trigger outs
- - for ex, range of 4, increment of .25.
- - CV in of 0.0 would send trigger to out 1
- - CV in of 1.25 would send trigger out 5
- - Triggers to CV value
- - opposite of CV Value To Trigger
- - lots of trigger inputs
- - one CV output
- - for values above, input on trigger 5 would send 1.25, etc
|