Looking back, I think it's been a good year for Ancient Wonderworld. Haven't posted as much as in the previous years, yet I believe the blog has benefitted from a stronger focus on the core topics: Chiptune, 8/16-bit demoscene (with a special love for sizecoding productions), and the history of creative computing.
At times I have contemplated stopping with this project altogether because it seems like a lot of work for a limited impact. But then I noticed that the blog now has an average 250-300 views per day, a nearly tenfold increase from last year. That's not just a decent number for a little niche blog that does barely any outside promotion. It also means that there are appearantly quite a few people out there who do care about Ancient Wonderworld. So thanks and cheers to all you readers out there, you're the number one reason that keeps me going!
On a personal level, it's been a good and productive year for me as well. Aside from improving and extending HoustonTracker 2, I spent a lot of time advancing my 1-bit driver coding skills. For the first half of the year, I mostly dabbled in digital mixing, developing a new "multi-core" technique which allows for reasonably accurate rendering of a sizeable number of volume levels on the ZX Spectrum beeper and other 1-bit devices.
Fluidcore, a 4-channel wavetable player for ZX Spectrum beeper
These experiments eventually cumulated in the zbmod engine, a 3-channel routine which can play back PCM samples of arbitrary length with a total of 21 volume levels, and qed68, which does the same with 4 channels/24 levels on the TI-92 Plus and compatible graphing calculators. In the process, I also disovered how to implement simple low- and hi-pass filters in 1-bit.
Later on, I turned my focus onto more traditional 1-bit techniques again, for a number of reasons. Digital 1-bit techniques are very powerful, but they consume a lot of RAM, and are extremely tedious to write. On top of that, they are surprisinly unflexible, since the technique ties up a several registers for jump calculation, and rules out the use of self-modifying code. All in all, it's a pretty lousy representation of the "digital minimalism" I'm striving for. So, back to the basics. One thing I did was to take Zilogat0r's classic Squeeker routine (which introspec kindly reverse-engineered earlier this year) and enhance it with drums and duty envelopes. The resulting Squeeker Plus engine is certainly my personal favourite from this year. I later mated the Squeeker technique with Shiru's Phaser method, creating the strikingly powerful, yet nearly unusable Phase Squeek engine.
I stuck with the Phaser technique for a while, gradually simplifying the algorithm in the process. This yielded some significant speed gains, which allowed me to implement several new tricks. These simplifications actually went so far that at one point, the phaser algorithm became interchangeable with the standard threshold technique (the one used in Tritone type engines). Somehow, this was quite a revelation to me! In my perception, 1-bit synthesis is now transitioning from mainly trying to emulate other synthesis types¹ (programmable sound chip synthesis, pulse code modulation) into becoming a type in its own right: Binary modulation synthesis, if you will.
As my engines were becoming pretty much impossible to support in the existing 1-bit trackers and XM converters, Shiru suggested the creation of a dedicated, customizable music markup language to facilitate music composition for these tools. I was more than happy to follow up on this, as it provided a nice opportunity to finally acquire some proper C++ coding skills. Dubbed MDAL (the Music Data Abstraction Language), the project has now progressed into a usable beta stage, although the standard is by no means finalized and there is a lot of work left to do. I'm intending to continue on this next year.
The most fun thing this year was probably the "discovery" of the fabled 5th sound channel on Gameboy. On April 1st, I posted this video on youtube:
Of course everybody thought it was fake. Until I posted the actual ROM. And the head scratching commenced... Sure, it's a trick, but a pretty convincing one. It's basically an application the good old "pulse interleaving" 1-bit method on the second pulse channel of the DMG. I intended this mainly as a friendly nudge to the Gameboy scene. The point is that in my opinion, the Gameboy music scene has been somewhat standing still in the last 10 years, resting on the success of LSDJ and Nanoloop. While these are without a doubt absolutely brilliant tools, they don't push the Gameboy to the limits by any means. I really want to see more experimentation with DMG sound in the future, however I don't want to do it myself, since I'm not an expert in Gameboy programming and I don't have the time to become one.
Last but not least, I also took some time to bring my decade-old web coding skills up to HTML5 standards, and tackle the long overdue rewrite of my website. While I think that CSS is as awful and frustrating to use as ever, I'm pretty proud of the new, minimalistic and responsive layout.
Coding certainly took precedence over writing music for me in 2016. As a consequence, I played only one show this year (to a wonderful audience at the Vintage Computing Festival Berlin). I did, however, hold several talks on 1-bit music and HoustonTracker 2, which is an activity I enjoy a lot and would like to continue in the future. So if you would invite me for a talk, presentation, or workshop, please get in touch, either by commenting below or dropping me a mail at utz at my home domain. Aside from the things mentioned, I also like to talk on the topic of early computer music history, if that's more your thing. Of course I'm still open for shows as well, and I hope to do more next year.
Anyway, thanks again for reading, and see you all back in 2017!
¹ With the exception of Pulse Frequency Modulation, which has been a 1-bit exclusive right from the start.