Rack v1 development blog


(Andrew Belt) #1

I thought it might be nice to keep people updated on Rack v1 development, so you don’t need to interpret technical commit messages from the v1 branch on GitHub. Feel free to ask any questions for clarification of each task, and remember to subscribe to this thread.


(Andrew Belt) #2

You can now subclass ParamQuantity and use it with ParamInfo::config<...>(...) to display more general labels in tooltips. Without using a custom ParamQuantity subclass, you are still able to set labels, units, exponential/linear scaling, and multipliers for display values.


(Andrew Belt) #3

Undo/redo history is implemented with Ctrl-Z / Ctrl-Shift-Z key commands. This requires implementing a history::Action subclass for every type of modification to the patch state. Currently about 50% of the required actions are implemented. Plugins may implement their own history actions if their state is modified in ways other than moving parameters, e.g. if a setting is selected from its context menu.


(Christoph) #4

Cool! Is there a limit to the number of history steps that can be undone?


(Andrew Belt) #5

Currently it’s infinite because no actions require significant memory. Most are on the order of 10 bytes.


(David O'Rourke) #6

I’m aware that I’ll have to rewrite my Module Browser, at least because the tags are stored differently. But I’ve made a note to make sure that I correctly add history::Actions as appropriate.


#7

do you map these kinds of things to command-Z on the mac? Just starting to do some keyboard stuff and wondering if Rack follows the mac conventions.


(Andrew Belt) #9

Yes. Cmd is the “Ctrl” of Macs.


(Andrew Belt) #11

Added Core CV-MIDI, which supports output MIDI devices and polyphonic cables.


(Andrew Belt) #12

Added Core CV-CC and CV-Gate, which converts CV to MIDI CC commands and MIDI note on/off commands.


Module Request - CV to Midi CC
(Lars Bjerregaard) #13

Yay! Big times coming, thanks Andrew!


(Andrew Belt) #14

Added GLWidget for drawing OpenGL 2 code to a FramebufferWidget, either every frame or when marked dirty. Honestly not sure what this could be used for, but plugin developers are creative.


(Soothsayers) #15

very welcomed addition!


(Antonio Tuzzi) #16

WOW!!! going to 3D ! :smiley:


(Bart Schuller) #20

Woohoo!
Inspired by the TouchDesigner mention I thought that it would be cool to have a ShaderToy-like thing that could react to a frame’s worth of audio samples. That should be possible with this.


(Andrew Belt) #22

Rack uses OpenGL 2.0, so depending on the user’s graphics driver, your code either won’t render (you’d better include error checking), will work because the driver is actually OpenGL 3.0+, or will work because the driver is OpenGL 2.0 but supports the required shader extensions. Worth a try to see what obstacles you run into.


(Skrylar) #27

Polyphonic cables seem interesting although I’m worried for what’s going to happen with them UX-wise. I foresee having to make various splitter/joiner modules and probably some kind of visual sigil for modules to subtly say “hey, this is a stereo port” or “this is an 8-channel port.”


(Andrew Belt) #28

The v1 branch fully supports polyphony now, but there aren’t enough interesting modules that support it yet for an interesting screenshot and announcement. Will do this later after improving performance of Fundamental VCO and VCF.


#29

Will Rack v1 have the capability to see know movements via MIDI? I’m not sure what that involves, but it would be kind of kewl to have knob positions in rack reflect the knob positions on our hardware controllers visually.


(Andrew Belt) #30

Yes. Parameters in Rack will move according to the MIDI input device’s parameter position.