the state of things

As of now, I have a mostly physically assembled thing that sends over serial one byte per string where each i'th bit represents whether the i'th fret is being held down on that string.

No music is being made yet.

the final wrapping

I finally had to fixture the board to the wooden piece and feed the connections for the FTDI header through a pocket on the back of the body.

All the layers fit together quite nicely, and the translucent acrylic still allowed me to see the LEDs on the board inside!

synthesizing

I decided to use a program I had played with a lot in another class called Pure Data. It's similar to another commercial product, Max MSP, and is used a lot for sound synthesis and live electronic music performance. It's a visual programming language, similar to mods, where small modules have outputs that can be fed into other modules.

The interface is quite simple - a python script transforms and sends it over a websocket to Pure Data. Each string on a ukulele has a base note (G, C, E, A respectively), and every fret increases that base note by a half step. So figuring out which notes to play given the touch data is quite simple.

I had a tool written in Pure Data that played multi-channel piano notes given a midi note as an input, so I reused it for this. So yes, my ukulele technically makes piano noises, but it surprisingly still sounds quite natural!

And with that, the whole thing came to a wrap...

The PD interface can be found here.

The script that forwards messages between the ukulele and PD can be found here.

If you want to see the real deal in action:

in summary

A few more notes that weren't included in this bible of information...

The many materials I used include:

ATTiny44 (~1 dollar)

ATMega328p (~1 dollar)

• Various resistors, shottky diodes, capacitors, and other miscellaneous components (~10 dollars maybe)

• A boardhouse PCB from JLCPCB ($5 each but with a minimum order of five boards, $10 stencil). This could have also been milled myself, but there's something nice about a two-sided board that you don't have to mill yourself.

• Some plywood. This could probably be found at a Home Depot for a few tens of dollars.

In general, this answered the broad question of what it takes to build a fully integrated system with inputs and outputs. It satisfied a personal desire of mine in creating a futuristic(-ish) ukulele, but obviously there's still tons of room for improvement.

Moving forward, I would love to do sound synthesis on a microcontroller board itself, allowing the ukulele to operate as a standalone unit without a laptop.

The touchpads are still a lot harder to play than normal strings. I think with more parameter tuning and some physical features to help guide fingers, it could be a lot easier.

The time it takes to communicate between microcontrollers wastes a lot of valuable processing time and slows down how fast the player can actually strum to an unreasonably slow rate.

On that note, I would love to make the strumming mechanism a lot more natural for someone who plays a normal guitar/ukulele.

And with that, I abandon my project. A wise man once said that a good project is never finished, it is merely abandoned, opening up a realm of possibilities to explore in the next chapter. This is really just the start of my career in making physical things, but for now, this chapter is finished.