How to transform an old MIDI controller straight to USB MIDI without any converters?

I know there have been many topics about creating MIDI->USB MIDI converters, but this time it's different. I want to mod a device to throw the old-style MIDI connection completely out and make it straight USB MIDI.

I wanted to validate the idea first. Has anyone done this before?

The long story.

For some time I was working on a fully DIY electronic wind instrument. But I recently found an option to get a cheap used Yamaha WX11, so I wanted to experiment with it first or maybe use its mechanics and case as a starting point for my custom electronics.

The problem with WX11 is that it does not have a standard MIDI out - it needs a special Yamaha accessory BT7 which provides it with power and also passes MIDI OUT through to a standard MIDI OUT port. There are also WX5 and WX7 with standard MIDI OUT, but those are too expensive to buy just for experiments.

I could not easily find the BT7 module, but I found the service manual of WX11 and it made me think that maybe I can transform it easily to a USB MIDI device using Arduino Micro. So I would not need BT7 at all.

Although WX11 receives 8V from uPC7808 regulator inside the BT7 module (which I don't have), it has an internal NJM78LO5A 5V regulator that seems to power the entire circuit board. So, it should be good to power it directly from the USB, right? It should not consume too much power, any PC USB port should work. But I'll check with my bench PSU first.

MIDI output of WX11 comes from CPU HD63B01YORH38P pin 13 (P24) and goes to SN74HC14N inverter -> DTC143XF NPN digital transistor, resistor built-in transistor.

I'm not sure of the role of this inverter+transistor circuit there and if it's safe to connect the MIDI OUT directly into Arduino's UART input, or if I need to solder my Arduino UART input somewhere in-between. Any ideas?

Maybe I wouldn't even need any custom firmware - it might be direct UART to USB data passthrough; what comes in goes out. In the worst case, Control-Surface Arduino library might help to convert the signals.

Thanks for reading and I'll appreciate any ideas.

it made me think that maybe I can transform it easily to a USB MIDI device using Arduino Micro.[quote="progmars, post:1, topic:1019474"]
Yes i think that can be easily done.

I'm not sure of the role of this inverter+transistor circuit there and if it's safe to connect the MIDI OUT directly into Arduino's UART input, or if I need to solder my Arduino UART input somewhere in-between. Any ideas?
[/quote]

One option would be to simply consider this the Midi-out and create a Midi in on UART1 of the Micro, and use USBMIDI-out on UART0 using a very simple Midi-passthrough..

Another idea would be to use an Arduino UNO, with an empty sketch and connect the Midi-out to the TX pin, but you will have a hard time getting the UNO to show up as a midi device.

In any case i do suggest that you create an actual midi-input with the Opto-coupler circuit for receiving the Midi on the Arduino, to not risk any damage to the old synth.

Yes i think it should be fine, i guess the stepped down regulators are there to create an extra buffer. You should confirm the actual power consumption of the whole module before you start drawing power from the USB hub though, it should not exceed 500mA, but i doubt it will even come near that.

Yes it would, and the standard midi library should suffice. It's a synth and you will not be sending 'real-time' commands like 'start' 'stop' & 'sync' with it (which you would have to add manually to the passthrough if you want to use them.)

How many conductors are between the BT7 and WX11? You name 8V and I assume Ground. Are there only two others? MIDI Out and MIDI In?

Three wires - 8V and ground goes from BT7 to WX11 and MIDI Out goes from WX11 to BT7 (to be passed on to a MIDI synth). No MIDI In.

No. There is no MIDI output from the WX11 itself. What it does have are switch sensors, breath pressure and the reading from the byte pressure on the lip sensor called the embouchure. The BT7 module put these signals together and generates a MIDI signal from them.

It is not a very good MIDI signal because it uses the breath pressure to generate the the MIDI note on velocity.

This means that once the note has started any change in breath pressure does not change the volume of note being produced.

I do have the BT7 module as well as a WX11, and what I have done with it is to take the breath pressure CC message ans use it to convert it into a volume CC message so that the breath pressure does control the volume of the note. And also takes the embouchure and turns it into a pitch bend. It also takes the octave shift buttons and applies that to the note on function.

There is no reason why you can't construct an Arduino to do the part of the BT7 module and maybe even get the MIDI right like my module tries to do.

Sadly I don't have this document, if I had I could possibly explain how to do this.

The WT11 is a sound generator module designed to plug directly into the WX11. These are quite rare and expensive but my ambition is to make an equivalent of the WT11 using a sound modelling synthesiser, which I believe is what the WT11 is. I suspect this because Yamaha did pump some money into a U.S. university researcher department and patented the modelling of a saxophone.

There are five.

No there is no MIDI in or out of the device, just sensors, I assume multiplexed in some way, or sent as a package of serial numbers.

I'm hearing mixed messages. :frowning:

Well I just got my WX11 and removed the plug and counted five. Do you want a photograph?

Four of them are connected by two in pairs. I just disassembled my WX11 and I see only three wires coming from that plug - it's +, GND and MIDI OUT. They are using this approach to give more metal for current to travel - the cable is really long and has to carry 8V.

And it must be MIDI out because WX11 service manual clearly says it and even gives the table of all the MIDI messages generated by WX11. By the way, it claims that breath is not mapped to velocity but to MIDI Control Change - Breath Control.

BT7 "kinda" converts the connection between WX11 into normal MIDI, but all that BT7 does is add a few resistors as per MIDI specification, but otherwise, it's almost straight WX11 to MIDI.

Regarding WT11 - it has a state-of-the-art physical modeling system, but these days there are also some software synths that can do similar stuff. Audio Modeling SWAM is the most popular one.

Aaaand... it works!

I had to completely disassemble WX11 because I wanted to clean it up anyway and probably replace the tubes for hygienic reasons. I will try a full-length leak tube because their current one has a segment where it's interrupted by a smaller plastic tube, and I've heard people complaining that WX sometimes causes breathing issues because there is nowhere for the air to escape. Someone even drilled holes in the mouthpiece to make breathing easier.
Also, I will bend the pitch rod to the center, otherwise, I noticed it had skewed the reed and worn out a groove on one side of the reed. Somewhat strange decision by Yamaha to not put the rod in the center.

So, here's what it looks like as a quick proof of concept with the WX11 mainboard only (buttons disconnected):

Components used:
Sparkfun Arduino Micro clone
Voltage booster MT3608 adjusted to ~8.7V (have heard WX-es like it between 8-9V, the internal stabilizer makes stable 5V).
Pull-up resistor 47k - this is very important, without it I got lots of meaningless junk in serial input.

Arduino receives 5V from USB, then it goes from VCC to the booster and 8.7V go to WX11. MIDI out from WX11 goes into Arduino RX.

Arduino uses Control Surface software and I configured it for Debug output to see if I'm getting correct messages.

As their service manual says, it's constantly sending FE Active sense messages every 150ms. I'm glad that I've read this in the manual, otherwise I would have thought I messed up something because of that constant FE spam :smile: But everything works properly, it reacts to a magnet near the Hall sensor and emits pitch bend messages and also sends Note Ons and Breath Control messages when I blow into the air sensor.

So now I have a USB WX11. The next goal is wireless WX11 using NRF24. I have a pair of them already up and running sending serial messages with 1ms latency, so it will be easy to just plug MIDI messages in.

Hello,
It could be a good practice to use an opto-isolator between emitter and receiver as stated in the MIDI standard.
Just verified on VL70-m Service Manual, that's the way it is implemented, WX connection being equivalent to DIN MIDI In connection.
[Off Topic] I'm the proud owner, and of course player, of a paired WX5 / VL70-m and I get pleasure with it for twelve years [/Off Topic]

Yamaha sells a digital saxophone (YDS150) for about 2 years.
Compared to WX series, it adds an embeded synth and loudspeaker but lacks a reed controler and a MIDI output.

Yes, an optoisolator is a good idea for devices that are meant to be plugged into different other devices to galvanically isolate them and prevent ground loops.
In my case, I am connecting WX11 microprocessor output (with double inversion on WX11 side) directly and forever to Arduino without any intention to ever disconnect it, and also powering both Arduino and WX11 from the same power source - their grounds and + will be connected together anyway, so the optocoupler won't give any galvanic isolation benefits at all. It's not MIDI anymore but just the good old serial-to-serial interface, so it should be ok to treat it like that and have it directly connected.