Just saw this posted elsewhere:
http://miditracker.org/index.html#downloads
The editor is part of the "Synergy" MIDI tracker / sequencer.
Features:
Part Mixer
- quick-edit all 16 parts on one page
- copy patch / part EQ / part FX settings from other performance part / variationFM matrix editor with automatic algorithm selection
- multi-edit, cycle, shuffle, randomize operatorsEnvelope mixer
- morph between PEG / AEG / FEG preset envelopes
- randomization
- persistent EG mixer state (saved per part variation / FM operator / AWM2 element)FM Sound mixer
- morph between 4 FM-X patches
- can (optionally) morph each operator separately
- randomization
- persistent sound mixer state (saved per part variation)AWM2 element editor
- reads user waveform names from text file (`montage_user_waveforms.txt`)Part LFO editor
- utility functions for generating / modifying user LFO waveformPart Controller Box (mod matrix) editor
15 global banks * 128 patches / performances (`A`..`O`)
1 project-specific patch bank (`P`)
up to 16 parts per performance (AWM2, FM-X or DRUM)
- part layer flag: automatically play neighbouring parts in editor
- rearrange parts via drag'n'dropup to 16 variations per part
- technically up to 16 performances per patch
- utility functions to sync part FX / part EQ / master EQ/FX from Main variation
- variations can also be selected during replay via `proxy_layer_[1..16]_prgchg` RPN (proxy node automation port A / B)
- option to force part outputs to "Main L&R" / "Asgn L&R"An (unedited) demo video of the editor in action (the first few minutes demonstrate sequenced patch variations):
This is beyond breathtaking. It's truly astonishing.
Well done to whoever did this. Impossible to find words to describe the awesomeness.
The perseverance, patience to research and make work... speechless.
I agree this looks very interesting. There's an interesting observation in §2.4.1 of the documentation at http://miditracker.org/montage.html too:
"One very useful feature of the synth is that many parameters are read only at note-on, i.e. changing those parameters will not affect currently playing voices. [... significant list of parameters ...] By using part variations it is therefore possible to simultaneously play many different sounds on a single part
(i.e. play note, select variation that modifies e.g. Op attack level or AWM2 waveform, play next note, ..)."
I knew about this for a couple of parameters from accidental experimentation, but hadn't realised it applied anything like this widely, even including waveform and EQs.
[I remember on some rack modules in the 1990s, you could play and hold a note, change voice, then play another note all on the same channel, and this was occasionally useful to squeeze a bit more multitimbrality out of them when sequencing, although polyphony was still a hard limit.]
Wowsers. If this guy beats Yamaha to making a "parameter locks" focused sequencer, Yamaha should be extremely embarrassed and send him a truck load of money.
Yes, the A&D1 (of A, D1, D2, R -- which is Yamaha's convention for ADSR this gen) can be changed and chances are past notes you have played are already past the attack or delay1 phase so altering these values isn't going to impact these notes of the past (attack or decay1 phase is already completed and neither of these repeat). So for parameters like this you can use motion sequence to alter them (limited by the destination choices).
Note shift (Part level) and Coarse tuning (element level) can be changed on the interface and past notes are not altered. This cannot be replicated with motion sequence because all of the pitch-related destinations actually impact the pitch bend (which is real-time) instead of the note shift/element coarse parameters which are not real-time. However, with MIDI you can pick and choose which parameters you are interested in changing and can therefore target the "real" Part note shift or element coarse tune and these will not change past notes.
There are plenty of parameters in this category.
A slightly different category but somewhat related are parameters that normally affect all Parts simultaneously but using MIDI you can choose which Part(s) to impact. Take the [ASSIGN 1&2] buttons. If you directly press the buttons then these will change [ASSIGN 1&2] for every Part. However, if you send a MIDI CC to change assign - you can target only one Part (by MIDI channel) and only this Part will change its ASSIGN button state. This way you can have some Parts with one button combination and other Parts with a different one. You can even do this without sending MIDI from an external device. You can program, for example, the footswitch to target the same MIDI CC value as say the [ASSIGN 1] button. Then if you select any one Part you will send the CC to change the ASSIGN 1 (in this example) state only on the selected Part. This also assumes using multi-channel MIDI mode. If you happen to press the footswitch while no Part is selected then only Part 1 will receive the ASSIGN's CC using this method. And ... if you have one Part selected and hold down the foot pedal (which is programmed to send the CC for an ASSIGN button) then change Parts while still holding the pedal down - the 1st Part selected will not have received any change in state of the pedal so it will HOLD the "pedal pushed down" value and the new Part you switched to will not have received any request to change the ASSIGN button state since these are only sent when the foot pedal changes state. Now let go of the pedal - this will send the "off" message for the ASSIGN button for this new Part only and the first Part you switched from will not change its ASSIGN button state. Then you press/hold the footswitch if you want to turn on ASSIGN for this new Part and switch to another Part to "lock in" the value.
However, with a computer I have always mentioned that there are many more possibilities than capable on the instrument itself. Because you could start tapping into parameters directly using Sysex. These are parameters you can't even reach with Motion Sequence. And then you can also play tricks with the locked in MIDI receive channels per Part since intelligence on the computer side can target only chosen Parts.
The Montage/MODX has no step sequencer. There was no attempt to place one inside. Therefore, you would need some kind of external program to accomplish this. Yamaha hasn't ever supplied an offline step sequencer. They have an offline sequencer -- but it's a piano roll style and I don't think it does control automation. So Yamaha isn't in the game, so to speak, of offering any kind of step sequencing based solution.
You cannot use SysEx at all onboard MODX/Montage. You can't place an arbitrary SysEx inside the pattern sequencer. So that's out. However, using the Pattern sequencer you can record control automation. This isn't the same as a step sequencer in terms of quickly being able to align events on a time grid. However, since control changes are persistent you can add CCs into the pattern and those items will "lock". Still, it's a far cry from the flexibility an external computer gives you.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
From what I understand of the envelopes, if it's got a G in its name (eg. FEG & AEG), standing for Generator, then an envelope is generated at note invocation based on the values at the time of generation, and that's sent to the audio engine, as a whole, at that time, to play out without changing from that moment on...
I could be wrong about this.
The envelope generators are a dash of "follows notes" and a dash of "doesn't follow notes".
The reason why I mention that changing the parameter doesn't affect A and D1 is because this is true for all the ways you alter A and D1 parameters. You can do these two experiments to gain insight:
For both cases ... usual initialization steps
1) Recall the "Init Normal (AWM2)" preset Performance
2) Edit Part 1 and change element 1's AEG. Set the release to the maximum value.
The "follows notes" case ...
3) Strike a low note (these are easier to hear the release tails). Change the AEG release to 0. You'll notice previous notes are still ringing out and did not have their release altered. New notes clip when you let off the key.
The "doesn't follow notes" case ...
4) Set the element 1 AEG release back to the maximum value
5) Setup a Common "Mod/Control" -> "Control Assign" source/destination where the source is the modwheel (or superknob) and destination is AEG Release. I setup the curve as "Square" which allows me to have the modwheel all-the-way-down not offset the sound at all then moving the wheel up the square will offset and "snap" to a value. I set the ratio to the maximum negative value so moving the modwheel (or superknob) allows for you to change the release midstream during a note.
6) Place modwheel (or superknob) in the "0" position. This is rolled all the way down for modwheel or full counter clockwise for superknob.
7) Strike a (low) note - it will ring out
8) Move the modwheel or superknob (whichever you setup) in order to reach the maximum negative value. You'll hear the currently sounding notes clip short.
So there's something unique about the motion control destinations vs. the parameters they appear to offset. If the parameter itself was offset then previously sounding notes wouldn't be impacted just like changing the value manually (or through SysEx) doesn't impact notes. However, motion control destinations for envelope generators "tap into" even currently sounding notes.
Just like I speculated for motion control pitch apparently taps into pitch bend (and not note shift or element coarse) - here the AEG release I imagine taps into the Release offset as in the knob Montage has for the [TONE] control fixed function. Because here, the knob that offsets release also will cut off the release of currently sounding notes. So I suspect the motion control allows for an element-level of this style of offset (and not the actual parameter itself).
I don't mind that there's a difference between the actual parameter value and the offsets available through motion control/sequence. I currently utilize exactly how they work now (impacting previously sounding notes) in my own motion sequences. And I've used this "trick" before to do interesting things like "auto-sustaining" chords that stop playing when you play a new chord. This is only available because there's that difference in how the release works between the parameter itself and the offset value.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
This is probably done by a scalar:
ADDR going through a virtualised ADDR scalar that is modified by the Motion Controllers.
Kind of like dot syntax maths:
(A, D1, D2, R) • (As, D1s, D2s, Rs)
This is how just about all the Assignable Knobs and Motion Controllers appear to work, to me.
Ok, the main point, now using scalar notation, is that
R=50 is not the same as R(=100)(s=0.5)=offset result of 50.
Changing R directly does not real-time impact previously played notes while Rs (changes in s) do impact previously played notes.
... so the "scalar" that I speculated is also used by the [TONE] adjustment knobs is at a deeper place in the hierarchy.
So R routes to one register at a higher level than Rs which routes to a different register.
This kind of difference isn't intrinsic to scalars/attenuators. Although you can call the offset what you want (I have no beef with the label). I just don't think it necessarily informs you about the difference in an offset value (scalar other than 1.0) and how it works vs. modifying the base value itself (R value in this example).
Anyways - at least the general ideas have been conveyed here.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R