1. IMPORTANT:
    We launched a new online community and this space is now closed. This community will be available as a read-only resources until further notice.
    JOIN US HERE

I want to build a custom multi breakpoint envelope modulation device...

Discussion in 'REAKTOR' started by Michael O'Hagan, Feb 13, 2021.

  1. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,163
    I recently created this,



    It's essentially a pattern performer somewhat modeled off of the original massive, but it has more shapes, the ability to create shape repetitions per step (2, 3, 4 per step etc...) the ability to right click and drag to make a single shape stretch across multiple steps and it can wavetable style morph between 4 patterns and 2 types of swing.

    It got me going on the idea of creating the perfect modulation device.

    Imagine the MBP envelope from reaktor 5, but with 2 different editing methods, type 1 is a shape based input, where you can click and insert pre-determined shapes like a pattern performer, also with the above mentioned features, repetitions per step, right click and drag to extend the shapes across multiple steps, wavetable morphing between patterns, swing and all that.

    But then you just click the edit button and you have full access to MBP style editing where all the breakponts are available to fine tune your pattern at the highest level of detail and precision.

    The idea being that you would have an ultra easy and fast creation method but with total precision and detail of your modulations at the same time, the best of both worlds.

    Pattern performers are fast and fun, but they don't always offer the level of detail you might want or need, MBP envelopes offer nearly unlimited levels of detail and accuracy but they can take a long time to draw out more complex ideas.

    How could we build 1 device that does both?

    It would need to work at full audio rate and be CPU efficient.

    It would need to have one shot and loop modes with adjustable loop points.

    It would need to have internal presets like the MBP envelope does.

    I once tried to mod the MBP envelope to do this, but I just couldn't get it to work, so I think I need to build one from scratch if I want this to exist, but I'm at a bit of a loss as to how to approach this.

    Does anyone have any ideas?
     
  2. Rob Gee

    Rob Gee New Member

    Messages:
    11
    Isn’t that basically what the ToyBox MBP does?

    [​IMG]
     
  3. Bo Rumba

    Bo Rumba New Member

    Messages:
    11
    Your idea sounds similar to how Massive X's performers work, as they let you draw shapes and edit the individual curves/breakpoints too. I haven't got any ideas, but I hope you manage to pull it off - I'd buy MX Performer as a block in an instant!
     
  4. colB

    colB NI Product Owner

    Messages:
    3,969
    This is an extremely challenging project. I think significantly more difficult than just a rebuild/re-wrap of the library breakpoint envelope, due to there being two ways to edit the envelopes that need to function together on the same data coherently.
    The requirement for it to run efficiently at audio rate complicates it even further. I guess if you have an idea for an instrument that depends on this, and you think would be really good, then it's worth the effort, but it will probably be the majority of the development time for the whole instrument.
    As far as ideas, with something this complicated, I would start with design docs. work out all the specifications, the interface, all the details with use cases for each main feature... make sure to consider how changes created when interacting with one edit mode will be handled by the other etc. etc.
    Also, look at it from the point of view of audio rate playback - you absolutely need a format for the envelopes themselves that can be accessed and played efficiently. It's possible that you will need some sort of translation layer between the editing process and the playback to convert to an efficient format. But that depends on the complexity of the feature set.
    An example of the type of thing that would be crucial to get right before starting with development would be modulation. If you want/need to be able to modulate parameters in real time via Blocks mod system, then the structure might be significantly different (and less efficient) than if you decide not to allow modulation in that way. Also modulation of the whole envelopes rate or amplitude would be a different thing to implement compared to modulation of individual nodes...
    So I guess I would recommend you do some work on 'requirements capture', then write some detailed design docs. With something this complex I find that if I don't do that, I end up having to do more complete re-writes and the whole thing takes way more time.

    e.g. one of my current projects is a granular sample player. It was going great, working out better than expected. When I though the engine and the GUI were almost complete, I started converting all the basic knobs to Blocks style controls so I could try modulating some of the parameters and building patches. However I found that it wouldn't work because of a detail related to the implementation of the extremely complex GUI code. I ended up having to refactor the whole main structure moving a significant amount of code from the 'Panel' macro to the 'Process' macro, and having to re-write quite a bit of it as a result. Maybe 20-30 hours of work in total! A few more hours of initial planning would have saved me that hassle :)
     
    • Like Like x 2
  5. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,163
    I was thinking about doing a graphic mockup of the idea with a set of controls and clearly define the start and end points of it's functionality, that way there would be a clear set of goals and a clear start and end point.
     
    • Like Like x 2
  6. ehdyn

    ehdyn NI Product Owner

    Messages:
    547
    I think Thala Estra did some modifications to the Kodiak Blocks that might get you close to what you want.. and then Paul Rogat did some bezier style LFO's and stuff.. maybe a combination of the two might get you to your goal faster or at least make the problem more tractable.