Teensy is similar to Arduino, but perhaps better suited to making a USB MIDI controller. Liam Lacey shows how to make your own DIY MIDI controller using Teensy with 8 retro arcade push buttons.  
A Teensy microcontroller board 

Step 1—Connecting Wire to the Buttons and Switch

Stripped wire
Wire connected to a pin of an arcade push button
Wires soldered to the pins of an arcade push button

Step 2—Building the Circuit

A Teensy LC on a breadboard with the ground pin connected to the breadboards negative terminal 
The toggle switch and push buttons connected to the breadboard 

Step 4—Writing, Compiling and Testing Code 

The Arduino software configured for Teensy USB-MIDI development

Step 5—Inserting Electronics into Enclosure 

My enclosure – a painted corrugated cardboard box with holes cut out for the buttons, switch, and USB port.
The push buttons inserted into the enclosure
The breadboard inserted into the enclosure 
The finished DIY USB-MIDI controller 

Step 6—Moving to Stripboard (optional) 

Moving the circuit onto stripboard

Conclusion 

Liam is the Head Of Development specialising in software development at Modal Electronics, the company behind the 002, 008 and CRAFTsynth synthesisers, and was previously the lead software developer at nu desine, the developers of the AlphaSphere MIDI controllers. He was also an Associate Lecturer at UWE, Bristol, UK where he graduated... Read More

Discussion

Chris
Can this code be modified to use more than 8 buttons if so how many could be used. I think I see a total of 24 digital lines, one is of course used for the toggle. I could be reading it wrong though.

Can a dual color LED be hooked up so you know what mode you are in (CC or Note) or can a small LCD display be hooked up to do the same thing?

Liam Lacey
Yes the Teensy LC and 3.2 has 24 digital pins, so you could have up to 23 arcade buttons and 1 toggle switch.
You'll then need to change the NUM_OF_BUTTONS value in the code as well as other places that this value is used.

The simplest way to use an LED would be to use a single colour LED where 'off' is one mode and 'on' is another, where only 1 digital pin would be needed. A bi-colour or RGB LED could also be used, but involves a more complicated circuit. An LCD display could also be used - see https://www.pjrc.com/teensy/td_libs_LiquidCrystal.html.

charnjit
Hello sir , do you know about FL studio ???? I want to make my own very small usb midi contoller for FL studio with your help. I want to tell you about functioning of my device by a picture(i draw) ,,,,how can i post comment with picture??? Thank you
Liam Lacey
I don't think you can post pictures here unfortunately. I would recommend uploading the picture to an image hosting website such as imgur or photobucket and posting a link to the image here.
Daniel6610
Hello.
Great article. I have created a smaller version of this to control vMix software on my Windows 10 laptop. The buttons work great but I would like to have the LEDs light up using the Tally light outputs in the software. Is it possible to modify this code to receive the tally signals? I am a total newbie when it comes to coding for midi control so any help with code would be awesome....
Thanks in advance.
Liam Lacey
Hey, sorry I don't know anything about Tally light systems. Does the vMix software allow light signals to be converted into MIDI messages? If so the MIDI messages could then be forwarded to the Teensy and easily processed in the code.
Gace95
Hello.
First of all thank you very much for this awesome tutorial and sorry for my English. I´ve built a 16 arcade button controller and I have upload the code in to my Teensy++ 2.0 but I have a problem. I´m using FL Studio but I´m not getting any sound I don´t know what´s wrong. The programme recognizes the "Teensy MIDI" but it hasn´t any port asigned. I really need some help because I´m a total noob whith DAW programmes.
Again, thank you for the tutorial and for your time.
Roger
Hi, Liam!

Thank you for this tutorial.

What I want to do is only two button midi controller.

Scenario:
Talkback controller (SPL 2381) & Logic Pro X.

When I switch ON the Mix button on the SPL, it would enable the certain plugin in Logic and when the Mix button is OFF, it would bypass the plugin. The same goes for 2Tr A button on the SPL controller.

I tested it with other midi controller and it works as expected.

Is Teensy LC enough for my project?
I would also like to know if it is possible to switch between MOMENTARY and TOGGLE mode, or is it Momentary only? (this mode is what I need for my project)

Thank you

Regards,
Roger
Liam Lacey
Hey Roger,

A Teensy LC will be more than powerful enough to build a two-button MIDI controller.

As long as you use push buttons (as opposed to toggle switches), the buttons can behave as both momentary and toggling - see https://www.arduino.cc/en/tutorial/switch for an example of how you could implement this in code.
Roger
Hey Liam,

Thank you for explanation.

What is the maximum capacity for buttons on Teensy (In case I will change my mind and also connect other buttons)?

Can't wait to assamble my first micro controller project, though still waiting for Teensy.

Regards,
Roger
Liam Lacey
Hey Roger,

The Teensy LC has 27 Digital I/O pins, meaning you can directly connect up to 27 buttons, however there are methods (e.g. multiplexing) of connecting more buttons if needed. Most of the other Teensys contain more pins - see https://www.pjrc.com/teensy/techspecs.html for more information.
Roger
Hey Liam,

Great!
27 buttons will be more than enough.

Thnx.

Want to join the discussion?

Create an account or login to get started!