2026-06-01

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!)

2026-05-30

trying out microcontrollers

i did some work with the bitbox a long time ago, and i've been excited to try out building my own gadgets. i wanted to work with a 32 bit architecture, which may be overkill for my synth, but it would help with experience for future projects.

i picked up a Raspberry Pi Pico 2, which has nice getting started documentation, but i like doing things with the command line rather than VSCode, so i put together this little tutorial: https://codeberg.org/lowagner/pico-test.
i was getting a ERROR: Cannot determine the binary size, so cannot save the program only, try --all. when doing `picotool save`, but that's because `save` will download from the device, when i wanted to upload (using `load`). well, progress is progress. i have a blinking light on my desk for now.

2026-05-21

case iterating

i'm going to be trying a few things; i want to see if i can get the volume/slide knobs in the back for easy movement with the fingers. this will require building out the innards of the case more, which i've been putting off. it looks pretty sleek without anything in the front!
at some point i'll put a logo or name there. another notable change; i've filleted the edges of the natural keys because i think that might help with glissando...

i'm also probably going to be moving the keys down (or inwards) for "protection" against putting them in the pocket (i.e., for the accidentals), and i've increased the size of the keys again because in a loose grip the thumb concerns from some of the previous posts aren't as important. it's also important to have decent size targets for the thumbs anyway.

i've also added some chamfer to the bottom which should help with pinkie comfort.

2026-05-14

prototype case print 3

all the prototypes look so great together! the third print is "unripe banana"; i'm printing with whatever is on the AMS at the time so i'm trying to get creative. the retro roller-skate/ice-cream shop print from v2 might be my favorite colorway so far, though.
primary differences from v2 are the different shoulders and the keys are shortened. i prefer v2's proportions from an aesthetic/visual standpoint, but v3 improves the thumb playability. on v2, my thumbs feel like they naturally want to be above the bottom of the accidentals, so it requires a bit of a stretch to hit the naturals.
on v3, my thumbs feel like they naturally hover around the bottom of the accidentals, so it's easy to go above or below. of course it's harder the closer to the edge you are, but not impossible, but this is why i have an edge. (for comparison purposes, v2 and v3 have all the same case dimensions.)
for comparison to the Oskitone Scout, the keys are a bit wider as well so it's harder to fat-finger two notes.

now small differences. one unintentional: i keep forgetting i'm not allowed to put in columns that are merged with the case; they print with terrible tolerances. i suppose i could have cut off the columns, but i used a hot glue gun to weld these together and the result was not as intended. the natural keys are supposed to be flush with the surface, but you can see the tops of the accidentals are now approximately flush.
the Oskitone Scout also makes the accidentals flush with the top of the case; i wanted the natural keys flush to improve thumb feel along the edge of the keyboard but i do have to say the aesthetics look nice. "dimension" is the key word i use when i describe a 3d object that i find aesthetically pleasing, and this goof-up does have some nice dimension. but i think i'll still aim for flat on top here (flush naturals), because the accidentals have dimension and the knobs do as well. as a bonus, it should reduce the amount of space i need inside the case.

one final difference; for feel, i shrunk the "key wiggle bridge widths" which makes the keys looser, because the keys aren't as long, but i think i'll increase it again for naturals and maybe decrease it for accidentals. i can't really tell a difference for the naturals between v2 and v3, but the v3 accidentals seem a bit stiffer.

shoulders that pivot the other way

ok so i did want to try out hinging from the other side for shoulder buttons. i had fun designing this as the intersection (or difference) of a bunch of circle slices, plus fillets:
the other improvement is for ease of putting it together. i've added some pedestals inside the shoulder button that the columns slot onto, so they aren't loose or hard to line up (ideally). here's a cross section.
the columns have a large flat top so they can "support" the keyboard crossbar, which isn't pictured (or really needed) for the shoulder tester.

printing it now, will return with observations. [edit] and now we have it printed.
i think this is better but of course i'll want to test the full case. i'll want to make the button longer; the old version had a little more surface area.

[edit2] started another prototype print on the full case, i'll share that in a new post soon but wanted to show the shoulders in action here.
i think i do like them this way, you're not able to push into the pivot accidentally like you were on the previous model; i.e., there's always a lever arm.

2026-05-12

prototype case print 2

the big upgrades here are having a cutout for the palms and beveling (build123d filleting) all the outer edges. it makes it feel more premium to not have the edges attacking you. i've shrunk the length of the keys and case (y direction) as well so it now has adorable proportions. the strawberry mint ice cream color scheme doesn't hurt, either.
the knobs aren't connected to anything so they droop a bit.
under the hood, i've improved the keyboard a bit; accidentals are spaced a bit more like on a real piano (i.e., unevenly), which necessitated moving around the "key wiggle bridge" on the bottom of each key so each bridge was exactly the same width. this took me more time than i'd like to admit.
some notes:
  • i may try to bevel the case more; you get elephant's foot on the first layer so the top and bottom edges don't feel super smooth. however it's still a huge improvement on feel.
  • i'll probably want to bevel the tops of the accidentals.
  • i lied in the last post, you won't want a "relaxed grip" on this so the shoulder buttons should be fine pivoting around the top corners. i may want to try moving the pivot point down but keeping the buttons external profile in about the same spot, so there's a bit of a lever arm no matter where you press it.
  • the knobs coming off the bottom of the front look really fun, but the best location for these would be on the back so that your other fingers could adjust them during a performance. but they look really good here, and having them for visual feedback when adjusting isn't the worst. (i may not be leaving enough space for the actual potentiometers, hmm.) if i do move them to the back, there's room for a sick logo in front, or some waveform adjusting button(s), or both.
  • assembling this is a bit of a pain right now; i need to add more pedestals for my columns at the very least. i'm also probably overbuilding it, so there's a couple columns i could remove.