Home

Awesome

mustang-midi-bridge

This application enables a small computer running Linux to translate MIDI messages to the proprietary USB protocol used by Fender Mustang amplifiers.

NEW: Fixes for Raspian Stretch distribution!

Thanks to some valued troubleshooting from the user community, I have committed a few fixes to mitigate problems on the newer "Stretch" distribution. All but one are in the code base and should be backwards compatible with "Jessie", but one requires editing of a system file. Details can be found in the installation Wiki.

Introduction

Mustang bridge implements about 99% of the published MIDI spec for the Fender Mustang Floor pedal with extensions to support features added to the 'v2' series:

https://github.com/snhirsch/mustang-midi-bridge/blob/master/doc/MIDX20_Midi_Spec.pdf

Code is developed on a Ubuntu Precise desktop machine, but I routinely test on a Raspberry Pi 'B' and Beagelbone Green to ensure these remain viable deployment targets.

(Due to occasional issues with USB on the RPi I am recommending the BBG for live performance use - YMMV)

Special thanks to:

For the non-techies

I have written a Wiki page here:

https://github.com/snhirsch/mustang-midi-bridge/wiki/Install

that attempts a detailed walk-through of the installation and build process on Raspberry Pi or Beaglebone. It's hard to know what level of detail to hit and suggestions or comments would be appreciated if I've omitted or glossed over something critical.

If all this turns out to be too technical, Primova Sound offers a plug-and-play hardware appliance that will bridge to the Mustang and also provide a link to the non-MIDI-compliant Roland GP-10 pedal.

http://www.primovasound.com/

Disclaimer: I have no involvement with Primova other than cooperating with Codesmart to ensure our solutions presented the same MIDI API for Mustang amp control. And, as an owner of the older MIDX-10 product I can vouch for the quality of their hardware.

Status

The Mustang Floor MIDI spec is about 99% implemented, with only the following exceptions:

Prerequisites

    NOTE: The python-pip install may segfault at the end, but it doesn't
          seem to affect anything.
'pyusb' must be installed last using 'pip':

$ pip install pyusb

Would appreciate feedback on requirements for other distributions.

Build

$ make
 or
$ make CPPFLAGS=-DRTMIDI_2_0 (for older librtmidi)

Configure

  1. Update 60-midi.rules with the USB VID (vendor id) and PID (product id) of your controller. Must be on both lines, although the attribute names are different.

  2. Edit mustang_bridge_start to set values marked as user edits. In addition to setting the VID and PID, you need to specify the index of the MIDI interface (see note below) and the MIDI channel you want the bridge to listen on.

NOTE: I'm not sure about other platforms, but on Linux the MIDI port number is equivalent to the ALSA card index. I had originally treated port as 1..n, but since ALSA (and JACK? Not sure..) starts at 0, this has now been changed. You can find the card index for your controller by connecting it to the computer and examining the pseudo-file, e.g.:

$ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf7530000 irq 30
 1 [Interface      ]: USB-Audio - USB MS1x1 MIDI Interface
                      M-Audio USB MS1x1 MIDI Interface at usb-0000:00:14.0-1, full speed

To accept MIDI messages from devices behind the M-Audio interface you would now specify '1' as the MIDI port value.

Install

Run the install.sh script as root

Run

If you have configured everything correctly, the bridge should start automatically when both the controller and the Mustang amp are connected via USB. If either or both are disconnected or shut off, the bridge will be killed automatically.

In case of difficulty

RPi and BBG are a bit fussy about enumeration of new USB devices. If you are not getting proper communication, quit the program and try replugging both the Fender amp and MIDI controller after those devices are powered up.

I've had success using a passive USB hub with the single USB on the BBG, but YMMV since most USB<->5Pin MIDI converters draw some degree of bus power. A powered hub might be necessary in some situations.

Recent Changes

Complete rewrite and restructure of code based on ever-increasing familiarity with the Mustang communication protocol and API. The bridge code is now fully mulithreaded. A persistent background thread is constantly listening to incoming traffic from the amp and updating shared data as necessary. This greatly increases stability and makes the bridge tolerant of manual adjustments on the amplifier while nominally under MIDI control. In particular, it is now possible to engage the tuner function on the amp without ill side-effects.

The command line parameter for MIDI controller port is now assumed to start at 0 rather than 1 in order to match the way Linux ALSA enumerates devices.

I have added a runtime framework that starts and stops the program automatically based on attached MIDI devices. There is a small amount of customization required to account for your specific amp model and MIDI controller interface.

Support added for amp and effects models specific to the Mustang v2 products.

Added a python script to drive regression testing. Tests require LCD display for feedback and are not going to be of much use unless you have a Mustang III, IV or V model.