Home Artists Posts Import Register

Content

Here is a video of what I've got working so far. I think I've finished all the hardest parts but now but there is still a lot to get through.

The envelope manipulator can work in either offset or override mode. The override mode is pretty simple as it just overwrites the envelope points within the manipulator region, whereas the offset mode has a more complex implementation since it needs to blend points together. Currently a short ramp is generated at the edges of a manipulator to avoid very sudden parameter changes. The length of that ramp could be configurable in the future.

The algorithm for applying manipulations to envelopes and mixing multiple manipulators together is mostly generic, though the plugins do need to declare which parameters should be considered "manipulatable" and define a specialized offset function if they need to. Plugins also need to define the behaviour and appearance of the individual "offset" and "override" manipulator envelopes that the user can switch between, but this is usually pretty easy to set up, so it hopefully won't take long to update all the existing plugins to be fully manipulator-enabled.

When the manipulator is in offset mode then by default the host simply adds the offset value to the original value, so for example if a sampler is playing back at a pitch of -12 and a manipulator is offsetting the pitch parameter by +15, the final result is +3 semitones.

Just adding those two values does not always make sense, for example the Fudge "Speed" parameter offset envelope is represented as a percentage from 0% (freeze) to 200% (double), so through the plugin API a specialized offset function is defined which multiplies the numbers together instead.

There is still a huge amount of UI work I need to do to wire everything together and make things work properly:

  • Manipulators will be able to connect to specific blocks (or block instances) rather than globally affecting every block which they intersect with, but there's no interface for setting that up yet. Possibly some kind of eyedropper style tool would be nice so you can just click on the block you want to target.
  • Manipulators can also affect "Chord, "Toggle" and "Option" parameters but there is no appropriate way to edit them yet.
  • The manipulator blocks should be visually distinct in some way and it should be clearer which parameters are being manipulated at a glance (perhaps just by listing the affected parameters on the front of the block)

Another task which I'm guessing might take a while is to implement the sampler "Reverse" toggle. Toggle and Option parameters can now change over time rather than being static values so the plugins need to be updated to properly handle the new format of data that Blockhead passes them. Most Toggle and Option parameters will be pretty easy to implement but the Reverse parameter in particular is a bit hairy since it affects the way the sample is traversed.

Files

manipulators (work in progress)

Comments

Anonymous

my mind is blown.

Anonymous

this looks really promising!