Almost done with the custom keyboard!
I finally built up the courage to attempt the actual assembly. This part was very difficult and it took me a long time to figure out something that made sense and seemed achievable. There are so many buttons...how am I supposed to organize the buttons, the wires, the shift registers, and the resistors?
I started by soldering the buttons into place in their correct locations on each circuit-board along with resistors and wires for power and ground. Each circuit-board connected the power and ground wires to each other so I only had to add two wires from one board to the next to power the buttons.
Then I divided up the circuit-boards into "key regions." Each region is controlled by shift registers in that region. The circuit-boards in each region share power and ground with each other.
I completed the soldering for each key region and tested them with an Arduino to verify that the buttons worked. Then I linked the regions together, connecting the shift registers' data, latch, and clock wires and adding power and ground. Everything was attached to the acrylic using velcro to keep the circuit-boards in the proper place.
Clearly that's a messy collection of wires, and the solder joints on the other side aren't any better. There's about 50 ft of wire on both sides of the circuit-boards and hundreds of solder joints. Nevertheless, the buttons work like they're supposed to. I added some scotch tape to keep the wires under control and assembled the keyboard buttons.
The keys are multi-colored using a collection of Sharpie markers I bought for this purpose. When I met with Shaniqua we came up with the idea of using colors to make the keys easier to find. The numbers and vowels are Shaniqua's favorite color, pink.
The project isn't quite complete. A few of the keys need to be sandpapered so they slide better. Shaniqua wanted the keyboard to be tilted up instead of flat so I need to come up with a way to angle it up. Also I need to do some programming to make the action buttons at the top of the keyboard do something. All of these things are easily achievable. Hey, I've made it this far!
There are some things about this project that didn't go so well. The arrangement of the buttons and wires was hard to manage and caused many problems and mistakes. I did it that way because the only way I understood how to build this with the resources I had available to me was to have all of the components together on a single plane of circuit-boards. On the other hand, I learned a lot about good and bad solder joints and I got a lot of practice diagnosing problems with a multimeter and de-soldering. The electronics work but they caused a lot of late nights and stress. In the future I will be much more disciplined about how I solder connections in circuits.
There are also some problems with the button design. There are no comma or question mark keys, something that most users would certainly miss. The carat, tilda and second asterisk keys are less important and should be replaced with other characters or eliminated entirely.
Recently I got my piano tuned and I re-recorded myself playing a few songs.
Here is Pachelbel's Canon in D. I played this at my brother's wedding in a few weeks ago. I didn't play it as well as I do here but I did my best. It's hard playing in front of people!
Next is Erik Satie's Gnossienne #3. One of my favorites. Right now I am trying to commit it to memory.
And finally, Frederic Chopin's Prelude in C Minor #20. This yielded my first ever Youtube comment!
I continue to work on the custom computer keyboard (part 1). After creating the laser cut parts, I needed to understand the electronic components. Unfortunately I hadn't done anything with an Arduino in a long time, so I was confused about what needed to be done.
To help me learn, I bought an educational Arduino kit and started working on the experiments. That was definitely worth my while. I got comfortable using an Arduino again. I also learned what shift registers are. There will be 10 of them in this keyboard, as they are essential to allow the Arduino to sense the button presses of 71 buttons.
Here's one of the kit's experiments, using two Serial to Parallel shift registers to control a dot matrix LED display.
And here's an experiment using one Parallel to Serial shift register to monitor 8 buttons. I was following an Arduino tutorial here:
And finally, a prototype 16 button keyboard, mapped to the first 16 letters of the alphabet. I even added an LED that lights up whenever any key is pressed.
Next I need to understand the assembly. I know how to solder, but I don't know how to arrange everything inside the keyboard in a sensible way. I will figure that out before soldering anything together.
Here's an improved rendition of Pachelbel's Canon in D. This time I used the pedal and didn't speed up as I approached the crescendo. I made one or two mistakes but they are relatively minor.
And I also recorded this on the first try, without sheet music! The previous recording took 20 attempts.
There's also a new connect the dots puzzle available, depicting a Pterodactyl.
For the past few months I have been trying to learn Pachelbel's Canon in D. Since April, at least. This is the most difficult song I have ever attempted. Here's where I am so far:
I made at least 4 mistakes, but every attempt after this was much worse. The crescendo is challenging! Of course I can play it better when I am not trying to record myself.
Tonight I also re-recorded myself playing Erik Satie's Gnossienne # 4. This time, without sheet music.
I spent the month of June at ITP Camp. It's my third summer in a row there, and as always, I had a blast. This year I attended a session on building a custom computer keyboard. It was taught by Claire Kearney-Volpe and Ben Light.
In the class we met with several members of United Cerebral Palsy and discussed their experiences using computer keyboards. Traditional keyboards often do not meet the needs of disabled people. We talked about ways we could re-design a keyboard to make computers more accessible and meet their usability needs.
I worked with a woman named Shaniqua. She didn't like the traditional key arrangement of a QWERTY keyboard and often found it difficult to find the next key she needed to type. There were some keys she didn't use at all and she thought the keys were too close together.
Claire and Ben built a working prototype of a keyboard using laser cut acrylic and a Leonardo Arduino. The keyboard I am building for Shaniqua will have a similar construction but will be tailored to her needs.
Before camp ended I designed the keyboard layout in Inkscape. The keyboard will look like this:
Next I used ITP's 60 Watt laser cutter to cut and etch all of the parts with Adobe Illustrator files derived from the above SVG image. There are 73 keys on this keyboard so the cutting took almost 4 hours to complete.
I made two mistakes with the design. First, the arrow keys were Inkscape lines with arrow heads. Visually that makes sense, but a laser cutter interprets lines as places to cut clean through the acrylic. I wanted it to etch arrows instead. To remedy this I quickly designed different buttons and cut them out on extra material.
I also made a mistake with the bottom layer and omitted one of the screw holes in the bottom layer. To fix it I simply drilled the proper hole using the layer above as a guide. Cutting acrylic with a diamond tipped drill bit was overkill but it got the job done.
The next step was the acrylic welding. This welding isn't like metal welding with a torch, it is more like chemical welding that temporarily melts the plastic so two pieces can be fused together. The top of the keyboard with be two layers of acrylic with keyholes for each key, with the top layer of holes being smaller than the lower one. The keys will also be two layers of acrylic, but with the top key layer being slightly smaller than the lower layer. This will allow the keys to be pushed down into a button sensor but not up out of the keyboard.
A few of the keys seem like they will have a lot of friction with the keyboard frame, but if that's the case, I will fix it with some light sandpaper.
Camp is now over, but the keyboard building continues. This is a fun and challenging project that in the end will expand my horizons and my view of what I am capable of. The next step is to understand the electronic components and the Leonardo Arduino. I want to understand how the circuits work before I attempt to solder anything together.
It's been a while since I posted something here.
In January and February I was a data science fellow at The Data Incubator and worked very, very hard on projects and assignments to learn more about Python and data science tools. But now that that's over, I have time for other things.
I fixed my laptop and can now record videos of myself playing piano again. Here's Erik Satie's Gnossienne #4:
I made a few minor mistakes here and there but overall I am very happy about it. The broken cords make this a difficult piece to play.
Also, I updated this website theme! Much better than the previous one.
More to come....
Happy Holidays everyone!
This is a 3D animation I made for my holiday cards. Put on your 3D Glasses and be amazed!
Dance of the Sugar Plum Fairies by Kevin MacLeod is licensed under a Creative Commons Attribution license.
This past week I spent much of my time writing the documentation for my latest project, Camera-3D. This is an open source library for Processing. It will enable artists and creative technologists to transform their sketches into 3D anaglyphs and experiment with other 3D effects.
Once I finish the examples this will be ready to go live. I am so excited!