Updated 26 July 2021

I’ve been playing the trombone parts (using my midi wind controller – the midi-Sax) in a small dixieland group recently, and it occurred to me that it might be an interesting project to make an electronic trombone. So, during the current COVID lockdown I decided to try.

This is what the prototype came out like:

I used the same processor and capacitive key sensing that I used in my midi-Sax, but I needed a way of sensing the movement of a trombone-like slide. After a few attempts, I decided to use a AU$20 two channel pulse encoder. I used a 2mm pitch timing belt to turn the encoder via a 60-tooth pulley. The encoder is a 400 pulse-per-rev unit, so that gives 400 pulses per 120mm of slide movement (3.3 pulses per mm) – probably way too accurate for my needs, but as it turned out the Teensy 3.2 handled the duty really easily.

To make the slide I used 10mm aluminium tubes, and 3-D printed a carriage. I experimented with rollers on the slide, but they were too noisy. The slide looks like this:

I used the same pressure sensor that I have on my midi-Sax, and I made a removable mouthpiece like this:

The mouthpiece has a screw in the end that adjusts the playing backpressure. I used the same display and control knob as before.

The photo above shows the mouthpiece as fitted to the instrument. I’ve added a battery so I can use my Yamaha UDBT01 Bluetooth MIDI adapter.

How do you play it?

I programmed the slide so that it is divided into 7 semitone positions (same as an acoustic trombone), with the closed (no.1) position being either a C or a G, as determined by the left thumb keys. The thumb positions are set up so that touching just a single key gives a G, and touching two adjacent keys gives a C. So the range is from the C# below middle C to the G in the third octave above middle C. Of course, the instrument can be transposed to any key and by any number of octaves.

The left thumb keys:

But, I hear you say, what about sliding between notes like a REAL trombone? Well, my DynaSample Xpresso synth does portamento really well! This instrument turns it on permanently so that when you play legato between notes it “slides”, but when you tongue notes there’s no slide – just like an acoustic trombone.

I’ve had no experience playing a trombone, so my skills are non-existent! Hopefully at the end of this lockdown they will have improved…

Update – Slide Sensing Improvement

After playing the ‘Bone I found that the encoder mechanism was too noisy. It worked well, but, surprisingly, the toothed belt created quite a bit of noise. I looked for other ideas…

I found that Time of Flight (ToF) optical sensors were available for sensing distances up to 4 metres, so I bought one and installed it in the housing. I fitted a reflector to the slide to reflect the light back, and made a collimator tube to make sure the sensor was looking to only the reflector.

The internals look like this:

The reflector fitted to the slide:

After installing it I discovered that the ToF sensor had a default measuring time of 100msec. This was too long for my needs and it slowed the operation of the whole instrument. I found that the time could be reduced to 15msec, which is OK. Fortunately the trombone is not an instrument that does fast trills like a flute, or this delay would have been a problem.


The other issue I had with the prototype was that it was difficult to hold comfortably. “Real” trombones require the player’s arm to be held close to the chest. This reduces the stress on the arm muscles. Often the trombone is rested on the shoulder too. I couldn’t do this with the prototype – it was too far from my shoulder, so I changed the position of the mouthpiece so that the instrument could be held further back. It works much better.

From below, it looks like this:

Now for some more practice….

Tech info

ProcessorTeensy 3.2
Touch sensing chipMPR121 x 1Need to run the I2C at 1MHz to keep scan times low. Qwiic I2C connector is great.
Average program scan time0.5 msecProgram outputs CC2s no faster than 5msec intervals. Extra time is absorbed by smoothing the breath pressure readings. The slide sensor reads every 15msec, so notes cannot be updated more frequently than that.
DisplaySSD1306128x64. Configuring the I2C correctly is critical to getting this to play nicely with the MPR121
Pressure sensorMPX50105V, 10KPa
Slide sensorVL53L1XPicks up reflected light from the moving slide mechanism. Short distance option. 15msec timing budget. Qwiic I2C connector
Wireless MIDIYamaha UD-BT01Connected to Teensy USB port