Ridin’ the E-bus

Jan was kind enough to send me his thoughts about the “M” in “Montage M”. He hears evidence of MPE — MIDI Polyphonic Expression — in at least one of the audio examples posted by Yamaha.

Well, my ears probably aren’t as finely tuned as his, but his conjecture (“M” for “MPE”) makes sense. By now, you’ve probably seen the list of new Cubase 13 features including MIDI 2.0. Cubase has supported MPE for quite some time, and oddly, Yamaha synths (when used as external controllers) do not support MPE! Thus, it’s time for Montage M and future Yamaha synths to catch up with their Steinberg cousins.

MIDI 2.0 has a number of MPE-like features to control individual notes, e.g., pitch bend individual notes instead of all active notes in a MIDI channel. Some analysts regard MPE as a “bridge” to MIDI 2.0 with MIDI 2.0 as the final destination.

I was happy to leave it there, but my mind wandered down to the circuit level. In particular, I wondered if Yamaha’s internal controller design is up to the task of MPE and MIDI 2.0. MIDI 2.0, after all, increases controller resolution up to 32 bits and note velocity up to 16 bits. That’s quite a leap from MIDI 1.x 7-bit resolution in both cases (modulo the few situations where a few more bits are set aside).

Web discussions usually focus on synthesis and ignore control implementation. With the change to MIDI 2.0, suddenly the control infrastructure requires examination, too, and possibly an update. (“We cannot develop the current MONTAGE any further.”)

So, how are key, knob, slider and button gestures detected and communicated in a mid- to upper-tier Yamaha synth/arranger? By mid- to upper-tier, I mean those instruments which incorporate an SWP70 (SWP50/51) tone generator IC.

In the case of Montage (and MODX), keys, knobs, sliders and buttons are scanned by dedicated microcontrollers. The Montage has three microcontrollers:

  • E-PNS4: 40MHz ARM Cortex-M3 32-bit single core microcontroller (MB9AF131NBPQC)
  • E-VKS: 40MHz ARM Cortex-M3 32-bit single core microcontroller (MB9AF131KAPMC)
  • E-PNS3: 10MHz Toshiba 8-bit microcontroller (TMP89FW24AFG-7KH4)

E-PNS4 scans knobs (24 lines, 12-bit ADC) and the left/right front panel switches. E-PNS3 scans the sliders (8 lines, 10-bit ADC). E-VKS scans the keyboard.

The three microcontrollers and the Master SWP70 tone generator are connected by an I2C bus which Yamaha calls the “E-bus”. The three microcontrollers send events directly to the tone generator. The event message stream does not pass through the ARM host CPU (running Linux). Latency is minimized thanks to the direct path. And, as far as internal synthesis is concerned, the events are not converted nor passed through conventional MIDI links.

The ARM host CPU gets its E-bus messages from the Master SWP70. The Master SWP70 generates an E-bus interrupt request (SWP_EIRQN) when message data is available.

The best way to describe I2C is “poor man’s Ethernet.” I2C is serial and requires only three wires: clock (E-SCL), data (E-SDA) and reset (E-IC). I2C can send multiple bytes in a single bus transaction.

I found three European patents that describe the E-bus: EP1235202A2, EP1235202A3, EP1235202B1. Basically, Yamaha (re)filed three separate patents with the European Patent Office in order to extend the life of the IP. The patent title is “Bi-directional serial bus system for electronic musical instrument,” and the inventors are Shinya Sakurada, Akira Iizuka, Harumichi Hotta, Shizuhiko Kawai, Kozo Tokuda, Masaki Kudo. The first patent was published August 28, 2002.

There are two message data formats:

  • Standard data: 5 bytes in length (3 data bytes)
  • Extended data: 17 bytes in length (15 data bytes)

Generally, events are communicated in the 5-byte, standard data format. The following table (“FIG. 8”) is taken from the patent. It summarizes the E-bus events.

You probably picked up on the similarity to standard MIDI 1.x events. There aren’t any channels, however. The low-order nibble of the first data byte provides additional event-specific information (port number or 4 additional velocity bits).

This analysis opens a can of worms. Will Montage M scan analog signals at 10-bits? 12-bits? Can the existing E-bus protocol communicate values measured at higher resolution? Can the stock SWP70 tone generator at the receiving end of the event stream interpret and respond to higher resolution events? How will low resolution values be up-scaled to 32 bits? Is that even required by the MIDI 2.0 spec?

I guess we’re gonna find out! We should all thank the engineers who took on this rather unglamorous task.

Copyright © 2023 Paul J. Drongowski