31 Jul 2020
Hello Friends of Bintracker,
Surprise, surprise! Still managed to get a few things done since the last update, even though Bintracker development is officially on hold for the time being. Real life things evolved a bit slower than expected, which gave me the opportunity to work on some smaller features here and there. This will be the last batch for now, though, as I expect to be fully tied up for the month of August.
Without further ado, let me announce a new feature that many of you folks out there will be happy to hear about: MOS 6502 support is done! This means Commodore’s and Atari’s lines of 8-bit computers are within reach, among many others. For now, I’ve added support for the Atari VCS/2600, in form of my tiatune player. I also want to try and add Paul Slocum’s classic Music Kit 2 at some point. However, this is quite low on the priority list, considering there already exists an excellent tool for making music with standard TIA capabilities in the form of TIAtracker.
I’ve also added the Motorola 6809 instruction set, which in turn allowed me to add one of my favorite platforms, the Dragon 32/64 (a clone of the Tandy CoCo, so essentially that one is also supported now). The only supported player for now is The Invisible Man’s Buzzplayer, but there are more to come for this machine’s lovely 6-bit DAC. The 6809 instruction set itself turned into some rather nasty spaghetti code, though. Seems like the assembler’s design isn’t a very good match for such RISC-ish instruction sets. It’s not a huge problem right now, but it’ll inevitably come back to haunt me with AVR8 and 68000, so I definitely need to do some thinking here.
Last but not least, I’ve also added support for the Exidy Sorcerer, a rather obscure Z80-based machine that flopped in the US (Exidy’s home country), but apparently enjoyed some moderate success in Australia, the Netherlands, and Belgium. I had never even heard of that machine, but was recently approached by Exidy enthusiast Michael Borthwick, who told me about his research into the 4 Voice Music System, a rare 6-bit DAC-based sound extension for the machine. Since I always love me some 6-bit sound, I couldn’t resist hacking up a quick and dirty test engine for the thing, so here we are.
Aside from new platforms and engines, I’ve also done some work on the GUI, MDAL, and started to work on some more plugins. Furthermore, I’ve been improving exception handling across all of Bintracker, getting rid of one rather clunky dependency in the process.
For the GUI, I’ve been expanding the core edit system, which is nearing completion. Bintracker now has Porous Paste, Transpose, and various other quality of life improvements for editing modules. I’ve also finally done some work to improve the interaction between the block (pattern) and sequence (order list) display: moving around in the sequence will now highlight the matching block instances, and moving around in blocks will in turn highlight the matching sequence row. Also you can now jump between blocks and orders with the Tab key. The main things that are missing now are folding, support for selecting by mouse, and support for multi-tabbed layouts, that is, display for engines that use tables, samples, and so forth. The display itself works already, but focus control doesn’t, yet (that’s the part of Bintracker that tracks which part of the interface you’re currently interacting with). Furthermore, I did a number of low-level improvements, such as integrating dialog popups with Bintracker’s meta-widget system. This means the plugin API is pretty much stable now, so feel free to start hacking on plugins, if you like!
Unfortunately, there have also been a number of setbacks. I tried to implement tooltips (to replace the information that is displayed in modelines when hovering over buttons), but this destabilized the entire application, so I had to disable them for now. I’ve also still not managed to get panes to scale properly, which in turn is holding back folding. Looks like the underlying ttk::panedwindow implementation is not really made for what I have in mind, so I probably need to replace that with something else.
On the bright side, MDAL now supports modifier commands. Let’s hear it for detune, yay! In preparation of things to come, I’ve also added support for WAV files, including a high quality resampler. The latter was quite the challenge, since I’m only just starting to rediscover my love for maths, after having it ruined many years ago in high school by a string of awful teachers.
Regarding plugins, I’ve started to work on a funky pseudo-random number suite. Implemented some modern generators, as well as a number of historical ones, including von Neumann’s Middle Square Method, and IBM’s infamous RANDU. This work is hardly a priority at this point, but it’s something I can do whenever I’ve got half an hour to spare here or there, which would otherwise not be enough to work on more complex features. In any case, I think all you algoravers out there will find this useful later on! For now, you can already check out the “unzufall” plugin, which is a graphical front-end for the PRNG suite.
That’s all for this time. Hope you all stay healthy, and enjoy the rest of the summer!