I hope it’s the first of many graphical improvements to the zynthian-ui. I will try keeping the graphical austerity while adding some visual feedback where it’s more needed.
It’s working nicely in several synth engines. I tested with these:
OBXd
Helm
JX10
NoizeMaker
Triceratops
Currently this widget has some limitations:
We need all the envelope parameters ordered and grouped in one or several consecutive control screens. They can’t be mixed or unsorted. It would be confusing to manage.
We only support ADSR, not AHDSR, etc. although this will be improved very soon
For these reasons, it’s not working with these engines, among others:
This new graphical feature is definitely elegant and informative, from the viewpoint of the sound synthesis model. I agree that, overall, the graphical layout of the Zynthian interface should keep on leaning towards a certain ascetic minimalism, so it will be interesting to see how the implementation of further visual feedback will be possibly able to represent other parameters of the synthesiser engines. What we can already see is just brilliant!
I just played with the envelope in JX10 and man, this is brillant! It greatly improves the sound design process. It becomes very clear and evident how the sound is being processed. I absolutely love it!
One observation: the release time quite intuitively increases with clockwise rotation of the encoder but this results in the start of release curve moving to the left which kinda feels less intuitive. Of course the implementation seems right - just something to consider and be aware of when using it.
[Edit] An enhancement may be to allow dragging of nodes with touch/mouse. I just looked at it on my VNC viewer and immediatly tried to grab a node with the mouse. Even brilliant ideas have room for improvement!!!
Well, this is normal compared to other similar implementations of ADSR interfaces - perhaps a number could be displayed also, which shows the approximate overall time, but this is depending from the implementation of the lv2 code.
No! I don’t see that adding an image of just one of many control parameters makes any sense. And we don’t currently have a way to implement it.
I had a look at the engines enabled by default and observed the following envelope curves:
amsynth: ADSR
Calf Monosynth/Wavetable: ADSFR
Dexed: Rate 1-4, Level 1-4
Helm: ADSR
MDA DX10: ADR
MDA JX10: ADSR
MiMi-d: AHDSFR
MiniOPL3: ADSR
Noize Mak3r: ADSR
Obxd: ADSR
Odin2: ADSRLoop
padthv1: ADSR
String Machine: AHDSR
synthv1: ADSR
Tricerotops: ADSR
Vex: ADSR
LinuxSampler: AR
Sfizz: AR
LinuxSampler: ADSR
Fluidsynth: AR
MDA ePiano: DR
SO-kl5 Piano Synth: AS
Calf Organ: ADSR
Fabla: ADSR
I am working on a modification to the envelope gui which uses parameters in the ttl (or hardcoded into the non-LV2 engines). Each envelope control has one of the LV2 EnvelopeControls Port Group elements:
delay
attack
hold
decay
sustain
fade*
release
*fade is not actually in the LV2 spec but is used by a couple of Calf synths and I think behaves similar to the MiMi-d sustain time parameter so I will lobby to have it added to the official spec,
The new code does not use heuristics to detect envelope. All envelope controls must be tagged with one of the EnvelopeControls PG elements and all must be in the same Port Group to act on the same processing module, e.g. Filter Envelope.
This development is in the touch_envelope dev branch and should work for any engines that have these tags in their ttl. Currently only zynsampler is changed in the repo and I have tested against obxd and MiMi-d (dev version from github) using these ttl files:
With the right config most (hopefully all) envelopes with one or more DAHDSFR parameters should work. I am yet to look at the more generic / flexible envelopes used by Dexed which has four stages of rate+level.
I removed the heuristic detection because it is likely to fail but it does mean that we need to curate and modify the ttl files. I will look to see if this can be done in an extensible way…
There are 4 rate+level envelope stages for each operator. You can use these to create traditional ADSR curves or more complex curves. The Casio VZ-1 (and I think CZ range) had 8 of these so you could create complex envelopes, placing the release trigger at any stage so you could have the signal swell a few times, even after releasing the key. I don’t know where the release trigger is in Dexed.
[Edit] It seems the last (4th) rate is triggered by key release.
I have make a feature request against the LV2 project to add “fade” to the envelope options. I also asked whether we could describe arbitrary quantity of level+time stages. I haven’t considered the latter yet.
I’m probably amongst the greatest geniusses of all time. I updated to vangelis, but there is no ADSR envelope thing popping up anywhere. Please tell me. How does this work?
no magic here.
There also is no Filter Env#1, but just a Filter Env parameter page. Do I have to add a development branch or something? I am in Vangelis.