You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

351 lines
15KB

  1. plugin ideas:
  2. - Mult with labels
  3. - so I can route a distance output to mult and label
  4. it as 'main seq gate output' to avoid tracing cables
  5. - event log
  6. - visualization of past triggers/gates
  7. - time series or sparkline-ish
  8. - more or less a scope but without y values and
  9. a very long time
  10. - could do diff colors for gates/triggers
  11. - or gates up and triggers down
  12. - wide module
  13. - multiple time view zooms
  14. - 1x, 2x, 5x, 10, 20x, 50x, etc
  15. - mostly for appearance or troubleshooting/debugging event stuff
  16. - could evolve to supporting playing the the history back
  17. - 1x speed or faster/slower
  18. - scrubbing?
  19. - multiple channels of events
  20. - Table module
  21. - "an oscillator is a phasor and a table"
  22. - phasor input (0.0 -> 1.0) or other scaled
  23. - value output
  24. - on step, read phasor value, look for a match
  25. in the table, output the value
  26. - ui
  27. - just a scrollable list?
  28. - columns
  29. - phasor
  30. - start range
  31. - end range
  32. - output value
  33. - buttons to add delete entry
  34. - a x, y graph display showing phasor in volts on X
  35. and table volts out on Y
  36. - load table from json in context menu
  37. - uses:
  38. - feed a sawtooth osc output into it to
  39. create rudimentary wave table
  40. - arbitrary quantizer
  41. - building block
  42. - fancy options
  43. - entries that map a range of phasor input
  44. values to a range of output values
  45. - map ranges could be linear/log etc
  46. - linear
  47. - slope
  48. - offset
  49. - sub ranges could be cos/sine/exp/some distribution etc
  50. - (similar to the old GIMP color gradient editor)
  51. - likely could use gimp gradient (ggr) files as a type of table
  52. - modulating the table offset or value amplitudes
  53. - credits module
  54. - widget that shows author, create/mod date, urls, license, other metainfo
  55. - would save into vcv file as module json data
  56. - use a rack_credits.json in ~/ or rack doc root to set the default
  57. - list of author/credit metadata
  58. - would get appended to if modified by new author
  59. - how to only update on 'save' or 'save as' ?
  60. - don't want to append on every autosave.vcv write
  61. - track a single 'last_edit' to persist on every toJson
  62. - then on load/fromJSON, add last_edit to author list
  63. - if there is a way for plugin to distinquish a 'real save' vs
  64. an 'autosave', then could use that.
  65. - how to tell when a patch has been 'modified'?
  66. - needed to avoid adding info on every save or autosave
  67. - slightly klugey way:
  68. - if plugin knows the patch it is in, could load patch .vcv/json
  69. data and compare to 'previous'.
  70. - chksum would be simplest
  71. - but could do a smarter/deeper compare diving into the data
  72. - uses:
  73. - a patch with the module includes the author info
  74. - if patch is shared (via patchstorage for ex), and modified
  75. by a different author, the module json would include info
  76. for the original author and modification author
  77. - just as a display widget when sharing a screen capture
  78. - concerns:
  79. - could probably be better implemented as a feature of the core vcv serialization
  80. - 'Equal and opposite'
  81. - two eqs with 'opposite' settings and an effects loop in between
  82. - before eq, after eq
  83. - same bands and q's, but opposite gain
  84. - ie, if 'before eq' boosts bass and treble by 10db and cuts mids by 12db
  85. then the 'after eq' would cut bass and treble by 10db and boost mids by 12db
  86. - an effects send and return in between
  87. - munge audio signal, send it to effect (a distortion for ex) and unmunge on the way out
  88. - the before/after transforms would automatically mirror each other
  89. - otherwise pointless since it could be done with other modules
  90. - other variations could exist for other reversible-ish transforms
  91. - dont have to be perfect or lossless
  92. - compress/expand
  93. - bitcrush / 'bit extropalate' (is that a thing?)
  94. - forward/reverse delay?
  95. - pitch shift (probably most interesting, but
  96. - transport gui module
  97. - play/stop/pause/fast forward/reverse/record buttons
  98. - gate and trig outputs for them
  99. - just buttons, but with a explicit purpose
  100. - uses
  101. - generative patches that need a 'press play to start'
  102. - specific values
  103. X - (mostly implemented in 'Specific Value' module)
  104. X - module with just text entrie fields for entering a float value
  105. and an output for that value
  106. - possibly with text widget in combo with a dial or inc/dec
  107. buttons (spinbox widget)
  108. X - or 'click and drag to change value'
  109. X - up/down for small value
  110. X - left/right for multiplier (middle = 1x, left = 0..1.0x, right >1.0x multi)
  111. X - 'up and to the left' for fine grained adjustments
  112. X - fancy
  113. X - maybe automatically also show CV v/oct freq or note equiv
  114. - incremental mode for voltage dial, to jump between quantized values,
  115. in particular between note values. Built in quantizer basically.
  116. - maybe gate out and button to click to send value and gate output together
  117. - Seq with per step gate length and rest length between steps
  118. - 'rest' steps basically
  119. - A cv 1v/oct display -> freq hz -> period secs -> bpm.
  120. - (more or less a multiple version of 'Specific Value')
  121. - ( could display v passed through and/or let you specify as text)
  122. - CV out
  123. - button to send gate
  124. - basically a keyboard with text/entry widgets to let you specify
  125. CV voltage/hz/period/note name
  126. - other possible things to display/select
  127. - midi note number
  128. - # of steps from a root
  129. - interval from a root ( third, flat fifth, etc)
  130. - staff / note
  131. - bpm (for a LFO or general nerdery)
  132. - SpecificNote
  133. - choose a specific note from options
  134. - possible UI that could be implemented like a
  135. imagemap (ie, use x,y of where clicked to pick note)
  136. - piano keyboard image
  137. - piano key style but 2d, with stacked one
  138. octave keys (kind of accordian-ish)
  139. - musical staffs
  140. - possibly with areas along X to indicate note length?
  141. - maybe left side of X axis for flat, middle for natural, right
  142. for sharp
  143. - just a grid
  144. - various alternative keyboard styles (hex, axis64, starrlab, jammer keyboard)
  145. - could use multiple instances and a 'Whats New Now' to combine them
  146. - generic voltage quantizer
  147. - based on 'table' module
  148. - except input CV is 'rounded' to edge of maps
  149. - see 'fancy options' for table module above
  150. - 'Attached file' module.
  151. - GUI file picker
  152. - add base64 of file to data to store in plugin Json.
  153. - Could be a list
  154. - would need to sort out how to only serialize/persist on 'real' save
  155. vs autosave (to avoid constantly saving the whole thing to autosave.vcv)
  156. - 'Attached Preset' module
  157. - more or less 'Attached File' but tweaked for including vcvm presets
  158. - automatically write out presets to current presets folder?
  159. - well, not automatically, but more or less just one interactive step
  160. like a 'save to presets folder' button
  161. - can a ModuleWidget subclass customize fromJson to allow a module to
  162. accept 'paste preset' from any plugin?
  163. - would be easiest UI for attaching a preset
  164. - 'Maze Table'
  165. - wave table, but with a maze
  166. - instead of phasor indexing an array, would "index" into
  167. a path along the maze graph
  168. - could have breadth first and depth first paths as options
  169. - use DAG style mazes (one and only one path out, no loops or cycles)
  170. - though cycles in maze could be analog for loops in waveform playback
  171. - maybe something hilbert curve esque?
  172. - Matrix clock
  173. - N x N matrix
  174. - each row defaults to a clock division
  175. - each column defaults to clock multiply
  176. - 0,0 defaults to 1x1 quarter note for tempo
  177. - rows default to 1,2,3,4,6,8,12,16, division
  178. - ditto for columns multi
  179. - but row/columns mult/div could be changed to anything
  180. - XY pad matrix mixer
  181. - matrix mixer with a JL-Modules/kaosspad/reactor style XY pad
  182. at each cross point
  183. - 1,1 -> top output and right output
  184. - 1,0 -> just top output
  185. - -1,-1 -> inverted output to top and right output
  186. - Matrix Mixer with multiple scenes that morph/interpolate
  187. - more or less like Bidoo ACNE except values morph
  188. between scenes insted of
  189. - 2.5 dimension matrix / mixer
  190. - 8x8 matrix but with an output at
  191. each crossing point
  192. - possibly with knob/param for output level
  193. of each output
  194. - maybe a per cross mute/solo
  195. - Much like the movies, the first one was the best.
  196. - text Notes module with CV/trigger control and multiple messages
  197. - like a plain notes module, but can react to input from
  198. patch
  199. - use case would be describing stages of a generative patch
  200. - or for adding info to screencast videos
  201. - Gate Divider
  202. - like gate length, but instead of generating one gate, it
  203. generates multiple gates that add up to gate length
  204. - how to seperate?
  205. - some fixed inbetween interval ("kerf")
  206. - divide into on and off gates
  207. - divide a 1s gate by 1 -> one .5s gate then a .5s 'rest'
  208. (and vice versa / inverse 10 or 01)
  209. - divide by 3 -> one .3333s gate, one .3333s rest, one .3333 gate
  210. ( ie, 101 or 010)
  211. - divide by 4 -> .25 gate, .25 rest, .25 gate, .25rest
  212. (1010, 0101)
  213. - divide by 5 -> .20 on, .20 off, .20 on, .20 off, .20 on
  214. (10101, 01010)
  215. - kind of similar to Walsh codes
  216. " Experimental Electronic Music Devices Employing Walsh Functions",
  217. "BERNARD A. HUTCHINS, JR"
  218. "JOURNAL OF THE AUDIO ENGINEERING SOCIETY, October 1973"
  219. (https://pdfs.semanticscholar.org/6b9c/30f94551aaf05f077aa491f31b196898cd90.pdf)
  220. - "Sequency" - theres a module name if I ever heard one.
  221. - Add DC blocker option to Big Mute Button ?
  222. - Whats New Now
  223. - multiple inputs, detect, choose and output the most recently change value
  224. - use to multiple multiple controllers (like Specific Value) together and
  225. use the 'active' one
  226. - for each input, track previous (N?) input value[s]
  227. - on each step, compare current value to previous
  228. - if different, it's 'new'
  229. - compare to some value precision (ie, the epsilon to use when comparing floats)
  230. - compare to some time precision (running average of last N values?)
  231. - if only one new/changed input, send the new value to the output
  232. - if multiple new/changed inputs, need to pick which to use
  233. - most recently chosen for output? ie, stick with input that first started changing
  234. - least recently chosen? kind of round robin
  235. - value that most recently started changing? (track how long each input has been changing,
  236. and choose the one that just "woke up")
  237. - output a trigger when output value is changing (for ex, a new cv note was detected, send a trigger
  238. to potentially start a gate...)
  239. - almost surely already exists with different name/terminology
  240. - maybe envelope followers and logic?
  241. - uses:
  242. - allow multiple CV controllers to be used (ie, a midi-to-cv, a SpecificValue, a TwelveKeys) with
  243. the final output being DWIM for user (ie, whatever changed last)
  244. - kind of multiplexing?
  245. - bet it would make weird noises at audio rate
  246. - options:
  247. - way to avoid discont/aliasing in output?
  248. - interpolation?
  249. - miniblep?
  250. - gate out for 'something is changing right now'
  251. - default output value (0?) if nothing is changing?
  252. - Blocked In DC!
  253. - just DC blocker, but I like the name
  254. - The Big VUte Button
  255. - The Big Mute Button, but with clickable
  256. stereo VU meters
  257. - CV Key Splitter Switch
  258. - one CV input
  259. - 12 (* N) outputs, one for each chromatic note
  260. - if CV in is 1.0V, then only the 'C' output sends signal
  261. - split a CV into output for each note
  262. - one octave 'small' version could do it for any octave
  263. (ie, C0, C-4, C5 all go out the C output)
  264. - larger versions
  265. - 5X 5x12 outputs
  266. - outputs correspond to specific note@octave
  267. - ie, C0 goes to C0 out, C4 goes to C4 out
  268. - 10X 10x12 outputs, for -5.0V to 5.0V coverage
  269. - possibly include a oct adjustment
  270. - maybe a fine tune
  271. - ie, a440 vs a437 etc
  272. - SpecificValue style text box?
  273. - possibly note-on/note-off style trigger outputs
  274. - ditto for a gate
  275. - start gate when new output is chosen, end it
  276. when the next note is detected
  277. - maybe some sort of keyboard like widget?
  278. - CV Key Range
  279. - like CV Key Splitter Switch except outputs to a set
  280. of range/group outputs
  281. - each note has choice of which group/range it goes to
  282. - set of N (4?) buttons? (could go to more than one range...)
  283. - a knob with detents?
  284. - in some way range would just be a more specific version the
  285. Table module with CV/note specific UI
  286. (ie, a map of an input to one or more output values)
  287. - incoming CV split into N ranges
  288. (bass/treble, bass/baritone/alto/soprano)
  289. - ranges can overlap
  290. - two knob/param for each range (low and high)
  291. - could use FloatFiend/NoteName field from SpecificValue
  292. for text entry
  293. - presets/default for
  294. - bass/treble
  295. - bass/baritone/alto/soprano/tenor
  296. - rumble or sub bass / bass / treble
  297. - below human / human / above human
  298. - Audio Key Splitter/Range
  299. - like CV Key stuff, except with audio inputs
  300. - needs fft magic likely (or at least filters)
  301. - detect the main harmonics of audio and send output to
  302. note specific output
  303. - possibly more than one harmonic
  304. - ie, audio with fundamental at C4, and another strong harmonic at
  305. G5 would output from C4 and G5 outputs
  306. - outputs could be trigger/gate or corresponding CV value
  307. - or out to some set/group/range of outputs
  308. - CV value would be Pitch-To-CV
  309. - Etch-a-Sketch like visualizer
  310. - X and Y inputs
  311. - trigger in for 'turn upside down and shake' / reset
  312. - more or less stylized oscilliscope
  313. - Timing tuner / temporal heatmap
  314. - visualizer of where in a 'beat' different inputs (gates/triggers) happen
  315. - display would be bar graph / histogram like
  316. - X range would be time between beats
  317. - X=0 start of clock beat, x=1.0 end of clock beat (assuming 0->1,0 for
  318. arbitrary range)
  319. - Y value would be count of other event inputs
  320. - kind of specialized oscillioscope that accumulates values and is
  321. triggered for each clock pulse
  322. - why?
  323. - might look neat?
  324. - use for 'tuning' / tweak multiple event sources
  325. - Timing Chart? Beat Map? Splay Visualizer? Beat Tuner?
  326. - 2d Scatter Plot
  327. - visualizer
  328. - 2 CV/audio inputs (X, Y)
  329. - Clock or trigger input
  330. - on trigger, grab the values of each input, plot on graph
  331. - more or less just an oscillioscope with very short sample
  332. - Increment / Counter
  333. - dedicated 'count triggers since reset' module
  334. - freq counter-ish
  335. - can be implemented with other modules, but dedicate UX might
  336. be useful (seems to be a commonly asked question)
  337. - CV Value to trigger
  338. - converts cv value into distinct trigger outputs
  339. - CV in
  340. - Range param
  341. - Increment param / Divisions
  342. - Some large number of trigger outs
  343. - for ex, range of 4, increment of .25.
  344. - CV in of 0.0 would send trigger to out 1
  345. - CV in of 1.25 would send trigger out 5
  346. - Triggers to CV value
  347. - opposite of CV Value To Trigger
  348. - lots of trigger inputs
  349. - one CV output
  350. - for values above, input on trigger 5 would send 1.25, etc