Grant Muller

Processing HarmonicTable 01

UPDATE: This is no longer the latest version, I fixed some bugs for Mac users and reposted. To get the latest version click here.

Since I don’t have a touchscreen to test this with, I’m releasing the 01 version with mouse functionality, along with a few GUI functions to change the midi out port and the starting note number. At some point I’ll get a tablet and add the touchscreen functionality, or if someone has a tablet I can pass the source code on and they can test/implement that functionality.


There are two tabs at the top, one for the main table screen, and one for setup. The basic setup options at this time are midi ports and starting note values.

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

This is an executable jar, meaning if you have java installed on your machine (version 6), you should be able to double-click it and you’re off and running. I have only tested this on Windows and Linux, so if there are any Mac users out there, please let me know if there are any problems.

Download HarmonicTable 01

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


  1. I was attempting to run your JAR on Mac OS X 10.5.5 and got the following error-

    1/7/09 4:10:08 PM [0x0-0x91091][9290] Exception in thread “main”
    1/7/09 4:10:08 PM [0x0-0x91091][9290] java.lang.UnsupportedClassVersionError: Bad version number in .class file
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at java.lang.ClassLoader.defineClass1(Native Method)
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at java.lang.ClassLoader.defineClass(
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at$100(
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at$
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at Method)
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at java.lang.ClassLoader.loadClass(
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at sun.misc.Launcher$AppClassLoader.loadClass(
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at java.lang.ClassLoader.loadClass(
    1/7/09 4:10:08 PM [0x0-0x91091][9290] at java.lang.ClassLoader.loadClassInternal(

  2. works on OS X 10.5.6, just make sure that Jave SE 6 (64bit) is your preferred java in the java preference pane.

    One thing I noticed though, if you hold your mouse button down, you cannot arpeggiate notes that have already been triggered…in other words, you cannot start at A, go to D, then G and back to D without having to release and click again.


  3. Grant,

    With 1.6 installed on my MacBook Pro, it would not run from the regular jar launcher (that is it wouldn’t launch by double clicking it through the finder) as the Mac installs 1.6 but still defaults to 1.5 (which is lame). This doesn’t work under 1.5

    If I open up the console (terminal) and navigate to my download directory, I can type in the following command to run the app:

    /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Commands/java -jar ./harmonictable.jar

    This method works fine. 🙂

    It seems to work fine with the following caveats:

    (1) The real-time sequencer does not work (I can’t get any sound). I do get sound with the Java Sound Synthesizer though.

    (2) I have no idea what this is supposed to do other than play notes, so I don’t know if I’m using it correctly. 🙂


  4. To all Mac users, I’ll try to get this tested properly in your environment and see what I can do!

    @Keith and vcon: This is probably a problem with your java version on the Mac…see the Posts from Michael and Patrick and see if they help – just make sure that Jave SE 6 (64bit) is your preferred java in the java preference pane.

    @Patrick, you’ve pointed out a bug it looks like! I think its an intentional one, but I need to create two modes…one so that it will not arpeggiate notes and one so that it will, I’ll just make it an option on the setup screen. I did this so that chords would sound if I played them in little rings with the mouse, and would not duplicate notes when dragging.

    @Michael Riecken – You might look at Patrick’s post to see if thats an easier way to start it. I use a lot of the Java 6 features, so its not compatible with java 5. I’ll see what I can do about the Real Time sequencer. All this does is play notes…so you ARE using it correctly.

  5. Hello Grant,
    tested V02 on mac os 10.4.11, routing the notes to a midi track in live, via the IAC driver. It works perfectly, had some fun drawing patterns with a graphic table.
    I add a really small issue when I opened midi game of life at the same time, that I was using with its IAC driver. Probably a conflict, since I add to quit both apps to make one work properly.
    You have designed a really beautiful piece of software… making c-thru’s device kind of even more desirable.
    I was thinking : could you design a V03 with the ability to draw shape moves on the table, re-play the patterns, including some cellular automation ? (I’m a dreamer).
    Thanx so much to share you work.

    1. I think I might need to put an exception wrapper around opening midi ports (probably a conflict with the other program). I will look into that.

      Those are REALLY great suggestions for stuff to add! I am going to release a version 03 next week with a chord mode feature and some performance fixes. The chord mode feature will let you play chord when you hit a key (probably allow the user to select from 9-18 chord shapes, minor, major, diminished, etc).

      I will look at the pattern memory feature for version 04, along with the automata feature. Thanks for the suggestions!

      1. for some reason my iac ports, and other midi ports on osx dont get listed in the setup page. any ideas as to what i should check to get this working?

        1. That’s really strange, I haven’t heard this from other MAC users. They have been telling me that if they have “IAC – Bus 1” defined, and that everything is checked off and ready to go, that you should be able to use it from within the software. I’ll have to see if I can get my hands on a MAC to test this, or setup a Virtual Machine to test it in.

  6. I am a pc user (no offense, but i hate mac)
    anyway, i have recently been studying music theory, and alternative music composition. i have come across things like the the axis 49 or the axis 69. i think they are an amazing tool, but extremely expensive. so i am very grateful that you have created this application. thank you

  7. hi Grant:

    I really appreciate what you have created here. BTW, I can get the .jar file to run on my windows 7 pc. How do I run your program if I am using an IDE like eclipse or JGrasp? What files go where? Do all the files go into the SRC file (,, and How about the Processing libraries, Control P5library, and rwmidi library?
    Where to put the libraries to get the .java file to run confuses me. Thanks. Matt

    1. Matt, thanks for the comments! I have to admit that I just kinda threw the source code up there to GitHub without really organizing it to much. To use it you’re pretty much have to import the source into Eclipse and bring the imports in manually.

      I won’t leave you hanging though. Let me clean it up and provide a proper Maven or ANT build script so that you can run it locally from Eclipse and not have to manually set everything up yourself. I should have some time to do that and will update the code this weekend. Sound good?

  8. Hi, great work!
    I wish I could play chords with it.
    I’m trying to experiment with the harmonic table and your software was the only thing I could find so far.
    Sad that development has stopped..
    Maybe you could consider open sourcing it?
    Thank you!

Leave a Reply

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