Coding Boneyard


A short list of some of the small open-source projects I've coded up for myself over the years. Mostly for my own reference.


None of these projects are still under active development.

Chordophone




Chordophone is a simple Android application that displays chords for the ukulele. It was the first app I ever published to the app store, and was designed to be a super-lightweight chord reference.

It is still currently available on the android market (for free), but is not under active development.

It's a bit dated, an probably in need of some serious UI love, but still functional and I use it on occasion as a quick reference (instead of digging out a book).

The chords were loaded from an XML file instead of being calculated since (1) the set of chords that are actually commonly used is pretty small, and (2) there are a few chords that are generally accepted as useful, but not a 'musically correct' fingering (e.g. the 'Hawaiian D7'). Instead of coding up special exceptions for these cases it was much less work to just write the ones I wanted to show manually. Even with the 'advanced' chords there are only about 90 used chords anyways, and they never change.

This did have the unfortunate downside of limiting the ability to do things like transcribe for different keys or when using a capo, but those were features that I never really found myself needing anyways.

As of this writing (Jan, 2018) there are still over 500 active installations on the google play store, and over 20,000 lifetime installations since it was released in 2011. There hasn't been a single crash report in the entire time. I think that's pretty cool.

The latest version is available (for free) on the Google Play Store for Android devices. The source code is archived on google code at: http://code.google.com/p/chordophone/

Freetar Hero & Editor




Freetar was a Free open-source game based on 'Guitar Hero'. It supported a large variety of gamepad configurations (as well as the Guitar Hero controller with a Playstation-USB adapter).

The Freetar Editor was a closely related project that allowed users to create songs for Freetar from MP3's on their computers - allowing a near unlimited number of songs.

Work started on this project in September of 2006 and continued until February 2007. I was forced to discontinue work on Freetar due to a conflict of interest in when I was hired by Activision. They held the rights (and were activley developing) the 'Guitar Hero' game on which it was based. The Guitar Hero franchise went on to become one of the best selling games for Activision in the next few years.

The work on this undoubtedly was what got me into the games industry 'for realz' and it landed me a couple of job interviews. I'm still really proud of it, and working on it was a really eye-opening experience. The biggest thing I learned was about how to interact with a community - at one point there were a ton of people creating and playing songs in the editor. The editor itself was still being used long after for other 'free guitar hero' games since it output a simple XML file format that other games could easily import.

Strangely, even though I was working on the 'Tools Team' at the time, I wasn't tapped to work on the editor for the studio. I did provide some feedback and guidance to the engineer that did create our editor, but I was occupied with another project at the time. This was years later though, since the original studio that was developing GH was using MIDI and off-the-shelf tools for the earlier titles. We eventually got to work on a sequel and made our own tools when we had to bring a lot of non-technical note trackers onto the project (the MIDI-based encoding was somewhat arcane by that point).

Unfortunately it kind of withered and died because I was unable to continue to support it (due to my conflict of interest).

The source code is archived on Google Code at: http://code.google.com/p/freetar/

Whistler




Whistler is a program designed to teach my bird how to whistle. In the program you choose a bunch of .wav files (possibly of whistling) and a schedule, and they will be repeatedly played.
It was made to avoid the tedium of having to repeat the same tune over and over again, and to drive my neighbors and bird insane.


This was a pretty quick-and-dirty program written in C# and Windows Forms. It would pretty much just a timer that counted down and played a random .WAV file from the set you provided every X seconds.

I was able to teach my bird to wolf-whistle and part of the Sailor's Hornpipe - so was a moderate success.

I made it in a day in 2009 to avoid buying one of those 'train your bird' CD's.

The source code is available at: http://code.google.com/p/whistler/

Defilade




Defilade was a tool designed to assist mortar players in the game 'Battlefield Europe' (previously named 'World War II: Online' or WWII:OL). It was used to give the correct range setting for the infantry mortar weapon in the game without having to do the math in your head or on a piece of paper.

It used speech recognition (and required a SAPI 5.1 compatible speech recognition engine on the host PC) to receive the coordinates and would read back the correct range setting after calculating distance to target from the player's position.

I'm pretty sure I'm the only person that ever used this, but it was really fun to fiddle around with. Unfortunately, the mortar wasn't really that powerful, even if you landed it right on an enemy.

The tool was written in C# and WinForms and would run in the background and listen to the mic for the player to provide it with coordinates for both the player and the target. Afterwards you could request the range and it would read back the distance from the player to the target.

For example, a usage might be something like this:

  • Player: "player at 32 point 45 point 23 degrees North"
  • Player: "player at 23 point 22 point 10 degrees West"
  • Player: "target at 32 point 44 point 22 degrees North"
  • Player: "target at 23 point 22 point 11 degrees West"
  • Player: "range"
  • CPU: "Distance to target is 123 metres. Repeat, Distance is 123 metres."

You could re-request the range, or overwrite the north or west locations of the target or player at any time. The coordinates were accepted in that way because the in-game map would give you a .. of the latitude and longitude of your mouse cursor when you hovered over it. You could then use the provided range to manually set the mortar firing distance on your weapon in-game without having to alt-tab out and without having to resort to ranging shots. You could only carry about 6 or so rounds for the mortar, so you had to make each one count.

This program stands as a testament to my obsession with WWII:OL back in March, 2008.

The source code (and downloadable executable) are available on Google Code: https://code.google.com/archive/p/defilade/

Music Flash Cards




This was a little JAVA program I wrote in an afternoon to help me learn to read music. It was basically a set of flash cards that each had a particular music note displayed, then it would track how long (and with what accuracy) it took you to choose the right note (A-G).

There's not much to say about this one. It was one of the older JAVA programs I made (Sept, 2006). I whipped it up in an afternoon and used it for about 2 days before I decided I didn't care that much about reading music :). At the time it was more an exercise in using JAVA and AWT to do a UI.
I made a similar program for a friend years later in C# to teach deer identification.

The source is archived on Google Code at: https://code.google.com/archive/p/musicflashcards/

Battleground-Android




This was the first android App I ever tried to create. Its purpose was going to be to pull together a bunch of data from the 'Battleground Europe' (a.k.a WWII:Online) website into app form, and to include some utilities that made playing the game easier (including an improved version of my Defilade rangefinder app).

I think as far as I ever made it was drawing the map using ingame coordinates, showing who owns which towns, and connecting the towns with the supply-network links.

Progress stopped on this due to a few things, but the main issue was the API I was using to populate the data kept breaking.

It is another monument to my obsession with WWII:OL back in 2010.