Internal CV recorder + animator

Greetings! I humbly proffer an addition to the wish list of features, to wit:
Often spinning a knob on a parameter yields very cool results, and i wish that i could record the motions and have them continue to animate that parameter in a similar way to the Malekko Voltage Block.
(For those unfamiliar, on the Voltage Block, any time you grab and wiggle a fader, it automatically records those movements and continues to output that CV sequence until it is otherwise changed. This on-the-fly grab-n-go CV recording is what makes the VB awesome, and able to rapidly bring other modules to life)

How cool would it be to be able to record knob-twists on any parameter in the 301 when engaged to do so, and have those animations automatically run on a clock or a trigger? Maybe as its own unit, but far quicker and cooler would be if it were built into the subfunctions of any editable parameter. If possible you could do a world of modulation just by clicking around and playing the encoder knob like an instrument.

Probably dreaming here, but that would be insanely cool.

Thank you for reading @odevices @NeilParfitt @Joe @anon83620728, i’m going to shuffle off back to my quiet corner with the wallflowers.

I believe you can already do (most of?) this by using any of the recording methods (6-track recorder, Dub Looper, Feedback Looper, Pedal Looper) and recording the output of an Offset unit as you manipulate its bias with the knob.

No wallflowers allowed. Get back out here on the dance floor! :rofl:


Hmm… i i tried an offset unit with a pedal looper. I’m using two stereo chains and didn’t know where to put it, so i stuck it on a mono global, which i routed to the filter cutoff of a LPF which sits at the end of one of my stereo chains. That seemed to work, but i tried making another and routing it to the Q of the LPF, and now no sound comes from the chain unless i bypass the LPF unit. Deleting the Q routing had no effect. Bug?

Would creating a separate global with an offset + a looper for every parameter i want to wiggle be the slimmest way to go about this? I think i’m going to run out of juice

Putting it in a global chain is fine, especially if you plan on driving multiple parameters with the same modulation. You can also just put the offset and looper in the control’s sub-chain directly.

Weird. The Q parameter should be pretty robust to any kind of modulations. I tried testing it just now, giving it all kinds of huge values, including using the Offset + Pedal Looper trick, but no problems were encountered. Do you have any other details?

I believe this is the cheapest at the moment.

This is a really interesting idea.

I don’t have a VB. What signals the VB that you are finished moving the fader? Is there some kind of sensor on it to detect when your hand is removed? Or is it basically just when it stops moving (meaning you can’t really have a constant voltage as part of your recorded CV?)

It slots the recorded voltages over its 8 steps, and is always record enabled in case you grab a fader. You can then hold a step button and adjust the fader to fine tune it so the steps can be set to whatever you want. It’s just nice that it’s always ready to go and easy to clear. Each fader corresponds to a separate output so it’s not what you might think, that each fader is a separate step of a pattern, but rather that fader 1 is an active control for output 1 and so on.

if you wanted part of a sequence to be static you could either record it that way to begin with (or after clearing), or just hold a step button and set that step where you want it. It’s super quick and easy.

@odevices do you think a native function like this might be in the cards for encoder movements, without having to create a unit and a chain for it? Or perhaps it would be simpler to have a lightweight dedicated “knob twister” unit that just had the encoder as its input (when recording), addable assignable local outputs, and i suppose clock or trigger to sync it / fire it? :smiley: It would be super rad to be able to quickly set up loads of internal moving parts!

1 Like

no but i’ve run into this a few times in various places, also recently with variable speed sample player units that would stop sounding until deleted and reloaded. Maybe it’s my particular 301? i’d noticed some problems before in an earlier build, when i would try to use the 6 track sample recorder it would crash hard after 5 seconds or so. Also more recently with the pedal looper - not a crash but 10 to 20x jump in volume/distortion in an overdub layer, that would disappear if the layer was undone.

Ah, ok, so it’s basically clocked/timed. I was trying to think if this was something that could possibly be created as a bespoke unit. Will think a bit more on it. Of course if @odevices wants to build something native, that’s even better!

An etch-a-sketch style graph with a moving cursor line on the unit’s display would be one cool way of seeing what you’re doing with it / what is currently recorded!

The record modulation functionality was always what I liked most about the Octatrack - it’s great to hear these ideas being discussed in the context of O|D gear!

1 Like

I have been meaning to ask @odevices if it is possible to do any custom drawing in the middle layer. I’m guessing not really, at least for something that would have to update at the frame or sample rate?

Actually, there is a drawing canvas which is meant for static drawings (or flip animations). Check out the Drawing and DrawingInstructions objects.

DrawingInstructions - encapsulates a list of drawing primitives that when executed (in order) will draw something.
Drawing - is a Graphics object that takes in a DrawingInstructions object and renders it.

Here is the snippet that draws the circles and arrows in the sub-display any Gain/Bias control.

local instructions = app.DrawingInstructions()
-- multiply
-- sum
-- arrow: branch to gain
-- arrow: gain to bias
-- arrow: bias to title

local graphic = app.Drawing(0,0,128,64)

Graphics that update in real-time require C++ coding.

1 Like

That makes me think of this

and this

as modulation sources

1 Like

Just wanted to add - if the whole etch-a-sketch graphic proved a challenge, that it really isn’t necessary to the idea. The animation would still be shown by the moving parameter in the 301 same as any other. Having it native under the hood for a parameter ready-to-go would be AMAZing. I was thinking it would need a clock, which could be on a global, but even without a clock it could just loop freely from the start to the end of whatever moving knob-wiggle was recorded/programmed. Timing would be great for somethings, but sometimes you’re just trying to create some character that doesn’t need to be in sync.

1 Like

I love the etch-a-sketch idea

This is probably a feature request, but since this is technically already possible it may open a workflow discussion.

Recording CV and using it to modulate parameters in a patch is super cool but a little tedious to set up and use on the fly. I would LOVE to see this feature built into the parameters controls, sort of like a motion sequence recorder/parameter locking. Is this a possible future scenario? I’m guessing that maybe a feature like this would make too much assumptions about the user workflow. With the current firmware, is it possible to streamline this feature with the help of a custom unit in the parameter source subchain for example?

Are you using the Pedal Looper?

Aah, so there WAS a thread already, thanks for rearranging. So yes, basically exactly the same question as the OP here. I’m giving the pedal looper a try for the moment.

Have you watched the 4th video here?

This idea in this post is what I was sort of shooting for with the Motion Sensor unit. I would think you’d be able to combine into a custom unit with one of the loopers for faster set up. Maybe it’s still missing something?

1 Like