Grant Muller


HarmonicTable is a replica of the C-thru aXis built with Java and Processing that is playable with a mouse and keyboard. The end goal of this project is to port the application to a touchscreen.



On the main screen any of the keys can be played by mouse
There are two tabs at the top, one for the main table screen, and one for setup. On the setup screen you will find options for the Starting Note, Midi Input and Output, as well as toggles for note release and Midi Thru.

Starting Note – The note you select in this scroll list will be the note that the matrix starts with. You can think of this like selecting the octave on a small Midi controller, only this allows you to set any note as the lowest note.

Midi Input and Output – These are the midi input and output selections. By default, Harmonic Table will select the first input and output available on your system. MidiOutput is on channel 0 by default, input will accept any channel unless one is selected using the number box.

Midi Thru – When this option is turned on, any notes arriving at the input port will be mirrored to the output port.

Release Notes – When this option is turned on, note off messages will be send immediately when the mouse or key is released.

Chord Mode – Chord mode allows the user to play chord when clicking or dragging notes around on the screen. To play a chord, hold down a key from the chart below while clicking a note to play the associated chord:

Row 1
1 Major
2 Minor
3 Augmented
4 Diminished
Row 2
q 7th
w Major 7th
e Minor 7th
r Minor Major 7th
Row 3
a Add 9
s Add 4th
d 11th
f 13th
Row 4
z Minor 9th
x Minor 11th
c Minor 16th
v 6th

In addition you can turn on chord lock by pressing the ‘b’ key. When enabled the user need not hold the key of the chord being played down, just press the key once and any note click will play the chord that is locked. At the top right of the menu bar a message displaying both the chord being played and the chord lock status are displayed.

This was built using the Processing libraries, along with the ControlP5 library and Ruin & Wesen’s rwmidi library for midi functionality.

See me on Make!


This is an executable jar, meaning if you have java installed on your machine (version 5 or above), you should be able to double-click it and you’re off and running.

Harmonic Table 05

You can check out the source or report an issue here.

Other posts on this topic

If you have any questions or comments, leave them in the section below.


  1. Tried to submit this through your contact form, but it kept freezing…

    Regarding HarmonicTable – I have a multitouch screen I can use to test code for you. I’ve been using the current version on a pen tablet and by single-touch so far.

    I’m not a programmer, but if you don’t mind I have some suggestions. You could enable 1-finger chords without having to use a keyboard by making hot zones at the intersections of the hexes. Once you get multitouch working, it would make it so you need less fingers to play 7ths and other big chords.. and again wouldn’t need the keyboard hotkeys.

    Using this program on a touchscreen is far superior to having a physical controller like the Axis-49. On an axis you need to use all your fingers to go up and down scales, hitting individual buttons. Touchscreen lets you slide between notes. I’m not sure yet what can be done with it, but if you have multi-touch working and each finger can slide, you can probably play some very unique harmonies.

    1. Finally, someone with a touchscreen! I would love to have you test some code in the new year. The keyboard hotkeys are basically just so I can play chords on a non-touchscreen interface. Ideally it would work exactly as you suggest (hot zones at the intersections of hexes). This is of course difficult logic to write, and even more difficult to test without access to a touchscreen, which is why I’m happy to hear you’d be willing to test this out 🙂

      I’ll contact you offline and we’ll work something out. Thanks for the note about the contact form…looks like a problem with the Ajax script, I just fixed it (until the next time I upgrade it).

  2. Hi Grant.
    I am very interested in both Processing and keyboards. It is so strange to find both subjects in a single project!
    I downloaded your HarmonicTable sources but cannot have it working. How do you launch it?
    Did you export the Processing applet somewhere?

    Thank you in advance
    Alessandro, Italy

  3. I am a Java developer and have a Samsung Galaxy Tab 10.1. 

    Ever thought about an Android version of this?

  4. I am a Java developer and have a Samsung Galaxy Tab 10.1. 

    Ever thought about an Android version of this?

    1. I thought about it but haven’t gotten around to developing one. Its all Java so technically it should be fairly easy to port, I just don’t have a physical android device to test it on. Maybe I’ll port it using the emulator and you can test it for me on your Galaxy 🙂

  5. hi
    i’m really excited about this software. but i’m afraid i’ve been having a few minor glitches (i’m running windows 7 64bit if that helps).

    for some reason about half the time when i open the application though it freezes and won’t allow me to play any notes or open the setup page. then, when i do open the setup page i can’t seem to choose any of the start notes or select my midi output or channels. i have, however, been able to select midi through and release notes .

    I’d love to get this sorted because you seem to have done a great job at providing a harmonic-table midi controller i can afford to control my synths. any help appreciated, and keep up the good work.

    1. Al, I’ll take a look. I run 64-bit windows 7 here myself and haven’t had any issues, but maybe there is something weird with the Java version I’m not taking into account (this has happened before). Which version of the JRE/JDK are you using? Is it the 64-bit version?

      1. hi grant. ha sory for the several years delay! i dug this up again (now on a completely different computer setup (windows 10 home, 64-bit, java 8). it is no longer freezing so thats all good. one glitch im having is that when i press one of the keys to play a chord (e.g., 1-4), i can no longer move the cursor. also if i click on a note nothing happens. if i have chord lock on, however, then i can select a chord type and play it. so that side of things is sort of working. any raod, i still think this is excellent — any joy doing a version for the ipad or similar touchscreen technology? that would be incredible — and am exciting to apply it to some new (old) hardware synths i have recently obtained. peace love respect, al

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.