Skip to content

UNO to Pico!

Choose a tag to compare

@CraCaNN CraCaNN released this 01 Jun 22:09
· 79 commits to main since this release
5857219

This release contains a big rewrite to contain a lot of features I wanted to add a long time ago.
To support these new features the controller that I have programmed this around has changed from the UNO R3 to the Raspberry Pi Pico.
This has been done for a few reasons

  • The price of an official Pico is much less than an official Arduino of any board.
  • The Pico is considerably smaller than the UNO R3 along with the requirement of the MIDI hat.
  • The Pico is considerably more powerful than the UNO and can contain more program data.

Big Changes (Look further down for more details):

  • Support for an SSD1306 128x32 OLED display
  • Poly play mode supporting up to 3 additional MIDI sends

Removed Features:

  • Since the last version used a 5-pin MIDI hat on a full sized Arduino, this doesn't fit on the Pico. Therefore, 5-pin MIDI is no longer supported and instead MIDI over USB is used.
  • If you wish to use the 5-pin MIDI hat, please use version v1.3.1. I do not plan on supporting the UNO in upcoming releases
  • Non-sharp/sharp LED indicators. This can still be configured within the new OLED menu but there is no live status of which mode you are on.

OLED Display

  • The OLED display has been added to allow you to see more information about what the controller is doing, compared to just LEDs. When any part of the ribbon is used the display will show you information on itself and will display what note is currently selected, the current aftertouch being sent, the current modulation wheel being sent (or any other MIDI cc channel of your choosing) and whether MIDI is actually being sent or not. This is also indicated by the built in LED on the Pico.
  • When the controller is not in use, the display will show an idle menu where you can enable/disable ribbon only mode, pitch bending and to allow you to open the main menu to access more settings.
  • Please note that any settings changed here will not persist when power is lost. You can change your defaults when uploading the program to the Pico before hand.
  • Within the main menu, you can change the number of poly modes being played and change if you want to play in diatonic or chromatic.
  • More settings are being planned to be added to this.
  • AR2M can still function fully without the display. If you want to change settings though I would do this when you are uploading the program to the Pico
  • There are some buttons to navigate around on the display but I will update the readme once there positions are final. For now look in the code to find the pins of everything.

Poly-Play

Poly-play or poly-mode was a suggestion given to me by a friend and works as follows

  • If poly-mode count is set to 1 the controller behaves like normal. 1 note is sent
  • If poly-mode count is set to 2 the note you selected will be played along with the note 2 positions above the current note. 2 notes are sent
  • If poly-mode count is set to 3 the note you selected will be played along with the note 2 positions and 4 positions above the current note. 3 notes are sent
  • Same if poly-count is set to 4 notes 2, 4, and 6 positions in front of the current note are played as well. 4 notes are sent

Notes

  • I've only added up to 4 since it's what seems reasonable enough to me and my friend
  • Note that this only really works when playing in diatonic mode, it will probably sound awful in chromatic mode.
  • This is something that is fixable, I just don't have a need to at the moment.
  • The reason I switched to the Pico is that I was running out of memory space on the UNO for these features, and I'm pretty sure that the program was hanging from running out of RAM
  • The UNO also would have prevented me from updating the display whilst playing, since the Pico is so much faster it is possible to update the display on the Pico
  • It is entirely possible that there are some bugs but from my testing the code seems stable enough so this will be a full release. This has been in the works for a while now
  • The readme will be out of date for a bit as I need to basically re-write it at this point. There will be a new release soonish with the readme updated along with a few small changes I want to make