DIY MIDI Controller, PART II

Evz

Inspired
Hey Guys,

I'm back at it... but this time, with a Teensy! I guess I was unsatisfied with the way I left the last project, so I've decided to give it another try, with a more robust approach.

I've gotten some PCB's printed by OSHpark for 7-pin midi I/O specifically for two-way communication with AC/DC power on the outer most pins, filtered onboard to 5VDC.

Next, I got the Teensy 3.0 from PJRC store ($20), and placed it on a basic breadboard.

Next I got an Adafruit RGB LCD display with 5-buttons. I chose this display because it comes with built in buttons, and uses I2C communication with a MCP23017 chip (which is a 16 GPIO I2C expander), for which Adafruit wrote some nice libraries.

I've used some of my old cold for sysex communication with axe, in conjunction with all the work that has been but into the wiki to make a basic controller that flips through presets, gets the preset number & name from the axe, and displays it on the lcd screen. It also has an initialization connection check (asks through midi for preset name, and while none is returned, assumes connection is broken). Also, the tuner works. So out of the 5 buttons: 1 is increment preset up, 1 is decrement preset down (only 1 bank at the moment, had issues with using more banks), 1 button to turn on turner (which turns off with any other button press), and 1 button to go to preset 0.

The code is alright, there are still some issues to work out like preset skipping, adding in all 3 bank support, and sometimes when presets skips, the teensy hangs (I assume its one of those while() loops I have in there). There is also a hang is communication is broken after its been established, so not perfect, but should be a good starting point for many people!

Anyway, to the fun part!





Teensy: https://www.pjrc.com/teensy/
Adafruit RGB LCD: RGB LCD Shield Kit w/ 16x2 Character Display - Only 2 pins used! [NEGATIVE DISPLAY] ID: 714 - $24.95 : Adafruit Industries, Unique & fun DIY electronics and kits

CODE IS HERE:
https://github.com/Evz-N/Teensy-AFX2/tree/master

PS - one main reason for using Teensy: you can use Serial and Midi communication in parallel, so it makes it easier for debugging issues.

Anyway, If you have questions post here, I will try to keep everything updated, next steps would be to make the communication part more robust, and eventually move it into a separate library, so the main code would only scan hardware changes, and output communication, no need for having all the code in the main file.

Also, I think I will try to add a pedal input, I think thats my #2 objective!

Thanks!
Enjoy!
 
wow that is cool. i wonder if i could just use something like that to get another tuner display elsewhere on stage or in my rig in addition to the mfc display and axe display...
 
Yes! It would be fairly simple to implement, you would just need to take the tuner code snippet from the one I posted, and have it in a constant loop waiting for input. The only issue is that it would have to use the midi out from the axe, so you would not be able to send any input to the axe from the secondary display.

The 'difficult' part would be making the MIDI I/O board, but if there is enough interest, I can get some PCBs printed and distribute for a low cost.

Edit:

A fun idea for the tuner, using an RGB LCD, you can set the LCD colors to correspond to tuning accuracy! If I have time tonight, I'll add that to the code and post a short video :)
 
Last edited:
A quick update, I was having troubles using MIDI 2.6, and tried to get MIDI 3.2 to work, and seemed to manage to get the response to work for basic SysEx communication (but not tuner yet).

Will work on it tonight after I do my.. umm .. homework :p
 
Very cool. I may try something like this myself with my Arduino...

Any reason you're sending the bank select AFTER the program change message?
 
Very cool. I may try something like this myself with my Arduino...

Any reason you're sending the bank select AFTER the program change message?

Yes because I did not double check my code! Obvious error! thanks for pointing out!

I'll update the git with a new version of code, I found a must cleaner integration with MIDI 3.2, which works much faster and with less errors, but I have not added the preset change and tuner display yet.

I did manage to get the Teensy to actively scan for incoming midi, so if a preset is changed on the front panel, the controller's display will respond as well, but I need to add a logical check because now, the teensy will not know if the axe becomes disconnected (so I'm working on adding a request/response boolean check) :p

thanks for pointing out the mistake! :)
 
Nice job !
I am working myself on a AXE FX II dedicated midi pedalboard, so I can understand and support your efforts !
I will personally use midi cpu , and no digital display (just leds).
I consider using this as digital display if really needed (I only play in my music room and don't really need digital display)
https://www.youtube.com/watch?v=Ms5egiL6V6k&hl=en_US&fs=1?rel=0&hd=1&autoplay=1

I hope to see your final result.
(I will post mine too when finished :roll )
 
Nice job !
I am working myself on a AXE FX II dedicated midi pedalboard, so I can understand and support your efforts !
I will personally use midi cpu , and no digital display (just leds).
I consider using this as digital display if really needed (I only play in my music room and don't really need digital display)
https://www.youtube.com/watch?v=Ms5egiL6V6k&hl=en_US&fs=1?rel=0&hd=1&autoplay=1

I hope to see your final result.
(I will post mine too when finished :roll )

Thanks! Good luck with your project!

I stumbled across the midi cpu previously, but since I had a bunch of experience with arduino based midi, I though it would be easier to implement exactly the program I want. PS - that digital display is 7-seg, you can check adafruit, or sparkfun, I believe they have a serial version or i2c version, or at least one with a multiplexer to reduce the number of pins required. I'm pretty sure it would be possible to make a custom library to string together a large number of these displays as well!
 
Back
Top Bottom