October 6th, 2015

HoustonTracker 2 Released



Horray, it’s finally done! My new music editor for Texas Instruments’ graphing calculators was officially released at the Deadline demoscene event in Berlin last weekend. For further details, downloads, and documentation, head over to the official HoustonTracker website. What follows here is a little making-of, and some personal thoughts on the project.


A few years ago, I made my first attempt in creating a native tracker tool for the Z80 line of TI graphing calcs, which resulted in the original Houston Tracker. Naturally, my inexperience in writing a tracker software led to some bad choices. The UI and workflow of the tool were tedious, the sound drivers had detuning issues, the data format was inefficient, and worst of all I ran into some critcial bugs which proved impossible to fix, not least thanks to the disorganized mess of code I had created. So ultimately I had to abandon the project.


Since then, I’d always wanted to go back to the project at some point, and to rewrite the whole thing from scratch. This year, I finally found the time to do so. I started to work on HT2 in mid-February, kicking things off with a new custom sound driver. From the first drafts, it took about a month till I was satisfied enough with it. Next, I started to build the GUI and the graphics drivers. At first, the GUI was quite heavily based on the original HT1, except that I opted for a more traditional sequence-pattern structure as known from successful trackers like LSDJ and Famitracker, as opposed to HT1’s pattern-less approach which was mostly based on Shiru’s 1tracker (still my #1 choice for music composition). As I went along, more and more elements from HT1 disappeared. Pretty much the only thing that survives now are the markers (BS/BE) that you can use to edit the sequence.


The next step was to implement the underlying editor logic. Especially the keyhandling proved to be surprisingly tricky. Naturally, I wanted the keyhandler to be as fast as possible, but the darn thing just kept glitching and glitching, especially on the newer calculator models. One cause for this was that TI has been using cheaper and cheaper components over the years, making the keypad hardware more and more sluggish. This is quite well documented though, and should not have been such a big issue. What isn’t documented however is the fact that TI does not de-bounce the keypad of their calculators, so releasing a key has a good chance to actually act as another keypress. You’d think that 30+ years after the TI99/4A, they’d have this figured out, but no. Well, I finally got the keyhandling working, but the implementation remains weak, so I’ll probably rewrite it at some point.


Another major problem I ran into was that on the newer TI models (83+/84+), random RAM failures kept occuring. It took me several weeks to figure out the root cause. Who would have thought that the hardware of the newer models can, by design, draw so much battery power that the RAM refresh will fail? Deactivating several hardware components (USB, timer crystals) finally did the trick.


The last big step was to add the file system and logic used for storing song backups. I implemented a quite ambitious byte-based compression scheme, something I had not thought about at all when creating HT1. Naturally, this was one of the most difficult steps in the whole project, and it took me and my trustworthy team of beta testers a long time to get all the bugs out. (Well, to be honest I wouldn’t be surprised if there are still a few rough edges in there).


So, what’s the future of HT2? Given that people will actually use it, I have some quite far-reaching plans for it. There’s still room for improving the GUI and the keyhandler (as stated above), and I continue to make enhancements to the sound driver as well. Also, on the long run, I want to integrate the tracker more deeply with the TI operating system to free up more memory. The next version, HT 2.1, should hopefully be ready to ship in early 2016. After that however, things depend on how much time I will have available. I don’t want to dedicate all my free time just to HT2, because I have many other exiting project ideas as well. Nevertheless, I look forward to continue extending and enhancing this tracker for many years to come.