Hello.
I am trying to setup external controller (in this case Novation Zero SL MK II) to be able to controll certain parameters of MOXF6.
For example: I wish to controll filter envelopes, lfo or other stuff using physical controllers of Zero SL during live performance.
Is there any way to do that without using a computer? Just a regular MIDI cable.
I have tried all CC's and only general MIDI related controls are moving, such as Cutoff, resonance, Volume and so on.
Is there a way to assign for. ex. Filter attack to certainn CC and change parameters inside MOXF?
Or if not, can I do it somehow via SYSEX messages?
To be honest, I never used SYSEX programming, so I have no idea how it works and how should I set this up to be able to controll the Synth.
Zero SL has ability to send SYSEX Messages, so mabe this is the way.?
Could somebody walk me through this world of letters and numbers ? 🙂
Regards,
Maciej
Welcome to Yamaha Synth! Thanks for the question.
Although we do not know your particular controller and its capabilities we can certainly help you on the MOXF side of the equation. The world of "letters and numbers" is initially confusing but it is do able... Hope this helps.
Is there a way to assign for. ex. Filter attack to certainn CC and change parameters inside MOXF?
In the MIDI protocol Filter EG is not given a fixed Control Change number set. Control of the Filter Cutoff is universal cc074, control of Filter Resonance is universal cc071.
Amplitude Envelope Generator control is universal as follows: Attack cc073, Release cc072.
Decay is not always used, while Sustain has its own special controller (thanks to the piano being as important a sound as it is for us keyboardist)! But the Filter (responsible for timbre change, tone, character) is not given the same types of universal control for portions of its envelope. Such control is found within the synth's engine.
There are 24 real time controls in the MOXF Knob Control Function area designed to control the internal engine... As you've noticed some are standard MIDI cc messages, others are via System Exclusive messages (literally, messages designed exclusively for controlling the internal MOXF engine).
So no, there is no CC that automatically will offset Filter Attack. You should know this FACT, however, before we continue: on your MOXF when you turn the knobs labeled CUTOFF, RESONANCE, ATTACK, DECAY, SUSTAIN, RELEASE you are applying an offset value (-/+) to each of as many as eight separate Filters and eight separate AEGs. Unlike many synthesizers where all data travels through one filter or is controlled by one amplitude envelope the MOXF has a filter per Oscillator Element, and an AEG per Oscillator Element. The single knob is applying a boost and/or cut to each active Oscillator. Each can be individually setup for the musical response you desire. The CUTOFF knob for example, makes it convenient to "brighten" a sound... While having 8 separate filters per Voice makes for a far, far more detailed synth engine, if all you want to do is brighten the sound, the MOXF has one 'master' knob for offsetting all 8 Filters: the Cutoff Knob. Imagine having to manipulate 8 separate controls to simply brighten the sound.
A programmer demands this individual control: hit [EDIT] and navigate to Element (1-8) Filter parameters
A performer demands quick 'overall' control: turn the CUTOFF knob affect all 8 simultaneously.
As to assigning individual control to Filter Attack, however, the MOXF engine provides a CONTROL SET within each Voice. It is here that you can setup six Controller routing per Voice. This includes selecting a Control SOURCE (physical controller), a Parameter DESTINATION, and a DEPTH (degree/direction of control).
There are six Control Sets, 101 Parameter Destinations including the following Filter related parameters:
Filter EG Depth
Filter EG Hold Time
Filter EG Attack Time
Filter EG Decay 1 Time
Filter EG Decay 2 Time
Filter EG Release Time
Cutoff Frequency
Resonance
HPF Cutoff Frequency
You are given ELEMENT SWITCHES per Element _ so you can opt in or opt out of controlling specific Oscillators as you may require.
If you set the Assign 1(16) knob to FEG-ATK within a Control Set, either by turning the MOXF AS1 knob or an external control mapped to send cc016 in via MIDI, you will be controlling (offsetting) FILTER ENVELOPE GENERATOR ATTACK.
Below: Control Set 2 has AS1(16) (Assignable Knob 1 cc016) set to control the Filter Envelope Attack - the Element Switches are all active.
Control Set 1 has the Mod Wheel, MW(01) altering the Filter's Frequency (Cutoff frequency)... DEPTH as always has to do with degree/direction of application.
Additionally, I should mention, you can automate control over Cutoff and Resonance via the LFO. This is handled in the Common LFO matrix.
SYSEX WORLD
Now, when it comes to System Exclusive messages... Every parameter (let me make that, virtually every parameter) in the MOXF is addressable via a system exclusive command. Some lend themselves to real time control - some DO NOT. this is often a difficult concept to grok at first... There are some parameters that do not make musical sense to manipulate in realtime. Those that do can be assigned to a controller and will work well during performing, others are not pretty when adjusted in real time... That's just reality. Decisions about which parameters were made available for realtime cc message control were made by the designers. So in reality just because you may want to control something does not always mean it will be available.
Quick course on Sysex:
System Exclusive messages are expressed in hexadecimal.
Hex = six
Dec = ten
Hexadecimal is counting based on sixteen.
There are sixteen individual characters used: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
These represent the numbers zero through fifteen. The number sixteen in hex is actually "one-zero" 10. We'll explain.
It allows the system to express value up to sixteen with a single character, and values up to 256 with just two characters. (Just FYI)
A System Exclusive message in hex may look something like this:
F0 43 10 7F 1C 0A 00 00 dd F7
where dd is the data byte (value you are changing)
Each two character set (byte) has a purpose. The characters are read separately. "Eff-zero", "four-three", "one-zero", "seven-eff", etc., etc.
Converting decimal to hexadecimal and vice versa
To translate hexadecimal to regular numbers (called decimal), first character times 16, then add the second value.
Ex.
43 - read "four-three" is (4x16) + 3 = (64) + 3 = 67
F0 - read "eff-zero" is (15x16) + 0 = (240) + 0 = 240
10 - read "one-zero" is (1x16) + 0 = (16) + 0 = 16
0A - read "zero-eh" is (0x16) + 10 = (0) + 10 = 10
To translate decimal (regular numbers) to hexadecimal, divide the number by 16 to generate the first character, express the remainder as a single hex character.
Ex.
100 (one hundred) would translate to: first character is 6 because 16 goes into 100 six times, the remainder is 4, so 100 = 64 (in hex) "six-four"
60 (sixty) would translate to: first character is 3 because 16 goes into 60 three times, the remainder is 12 which is C. So 60 = 3C(h) "three-see"
What gets most people initially is memorizing the letters
10 is 0A in hex
11 is 0B (h)
12 is 0C (h)
13 is 0D (h)
14 is 0E (h)
15 is 0F (h)
16 is 10 _ the first character is 1 because 16 goes into 16 one time, the remainder is 0. 16 is written 10(h) "one-zero"
All the information to address the MOXF is made available in the downloadable DATA LIST Booklet.
A PARAMETER CHANGE message is the category of message you will be interested in generating.
All PARAMETER CHANGE messages for a Yamaha MOXF follow the following format:
F0 43 10 7F 1C aa aa aa dd F7
F0 _ Start of Exclusive message
43 _ Yamaha (Manufacturer ID)
10 _ Parameter Change message
7F 1C _ MOXF (Product ID)
aa _ High Address
aa _ Mid Address
aa _ Low Address
dd _ Data Byte (the change value you want to make)
F7 _ End of Exclusive message
The Addresses focus in on a specific parameter within the architecture. This often is influenced by the MODE you are in at the time the message is sent. What this means is the message for controlling a parameter can change according to the current mode. Address is a word commonly used and its meaning is clear. If you are looking for a particular Attack parameter, the Address of this parameter is different in Voice mode than it would be in Performance mode. Some parameters may be not even be available in all modes. It depends. The high, mid and low addresses define the mode and location of the parameter.
The Data Byte is the controlled value ... How many bytes are used as the Data Byte can vary depending on how complex the parameter being controlled.
Thanks for reply.
It seems like I will have to spend some time on learning all this stuff. I like very much this instrument apart from one thing. Turning the knob fast (for ex. CUTOFF) makes filter sound very "steppy", which can obviously be a plus in some cases, but in general i would prefer a smooth encoder without the step effect. And I found out, that if I use external controller with smooth encoder or just regular pot, the steppiness goes away. And apart from that, to anybody who wants to have his or her hands on the knobs rather than on the mouse or going through the menu to find a parameter to tweak, either in live situation or progrmming process, I would recommend to use VST Editor inside Cubase. In that configuration, editor can be controlled via regular CC messages send from external controller hooked up to Cubase and than the Editor can controll the Synth 😉 I really would like to give my eyes a rest from looking at the computer screen, but for the beginning I'll try to do it this way. And if i have more time, I will try to learn a new thing... a SYSEX world 😉
Thanks again for help.
Cheers.
Yes, the knobs are velocity sensitive, the faster you move the knob the farther the parameter value changes. If you are trying to achieve a sonically smooth result rather than a speedy change, then you should set the resolution for the knobs for this purpose. Otherwise you are working against the "feature"... or rather, the "feature" is working against you!
If you need to move from a value of 0 to 127 rapidly you can have the knob get there quickly by turning the knob quickly: it is velocity sensitive! Yet if you increment the knob, one click at a time, it can take several complete turns to reach 127.
This reaction/response, where speed (velocity) increases the distance traversed, can make a filter sweep sound "steppy", but you'll be happy to know, it is a programmable "feature"... Simply change the resolution or curve for the Knobs.
Press [UTILITY]
Press [F1] GENERAL
Press [SF6] OTHER
Knob Curve
Adjusts the touch response sensitivity in five steps. Larger values provide higher sensitivity, letting you make large changes to the actual value even with slight turning of the Knob.
Settings: table1 – table5
Smoother changes (smaller increments) would be achieved with Table 1. Very large jumps in value would be achieved with Table 5. Using the wrong Knob Curve can cause you to conclude as you have - that the filter is "steppy" - of course, as you realize, it is not... The setting of the Knob Curve is making it "steppy" as a "feature" - it 'thinks' (at your current setting) that you are in a hurry to get to the value. When trying to get sonic sweeping results, set the Knob Curve to the appropriate resolution.
Thanks for the question. Hope that helps.