Simply, PEG Decay1 Time does not behave the same as on the FEG and AEG.
On FEG and AEG, if Decay1 Level is set the same as Attack Level, then the Decay1 Time can be used as a "Peak Hold" Timer. As the Synth Gods intended.
On the PEG, if the Decay1 Level is the same as Attack Level, then the Envelope skips straight to the Decay2 portion, irrespective of Decay1 Time.
In effect:-
If Decay1 Level = Attack Level
then Decay1 Time = 0 (always).
Also:-
If Decay 1 Level is a small amount less than Attack Level (eg Attack = 127, Decay1 Level = 123) then Decay1 Time is very short (as in milliseconds,
even if you give it a value of 127).
I would hazard a Guess and say that:-
Decay1 Time is proportional to the Difference between Attack Level and Decay1 Level.
If so, this is a bug.
I see what you mean about the Decay 1 level vs Attack level and skipping of Decay 1. However, I saw this happened the same in AWM2 PEG as in FEG. In other words, FEG would skip Decay 1 too if attack and Decay 1 level were the same. A "fix" for that I set attack to 126 (level) and Decay 1 level to 127 (or vice versa).
Another thing I noticed is that the time is not the same for FEG vs PEG. FEG's Decay 1 time runs twice as slow vs PEG. Or, at least if I setup a PEG and FEG with the exact same levels and time then Decay 1 would take "twice" as long on FEG than on PEG. And this is only when Attack and Decay 1 levels are different.
The shape I used to test this was to set both FEG and PEG with an attack level of 126, attack time of 1 (to minimize any difference in the timings during the attack phase) then set the Decay 1 level to 127 and Decay 1 time to 127. Decay 2 time and level to 0 and release time set to whatever was the default but set the same on both. This doesn't impact anything.
I set the cutoff low so I could hear the filter close up at the end of Decay 1 on FEG. With both Decay 1 times set to 127 I would hear the pitch change back to the original pitch (after initially going to a higher pitch) before the FEG's Decay 1 expired and closed up the filter. I could get the timing "identical" when I set FEG's Decay 1 time to 64 (while PEG's Decay time was 127). This way it sounded like both PEG and FEG were in sync.
I didn't look at AEG although similar experimentation could easily reveal the relationships there too.
...
Elsewhere, BM mentioned that "time" is a bit of a misnomer. Because the absolute time of the phase is dictated not only by the time value but also by the differential in the start and end level of the given phase (attack, decay1, etc). So yes attack level = 126 and decay 1 level = 127 provides a small differential and the time for the decay 1 phase is shorter absolutely (with Decay 1 time = 127) than if you set decay 1's level to say 64 instead. The time spent in Decay 1 would be longer with the bigger differential.
I think this more spells out "rate" than "time". Previous Yamaha gear labeled these as rate and "rate" would more accurately describe this relationship. The rate to travel a given distance -- and the distance setup/influenced by the difference in levels of one phase vs another.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
Portamento has different timing options where you can take a large "distance" and treat time over that distance as the time to complete the whole travel. So legato playing from the lowest note to the highest would zip by super fast and legato playing up a whole step would take the same amount of time (and thus would pitch modulate "slower" ). And then there's settings where the rate is more constant so if you played notes close together portamento from the starting note to the finish note would take hardly any time but a larger "distance" (lowest note to highest note) would take a long long time.
Adding the option to choose a "timing mode" for each EG phase would be a nice advanced option to have if AWM could break out of the current 1980s-ish legacy. Not this generation (I think EGs are likely deeper than firmware can reach in the ASIC core) but one of many things to add to the candidate list. I don't know what truly is a "core" function - but certainly those would be the least likely to change given the expenses involved in redoing the ASIC core. The 50th anniversary would be a good time to consider a lot of investment in "AWM3" (meaning touch the core) which may be able to redraw the rules a bit.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
While I appreciate this bug will never get fixed, it is still a bug.
Last night (before writing my first post) I tested both FEG and AEG for comparison. They both work normally, and will "Peak Hold" for Decay1 Time, if Decay1 Level = Attack Level.
I'll do a few more tests tonight when back from work.
At the moment it seems that whatever Value you enter for PEG Decay1 Time is irrelevant in the software I.e. it is ignored by the software. Instead the Software calculates Decay1 Time Based on some fixed multiplier of the difference between Attack Level and Decay1 Level.
IOW....
Decay1 Time = m(Attack Level - Decay1 Level)
There is no musical rationale or precedent for this. It's just broken. It's not one of those things that can be explained away as a "Yamaha Quirk".
At the moment it seems that whatever Value you enter for PEG Decay1 Time
I don't think that's right. If you Attack Level = 127 (this time I'm using FM-X and set Attack Time = 0) then Decay 1 Level = 0 there will be a huge differential. And if you have a small Decay 1 time then the PEG will ramp down fast. A big Decay 1 time will take much longer. It's not ignored.
It looks to me more like:
Decay1_Phase_TotalElapsed = Decay1_Time (absolute(Attack_Level - Decay1_Level))
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
I've not tested the FM-X Engine. I found the issue in the AWM2 Engine.
Extract from the Parameter Manual:-
Hold Time
Determines the time between the moment you press a key on the keyboard and the moment the envelope starts to rise.
PEG Attack Time
Determines the speed of attack from the initial pitch (Hold Level) to the normal pitch of the Part after the Hold Time has elapsed.
PEG Decay 1 Time
Determines how fast the envelope falls from the normal pitch (Attack Level) of the Part to the pitch specified as the Decay 1 Level.
PEG Decay 2 Time
Determines how fast the envelope falls from the pitch specified as the Decay 1 Level to the pitch specified as the Decay 2 Level.
PEG Release Time
Determines how fast the envelope falls from the pitch specified as the Decay 2 Level to the pitch specified as the Release Level when the note is released.
PEG Hold Level
Determines the initial pitch at the moment the key is pressed.
PEG Attack Level
Determines the normal pitch of the pressed key.
PEG Decay 1 Level
Determines the level which the pitch of sound reaches from the Attack Level after the Decay 1 time elapses.
PEG Decay 2 Level
Determines the sustain-level pitch which will be maintained while a note is held.
Note the description of Decay1 and Decay2 is exactly the same, excepting the label.
Decay2 behaves normally.
Decay1 does not behave normally, nor as described in the PM, nor equivalent to Decay1 in FEG and AEG.
I posted as a Public Awareness Announcement. Hopefully saving some users from hours of confusion.
[quotePost id=119591]I see what you mean about the Decay 1 level vs Attack level and skipping of Decay 1. However, I saw this happened the same in AWM2 PEG as in FEG. In other words, FEG would skip Decay 1 too if attack and Decay 1 level were the same. A "fix" for that I set attack to 126 (level) and Decay 1 level to 127 (or vice versa).
[/quotePost]
A LOT of third party sounds made for earlier AWM2 synths use variations of this approach to get at that FEG Decay 1, most of them drop about 1/8th or more of their Attack value, so there might be a minimum drop before it behaves as they want. Then they nearly immediately re-up the Decay 2 to full value so that it fully grabs for any quick release.
However, this doesn't seem to work on the Montage/MODX... as it tends to immediately transition to release from the current duration's value rather than heading to that Decay2 value, but it might on the Motifs and other things where these kinds of sound designs originate from.
I've done a bit more testing.
The FEG will exhibit the same behaviour as PEG described in first post, IF and ONLY IF Attack Time >0 AND FEG DEPTH = 63 (Maximum). To be clear, the Envelope will skip directly to Decay2 Stage when Attack Level = Decay1 Level.
So, if FEG Depth = +62 (Not Max) the Decay2 Stage Timer will Elapse as normal.
The AEG will at least "Hold" Level on Decay1 Timer when Attack Level = Decay1 Level. With Decay1 Time = 127, the duration of the "Peak Hold" is short, but, it at least demonstrates that the Decay1 Stage is not skipped.
In all testing I have been careful to avoid "pinning". To explain, an Envelope with a High Depth, or High Absolute Level, can cause Modulation beyond the Maximum Allowable Value of the parameter it is Modulating, for example "Amp Volume"
(The volume goes up, then stops at Max, even though the Envelope continues to "try" to increase it further).
Some of you may be asking "Why do we need to know any of this?".
Typically, Envelopes with multiple stages allow Modulation between various levels.... Not Just an Attack Level, A Sustain Level and a Zero/Release Level.
With an HADDR Envelope such as found in the Yamaha MODX AWM2 Engine allow you to set the following Levels
1) Initial/Start Level (Hold Level)
2) Attack Level (It need not be the "Max/Peak")
3) Decay1 Level
4) Decay2 Level (Traditional Sustain Level)
5) Release Level
For each there is some "mechanism" that allows the user to define a "time of transition" between successive levels, even if the subsequent level is the Same Value. The Transition Timer then effectively becomes a "Hold at Level Timer". In all except the Decay2/Sustain Stage, the Timer Length is User Defined... Short to Long, sometimes even "measured" in Milliseconds/Seconds.
Yamaha are not the only Manufacturer who employ these types of Envelopes. They are not "Proprietary". Their purpose is fairly well established.
In the case of the AWM2 PEG, you can't "Hold" the Decay1 Level.
Example, from Key On, a rise in Pitch to a Perfect Fifth and held on a timer (Decay1), then a brief rise in Pitch to a Dominant 7th (Held by the Key... Sustain) and then a Timer Release (a slide down to an undetermined pitch).
You've made yourself a mini Sequencer. This is one of the ways people use these types of Envelopes.
You can't do this on the MODX, so please don't waste your time trying or trying to figure out why it's not working.
It won't get fixed, we all know that. It's FYI so you don't expend any energy chasing it.
The other thing you have to watch out for is that the PEG Timers, are not Timers, they are "multipliers" of some other value. The final "time" value is dependent on the difference in levels between one Stage and the next. All you can do is experiment with Time and Level values whilst playing a Key until it resembles your requirement.
My opinion is this is a bug. It behaves differently than described in the Manual, and as far as I can tell, different than all the other HADDR Envelopes out there.
I'm not a "Beta Tester". It's just my opinion.
I haven't read through your entire update - so take this in that context.
I revisited this a bit earlier today because I was concerned about cutoff related setup problems on my end. It turns out there was no problem at all with my initial methodology. I essentially applied the same this go-around so I built confidence in that aspect of my testing.
However, I started with FM-X and noticed that FEG was working just as you initially described. That if FEG Attack level == FEG Decay 1 Level then there was not skipping of the Decay 1 time. It did delay and changing Decay 1's "Time" did result in longer or shorter hold-off until the filter was closed (Decay 2 level at 0, Decay 2 Time at 0).
About "pinning" - I wasn't concerned about high-side >127 cutoff values ("pinning" at 127 because there's a limit to cutoff). And "pinning" at the low-side ( <0 ) cutoff values. This is because my FEG envelope would go to a high positive level and then return back to 0 which sets the cutoff identical to the common (Part) filter cutoff setting. I would always tune the filter-EG-is-at-0 common Part cutoff value to be right where the fundamental was barely audible. Where turning cutoff one value in either direction would make a big difference in hearing or squelching the fundamental. So during the Decay 1 phase of the FEG - the filter would open up (Using LPF24D) so the LPF was not filtering out anything essentially. Then once Decay 2 was reached the level would drop to 0 which was an obvious thing to hear - barely hearing the fundamental. I had to turn the main volume slider all the way up to hear it. So essentially this cutoff is squelching the signal.
Back to the testing - so I thought maybe I wasn't paying enough attention to AWM2 vs FM-X. I switched to AWM2 and applied the same FEG and got the same result. Attack Level == Decay 1 Level and the Decay 1 phase was not being skipped - Decay 1 times would be recognized.
And for the same shape PEG would skip the decay 1 phase (when levels are identical).
So now I was reproducing your original findings. And in AWM2 and FM-X the same.
I read enough of your update to see that you've identified specific cases where your original behavior holds true and also where my last (contrary) findings hold true.
BTW - when PEG is skipping the Decay 1 phase due to the same Attack and Delay 1 levels I found that a level differential of 15 arrived at parity with FEG (that wasn't skipping and did use the same Attack and Decay 1 levels). This also holds the FEG and PEG Decay 1 time as the same during these comparisons.
I didn't document this to you - but I did think some of this behavior is "bug" territory. Or, at the least, odd-ball inflexible (looks like a bug, smells like a bug). Particularly now finding the corner case where PEG and FEG act differently and aligning with that. Having to apply a 15 level differential doesn't work for pitch so well because that's an obvious ramp down or up in pitch which is only OK if that's what you're after. But if you want to hold pitch to some different value then snap back to some other value (while holding down a key) you can't really do this in a straight forward way. The best you can do is make the differential (between Attack Level and Decay 1 level) low enough not to hear much of a pitch difference and cross your fingers that Delay1_Time=(maximum) is long enough.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
Thanks Jason.
I had a look at FM-X also, and confirm FM-X "Common" PEG behaves the same, even though value ranges are different.
FM-X Common FEG behaves normally (even with Depth maxxed).
Considering FM-X PEG also skips Decay1 Stage, I wondered if Yamaha had a "good reason" for doing it this way (presuming it was intentional design).
I racked my brains and could not picture any practical scenario where this would be advantageous. Moreover, I could not think of any scenario where a "normal" PEG would be disadvantaged or incapable.
It's not the end of the world, but it has confused the bejeezes out of me for the last 12 months. If anyone recalls I posted a thread trying to experiment/compare/equate Envelopes between Pitch, Filter and Amp. My experiments usually fizzled out through workday fatigue, and a sense of not being experienced enough (yet) to understand the mechanics
Leave it there I think.
If we get any future queries regards PEG behaviour, they can be linked back here.
I tested these on a Motif XF and the anomalies are identical. There are the same cases where FEG doesn't skip Decay 1 while PEG will (Attack level == Decay 1 level, and other various dependencies).
Any (old) libraries that would modulate pitch in different envelope stages would have to work with the same constraints (meaning special cases and strangeness) as MODX/Montage. At least for Motif XF.
This doesn't make it "right" - but it does make it consistent at least.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R