Fender Mustang Amplifiers?

Started by Atros, August 28, 2012, 01:30:22 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Elantric

#50
Time to google:
"Fender mustang and Raspberry Pi"
http://bfy.tw/6C1r
BINGO!

! No longer available
QuoteWe got distracted and ended up plugging our Fender Mustang Amp into our Pi. After a few updates it all worked!

Thank You Google and  UK Education System!

https://www.raspberrypi.org/blog/15000-raspberry-pis-for-uk-schools-thanks-google/

and

PLUG - Mustang Amp control under Linux
http://www.linuxjournal.com/content/plug-and-fender-mustang

But there still is work to be done - like a:

*  Mustang Amp Command / Control Serial data <>  MIDI Interpreter


vtgearhead

Quote from: Elantric on June 09, 2016, 11:26:08 AM
Here in USA since 2014 , i see more  Mustang III "V2"s being used by many bands - but everyone wants to have a better floor controller for them, I figure a new PrimovaSound box that allowed a FCB-1010 to control the amp via MIDI Patch Change commands, and control the Mustang Amps DSP FX (Stomp boxes, Delays, Reverbs, Tap Tempo) via MIDI CC# commands from FCB-1010 would have a huge demand 

Build it and they will come.  In the interim, I've ordered an Arduino with MIDI and USB "shields".  There's a MIDI I/O library already available and I want to see if I can get anywhere with it.  The Mustang amps apparently speak and understand something close to the USB HID protocol, which is well documented.  As Elantric points out, there is an open source Linux program that can be examined to get a handle on the command set.

sixeight

#53
I will have a go at making the VController mustang compatible.

I haven't found a midi implementation guide yet. Though some cc numbers are listed in the mustang floor manual. Do they work on the iii as well?

EDIT: Oops, I assumed there would be MIDI over USB.

Elantric

#54
QuoteOops, I assumed there would be MIDI over USB.

That's the battle

All I have is the Mustang Floor MIDI Cc # list above

And so far my USB MIDI Monitor apps don't recognize the Mustang Amp as a MIDI device.

According to The Remuda Developer , Mustang Amps employ  a proprietary serial data stream , not MIDI

But if you contact him he says he'll share what he knows of the USB data packet structure to control parameters on the Mustang Amps

The method he used was a USB monitor and watch the data traffic between Fender Fuse Windows app and a Mustang Amp

The rumor is only the Mustang Floor provides a true MIDI I/O via its MIDI jacks

And FWIW here are all docs I have

DSP Amp Advanced Owners Manual
http://www.fmicassets.com/Damroot/Original/10002/Mustang_I-IV_(V.2)_gamp_manual_all_revA.pdf


Finally  -

Fender has posted schematics for Mustang DSP Amplifiers
http://www.fmicassets.com/Damroot/Original/10001/2300400_gamp_schematic.pdf


sixeight

#55
QuoteThat's the battle

Should have read this thread first. It is not as easy as I thought. No midi is just plain silly of Fender...

We did get the four button footswitch included with the Mustang, which is nice. Now we should get the EXP-1 foot pedal as well. The two button version is easy to build.

vtgearhead

There are currently two forks of the Linux PLUG project with text files explaining many of the commands.  If the Remuda author will additionally share what he knows there is certainly enough information to implement a good-sized subset of the amp's capabilities as MIDI CC and PC commands.

Elantric

#57
QuoteThere are currently two forks of the Linux PLUG project with text files explaining many of the commands.

If you are a coder, suggest log into piorekf's Plug Home at Bitbucket and obtain the PLUG 77K zip file that includes all *.ccp file code and full definitions of the Mustang amp control via USB

Here:
https://bitbucket.org/piorekf/plug/wiki/Home

or download here:
https://bitbucket.org/piorekf/plug/get/tip.tar.gz

---
PLUG / Home View History
Welcome
Welcome to PLUG project code repository. A Linux software for Fender Mustang amplifiers.
Here you can find newest versions of the program including revisions between major releases. The whole project is on GPLv3 license, so grab source code and change it in any way you want.
Program have all features I wanted it to have so please send me your ideas.
If you are looking for some technical stuff you can find it on page Technicalities.
Installation
Nowadays PLUG is present in repositories of most major Linux distributions so first check if it is present in yours distro. If it is, install it using preferred way for your distribution. If you can't find it you can download ready to use version from here.
Compilation
If you want to compile PLUG yourself, download the latest source code (https://bitbucket.org/piorekf/plug/get/tip.tar.gz) and read on.
Requirements
To build a project and use it you will need Qt4 and libusb-1.0. Both libraries are available also for Windows and Mac OS X so this project should run on all three systems.
Building
To build the code you need to run the following commands in the source directory:
qmake plug.pro
make
If both commands finished without errors compilation is finished. Executables name is "plug" so to run the program just type:
./plug
If you are a Mac user and want to build a project for Xcode type:
qmake -spec macx-xcode plug.pro
Usage
This program should work with both Mustang I and II. Support for newer Mustangs is coming soon.
After you successfully compile the code and run the program click "Connection"-->"Connect" to connect software to the amplifier. Message "Connected" should appear on the status bar at the bottom of the window. After that buttons will become active.


IMPORTANT NOTE:
Various distributions allow only root to access USB devices of unknown type. To change this and allow users in "plugdev" group to also have access to Mustang amp create file /etc/udev/rules.d/50-mustang.rules (or /lib/udev/rules.d/50-mustang.rules on systemd systems) containing lines:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0004", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0005", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0006", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0007", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0010", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0011", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0012", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0013", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0014", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0015", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0016", GROUP="plugdev"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1ed8", ATTRS{idProduct}=="0017", GROUP="plugdev"
Verify that the "plugdev" group exists in your system, OR remember to use a valid group containing your user.

Now either restart computer or unplug amp and restart udev subsystem with the following command:
~ $ sudo service udev restart
or on systemd:
~ $ sudo systemctl restart udev


Button titled "Amplifier" allows you to choose amplifier model and it's settings. In the amplifier window there is also a button named "Advanced" under which are hidden all the advanced settings of an amplifier.
Effect buttons represents an effect slots. If you want to add an effect:
select the slot
select the effect
set effect options
press "Set" button to send effect to an amplifier
To add an effect after the amplifier just enable the check box at the bottom in the effect window.
To save settings in one of amplifiers memory banks click "File"-->"Save on amplifier". In the newly opened window choose name for your preset and memory bank and click "Save".
To load settings simply click "File"-->"Load from amplifier" choose slot to load and press "Load" button.
Help
Want to help? Have any ideas? Great!
You can:
write code and send me patches
prepare packages for Linux distributions, I will post them here (if you want)
send me some ideas through the issue tracker
donate if you like my work
THIS PAGE AND IT'S CONTENT IS LICENSED UNDER CC BY-SA 3.0 UNPORTED LICENSE.

CodeSmart

Quote from: sixeight on June 10, 2016, 05:35:51 AM
I will have a go at making the VController mustang compatible.
If you still have the old MIDX-10 board in there, we can pop-up the firmware if I add a 'plug' to the microcontroller...
Just got back from the 'Sweden Rock Festival' and will check it out asap.
I've seen many great bands Queen, Dan Reed Network, Foreigner etc... 8)
But I got more gear than I need...and I like it!

vtgearhead

And... Success!

This afternoon I pieced together a quick proof-of-concept using pieces from PLUG and RtMidi on my Ubuntu desktop.  At this point, I am able to change presets on the amp using my FCB1010 (connected through an M-Audio Midisport 1x1).  It was actually quite simple, once I figured out that the PLUG code was never updated for the Mustang IIIv2 USB PID.

Next step is to start implementing the Fender Floor MIDI spec.  All of this code should run fine on a Raspberry Pi, which is where it's going when complete.  When I get this cleaned up a bit and a few useful commands implemented I'll start a GitHub project and let others join in the fun.

Majiken

Quote from: CodeSmart on June 11, 2016, 01:03:40 PM

Just got back from the 'Sweden Rock Festival' and will check it out asap.
I've seen many great bands Queen, Dan Reed Network, Foreigner etc... 8)

And I went to Rock am Ring in Germany and DIDN'T see Black Sabbath and a bunch of others..... :-(
Take what you need, put back a bit more, leave the place behind you better than it was before :-)

www.majiken.rocks

sixeight

QuoteIf you still have the old MIDX-10 board in there, we can pop-up the firmware if I add a 'plug' to the microcontroller...

That would be great. I probably need a second board though, as my son will use the version 1 VController. That one is without midx-10. Or maybe I will pop an RPI in there.

QuoteAnd... Success
That is fantastic. Great news.

vtgearhead

Quote from: Elantric on June 11, 2016, 12:41:38 PM
If you are a coder, suggest log into piorekf's Plug Home at Bitbucket and obtain the PLUG 77K zip file that includes all *.ccp file code and full definitions of the Mustang amp control via USB

Here:
https://bitbucket.org/piorekf/plug/wiki/Home

or download here:
https://bitbucket.org/piorekf/plug/get/tip.tar.gz

Oddly enough, although he has the udev rules for Mustang III v2 and IV v2 in the README, they are not present in the code (mustang.cpp) that actually goes looking for the attached amplifier.  Also, the protocol documentation is not included in piorekf's branch.  I would suggest that anyone interested in digging into this take a look at:

https://bitbucket.org/wersonnst/plug_mustang_v2_bronco

which is two forks away from the original and has some protocol documentation (although it was still missing the USB probe).  The protocol docs are very rough and a bit hard to make sense of.  But, between that and the working code it should be possible to make headway.

Elantric

Quote
And... Success!

This afternoon I pieced together a quick proof-of-concept using pieces from PLUG and RtMidi on my Ubuntu desktop.  At this point, I am able to change presets on the amp using my FCB1010 (connected through an M-Audio Midisport 1x1).  It was actually quite simple, once I figured out that the PLUG code was never updated for the Mustang IIIv2 USB PID.

Next step is to start implementing the Fender Floor MIDI spec.  All of this code should run fine on a Raspberry Pi, which is where it's going when complete.  When I get this cleaned up a bit and a few useful commands implemented I'll start a GitHub project and let others join in the fun.


Congratulations ! Best news I've heard  all weekend !

vtgearhead

Thank you!   I've just managed to implement effects on/off (mapped to CC#23-26 per Floor spec).  The PLUG author used the brute force approach of totally clearing and restoring the effect parameters, which struck me as overkill.  I fired up the Fender FUSE app and captured the proper USB conversation for effect on/off with USBPcap and Wireshark.   Apparently no one had ever sniffed this one out, but I was able to run with it and now have the FBC1010/Uno stomp box pedals doing the correct thing.

I have a note off to Robert Heitman at Remuda to see if he will share his reverse engineering of the binary protocol.  Headway can made without it, but it will be more time-consuming and I'll need to rely on others to verify operation on other Mustang models (I have only an original III and IIIv2 to test with).

Elantric

#65
Excellent!

I have a 2011 Mustang Mini, 2013 Mustang Floor, and 2015 Mustang III V2 here ,  might be able to help - verify

Also remember Fender Fuse app works with GDEC III amps (I have one) and Fender SuperChamp X2 I can borrow, and Fender Bronco Bass Amps

If we can provide a 5 pin MIDI I /O control path for those too, it would be huge

sixeight

#66
Quote from: Majiken on June 11, 2016, 04:01:18 PM
And I went to Rock am Ring in Germany and DIDN'T see Black Sabbath and a bunch of others..... :-(

Weather trouble. People struck by lightning. One festival day cancelled. Very unfortunate. Pity you had to miss the concerts.

QuoteI've just managed to implement effects on/off (mapped to CC#23-26 per Floor spec)

Just bought the Mustang amp for my son and now you fix it's biggest problem. No midi. I love this forum. Great work.

CodeSmart

Quote from: snhirsch on June 12, 2016, 11:01:36 AM
Thank you!   I've just managed to implement effects on/off (mapped to CC#23-26 per Floor spec).
Great work Snhirsch. I've got no Mustang amp in the house :P
But I got more gear than I need...and I like it!

vtgearhead

Thanks - my friends call me Steve.  My wife calls me Steven :-)

vtgearhead

I've started a project on GitHub if anyone wants to follow along:

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


CodeSmart

I've just ordered the smallest of the Mustang amps in case I get some time for this later.
While in the GAS mode I also ended up ordering a Line6 Relay G10 (wireless adapter) ;D
But I got more gear than I need...and I like it!

vtgearhead

Just a quick update:  I'm currently working on MIDI implementation of continuously variable controller functions (volume, filter sweep, etc.).  PLUG's approach to this is to tweak one parameter in a packet that contains all settings and update the entire amplifier state.  This works acceptably well if you move knobs slowly on a graphical interface, but completely falls apart when attempting to track a pedal.  The latency is so high that the amp takes about 15 seconds to catch up with a full heel-down to toe-down sweep and the communication overhead causes a series of audible thumps. 

Realizing that the Fender FUSE app wasn't behaving this way, I sniffed out the communication and discovered a new type of control packet that neither PLUG nor Remuda was using.  This class of packet provides low-latency, direct control of individual device settings.  The bad news is that I'll have to go through a Wireshark exercise with every control on every amp and effect to get the full protocol definition.  Something to pursue during late nights and rainy days over the near future. 

I've shared this information with Robert Heitman (Remuda developer) and we'll hopefully be able to pool resources.  This is going to take a while, but so far I see no technical show stoppers.


sixeight

Great to read your progress.  Any chance you can read out patch names for the VController?

Elantric

#73
snhirsch,

Thanks for the progress report, and status of slugging through the Mustang's USB serial communications protocol.

Converting Mustang's USB serial communications protocol for each Fuse control to equivalent MIDI messages and retain the byte depth precision will take time. ( MIDI CC#, RPN, NRPN, Sysex)

My dream would be development of an embedded CPU box the size of a MIDX-10, with USB Host port and a pair of 5pin DIN MIDI  I/O - so common MIDI foot controllers could replicate the functions of the combo of Fender 4 button+ Fender 2 button+ Fender Expression pedal. The Fender Expression pedal only works with Mustang III/IV/V and Floor and can be mapped for real time manipulation of one of over a dozen choices of Mustang Amp's  FX parameters

More thoughts - I understand your current goal is:

* Use a Raspberry PI Embedded CPU board which already runs JACK and ALSA and PLUG, and cultivate a version of your "Mustang MIDIBridge" that provides MIDI Patch change,  on  / off for stomp FX, Echo, Delay , Reverb + Tap Tempo
https://github.com/snhirsch/mustang-midi-bridge
Then a USB Class compliant USB MIDI cable (Roland UM-ONE MKII) could be connected to one of the USB Host ports on Raspberry Pi to provide the 5 pin MIDI  I/O for connection to FCB-1010 MIDI food controllers.

Not sure if you are aware of CME WIDI MIDI <> Bluetooth wireless dongle  - which could be connected to RPi.

CME WIDI Bud
http://www.bhphotovideo.com/c/product/1245249-REG/cme_widi_bud_bluetooth.html
http://www.cme-pro.com/widi-bud/
(Maybe redundant since Bluetooth LE wireless communications are now built into latest Raspberry Pi 3 Model B
https://www.element14.com/community/community/raspberry-pi
http://www.instructables.com/id/Control-Bluetooth-LE-Devices-From-A-Raspberry-Pi/

In this manner any recent IOS/ Android / Windows tablet with Bluetooth LE can wirelessly  control the Mustang Amp using standard MIDI Designer, Lemuur, TBStuff, etc

Even the new Korg NanoKontrol or NANOKey wireless bluetooth LE MIDI controllers could be employed to control Mustang FX parameters in real time at the gig 

vtgearhead

#74
Quote from: Elantric on June 16, 2016, 06:19:54 AM
Converting Mustang's USB serial communications protocol for each Fuse control to equivalent MIDI messages and retain the byte depth precision will take time. ( MIDI CC#, RPN, NRPN, Sysex)

I'm currently planning to support MIDI CC# and PC#.  Can't see any application for sysex, but maybe I'm missing something.  RPN and NRPN are concepts I'm not familiar with.  Will have to read up.

Quote
My dream would be development of an embedded CPU box the size of a MIDX-10, with USB Host port and a pair of 5pin DIN MIDI  I/O - so common MIDI foot controllers could replicate the functions of the combo of Fender 4 button+ Fender 2 button+ Fender Expression pedal. The Fender Expression pedal only works with Mustang III/IV/V and Floor and can be mapped for real time manipulation of one of over a dozen choices of Mustang Amp's  FX parameters

Yes, by exposing the Fender Floor MIDI command spec (enhanced for v2 features where necessary) everything you mention there should be possible.

Quote
More thoughts - I understand your current goal is:

* Use a Raspberry PI Embedded CPU board which already runs JACK and ALSA and PLUG, and cultivate a version of your "Mustang MIDIBridge" that provides MIDI Patch change,  on  / off for stomp FX, Echo, Delay , Reverb + Tap Tempo
https://github.com/snhirsch/mustang-midi-bridge
Then a USB Class compliant USB MIDI cable (Roland UM-ONE MKII) could be connected to one of the USB Host ports on Raspberry Pi to provide the 5 pin MIDI  I/O for connection to FCB-1010 MIDI food controllers.


Yes, except the bridge software will have no strict need for JACK and PLUG (although they could certainly be installed)

Quote
Not sure if you are aware of CME WIDI MIDI <> Bluetooth wireless dongle  - which could be connected to RPi.

(snip)

In this manner any recent IOS/ Android / Windows tablet with Bluetooth LE can wirelessly  control the Mustang Amp using standard MIDI Designer, Lemuur, TBStuff, etc

Even the new Korg NanoKontrol or NANOKey wireless bluetooth LE MIDI controllers could be employed to control Mustang FX parameters in real time at the gig

I'll take a closer look at that idea.