2026-06-16

prototype case print 5.5

for this print i wanted to add more chamfer everywhere so the edges of the case are easier on the grip.
i'm recycling old print pieces where possible so this is definitely not color coordinated. but i do think a red (for accidentals), white (for naturals), and blue version (for the case) would look really nice.

on the bottom, i was morally obligated to make it look cool by transitioning from a larger chamfer in the front to a smaller chamfer in the back (where the shoulder buttons are). this was a lot more finicky than i thought, and even once i had a good looking build123d file, it was having issues turning it into a 3mf mesh. (for some reason i need to not generate the top parts of the case when building the bottom part of the case, even though they should get sliced apart at some stage.)
i'll have to move the case-split z-offset down a bit because it's hard to snap the front/back together due to the keyboard crossbar right above the shoulder buttons. i also spent a little time centering the joystick properly and adding the correct number of pins on the pico.
i want to make a button on the back of the case to access the bootsel button without opening the case. this may be tricky with the battery that i want to stick in there.

some other name ideas...
  • portano (portable piano)
  • octano (octave piano)
  • pp (pianissimo, or portable piano)

2026-06-13

prototype case print 5 with a mock PCB

i more or less finished the print from 4.5 with an improved keyboard fit. the keyboard looks really good in gray and red actually.
on the inside i'm doing new things! i've printed a mock PCB with some stilts for the approximately correct height. my initial version put the accidental switches near the bottom of their notes, and the natural switches somewhere in the middle:
i didn't think it would matter too much where i put these, but being a former scientist i know it's important to actually verify your assumptions. also, printing these mock PCBs isn't very expensive (in either time or materials), so i printed out a couple other versions to test: one where the switches were all in a line (i assume that might make wiring them up a bit easier) and one where i put the switches further up for accidentals and further down (near the bottom of the notes) for the naturals. mostly i wanted to test low/mid/hi for naturals and low/mid for accidentals (since they're small), so i could do that with just three versions (and just pick the best version for each note type).
i was surprised to find that where the switches are makes a big difference on how pressing the key feels. this one where the key switches were all in a line felt the worst, at least for the natural keys. they felt too goopy, or like they flexed in an unintuitive way.
the position that feels the best is when the switches are near the bottom of their respective notes. i think this will also help with reducing the amount of stress on the "key wiggle bridge" that flexes when the note is pressed. however, this may make finding space for other PCB components challenging but i think i have enough space. it will also reduce the amount of negative space available for the speaker cutout but that's probably not something i need to optimize for. (you can see i'm going to try and put the pico2 on the *back side* of the PCB, which either makes me very smart or very stupid.)

this thing is really shaping up to look very nice and feel good to hold, but it would be a shame if it didn't also feel good to play. unfortunately it feels super clicky right now based on the tactile switches that i'm currently using. i think i will try these silicon tipped tactile switches, but those will probably still be clicky, so something like the soft touch switches might be better.

for the shoulder buttons, i will likely try out right angle switches, but if i want those to be soft as well i'll likely need to do a bit of a breakout like on the PIGRRL zero. might not be too bad for one-off prototypes but might get annoying if i ever try to produce a lot of these.
interior of PIGRRL zero with focus on shoulder button.

2026-06-09

button interactivity with the pico2

had to start somewhere with a basic circuit, and because the pico2 already has a built-in LED, i figured putting in a button and reading that for the LED was the best path forward:
the example code is here. i'm using interrupts to check if the button state rises/falls (i.e., changes), but i think the code can get a bit confused if the toggle happens quickly.

i think the only confusing part was not realizing i needed to set the GPIO to pull up (gpio_pull_up(BUTTON_PIN)); i was wondering if i had wired up the button wrong. this encouraged me to set the LED to default on (so pressing the button turns it off), so that at least i knew the board was powered up :/.

thanks to Ramji for a basic tutorial here, which helped me build out the C version, and the pico-examples for interrupts which made the code more "elegant" than just checking state and sleeping.

2026-06-06

prototype case print 4.5

i didn't do a full print; i've adjusted the keys a bit so the old ones don't fit perfectly, but good enough to get a sense of what it will look like. you can see OCTANO here which really matches the red.
this is not my favorite colorway but i do like the red and gold together. might look good with white or black natural keys. i also switched out my case mechanism for a snap fit, which is a definite improvement on the "no snap castle turrets", at least in terms of functionality, but in terms of aesthetics it's leaving wrinkles on the outside.
on the plus side, i did figure out a really cool V cutout for the joystick area in front, which helps with printability since there's less area to print across horizontally. i also tried making the case split go at an angle, which looks really sick in CGI:
but does not look good in real life, because the 3d printer has to step:
i'll see if i can't fix both problems for the next print but i'm also trying to figure out tolerances for the nuts so that may not happen. under the hood, i got a spot ready for the speaker:
definitely feels like it's coming together, but i know the journey ahead is still long. i still need to start on the software and such, but i have noticed some existing Pico I2S synth libraries that i can lean on if necessary. would love to also have an emulator so we can try out sounds on the computer before getting them on the OCTANO.

2026-06-03

prototype case print 4

alright got another prototype case put together. this is in the royal color scheme!
notes as usual...
  • i made it a bit thicker in case i need more room internally for things. it's about 31 mm thick (~1.25") which feels a bit plump but holds well. (it may actually be easier to hold for longer durations than a thin case.) not sure i'll need it but good to test.
  • this is the first prototype i've tried out with a back/bottom chamfer (for pinkies), and it's much nicer to have that angled bottom surface to hold.
  • the speaker grill and inset logo turned out great. in the program i've tried putting OCTANO right below the speaker grill and i don't love it so i may move it to the other side.
  • the joystick really looks nice. some questions about constructability from the previous post were not super applicable with changing to a conical hole, but i would like to increase the angle at the front of the case to improve 3d printing without supports. i also probably need to increase the size of the hole
  • the place where the nut will go is hard to clear out supports for, so i'll need to make it "open on both sides"; so there'll be a silver rectangle on the top of the device (not the front where you'd see it all the time). i don't think it will be too annoying.
i'm going to need to start printing mock PCBs so i can start laying out switches and stuff...

2026-06-02

logo and joystick work

nothing too much to report, but did add in the logo here along with a speaker grill here:
the logo also looks ok in the upper left corner, but i worry i won't be able to combine it with the synth name in a cool way. current best name so far is actually the OCTANO, OCTAVE + PIANO. apparently it's also the word for octane in Spanish, which might be a little too much gas for how fast this thing will go, but maybe not!

i'm also starting to add the negative space for the joystick. i think i'll have a third piece slide in to lock everything in place, otherwise constructability will be hard...

2026-06-01

bolting in the keyboard

been wanting to come up with a solution to keep the keyboard in place so i borrowed some inspiration from the Oskitone Scout and put in a square nut and bolt.
i'm experimenting with a few things, including speaker grills on the left, as well as bringing back the joystick.
here's the same view from the first pic, but upside down, so that's the way you'd be screwing the bolt in. you can see the staggered accidental and natural tactile switches here.

synth user interface

ok so i've been thinking about how the buttons should work on the synth, and i'm starting to diverge a bit from the initial design. iterate perhaps.
L/R shoulder buttons in particular need to be careful with sustain. if i press and hold R to get into the next octave up, then press a bunch of notes, i probably don't want those notes to be all sustained; i.e., i probably am just doing a solo up in the next octave. what we probably want is holding both L+R will ensure that any currently held notes become sustained, holding either L or R will ensure any already-sustained notes stay sustained. e.g., hold L, press and hold C (plays e.g. C3), press and release D (plays D3), hold R, release C (continues playing C3), release L (continues playing C3), press and release E (plays E5), hold G (plays G5), hold L (continues playing C3 and now sustains G5). i'll have to try it out and see what feels intuitive but i think that's closer to something that will feel right.

speaking of octaves, it'd be nice to have a visual indicator of which octave you're in; i'm thinking an LED here. the KORG microKey does something like this and it works ok.

the joystick i think i will bring back, but i want to make sure users can choose what modulation they want on vertical and horizontal axes. i'm thinking of having two indicators for this, e.g., two LEDs, one for each axis, and two buttons to change what each axis is. (i might be able to get away with just one button; holding it down and then pressing in a direction will change that axis modifier to something different). these might be some of the available options:
  • pitch bend - fairly self explanatory, pressing left (if on horizontal axis or down if on vertical axis) will bend pitch down towards the next flat, right (or up on vertical axis) will bend pitch up to the next sharp
  • waveform - with three options (sine, triangle, square), you can go up (or left) to modulate into the previous one, or go down (or right) to modulate to the next one. the waveform will be a linear combination of the two.
  • vibrato amplitude - oscillating your pitch doesn't have a good "positive/negative" counterpart, but "volume" vibrato might work nice in the opposite direction
  • vibrato frequency - how fast your vibrato acts. might also be nice to have a volume vibrato frequency.
  • duty delta or bit crush - changes the timbre and distortion of the wave
  • volume - i know, this might be redundant if i have a potentiometer on the back for volume. but could potentially remove the back volume if this works well.
however, in case you want to play with both hands after finding a cool setting, it'd be great to have a "freeze" option. i'm looking at a joystick with a button, which i think could work. but then it's a question of do you need to press the button again to start accepting changes again? could be cool to freeze at one value, then swing to the opposite and unfreeze.

inside the case: key switches

i've been procrastinating on working on the inside of the case, mostly because it's dealing with stuff i've never done before (circuits and soldering, etc.), but it's time to crack the nut open. naturally the need for space for everything will dictate what i can put in and where. in particular, i think i won't have enough space for potentiometers on the front of the case, at least not with how countersunk i'd like them to be. (well there may be pots with shorter knobs, i may revisit.) i may stick a potentiometer on the back instead (!). and i may go back to having a joystick on the front, but one with a lower height profile so i can squeeze it in.
i've been starting the inside work by adding switches for the keyboard. i offset them by the center of the attachment point near the back, and they turned out to be pretty evenly aligned. while i could make them perfectly aligned, i don't think it's necessary. i would like roughly the same force required to push the naturals and accidentals, so i'm thinking i may need to move the natural switches down compared to the accidentals; this may also help with making it easier to solder (??). here's a view from the back, so you can see how well aligned they are!
you'll notice i'm also experimenting with countersinking the keyboard in for "dimension". this will do a few things. it will make it easy to add in a nut and bolt to clamp the keyboard to the top of the case. it will increase the thickness of the device but potentially make it more pocketable -- i.e., less friction with accidentals popping out. (i'm currently keeping a little bit of accidental height outside of the enclosure, though -- we'll see how it changes over time!)