February 9th, 2024

2023 Retrospective... and a bit of 2024, too

2023 has been a rough year for me. I had to deal with the severe illness and eventual death of a close family member. I was fortunate enough to be able to care for them during their final time, and learned some valuable life lessons on the way. Needless to say though it’s been tough emotionally.

2023 was also the first year in well over a decade when I didn’t perform any live shows. That definitely needs to change in 2024! If anybody wants to invite me for a live show, I’m all ears. I also love to hold workshops, and give guest lectures and presentations on subjects such as the beginnings of computer music, writing 1-bit sound drivers, and making music on calculators.

On the bright side, I managed to win the 2023 edition of the ZX Beeper music competition at DiHalt with some good old Squat shredding. Didn’t get so lucky in this year’s edition - last place for this lovely bit of beeper tekkno/hardcore. Oh well.

At the beginning of 2023, I also made some more progress on Bintracker. Most importantly, I finally got Windows builds off the ground. Almost went nuts in the process, but here we are. Tangentially related, I also worked on some code for MAME, fixing the sound emulation of a certain East German 8-bit machine that I’m planning to do some more work on this year. Not going to go into details about any of this - if you want to keep up to date with Bintracker, feel free to subscribe to the newsletter.

In July, I took part in organizing the Chipwrecked festival again. Thankfully this time we had more full-time volunteers than last year, which meant I had more chances to actually go and see some acts. Personal highlights this year included an ear-wrenching speedcore/harsh noise set by Chipmusic legend der Warst, and, on almost the opposite end of the musical spectrum, Infotoxin’s dubby-steppy bag of goodies. And I don’t even like dubstep.

Recently, I’ve been working on some 1-bit code again. Composing this year’s DiHalt entry triggered me into revisiting the Fluidcore engine. Originally made in 2016, this 3-channel PCM wavetable player was suffering from extremely noticeable row transitions, due to not preserving oscillator state on data reads. Fixed that, and also implemented some compression for the pattern data.

I then went on to develop a hardware player for Furnace Tracker’s QuadTone engine, which was gladly accepted ignored by the Furnace team. So much for “We’re working on hardware support”. Can’t really blame them either, it’s 2024, fewer and fewer people care if stuff actually runs on hardware nowadays.

At this point the beeper engine writing bug had gotten a solid grip on me once again, so I moved on to try and realize an idea that’s been in my head for years. How would it sound if one were to use filters in a beeper engine? I had already played around with filters all the way back in 2016, with the beepertoy engine. This overly convoluted, early attempt at a meta-engine, supported fixed-cutoff low-pass and hi-pass filters on some of its engine cores. Now I wanted to up my game and build an engine that’s actually usable, and supports filters with variable cutoff. I ended up implementing two engines, ulasyn and PhaserF. The former is a bit simpler, supporting two pulse wave channels with variable duty, duty sweep, and noise mode. The latter is more powerful, sporting two full-blown Phaser channels. However, it sounds somewhat less clean than ulasyn. Both engines use the same, look-up based technique for calculating the filter effects, which supports up to 6 cutoff and volume levels. As always, I thoroughly enjoyed working on these, but it’s time to move on to some more impactful projects, I guess.

With that said, let’s see what more the year 2024 brings. Stay safe everyone, and wherever you are, please give a big fat finger to all the war mongers around the world on my behalf.