March 1st, 2019

Another Egg in the Coop: pstk

Got myself a new hobby: I'm now the maintainer of the pstk egg of Chicken Scheme. PS/Tk adds an interface to the Tk GUI toolkit to Scheme. Tk has gotten a lot of bad rep over the years, but since the major overhaul in version 8.5 it's actually become a great option for building cross-platform GUI applications again. PS/Tk itself has a long history, dating back to scheme_wish which was developed by Sven Hartrumpf in 1997/98. The fact that the code still works without any major changes with the latest releases of Tcl/Tk and Chicken Scheme is pretty amazing, I think.

For now, I haven't done any major changes, other than a few small tweaks to ensure that it will work with Chicken 5. I do see some room for improvement though. Namely some functions can be removed as they have become part of the R5RS standard, and ideally I would like to break up that large letrec block into smaller, more maintainable chunks. Also a few bits and pieces from newer Tk versions are still missing.

February 21st, 2019

xmkit-scm: An eXtended Module Parser in Scheme

Released a new XM parser toolkit today, written in my new favourite language: Scheme. The library is provided as an "egg" extension to the Chicken 4 implementation of Scheme. The parser offers a large set of features, including procedures for parsing pattern data (of coure), verifying file integrity, and extracting and converting sample data. Chicken users can simply install the extension with "chicken-install xmkit". Documentation is available here.

Dictionary Compression of Chiptune Module Data

I've been playing around with a dictionary based approach to encoding chiptune modules, with the specific requirements of 1-bit sound in mind. A few days ago I ran some tests with a large corpus (~1800 files) of modules obtained from, which indicate that a simple dictionary based packing scheme is significantly more efficient than comparable pattern/sequence based approaches.

Read the full report on the 1-Bit Forum.

January 8th, 2019

Nikita Braguinski and utz Discuss 1-Bit Music

Whoops, totally forgot about this, as it happened right before I left for the ++u recording session. Anyway, Berlin based media researcher and musicologist Nikita Braguinski recently interviewed me on the subject of 1-bit music. Pretty happy with how this turned out, so big thumbs up to Mr. Braguinski for setting this up, and kudos to Ludomusicology for hosting the article.

January 6th, 2019

VA: 20kbps Rec. Sweet Sixteen Birthday Compilation

The legendary lo-bit netlabel 20kbps recently celebrated it's 16th anniversary. For the occasion, Origami Repetika and Kai "Toxic Chicken" Nobuko have put together a massive birthday compilation spanning 27 tracks. Very proud to have been invited to contribute to this along with some of the biggest names in the lo-bit scene, including Sascha Müller, c4, the hardliner, Microbit Project, and of course the organizers themselves. Really enjoyed making a new lo-bit track after several years of absence from the scene. Got some plans for a new proper floppy as well but not sure when I'll get around to that.

New Year, New Doppelplusungut Album

A very Happy New Year, everyone! Got lots of plans for 2019. Most importantly, work on MDAL/Bintracker-NG will resume shortly. Also, I really want to finish that new beeper album that's been in the pipes for 2 years. But first of all, let's round up 2018.

Of course, tradition requires that a new Doppelplusungut album be released. We literally finished it at the last minute this time, due to having both a big agenda and one week less time than usual. "Fake" is, in several ways, a departure from the past 10 years of ++u. There were some major changes in our workflow, with MIDI taking on a dominant role for the first time. Still trying to work out the details of that. Initially we tried out seq24 and Buzé for main control, neither of which were fully satisfactory. So we ended up driving several tracks through dat zekt's Boss DR-202.

Also, the album is less broad in terms of styles and genres, as we wanted to focus on making Techno this time. Thirdly, the absurdist post-apocalyptic space epos of the past 10 years has finally come to a close, with this year's radio play featuring a new story line revolving around current themes of fake news/facts, filter bubbles, and so forth. Still in a very Doppelplusungut way, of course.

As usual, the music is exclusively available on CD. If you'd like a copy, drop me a mail.

November 20th, 2018

New ZX Spectrum Beeper Engine: StringKS

Wow, a whole year has passed without me writing a new 1-bit driver! Time to rectify that situation. StringKS is based on an idea that I've been toying around with for some time. Since "Synthesis" was released on C64 I've been wondering: Can the ZX beeper do physical modelling synthesis, too? And, as you might have guessed, I'm not accepting "no" as an answer. So here we are. It's a two-channel engine with Karplus-Strong inspired string synthesis. Extending the original Karplus-Strong idea, StringKS can operate on various source data, including noise, rectangular, and saw waves. For most generators, 3-bit volume control is supported. In addition, you can also play PWM samples on one of the channels. The implementation is far from perfect: frequency counters are 8-bit only, and on high notes decay will kick in very quickly, leading to rather short sounds. Still, I think it's a technique worth exploring further.

Singing Mainframes: An Unofficial History of the Dawn of Computer Music

Held a talk on early computer music at the Vintage Computing Festival Berlin last month. The focus is on lesser known and forgotten musical experiments of the early digital age, covering a timespan from the rise of the mainframes end of the 1940s to the dawn of the minicomputers in the mid-60s. A recording of the talk is available on the CCC Media Library. Unfortunately sound and video examples had to be removed for licensing reasons, though you can find links to all the examples at the 1-bit Music Timeline.

May 14th, 2018

VA: Warm Data

Released a droney, experimental ZX beeper track on Bit Rot's Hello World compilation titled "warm data". Very proud to be part of such a fantastic line-up, including high-profile artists such as NES legend Neil Baldwin, my favourite drone composer tMt, Amiga glitch master Joss Manley, robotic overlord robot arm (a joint venture by Goto80 and Jacob Remin), and 1-bit forum's head of operations byte.clone, among others. If you're into glitchy stuff and weird sound experiments, this collection will be right down your alley. As a bonus, the album also includes some executable stuff (including my track) and a video by Rachel Meyers. Big thanks to Mark Lyken for putting this together.

April 26th, 2018

In nihilum reverteris Apple II OST

Composed the title music for the Apple II port of Yerzmyey's new interactive novel, "In nihilum reverteris". You can download the game for free, or check out the music on my soundcloud.

After considering a number of options, I ended up using the Electric Duet 1-bit music driver for this project. Developed by Paul Lutus in 1980, it may be the world's first implementation of the pulse interleaving technique. The author released the source code a few years ago, along with a very enlightening write-up. The original Electric Duet editor already has a pretty good workflow and feels surprisingly modern and tracker-like for a program released in 1981. However, in the end I did opt for writing an XM converter for the sake of efficiency. Overall, I have to say I quite enjoyed my first foray into Apple II territory, not least thanks to the patient help of cybernesto, who did the code for this project.

January 13th, 2018

New Year, New Doppelplusungut, New TIA Music Driver

Happy New Year, everybody! Time for a little write-up on what I've been up to lately. As tradition holds, me and my collegue spent the month of December working on a new Doppelplusungut album. Actually this time marks the 10-year anniversary of our collaboration, so to celebrate the occasion, we ended up releasing a "Best of" our drone works along with the regular album. Highlights this year included dat zekt in some hilarious attempts at playing the trumpet, and writing an Audacity plug-in - without any API documentation nor knowledge of the Nyquist language. I'm telling ya, I was scratching that good ol' head so hard!

Also I successfully participated in some music competitions again - second place in Silly Venture's Atari VCS compo, and first place at DiHalt Lite for my beeper track made with Shiru's new Squat engine. For the VCS track, I actually wrote a new TIA music driver. The gist with that one is that it fixes the ubiquitous detune problem by extending TIA's native 7-bit pitch dividers to 16-bit. For those who want to try it out, an XM converter is included in the download package. By the way the converter is written in Rust, and uses xmkit, my brand-new (and probably super buggy) library crate for extracting information from XM files.

Last but not least, a service announcement - I'm planning to do some under-the-hood changes to this website's framework in the coming weeks, so some sections/features might be temporarily broken.

September 12th, 2017

Introducing Bintracker

After ten months of silently slaving away on the keyboard, the time has come to reveal my latest creation. Lo and behold: bintracker, an open-source, cross-platform music editor for low-level sound routines, and a visual front end for the MDAL project.

Currently, bintracker supports just a few of my recent ZX Spectrum beeper engines, including betaphase, PhaserX, PhaseSqueek, and the brand-new, triangle wave generating Pytha engine, which I silently released a couple of months ago. In the future, I hope to add many more ZX beeper engines, as well support for other platforms such as the TI graphing calculators.

Almost everything in bintracker is written from scratch in modern C++, including the (presently not very accurate) ZX Spectrum emulation. The only external code comes from Allegro5 serving as a portable graphics library, and pugixml which takes care of parsing MDAL configuration files. I chose Allegro5 over SDL2 simply because compiling the minimal SDL2 example already gave me a dozen memory leaks or so. Probably none of these posed any serious issue, but I still prefer to not burden myself with the technical debt of third parties. Also, while Allegro5 does have some issues on its own, the clean and well-designed interface and outstanding documentation are a huge plus in my book.

Well, what are you waiting for? Download your free copy of bintracker today and get trackin'! And please let me hear about any bugs you find as well as your feature requests on the 1-bit Forum or through the issue tracker on github.

March 7th, 2017

2017 Q1 Updates

It's been quite a while, so I guess it's about time for a roundup of things I've been up to lately.

As usual, I spent the end of 2016 with my mate DJ dat zekt, recording a new album for our trash-punk project Doppelplusungut. It was pretty tough work this time, but in the end it was worth it. Highlights included a guest appearance by Fido from Cirucs Elawuti and his singing saw, and finally using our Busch microtronic 2090, an educational 4-bit computer from the early 80s, which we transformed into a gate sequencer with some TTL logic and some software coded on paper using the 2090's pseudo-assembly language (source code). As usual, the album is exclusively available on CD-R. Drop me a mail if you want a copy.

In January, I quite successfully participated in the annual Winter Chip competition at - each of my 3 entries scored gold in their respective categories (ZX beeper, Channel F, TED/Plus4). I also wrote a new

November 24th, 2016

New ZX Beeper Engine: wtbeep

I swear, this is my last beeper engine for 2016. In the last days I got bored and started throwing random code at that "fast" generator I've been using recently. At some point things actually got interesting, and I started to get some sounds that normally would require some sort of digi/PCM playback. And thus, wtbeep was born. In terms of capabilities, it's somewhere between Tritone, BetaPhase, and qaop. There are 32 different realtime-generated "waveforms" in total. I could probably have added more, but 32 was the maximum number I could squeeze into one word next to a 10-bit frequency divider. Again, I'm only providing the source code, since I don't have time to make a converter at the moment.

Talking About HoustonTracker 2

Gave a short presentation on HoustonTracker 2 at SteemFest in Amsterdam a couple of weeks ago, and in the meantime a recording of my talk has found its way onto Youtube. Check it out if you'd like to hear me rambling about calculator music for ten minutes.

November 21st, 2016

New ZX Beeper Engine: povver

Back when I wrote the music driver used in HoustonTracker, I kept getting mysterious dropouts in the sound when two channels were playing the same note. Eventually I discovered that this was due to the channels running with an inverted phase, effectively cancelling out each other. A bit more experimentation revealed that this phenomenon could actually be used as a crude form of volume control. Alone Coder and I tried to implement this technique on the Spectrum, but we never quite managed to get it into a usable state. Now, with the recent discovery of a faster tone generation technique, I couldn't resist doing another test implementation. It still suffers from much of the same problems that the earlier routine had, namely that it is quite noisy. That nonwithstanding, here's the source code, if you want to take a look.

October 19th, 2016

MDAL - First Public Beta

The Music Data Abstraction Language (MDAL) project has been taking up a lot of my time in the past two months, and after three days of hardcore bugfixing I finally advanced it to a point where I can show off a working beta. The whole thing is still at a very early stage though, so don't expect to get much use out of it yet.

October 15th, 2016

New ZX Beeper Engine: BetaPhase

A rather unassuming three-channel engine sound-wise, BetaPhase is in fact a little technical revolution. It features a never-before used tone generator technique which is faster than any other pulse-interleaving method. As the name might suggest, BetaPhase is primarily intended to provide a framework for testing the capabilities of the new technique. For the time being, BetaPhase implements an original idea proposed by Shiru, which is to use phasing to control the duty cycle (duty threshold comparison wouldn't work). It also uses scalers, something proposed by zilogat0r a while ago, though I'm pretty sure he didn't imagine them quite the way they are implemented here. Long story short, BetaPhase is available as source code only, and may be subject to frequent changes.

September 23rd, 2016

New ZX Beeper Engine: PhaserX

While playing around with Phaser-style synthesis, I came up with some fresh ideas centered around modulating the duty cycle in sync with the tone generators. PhaserX is essentially a testcase for these new concepts. It's two channels only, but it has a load of configurable parameters. No XM converter again, source code on github as usual. I've also done a little write-up on the techniques used.

September 2nd, 2016

HoustonTracker v2.20 Released

Time for a HoustonTracker update! It's got more effects, it's got more fine-grained speed control, and best of all, it ships with a new savestate manager utility which can import tracks from older versions. Check out this tutorial video on Youtube for an overview over the latest feature additions. Got a new demo tune as well, though I made this one at a rather early stage of development, hence it actually doesn't demonstrate most of the new effects.

August 11th, 2016

New ZX Beeper Engine: Phase Squeek

Phase Squeek is an unholy cross-over between Shiru's Phaser engines and zilogat0r's Squeeker, with loads of configurable sound parameters. Also known as TOUPEE, the Totally Overpowered, Utterly Pointless Extreme Engine. No XM converter this time, because there's no way this engine can be simulated with an XM template. Demo tune + source code + download

August 1st, 2016

Combining AY and ZX Beeper

Been doing some tests with a music driver that couples the AY soundchip with the beeper. This might actually be the first engine ever to do a full sync between AY and ULA sounds. Not sure why it hasn't been done before, there's really no big magic required. Simply update AY registers once every 256 beeper soundloops, that's all there is to it. I'm too lazy to make proper release of this, but if you like you can study the source code, which also includes a short demo tune.

July 31st, 2016

New ZX Beeper Engine: Squeeker Plus

Making an engine based on zilogat0r's wonderful Squeeker engine (written in 2000, when the ZX beeper scene had almost died completely) has been on my to-do list for a long time. Now I've finally gotten around to it, adding per-tick channel-independant duty cycle control, a noise generator, and some percussion to the classic. Very pleased with this one! Demo tune + source code + download (includes an XM converter).

June 10th, 2016

Two New ZX Beeper Engines: zbmod and Beepertoy v0.1

Two for the price of one! Exhibit A: zbmod, a 3 channel MOD player. It's meant to replace the notorious SampleTracker, which until now was the only engine to mix 3 sample channels on the Speccy beeper. I think it's fair to say that zbmod sounds much better :D It also has a better tone range, and the ability to loop samples. Demo tune + source code + download (includes an XM converter).
Exhibit B: Beepertoy v0.1. Now this one is a beast! It brings together various different engines under one hood. So you can have the best of both the pin pulse and pulse interleaving world, as well as advanced wavetable synthesis with bleeding edge fx technology. Demo tune + source code + download (does not come with an XM converter, unfortunately).

May 26th, 2016

New ZX Spectrum Beeper Engine: Octode 2k16

Yes, it's been pretty silent on here lately... but rest assured, any rumours about me quitting are completely unfounded. The past weeks I have been busy putting together the next HoustonTracker release, which will be out soon. Also, I'm learning C++ and cross-platform GUI programming with wxWidgets. Nevertheless, it was about time for some asm practise, so here's my latest beeper engine creation - Octode 2k16. In short, it's a re-write of Octode PWM with better sound and increased frequency range. Check out the demo tune on Soundcloud, view the source code on github, and most importantly download the package (includes an XM converter).

April 5th, 2016

Low-pass and High-pass Filters on ZX Beeper

Achieved a new breakthrough in 1-bit technology by implementing the first ever low-pass and high-pass filters on the ZX Spectrum Beeper. Not sure what to do with that yet, so for the time being there's just this .tap with a little test loop for you to check out. First loop is unfiltered output, followed by low-pass and finally high-pass filtered output.

April 4th, 2016

QED68 - 4 Channel Sample Playback on TI-92 Plus

Got a new 1-bit routine ready that will play 4 channel modules with PCM WAV samples on the Texas Instruments TI-92 Plus graphing calculators. If you happen to own a TI-92 Plus, you can download the QED68 package (includes an XM converter), view the source on github, or check out this heavy metal demo track. Many thanks to 1ng for donating his TI to the good cause.

April 2nd, 2016

5th DMG Channel Discoverd

Umm, well, not really. This was just some high class trolling for April Fool's Day. Nevertheless, I did code up a little something that will produce 5 voices on a standard Gameboy. This is achieved by mixing two voices on the Gameboy's second pulse wave channel, using 1-bit pulse interleaving. Watch the video, or grab this ROM. Most emulators will either produce horrible noise or no sound at all, so make sure you check this on actual DMG hardware. mednafen and Gambatte (on highest resampler setting) will work as well.

March 17th, 2016

HoustonTracker 2 Nominated for A Meteoriks Award

Very pleased to announce that my TI calculator tracker has been nominated for a Meteoriks award. For those who aren't in the know, the Meteoriks awards are pretty much the Oscars of the demoscene. The winners will be announced at the upcoming Revision demoparty. So until then, keep your fingers crossed for me, will ya?

March 3rd, 2016

New ZX Spectrum Beeper Engine: fluidcore

Expanding on the ideas from my recently released "wtfx" player, I've created another new 1-bit sound routine for the ZX Spectrum beeper. Fluidcore mixes 4 channels with a total of 17 volume levels, mixed at an incredible 23 KHz. The engine can also handle overdrive, like my "qaop" player. Also, unlike wtfx, the fluidcore does include an XM converter. Watch the demonstration video on youtube, listen to a hardware recording on soundcloud, view the source code on github, and most importantly download the package and converter. Last but not least, here's the pouet entry.

FEBRUARY 29th, 2016

Got A New Camera!

The parents of my girlfriend were kind enough to give me their old camera. It's a Praktica MTL-3, an analogue single-lens reflex camera made by well-known East German manufacturer Pentacon in the late 1970s and early 1980s. This one is in near-mint condition, and comes with several extra lenses and other auxilliary equipment. Some of you may know that my old camera got stolen in Sweden last year, so it goes without saying that I'm very happy to receive this gift. Looking forward to getting back into analogue photography as soon as possible.

FEBRUARY 19th, 2016

HoustonTracker 2.10 Released

The first major update for HoustonTracker 2 is here. Version 2.10 features a more powerful sound driver, and several new effects. Keyhandling is more streamlined, and a sizeable amount of bugs has been fixed. For a full list of updates, check the development thread on 1bitforum. I also made a quick demo tune with the new version. Last but not least, here's a direct download link for the new version.

FEBRUARY 17th, 2016 Back Online

Yup, the site's back up after a prolonged downtime. All the content should now be accessible again. I sincerely apologize for any inconvenience caused.

FEBRUARY 3rd, 2016

New ZX Spectrum Beeper Engine: wtfx

In my search for a more accurate, distortion-free PCM wavetable playback on the ZX beeper, I've come up with a new engine. Named "wtfx", the routine mixes 2 channels with 4 volume levels each at a blazing 17.5 KHz. This time, I've followed the advice by introspec and implemented 8t output alignment in order to work around the Spectrum's I/O contention issue. wtfx also features tick-based effects, meaning you can change pitch and instrument settings within a row of song data. Unfortunately this means there is will be no XM converter for this engine, and until the routine is implemented in a proper editor, the only way to make music with it is to code it by hand, in assembly. So, it's more of a tech-demo than an actual music making package. For now, you can watch a short demonstration video , view the source code on github, download the package for further inspection, and upvote the entry on pouet.

JANUARY 31st, 2016

irrlicht project featured on IOUT Open Mixtape 2015

I'm pleased to announce that my ZX Spectrum track "Showdown" is featured on the brand-new Interpretation Of Universal Transmissions' Open Mixtape 2015 compilation, which was released yesterday. The special thing about this compilation is that each of the artists was also asked to submit a few thoughts in writing. So, if you're interested, read my latest rantings on 1-bit music. Anyway, stream and/or download the compilation on IOUT's bandcamp.

JANUARY 22th, 2016

Website Version 5.0 Launched

More than five years after the last major overhaul of this website, it was about time for a new layout. As I have since adopted "Digital Minimalism" as my artistic credo, a minimalistic layout seemed appropriate. The new site has been hand-coded from scratch, like all the previous versions.

JANUARY 13th, 2016

XM Converter for Squeeker Beeper Routine

Making an XM converter for Zilogat0r's infamous Squeeker 1-bit routine has been on my to-do list for a long time. I absolutely love the sound of this four channel ZX Spectrum routine and it's unique synthesis core, but so far the rather cumbersome BASIC editor by Factor6, which was the only available interface until now, has put me off actually doing some music with it. Now I finally got around to making an XM converter for it. It's based on the 2012 version of the routine (the original having been written back in 2000) and uses a new data format of my own design, which is less memory efficient than the original, but loads faster and allows in-tune tempo changes. Download the converter here.

JANUARY 10th, 2016

New Track for DiHalt Lite Beeper Music Competition

Managed to finish a new ZX Spectrum beeper music track, just in time for the 1-bit music compo at DiHalt Lite 2016. Decided to give my own quattropic sound driver a whirl this time. I actually came in second in an overall very strong competition, so thanks to everybody who voted for me! The track is called "Frozen Flames", you can stream/grab it for free on the official vote page as long as it's still online.

DECEMBER 28th, 2015

New Doppelplusungut Album Ready

The same procedure as every year James... At the end of the year, tradition requires that I meet up with DJ dat zekt to record a new album for our trash-punk project Doppelplusungut. The new album contains 28 tracks (plus the obligatory "hidden" bonus material) with a wide range of styles ranging from Blues to Speedcore, made on an even wider range of mostly obscure instruments. This year's setup even included a refrigerator. Of course Doppelplusungut's trademark multi-dimensional space radio play epos is continued as well. Amazingly, we finished the whole thing in just three weeks, including production of the initial run of 50 CD-Rs. As usual, the album is only available through personal contact, or via a certain record store in Berlin.

NOVEMBER 11th, 2015

Computer Music in 1949?

As some of you know, researching the origins of computer music is one of my long-running side projects. Earlier this year, I was able to confirm that the first public demonstration of computer music had in fact taken place a few months before the events surrounding the Australian CSIRAC machine in 1951. Now however, I've discovered a spectacular source that pushes the date back as far as the year 1949. read more on Ancient Wonderworld...

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.

SEPTEMBER 24th, 2015

New ZX Spectrum Beeper Engine: Tritone FX

Strangely enough, after finishing the 7d7e project, I was even more in the mood to create new 1-bit sound routines. So today I present you Tritone FX, a clone of Shiru's Tritone engine with some added features.

SEPTEMBER 20th, 2015

7d7e: Seven New ZX Spectrum Sound Routines in Seven Days

The past couple of weeks, I went on a coding spree, making a number of new 1-bit sound routines. Instead of just throwing the routines out on the net, I decided to release them within the scope of a little art project, publishing one engine per day over the course of one week. Hopefully this will help a bit to spread my vision of code as an artform in it's own right.