The concept here is to create a physical controller for "playing" Orca.
- Raspberry Pi 4 computer
- Combo package with encoder, 4 direction buttons and select button that uses I2C
- Hyperpixel 4 display
- Mini 8x8 LED matrix with I2C backpack
- Orca, uxn version
Get version of OS that supports Hyperpixel running Install UXN, Orca Assemble matrix and confirm addressability from code
- Assemble encoder and confirm addressability from code
- Main script: map encoder input to matrix display and key entry
- Design housing
- Bonus: configure to be recognized externally as midi device
May 23 2023
Finally sorted out how to address I2C devices through script on the pi. This was extra confusing because of how you have to remap the I2C breakout on the Hyperpixel, but also I got in my own way twice:
- created a test script called `board.py` which ends up blocking the ability to `import board`
- hooked up the breadboard wiring for the matrix backwards
But in the end I finally got there, next up hooking up the ANO encoder, which is already soldered
May 19 2023
A new idea of a portable orca device has been occupying my brain. Partially because I have this Hyperpixel display. It's screen is really crisp, but it has a severe limitation - it connects to the Raspberry Pi by way of GPIO, leaving them not available. My recent realization is that despite this, it does open up I2C connections via a port on the back of the display. So as long as any controller devices use I2C, I should be able to access their input.
Feb 28th 2023
At this point, the idea had been dropped in favor of a more flexible multi-purpose computer in a steel plate housing. The main reason for this is that as I iterated on ideas for the orca box, it was hard to see how it could be usable without a keyboard, and if it has a keyboard, why different inputs would be an improvement.
Feb 9th 2022
In considering how wasteful this project might be, I'm thinking it would be better not to make a terminal style device. If someone else wanted to make this, chances are they would have a spare usb keyboard to use with it. So the current design is a stand alone box with screen, buttons that align to points across the top of the screen, and a controller knob on the right.
As it stands, users would need to plug the box into power, connect midi din to whatever devices, and also keyboard/mouse.
I'm unsure of the materials to make the enclosure. Laser cut acrylic and 3D printed PLA pieces are the easiest for me to produce, but I'd prefer to have wood at least around the sides if not also the bottom, so that might be worth the effort. I'm very interested in the potential aesthetics of this, so that's definitely slowing me down (in a good way).
Feb 8th 2022
Current designs are for something like a terminal with a main controller knob on the right and buttons across the top of the screen to jump the cursor to those places (where variables might live). The key difference here is deciding that a keyboard and trackball would be part of the build. Most parts have been procured, however I've not decided yet how to build the case.
Aug 13th 2021
I've setup enough code to prove that a potentiometer knob can be mapped to the range of values that are most useful to Orca: 0-9 and A-Z. There was some challenge in tuning code to get a natural response. Without doing that it can feel jumpy.
I'm in the breadboard prototyping phase now, but I've (for now) settled on using about 6 knobs and 15 buttons. The buttons can be mapped to generate a series of keypresses that render useful patterns like trackers, scales, etc. The knobs can be mapped to specific variables which will be available in fixed locations on the bottom row. A button could be mapped to generate the variable code too.
I don't yet have a great vision for the housing design. I'd like it to be well considered and nicely crafted.
I have dropped the idea of >15 buttons as I realized that augmenting a real keyboard and mouse is much better than trying to replicate it. I've also dropped the idea of using the half globe, as the screen needs to be easily readable to be useful.
Mar 31st 2021
I mapped out an initial idea for button layout. This seems really un-optimized with 62 buttons, but that's actually how many GPIO the Grand Central has, so I suppose it's possible. I'll do some more thinking... I believe this is not the final layout.
Mar 24th 2021
I'm not entirely sure that Grand Central can act as a keyboard, but I believe with the Adafruit HID Library it can.
I'm also not sure how I'll do midi out. Ideally I can convert from USB from the Pi to a midi din port for the box, but I'm not sure yet how to accomplish that.