Jon Wilder
Active Member
So I've been making further progress in writing MIDI source code for the PIC16F628.
What I'm building is a MIDI controlled relay controller for channel switching a guitar amplifier. The goal here was to make it so that it can "learn" the assigned MIDI channel via placing it in learn mode, then sending either a Program Change or Control Change message from the foot controller, and whatever MIDI channel the message was sent on is the channel it assigns itself to. It then writes this channel assignment to data EEPROM and does not change until the user makes it relearn a different MIDI channel.
Furthermore, it will have 100 preset locations in which you can store up to 6 different channel/solo boost/fx loop enable/disable configurations in. I figure since the 16F628 only has 128 data EEPROM locations that this would leave me 100 preset locations with the other 28 for MIDI channel assignment as well as CC assignments.
Lastly the front panel buttons on the amp for channel select, solo select and FX loop select will be user mappable to a CC number as well.
All of this will be "learned" by the chip.
It will also come with pre-loaded "preset configurations". While the user will be able to remap the preset locations via "learning", it will also have a "restore factory defaults" function as well, which will remap the CC assignments, preset locations as well as default the MIDI channel to MIDI channel 1.
I just finished coding/debugging the Channel Learn routine and it works like a charm.
What I plan to do is have the preset configurations stored in data EEPROM, then at the start of the program it will load channel assignment, CC assignment and preset locations into RAM and work with them from there for faster access time and minimized preset recall latency.
Will keep you all posted. Once it's all done I might decide to make the source code and schematic open source.
What I'm building is a MIDI controlled relay controller for channel switching a guitar amplifier. The goal here was to make it so that it can "learn" the assigned MIDI channel via placing it in learn mode, then sending either a Program Change or Control Change message from the foot controller, and whatever MIDI channel the message was sent on is the channel it assigns itself to. It then writes this channel assignment to data EEPROM and does not change until the user makes it relearn a different MIDI channel.
Furthermore, it will have 100 preset locations in which you can store up to 6 different channel/solo boost/fx loop enable/disable configurations in. I figure since the 16F628 only has 128 data EEPROM locations that this would leave me 100 preset locations with the other 28 for MIDI channel assignment as well as CC assignments.
Lastly the front panel buttons on the amp for channel select, solo select and FX loop select will be user mappable to a CC number as well.
All of this will be "learned" by the chip.
It will also come with pre-loaded "preset configurations". While the user will be able to remap the preset locations via "learning", it will also have a "restore factory defaults" function as well, which will remap the CC assignments, preset locations as well as default the MIDI channel to MIDI channel 1.
I just finished coding/debugging the Channel Learn routine and it works like a charm.
What I plan to do is have the preset configurations stored in data EEPROM, then at the start of the program it will load channel assignment, CC assignment and preset locations into RAM and work with them from there for faster access time and minimized preset recall latency.
Will keep you all posted. Once it's all done I might decide to make the source code and schematic open source.
Last edited: