ADSR with per-stage ring mod?

Inspired by the XAOC devices Zadar wavetable ADSR, I’ve been looking into how to make more complex envelopes. Using a wavefolder on an ADSR is a good start, but I’d like to be able to do something different per stage. One way to do this would be to provide the modulation sources I want into a sequential switch and then have each stage transition of the ADSR go so the next stage with the switch, having the output of the switch and output of the ADSR be multiplied (ring mod). The issue with this is both that it’s a bit complex to wire up and that it has issues on switch, that is it doesn’t wait for a zerocrossing or the two modulating waveforms to be equal to do a switch, so it can cause the envelope to have awkward transitions. What I’d really like is an ADSR module that has different ring mod inputs, one per stage, built in that does this waiting for a zero crossing or modulation equality internally, but even with the current modules I’m struggling to put something together that’s not totally awful to use. Instruo’s cèis ADSR helps with this as it has stage transition triggers/gates, but I’m still struggling.

I’d love to see some patches based on this idea and I’d welcome any devs to make this module, even if it’s paid.

2 Likes

I’m working on a set of envelope generators and will gladly experiment with this. Sounds like a cool idea.

2 Likes

I didn’t really understand much of that but it sounds like the sort of thing that you could do with DHE modules? Maybe the Stage modules in particular?

if you use the complexDAHD you have a trigger at end of every status (EOD EOA EOH EOC) and you can use them to ON - OFF processing of the Env outputs

1 Like

you can sequence the complexDAHD (they have an input for SUM) or you can use a sequence of BZ-ENVELOPE one EOC triggering the successive: any number of ENV you want, add their outputs and you get supercomplex ENV

1 Like

That’s something i never tried or even imagined ! Thanks for the suggestion :slight_smile:

1 Like

Awesome. I’m crap at DSP which is why I haven’t done it myself, but if you put up beta builds or it’s open source I’ll happily try to give as much technical debug info as possible.

I originally made a feature request over on the BogAudio repo, which you can look at here: Module Request: Sample Based ADSR · Issue #156 · bogaudio/BogaudioModules · GitHub

you’ll see in the issue I was originally thinking instead of doing the ring mod thing as dedicated inputs, doing ring mod with pre-defined samples, but more ‘modular’ thinking led me to the conclusion that I could always just load in sample-player modules to do the same thing and that this is much more flexible.

Also, sorry for the crappy explanation in the original post

+------------------------------------------------------------------------+
|                                                                        |
|                                                                        |  +------------------------------------+
|                                                                        |  | 4, independent modulation sources  |
|                          XX                                            |  |    One per stage                   |
|                         XXXX                                           |  +--+--+----+----+--------------------+
|                        X  + X                                          |     |  |    |    |
|                       X   |  X X                                       |     |  |    |    |        +---------------------------+
|                    XX     |     X                                      |     |  |    |    |        |                           |
|                   X       |     XX                                     |     |  |    |    |        | 4:1 Sequential Switch     |
|                  XX       |      XXXXXXXXXXXXXXXXXXXXXXX               |     |  |    |    +--------+                           |
|                XX         |       +                   + XXX            |     |  |    |             | I  Needs to wait to switch|
|              XXX          |       |                   |   XX           |     |  |    |             | N  until the modulation   |
|             XX            |       |                   |     XX         |     |  |    +-------------+ P  sources are equal      |
|           XX              |       |                   |       XX       |     |  |                  | U  otherwise there.s a    |
|           X               |       |                   |         XXX    |     |  +------------------+ T  sharp transition.      |
|         XX                |       |                   |            XX+ |     |                     | S                         |
|       XXX                 |       |                   |              | |     +---------------------+    ADSR needs to hold     |
+-----+------------------------------------------------------------------+                           |    current level if       |  Note, this has a side
      |                     |       |                   |              |                             |    waiting on the mod     |  effect of effectively
      |                     v       v                   v              v                             |    sources to align       |  making it an AHDHSHR,
      |                    EOA     EOD                 EOS            EOR                            |                           |  holds at each point until
      |                                                                                              |                           |  the modulation allows for
      |                     +-------------SUM-TRIGGERS-----TRIG-ON-EACH-STAGE----------------------------->Next Input            |  a transition.
      |                                                                                              |                           |
      |                                                                                              |                           |
      |                                                                                              |                           |
      |                                                                                              |                           |
      |                                                                                              +----+----------------------+
      |                                                                                                   |
      |                                                                                                   |
      |                                                                                                   |
      |                                                                                                   |                            +-------------+
      |                                                                                                   +--------------------------->+             |
      |                                                                                                                                |  RINGMOD    |
      |                                                                                                                                |             |
      |                                                                                                                                |  *~         |
      +------------------------------------------------------------------------------------------------------------------------------->+             |
                                                                                                                                       +-------------+

I’m not sure if this explanation helps at all, but it’s the best I can do at the moment. Essentially, doing this all in one module is what I’m looking for.

1 Like