Live data from Hacker News

An update to 37-year-old MIDI

qz.com

81–90 of 105 posts

Re: An update to 37-year-old MIDI

#81

Earlier quoted context omitted.

Also, if we talk about the volume parameter. The human ear's dynamic range is about 120 dB, which includes about 20-30 dB of pain. With 127 bits, we can map that with 1 dB resolution. 16 bit audio ("CD quality") only has a 90 dB dynamic range. We would almost never want a single instrument to have a 90 dB dynamic range, but if we did, MIDI values could logarithmically encode it with a better than 1 dB per step resolu…

> 16 bit audio ("CD quality") only has a 90 dB dynamic range. That's a persistent myth. The channel noise floor at the frequencies of interest of 4x kHz / 16 Bit audio is below -100 dB due to combined noise shaping and dithering. While this means for music 16 bit audio is generally sufficient, it has leaves little room for error; mastering has to be excellent. That's why everyone is recording in 24 bit; it allows you…

It's not a "persistent myth" - it's absolutely correct.

The "persistent myth" is that signal-to-noise ratio and dynamic range are somehow identical. They aren't.

It's also a persistent myth that the unaltered quantisation noise spectrum is basically white noise. It isn't, except as a poor approximation.

In fact it's very spiky - mathematically it's literally a function related to related to the sample rate. Some frequencies produce more audible quantisation artefacts than others. This is audible on very good hardware, and it contributes to both harmonic and intermodulation distortion on cheaper hardware.

Dither and noise shaping distract from the effect in a subjectively pleasing way, but technically they're a cheap fix - like blurring a jpeg and pretending this somehow magically removes all of the compression artefacts. The result may be fine for Instagram, but not for commercial photography.

The bottom line is that 24-bit sampling fixes these issues because they simply become irrelevant. The SNR limits are defined by the analog limitations of the converters, and all of the quantisation artefacts remain below audibility.

Re: An update to 37-year-old MIDI

#82

imho MIDI 2.0 hits the low hanging fruit but doesn't go far enough at fixing the biggest problem in professional audio. Deterministic rendering. Basically same input makes the same output, which doesn't happen even in totally digital systems - doubly so with live (or recreated) midi events. I'll give an example - you have your PC with $DAW_OF_CHOICE running and plug in $MIDI_2_CONTROLLER to USB and enable a track and…

Why would you ever want perfectly deterministic rendering? I've never met an audio engineer that would care about this, and I've never personally run into the problem of my audio projects being too undeterministic. We're not doing LHC experiments here, we're just making music. Who cares if a MIDI note arrives 100 microseconds late? A musician surely wouldn't care.

If it's truly a problem for you because of phasing or something, why not bake the MIDI track into an audio track before mixing?

Re: An update to 37-year-old MIDI

#83
post #56

Earlier quoted context omitted.

Also, if we talk about the volume parameter. The human ear's dynamic range is about 120 dB, which includes about 20-30 dB of pain. With 127 bits, we can map that with 1 dB resolution. 16 bit audio ("CD quality") only has a 90 dB dynamic range. We would almost never want a single instrument to have a 90 dB dynamic range, but if we did, MIDI values could logarithmically encode it with a better than 1 dB per step resolu…

You get 7 bits with MIDI, not 127 bits. Also noone wants to encode audio samples using MIDI; the last time someone (ab)used a volume control for digital sample playback was on the Commodore 64.

That's just a typo; 128 values.

Re: An update to 37-year-old MIDI

#84

Earlier quoted context omitted.

> 16 bit audio ("CD quality") only has a 90 dB dynamic range. That's a persistent myth. The channel noise floor at the frequencies of interest of 4x kHz / 16 Bit audio is below -100 dB due to combined noise shaping and dithering. While this means for music 16 bit audio is generally sufficient, it has leaves little room for error; mastering has to be excellent. That's why everyone is recording in 24 bit; it allows you…

It's not a "persistent myth" - it's absolutely correct. The "persistent myth" is that signal-to-noise ratio and dynamic range are somehow identical. They aren't. It's also a persistent myth that the unaltered quantisation noise spectrum is basically white noise. It isn't, except as a poor approximation. In fact it's very spiky - mathematically it's literally a function related to related to the sample rate. Some freq…

> The "persistent myth" is that signal-to-noise ratio and dynamic range are somehow identical. They aren't.

Obviously :)

The SNR will stay at around ~96 dB for 16 bit audio. If that noise were white, then that would naturally limit the dynamic range to essentially the same number. But no one said that the quantization noise of the channel has to be white, indeed, the whole point of dithering and noise shaping is to de-correlate the quantization error from the signal and make the noise spectrum anything but white. Hence the dynamic range can be increased.

> It's not a "persistent myth" - it's absolutely correct.

No. The SNR is 96 dB; the dynamic range for the relevant frequency band is greater.

Re: An update to 37-year-old MIDI

#85
I'm happy about it, but if you're able to use Open Sound Control, it's better. Rather than gibberish channel numbers, OSC lets you label your messages meaningfully, as in "/trumpet/volume 100". And it lets you send lots of data types -- numbers, strings, lists -- rather than only numbers.

Re: An update to 37-year-old MIDI

#86
post #70

Earlier quoted context omitted.

It depends on the instrument. 128 positions is well enough for piano. From other instruments, drums is the one I know best, and there single parameter is just not enough: the result depends on velocity, the position where the stick hits drum head, for non round tip sticks the stick angle. For cymbals, in addition to hitting different parts of the cymbal, stick tip, shaft and shoulder give different sounds. And so on.…

You do not need MIDI 2.0 to solve any of those problems.

No, and I don't expect MIDI 2.0 to help. It was just response to the idea that single parameter would be enough but 7 bits wouldn't.

Re: An update to 37-year-old MIDI

#87
post #17

Earlier quoted context omitted.

A midi event stream is massively less demanding than a waveform stream. A browser could at least be a source of such events that you would route to your favorite hardware synth. Interestingly, browsers are capable of native audio and video playback for years; somehow it wasn't such a problem, given their relaxed requirements for latency.

It's because streaming video and audio is simplex, MIDI + rendering is duplex. Round trip latency for a decent app needs to be sub 5ms, it doesn't matter if you have 200ms+ for receiving packets from a video/audio source on a web page, since you're not providing live input to get live output.

Try updating your 15 year old computer. It works fine.

Re: An update to 37-year-old MIDI

#88
post #60

Earlier quoted context omitted.

> Sure there are non-standard 14bit encodings There's nothing nonstandard about 14-bit encodings. Pitch wheel and all of the standard controls are 14-bit.

For completeness, there are a few 14-bit MIDI control standards that I'm aware of, and all of them have major disadvantages. - MPE pitch wheel: You can only have 16 controls with this method. Otherwise, it's an efficient protocol. - NRPN/RPN: Requires 4 MIDI messages to send a single value in a proper way (control number, MSB, LSB, NULL control number). Technically you can do it in 3, or 2 if the control number doesn…

I'd also like to mention that MIDI 1.0 runs on a 31250 baud/s com link. This requires a balance between precision and throughput.

The bandwidth gets pretty tight with CC messages interleaved with clock and SYSEX (sample dumps, patch/pattern updates), that in a DIY sequencer, we have to do pendulum SYSEX updates to avoid disrupting the timing.

Care to elaborate the DX7 sysex? Most newer manufacturers have a long ID so the header already goes like F0 00 20 3C 02 00 ...... F7

Re: An update to 37-year-old MIDI

#89
post #40

Earlier quoted context omitted.

> This is extremely misleading. Sure, the velocity input into your synth is going to be at 7-bit resolution, but at soon as the synth has it, it can play anything it wants at whatever volume it wants to based on how you have configured it. There's nothing about the external 7-bit implementation that is really limiting the dynamics of the synth itself. I don't agree. Musical sounds are evolving, so one should not be s…

There are very few patches where the difference between static filter settings of 64 and 65 is audible and it's literally physically impossible to set a typical panel knob with that level of precision. (It's easier on a medium-sized slider and definitely possible on a long-throw fader, but most synth panels don't have those.) And it's incredibly easy - and fairly standard now - to add a little interpolation to contin…

Contrary to your experience, I find many patches have a narrow sweet spot where the transients created by a overdriven filter produce rich and mesmerizing textures.

Turn up Q and try again? :)

Re: An update to 37-year-old MIDI

#90
post #60

Earlier quoted context omitted.

> Sure there are non-standard 14bit encodings There's nothing nonstandard about 14-bit encodings. Pitch wheel and all of the standard controls are 14-bit.

For completeness, there are a few 14-bit MIDI control standards that I'm aware of, and all of them have major disadvantages. - MPE pitch wheel: You can only have 16 controls with this method. Otherwise, it's an efficient protocol. - NRPN/RPN: Requires 4 MIDI messages to send a single value in a proper way (control number, MSB, LSB, NULL control number). Technically you can do it in 3, or 2 if the control number doesn…

> - CC MSB/LSB: Plows over normal CC messages so you need to explicitly set up your controller / synth to agree with each other. As far as I know the order of MSB/LSB is not defined by any standard, and IMO this makes it a broken standard.

It's well defined. The MIDI 1.0 spec says that the range of controller numbers 32 through 63 is reserved for optional LSBs for the corresponding controller numbers in the range 0 through 31. See the "MIDI 1.0 Detailed Specification 4.2" pages 11 and 12.

Post reply on HN