2

I can't understand the relationship between MIDI controller message 0x07 (overall volume channel) and MIDI controller message 0x0B (expression volume). I see the latter can be used for crescendo and diminuendo, but given it has values ranging from 0 to 127, what is the default value and how these values are relative to the former?

Let's say I fix volume for channel 1 to 100 with a CC 0x07 at the beginning and never change it. How do I implement a diminuendo by sending CC 0x0B messages periodically? What is the first value of CC 0x0B I should send? 100 or 127, assuming expression is a percentage of volume? And what if I want to do a crescendo instead?

3

From the GM2 standard:


3.3.6 Expression (cc#11) Default Value: 127 (7FH) [...] Modifies the volume set by Channel Volume (cc#7) on the specified Channel.

Note: Expression (cc#11) and Channel Volume (cc#7) are used for different purposes. Channel Volume (cc#7) should be used to set the overall volume of the Channel prior to music data playback as well as for mixdown fader-style movements, while Expression (cc#11) should be used during music data playback to attenuate the programmed MIDI volume (cc#7) data, thus creating diminuendos and crescendos. This enables a listener, after the fact, to adjust the relative mix of instruments without destroying the dynamic expression of that instrument.

The formula used is:

Gain in dB = (40 * log10(cc7/127)) + (40 * log10(cc11/127))


So: if you want to use any per-instrument dynamics, the default controller value of 7f corresponds to fffffff (or whatever you like to call the loudest possibility: I just was tempted too much and had to translate 7f into seven fs), and you likely have to start with something smaller right away.

  • I think I've got it. Let's say the first note of a crescendo has a "p" velocity and the last one an "mf" velocity. And I have set numerical values for p and mf and p is the lowest velocity I have in the whole song for initial notes under the crescendo hairpin. I set cc11 at the same value of p at the beginning of the song and change it gradually so that at the end of an hairpin it gets the same value of the velocity of the last note under the hairpin. Am I right? I really need this crescendo-diminuendo stuff to better simulate a real violin with MIDI.For piano crescendos I just use velocities. – Antonio Bonifati 'Farmboy' Apr 1 '17 at 21:17
  • Don't mistake expression for 'playing harder or softer ' (on phone, will flesh out later) – Tetsujin Apr 2 '17 at 6:22
  • Even on the simplest of sample playback devices ['romplers'], playing harder [higher velocity] will at least open the filters, making the sound brighter, as a rough approximation of what a real acoustic instrument does. Turning the volume up, by cc7 or 11 will not; it will just make it louder. – Tetsujin Apr 2 '17 at 10:17
  • In traditional music notation on the first and last note of any hairpin there is a dynamic indication like mf, p, f, mp, etc. E.g you do a crescendo from p to mf spanning more than two notes. That's what I am trying to do in MIDI. – Antonio Bonifati 'Farmboy' Apr 2 '17 at 10:18
  • then probably you need to do it by velocity [or, if you're lucky] some high-end violin-family samplers can use the mod wheel, for instance, as a separate dynamics control. You'll have to experiment with your particular instrument. Unless expression is specifically linked to at least the filters, then it would be like turning up a recording of a real violin - it wouldn't make the player play harder. – Tetsujin Apr 2 '17 at 10:34
1

A hastily constructed answer...

The two are separate values, both default to 127.
Setting either will reduce the volume below 127.
127 on both is 'max volume', anything else is a reduction, but may be considered 'channel' or 'bus' depending on the device, affecting pre/post sends.

Master vol at 100 & expression at 120 is the same as master at 120 & expression at 100, so realistically they are interchangeable.

Some machines respond as if they were actually the same controller, internally, others can affect overdrive or other plugin settings as though one were a channel & the other a master control - empirically is the only way to test.

[caveat - this used to be my forte, but I'm 17 years out of the business]

& as my answer & user38161's were posted within seconds of each other - nothing in his answer is wrong & his is the better technical explanation, but different manufacturers deal with the actual signal chain differently]

  • i'm pretty sure default value for expression is 100... – Stephen Hazel Apr 1 '17 at 19:55
  • Does this mean if I set CC #7 and wish to use CC #11 for dynamics I have to set CC#11 as well? E.g. if CC#7 is 100 and I leave CC#11 to 127 (as per default value according to the specs), I won't be able to implement a crescendo because I cannot make CC#11 higher, only lower to make a diminuendo. Should I always set CC#11 to 127/2~63 in order to be able to play both crescendo and diminuendo? – Antonio Bonifati 'Farmboy' Apr 1 '17 at 20:50
  • @StephenHazel - you may be right, but I've scoured as much documentation as I can find & cannot actually see it referenced anywhere [ie I find not only no conflicting info, but no info at all re a default]. If you can find any official citation I'm more than happy to incorporate it in the answer :) – Tetsujin Apr 2 '17 at 11:57
  • I had it backwards. volume(7) is 100. Expression (11) is 127. Per the doc you can download here: midi.org/specifications/item/general-midi-2 – Stephen Hazel Apr 2 '17 at 20:58
1

the actual answer is in the docs you can download at https://www.midi.org/specifications/item/general-midi-2

Volume (7) defaults to 100 so you can bump it up a bit. Expression (11) defaults to 127.

Volume should be used once at the beginning of the track/channel to set overall volume. Expression should be the continuous controller for mixing to do crescendo/diminuendo (if that's not built into the note velocities.) These 2 controls plus velocity plus master volume (across channels) system common event do midi volume. There's a standard to how they work together, but I would nooot rely on it cuz not every synthesizer will respond per that algorithm. Especially the older hardware synths that may not even respond to 7, 11, or master volume.

To sum up, midi is the most convoluted, revised garbage bin of sooo caaaalled standardSSS that I've ever come across. Few manufacturer adhere exactly to it. So just be ready to completely mess with the midi file you've got to get the synth you've got to do the right thing. But, well, it's the only "standard" i know of. And nobody has tried to make a better one. Midi is a small blessing and a huge curse.

  • It turned out my Yamaha keyboard supports CC11 but the Violin voice fades in and out better if I just continually increase/decrease CC7 channel volume, so that's what I will do. I agree on the MIDI standard to be much like HTML... think Yamaha does not use MIDI as the internal storage format, but its own proprietary format that supports all synth features. – Antonio Bonifati 'Farmboy' Apr 2 '17 at 22:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.