automation DAW-style! (well, kinda..within the bounds of the axoloti..)
Automation "drawing" module. Could also be used to make custom waveforms (read out the table with an interpolated table-read module).
Please read the below well:
The first 3 knobs, "readout", "startPos" and "width" are used to set the start and end points of the slope you are creating.
-readout: sets the startpoint anywhere in the whole array (big position offset).
-startpoint: sets the startpoint inside the display (small position offset)
-width: this sets the length of the slope/value-change. This value can go outside of the display for longer slopes/changes!
The two next knobs are used to set the start and end level, followed by two toggle buttons that control their response. In "normal" response, after hitting the "do" button, the start-level knob will change to the value of the end-level knob, so there's always a perfect fit to the next stage.
-startLvl: sets the level from which the change starts (readout+start).
-endLvl: sets the level of the end position (start+readout+width).
-follow: when this switch is on, changing the readout/start/width controls will change the level-knobs to the level of the current read-positions. This is very useful to smooth out a recording or force the recorded changes to a certain beat-size.
-keep: when on, keeps the current levels the same after hitting the "do" button. This way you can easily repeat a certain sawwave-like slope.
The next 4 controls are for setting the curve of the change.
-curve: creates an exponential or inverse-exponential slope from start to end point.
-Scrv: applies a S-curve to the change. the "curve" control changes it's mid-point.
-stack: stack multiple exponential functions to create steeper (s-)curves.
-mode: when mode is on, the "curve" parameter value is inverted after each "do" (see next part). Sometimes you'll notice that this parameter "should" invert after every "do" to create nicer automations.
The last controls are "menu/setting" controls.
-do: when "do" goes high, it copies the slope that you've created into the internal table, resets the start-level and end-level controls depending on whether the "follow" or "keep" are used and resets the start-position to the last end-position. So there's no need to adjust the start/readout positions every time. Note, that the readout-inlet is not used for the edit-position! So even while "track" is on, you can still just go ahead editting the automation normally.
-rec: records the "level" inlet into the current readout position (readout position is also controlled by the readout-inlet!). This way you could add a manual knob-change into your automation. Then use the editor to "sync" the changes to a certain "beat-length". As long as the "width" is set to a power-of-two value, it will be in sync with a 4/4 beat (as long as the LFO connected to the readout is in-sync to host tempo).
-track: when track is on, the display will follow the readout-inlet. Though, you can still see your "editting". Note that when hitting "do", it will not use the readout-inlet to copy the curve into the table. The readout-inlet is only used for reading out the table, putting it into the display and sending it to the module's output.
-edit: when on, it shows the current "edit" slope/curve on the display, which would be applied if you'ld hit "do".
Of course, your automation can be saved&loaded.
Connect a string-object for the filename and hit "save" to save.. and "load" to ehm... what was it..?