I've spent the past few months learning Clint Mansell's Lux Aeterna, otherwise known as Requiem for a Dream. It's a piece I enjoy very much and have wanted to play since I found some videos of other people playing it on youtube.
I made a few small mistakes but they are hardly noticeable. It wasn't my best day for recording myself playing.
I also re-recorded myself playing a few other songs. Here's Pachelbel's Canon in D played with the practice pedal engaged. It changes the tone of the piano in a way that I think works well with this piece.
Next, Erik Satie's Gnossienne #2. I have a new appreciation for this after recently realizing that I had been previously playing it incorrectly. I also forgot to re-record myself playing it after I bought the Zoom microphone.
And finally, Erik Satie's Gymnopedie #2. There were some flaws in how I was playing this one too.
Now the keyboard is pretty much done. For real this time.
I previously wrote that I was "almost done" but in reality I wasn't anywhere near complete. There were many bad solder joints, resulting in shorts and disconnections for many buttons and several shift registers. It was frustrating because I had no idea how to debug it.
Eventually I wrote some Arduino diagnostic code to help me identify the problems. I also read several books on Multimeters. And lots of time studying my soldering joints with a magnifying glass. It was tedious, but now the keyboard works pretty flawlessly. Although it is possible another problem will creep up later, I am confident I will be able to deal with it.
The circuitry is complete. A few minor tweaks to go: some buttons needed to be filed down to fit properly, and perhaps a few more need some work. The keyboard also doesn't have question mark or comma keys. I plan on using a laser cutter to make replacement buttons for the tilda and the caret characters since they aren't as important. I will take care of it at ITP Camp this summer.
And this is me typing with it! It really works!!
I wrote my own Arduino code to run the Arduino board. My code properly handles multiple key presses and lets the operating system handle key repeats. There is also diagnostic code to blink the Arduino's built-in LED if there is hardware problem with the shift registers.
I am very happy to have finished the circuitry for this custom keyboard. For a long time this project seemed hopeless. Nevertheless, I stuck with it and now it is clear I will actually finish it properly. The soldering iron that was setup on my kitchen table since August has finally been put away. I'll take it out again later, of course, but for a different project!
Next up, Raspberry Pi experiments.
Tragically, the second lamp I made at ITP camp is gone.
I accidentally toppled it today. It fell, shattering into pieces.
I am not upset though. Most of the parts were salvageable and will be re-used in a future lamp. I have three wine bottles with holes already drilled in them, so I can make an identical lamp if I want to. I won't though. I realize now that filling the bottle to the top with gravel raised the center of gravity higher than where it should be. The next one will will be half filled with gravel. How about plastic or glass beads for the top half? I could make something that looks fishtank-like. I am sad that lamp is gone, but know that the next lamp will be better.
And now is a good time for a public service announcement on the proper way to clean up glass:
Very effective. I had bread-crumbs everywhere but that is much easier to deal with than the broken glass.
This is the 3D animation I made for my holiday cards. View this with red-cyan 3D Glasses (red on the left, cyan on the right).
Also have a look at last year's animation.
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.