Archive for the mod Category

XMP goes full circle: earlier this week I merged a patch from Lorence Lombardo that allows the player to work in AHI-compatible Amiga systems. Of course it’s not the most efficient way to play Amiga formats on an Amiga, but a curious development nonetheless. I was surprised to see how easy it is to configure the audio output in this port, even compared to the simple descriptor/ioctl approach used in most Unixes:

    int fd;

    if ((fd = open("AUDIO:B/16/F44100/C/2/BUFFER/358000, O_WRONLY)) < 0)
        return -1;
    write(fd, data, len);
    close(fd);

I also spent some time preparing a Windows port built with MinGW. If the Amiga API above was the simplest to implement, the WinMM API is in the opposite extreme (words like “clumsy” and “design disaster” come quickly to mind). The following code does the exacly same thing using the WinMM API. Don’t read if you have a weak stomach.

(more…)

Inspired by the UNIX History Graphing Project, I started to chart the relationship between different families of trackers. The result is the Tracker History Graphing Project — currently it only contains the Soundtracker and MED lineages and a few MS-DOS trackers, but to plan is to extend it to become a comprehensive map of the majority of known trackers.

It is interesting to note that many of the most famous Amiga trackers share the same codebase which was placed in public domain by the early authors. Building upon existing and testing codebase created generations of trackers through true evolution. In the PC side, on the other hand, each author was very protective regarding his code and every new tracker author reinvented the wheel creating new quirk-infested replayer routines.

Also note from the excerpt above that, contrary to popular belief that it stands from “Mahoney and Kaktus”, the “M.K.” magic ID in four-channel MODs was actually added to Soundtracker 2.3 by Michael Kleps. According to Soundtracker 2.2: “now the d.o.c news ! 1. the next soundtracker is finished ( 31 instruments ) , but only for internal use !!”. The Soundtracker History 1.05 says “12.1988 - Amiga - Soundtracker v2.2 - Unknown [Michael Kleps] Of DOC now with 31 imstruments (from now we could find M.K. inside)” but this is not the case, at least in my copy of ST 2.2.

Following the port of xmp to QNX6 I wiped out Neutrino from the test machine and installed BeOS Max Edition. A new BeOS sound driver was written, based on the OSX CoreAudio driver and documentation found in the Internet. Some tweaking was required to build the driver since the SoundPlayer API is in C++ and the rest of application is C.

BeOS port of xmp

Sound quality is fine, terminal settings work correctly and latency is decent. Should we try Plan9 now?

Less than two months ago xmp was dug out of its grave, and today I’m pleased to announce the availability of version 2.2.0 — the first stable release in more than six years (RPM packages for Mandriva 2008.0 are already available). This version fixes a truckload of bugs and adds support for many module formats, including some from Atari ST/Falcon, Acorn Archimedes and Apple IIgs. Other highlights are the MacOS X driver and the Audacious plugin.

There’s a lot of ugly things in the code that are still to be fixed, but this version is certainly much, much better than the previous stable. Let’s hope the next version doesn’t take nearly as much time to be released as did this one.

Update: Ok, so we have a patch already. This is needed to build the package in non-Linux systems, especially OSX.

Update 2: You may want to get xmp 2.2.1 instead.

Recent rediscovery of xmp and the amount of improvements on the player since then is proof that modplaying is still one of my obsessions favorite idle-time activities. Like coding, or reverse engineering file formats. Put them together, and what you get is a modplayer with support to strange file formats you possibly never heard of, such as STMIK (a precursor of Future Crew’s famous S3M format), MASI (used in some old DOS games such as Epic Pinball and Jazz Jackrabbit), DIGI Booster (Amiga), TCB Tracker (Atari) and so on. This time we had a different and intriguing challenge: a simple module format with a rather strange sound sample encoding. If you’re interested in retrocomputing, reverse engineering, investigative stories, or Python, read on.

(more…)

After some fun with “live” mod playing, Ademar asking me about mod playing and Paul Wise offering to maintain the project, I decided to do some work on the old xmp codebase and put it back into service. Recent changes include 64bit-safe code, an OSX driver, many Digitrakker MDL fixes and support for Atari ST/Falcon module formats. The changes were not announced, and it’s nice to see that someone already noticed!

My feeling is to rediscover an old toy long forgotten, and I’m very impressed with the fact that during the last week I could easily implement or fix things that were too hard or too boring to do many years ago. Also the code looks much uglier now. Do you have old Protracker mod files (or other obscure module formats) lying around? Give xmp a try and see if it builds/works correctly for you :)

A couple of months ago I bought a synth, and have spent some time trying to learn to play it. I can tell you: the whole process is much more efficient if you have fun and the right motivation — pick a music genre you like, something (preferably not too difficult) you’d like to hear yourself playing, and… play it. I chose old Amiga tracker music.

Protracker modules have a special place in my memories, from the countless hours debugging a player that was the first application I wrote for Linux and Unix. Recent work with Takashi Iwai, who I met back in the mod player days, prompted me to publish this story. Distant Call by Ronny Nordeide (a.k.a. Mr. Man/Andromeda) was one of my favorite four-channel mods back then, and now I found it’s also an easy and enjoyable piece to play — don’t be fooled, the somewhat uninspired and unrehearsed video above doesn’t make justice to its beautiful, evocative atmosphere.

The patch I used is a modified “Nice Piano” from Roland’s XV Collection, with a higher cutoff frequency for brightness, increased release to work around the lack of a sustain pedal and transposed down one octave. It is built around a bright, chorused JD-style piano sound similar to the one used on the original track (which is possibly from a JV-80). Not a flawless performance — any modplayer does better — but overall I’m satisfied with the result. What should I try to play next?