Jazz Champion

Recently, I turned an old dysfunctional chess computer into a jazz computer. In the video I play some moves against or rather with the machine. To score points, one has to enter jazz chords that match the last one played by the computer. It’s a fun way of discovering chord alterations and matching harmonies. 

It’s been a while since my girl friend gave me the top part of a broken chess computer from 1978 — the classic ⇾Chess Champion MK1. The inside was completely missing with the exception of a beautiful keypad. I did not know what to do with it so for couple of years it just collected dust somewhere in a box.

Recently, I talked to a friend about converting trash objects into musical instruments. I remembered the old part and suddenly it clicked: I would turn the chess computer into a jazz computer! There is a striking resemblance between the notation of chords and chess moves, for example E6 E7 means in chess that a pawn moves from square E6 to E7. In jazz it would describe E major chords extended by a sixth or seventh note. This enabled me to reuse the keyboard with small changes only. I designed some stickers that go with the original theme and the console now looks like this:

As hardware I used a Raspberry Pi Zero and an WM8960 audio hat amplifier with encased speakers. The traditional simple four digit 7-segment display could not hold longer chord names or show symbols like ‘#’, thus I opted for a larger 176×220 LCD display (and even designed a simple line font suitable for a device from the 70’s). In summary, these are the parts that needed to fit into the console:

The next step was to construct a bottom case that could hold all the parts and looked more or less like the original. Here is the design sketch I came up with and the 3D printed PETG result after a couple of iterations:

Now to the part of the project that I always love the most: the assembly. Seeing how the pieces come together and how one’s ideas come to life has ever something magical…

The hardest part was to have the computer play matching jazz chords. By abstracting away the interface I created a prototyping environment in Python with the really great ⇾PYO module for sound generation and the amazing ⇾Kivy UI framework. This way I could rapidly try out different algorithms for chord generation and play around with the game logic.

For chord matching I tried out an approach based on David Huron’s work on ⇾tonal consonance as well as Gilberto Bernardes’ concept of ⇾interval space. However, to my ears both techniques worked only in a limited way and were coming short specifically in terms of jazz harmonics. Thus I opted for another data-driven approach: I played all combinations of two tetrads in all twelve keys (a couple of thousands!) to myself and rated them according to how well they progress. Using these values and some additional heuristics I was able to produce chord sequences that finally sounded jazzy. This is certainly not the most scientific approach but certainly fair enough for a 70’s style gaming console. The algorithm produces sometimes really beautiful chord progressions and sometimes rather odd harmonies. After all, fun arises especially when the computer is NOT perfect in its choices, giving you the chance to win :-)

This project was featured by Kristina Panos on the ⇾Hackaday blog.