Add ADSDR and ASDSDR envelopes

I’d love to add 2 extra envelopes, as the combined envelope controls are very useful.

One is the ADSDR envelope. Same as ASDR, but the sustain can be set to decay, giving the envelope a fourth slope.

There’s some quirks on my Yamaha TX81Z with this envelope (not called ADSDR, but let’s stick with convention). One is that some of the ranges go the opposite direction (e.g. the fastest attack is 31, the slowest attack is 0). So to make this work there would need to be a way to reverse/invert the ranges.

Also, the 2nd decay never goes above the sustain level (unlike some envelopes where the sound could get louder at that stage).

Then there’s the ASDSDR envelope. I have this on my Waldorf microQ. It’s the same as the DX7 envelope, but without the final level parameter.

It might be an idea to make one complex generic envelope with which several variants can be configured. For this to work the following is needed:

  • set the time based parameters on Time or on Rate
  • allow each of the parameters to be set on a constant and then be disabled
  • allow levels to be negative

The eg should have the following 10 parts:

  • delay
  • starting level
  • attack
  • attack level
  • decay
  • break point
  • slope
  • sustain
  • release
  • release level

This generic EG is then useful for time as well as rate based synths like the DX7. By giving two levels the same parameter number you can also create a Hold phase like needed on Moog synths.
The attack level is needed for Korg style pitch EG’s.
The release level appears on Korg’s filter EG’s f.i. The 03/RW

3 Likes

All this is basically ready, plus many other things, such as multitouch, support for more colours. These are part of the future upgrade, most likely version firmware v3.x. Unfortunately, the global shortage of components got us to the point when we had to start designing E1 running on different CPU. I want to release that upgrade after we have new hardware prototypes ready and the firmware 3.x is validated to run on both hardware platforms. I would like to prevent situation when I have to maintain two firmwares with different feature sets.

5 Likes

Hi, I’m writing in this thread however it looks like the need for more customisable envelope controls has been mentioned in many other threads.

To me the ideal envelope control in the E1 should offer :

  • number of segments (minimum of 2). The same way you can choose how many Items you want in a List Control today.
  • for each segment choose whether it’s rising, flat or falling.
  • editable name of the segment
  • of course the usual respective settings such as message type, min & max value, etc…
  • also quite useful (and I found requests close to this in quite a few other threads), the possibility of inverting movement of values. MIDI values and also DISPLAYED values.
    What I mean is, because some synths are designed in odd opposing ways, you may want to start the first segment at MIDI value 127 and finish at 0 while the displayed value would go from 0 to 100 for example.
    One would just have to type 127 in the first box (MIN) and 0 in the second (MAX) and the movement would start CCW at 127 to finish CW at 0. Same for the displayed values if desired.
    Currently with the ADDSR control for example if I want to increase the length of the ATTACK segment I need to decrease the RATE 1 value but my pot movement has to be from CW to CCW, when usually we increase values going CW.

I hope all this can happen soon, however if these are very complex to implement the most urgent for me would be at least to allow these negative movements with Fader controls, since it looks like it could be the most simple to implement…

By the way, I would be happy to understand what is the difference in behaviour between the Bipolar and Unipolar mode in the Fader control settings. I understand what it means in real life but couldn’t spot the difference in the E1. My Fader seems to behave identically when selecting either…

Oh, and I would finish with a few graphic suggestions in the web app to make it more easily readable :

  • the side bar that appears at the left of the window when editing a fader control field might be more explicit for the user if instead of VALUE below the Bipolar/Unipolar mode, would be rather written DISPLAYED VALUE, so that they are more clearly identified and distinguished from the MIDI values below.
  • the side bar that appears at the left of the window when editing an envelope control field might be more explicit for the user if the 4 different sections are more visually separated. Maybe a full-width horizontal line separating each from the other ? or the segment’s name enclosed in a strong rectangle ?
    Same for the L1/R1/etc… segments’ name in the ADDSR side bar…

Thank you for all the attention brought to these suggestions !

1 Like

I had to do a crazy bit of LUA coding to implement a slider that ranged from -1 to -99, but the values that needed to be sent to the device were positive from 462 to 561.

I was hoping to just set the min and max ‘backwards’ and have it work but it didn’t.

1 Like

Well, hopefully Martin finds a way to implement this…

I just found a work-around, although not ideal, but better than nothing while Martin looks for the real implementation : make a List with 128 items starting with item Item 0/value 127, Item1/value 126, etc…
The tweaking is slower but at least it does what I wanted. I still hope Martin can sort out a regular negative fader movement, and maybe at some point even in the Envelope settings…

If you don’t mind using LUA, I might have a more efficient suggestion.

I’d be happy to know more about it, I have nothing against LUA, problem is I have no idea how to use it and make it work inside the online editor…

Time with family tonight. Tomorrow I’ll send you an example

OK thanks ! Looking forward…

Take a look at this preset: reverse, bi-polar

I have a couple examples in the upper left showing the subtle differences in uni-polar, bi-polar, and MIDI ranges.

Top right is a single control with inverted display value versus what is sent over MIDI.
Bottom left is an ADSR using that same technique for the attack segment.

Strong suggestion - bring up the Web UI, load the preset to your Electra One and go into the debugger screen to see what is being sent versus what you see on the E1 display.

Also, you can take a look at the minimal LUA formatting function I used to flip things around.

Hope this helps.

Thanks for sharing your templates.
Now I get what the Unipolar/Bi-polar choice brings to the table. And as far as I can see it only works if I have negative displayed values on the left and positive displayed values on the right. If all displayed values are positive then it’s inoperative.
Regarding the REVERSE Fader the result I’m looking for is the “reverse” of that reverse :wink:
That is, increasing displayed values while decreasing MIDI values, what I called “negative movement”, in the sense that it looks like it’s going from 0 to 127 for example while under the hood the E1 is sending MIDI CCs from 127 to 0…

1 Like

Yes, when you need the bi-polar display, it’s very convenient and depending on the data, it makes the display natually track the vaules. Something like a Pan control for example.

I’m walking my dog at the moment, so viewing or editing a preset on my phone is challenging.

EDIT - I forgot - the parameterMap.send() function does not work. I can set values in the parameter map, but they are not transmitted.

I did simplify the original inverse code.
I know I have an answer, but it may be a bit more than 5 minutes.
Stay tuned tomorrow…

OK, I updated the example to show one way to do it.
Note a few things - the top control is defined as a standard CC control.
The one below that is virtual.

To see the actual MIDI data being sent, make sure you have the MIDI console screen up and Electra Controller selected in the top drop-down (see the pic)
debug

If you uncomment the “print()” statement in the parameterMap.onChange() function, you’ll see that the Electra One is recognizing the change in value, but you can see how the value is going 0-127 but the actual MIDI being sent is 127-0

The RE-REVERSE fader works exactly how I was hoping to have it working, so thanks a lot. However I still can’t figure out how you built it. I understand it’s thanks to the altInvert FORMATTER, but have no clue as to how you built it and how you insert it in there…

1 Like

Update ! I found more or less how this works now. I successfully created another RE-REVERSE fader almost identical to yours only it goes from MIDI values 63 to 0 and displays 0 to 63 while yours still does its 127-0/0-127 movement from what i can see in the MIDI Console. I think I “wrote” my first LUA lines without totally understanding what I’m doing, but understanding just enough… Now I will have to develop from there… Thanks a lot again.
And it looks like it also works in the ADSR control…

1 Like

Really glad to hear this.
Yes, by playing with the values defined at the control (in the GUI) and inside the LUA code, you can do all kinds of gymnastics with the numbers.

The important thing to realize is that you can’t break anything. Take a simple template, create a bunch of controls, mess around with ranges and formatting and parameter numbers and whether the control is virtual or not.

By doing this, you will learn and also build up a page of examples that you can refer to later when you need to do something special.

1 Like