3

Volume (CC#7) and Expression (CC #11) should be implemented as follows: For situations in which only CC# 7 is used (CC#11 is assumed "127"): L(dB) = 40 log (V/127) where V= CC#7 value For example: CC#7 amplitude

127 0dB
96 - 4.8dB
64 -11.9dB
32 -23.9dB
16 -36.0dB
0 -oo

From this listing, it is clear that the value of MIDI CC#7 really is the raw channel gain not the volume in dB. Otherwise, 127 would have been 1 and zero would have been some low reference value, such as 10^-4. Yet there are claims that the scale is logarithmic. Where is the confusion?

  • Where did you get the listing of CC message to db? – Simon Bosley Jun 13 '17 at 10:18
6

The MIDI specification itself does not define the exact response to the volume controller.

Nowadays, there is almost no device that does no implement the expression controller. Both the GM Level 1 Developer Guidelines and the DLS specification use L(dB) = 40 log (volume × expression / 127²). Furthermore, the guidelines mention that

there was general agreement about how these two controllers interacted as well: In 9 cases, their values were combined (multiplied) to get the actual level. The recommended volume response curves for CC#7 (volume) and CC#11 (expression) used herein were provided to the General MIDI Working Group of the IASIG/MMA by Yamaha Corporation. Roland uses the same response curve, and other Japanese manufacturers who are members of the AMEI have agreed to do the same.

So this is how almost all devices actually implement it.


While the controller value happens to be the raw channel gain, the way it's usually measured is in decibel, and that is a logarithmic scale. That the internal channel gain is not measured in dB is of interest only for somebody who actually builds a synthesizer. (And the way how the human ear perceives the volume is proportional to neither the raw gain nor to the dB value.)

  • Wouldn't it have been better if the device did the exponentiation itself (much like display gamma). Then, the volume steps would sound more even, and it would also make better use of the 7 bits. However, this requires a threshold value, otherwise zero gain cannot be specified. – user877329 Jun 13 '17 at 11:28
  • If you build your own device, you can implement it however you want, but it might not be a good idea to make it incompatible with other devices. By now, it's too late to change how everybody does it. – CL. Jun 13 '17 at 11:35
  • It sounds like a switch. I have a keyboard (Casio CTK-631) where the base instruments are one octave too low, likely because the should be usable in local mode. If GM mode is on, then they are in the correct octave. – user877329 Jun 13 '17 at 11:39

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.