A downloadable game

Purist Tracker is a XM player for Sega Dreamcast.

The user interface is primarily designed for genuine Sega Dreamcast hardware with a VGA adapter. CVBS and SCART outputs are also partially supported, but most of the UI is not usable.

Supported input devices:

  • Dreamcast Controller
  • Dreamcast Mouse (recommended)

Dreamcast emulators (Flycast, Demul, Redream, Reicast, etc..) are not supported. Emulators are detected and discriminated against on start-up. If you do use an emulator, please configure it to use mouse controls. Note that the real Dreamcast Mouse provides a substantially superior experience compared to the mouse implemented in emulators.

Background:

The Dreamcast AICA and Saturn SCSP are the most powerful fixed-function audio processors ever created. Despite this, they are very under-utilized in games.

 My goal in creating Purist Tracker is to demonstrate a small fraction of their true potential for realtime audio synthesis.

Why XM?

.XM is a file format conceptually similar to .MIDI, and was originally used with a DOS program called FastTracker 2 in 1994. Compared to .MIDI, .XM is attractive because it also includes sample data in the file itself, making them slightly more portable.

The UI design is intended to strongly resemble 1990s UI design, while also making use of some of Dreamcast's powerful graphics features.

The .XM interpreter itself was written from-scratch during the jam, based on study of the excellent Unofficial XM file format specification and OpenMPT Effect Reference manuals. Purist Tracker directly interprets real .XM files at run-time without any intermediate conversions.

Music/Art/Assets:

All music, instrument sounds and cover art were composed, designed, and drawn from-scratch during the Jam.

Font:

Three fonts are used; these were not created during the Jam:

- BmPlus_Tandy1K-II_225L (8×9 px) (main UI font)

- Terminus Font (16×32 px) (error screen font)

- Terminus Font (12x24 px) (error screen font)

Credits:

Programmer:

  • purist

UI designer

  • purist
  • Shiroiii

Music composer:

  • Shiroiii
  • Cai

Instrument engineer:

  • Shiroiii
  • Cai

Icon artist:

  • Shiroiii

Cover artist:

  • Shiroiii
  • Lotus Turtle

Special thanks:

  • skmp

Qualifiers:

Your game must offer a 4:3 display ratio by default. You may let users change it. You may use a frame, as long as it is not interactive or impact gameplay.

Purist Tracker initializes the Dreamcast SPG to 320x240 (4:3) for CVBS and SCART and 640x480 (4:3) by default for VGA. It is also possible to select 720x480 (3:2) in the options menu, available via the Start menu.

When your game first loads, display a 32BitJam logo. The logo can be a static 2D image or a fully 3D animation sequence

Purist Tracker displays a 3D animation sequence. On genuine Dreamcast hardware, this is the first scene displayed after the program is loaded.

Why 720x480?

As far as I'm aware, reasonably-priced 4:3 monitors are no longer being produced in any form. In contrast, 720x480 allows for pixel-perfect integer scaling with relatively common and reasonably priced 3:2 1440p monitors.

To my knowledge, this is the first Dreamcast release that offers a 720x480 resolution option.

Can this play random .XM files from modarchive?

Yes, though not all XM effects are implemented. Accuracy will largely depend on how many unimplemented effects that particular XM file uses. There are also a few limits on total file size and sample length.

StatusReleased
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
Authorpurist
Tags2D, Casual, No AI, Pixel Art, Singleplayer

Download

Download
.mp4 (Gameplay footage, real hardware capture) 73 MB
Download
.iso (for burning to a physical CD-R from Linux) 3.7 MB
Download
.cdi (GD-ROM emulators, Windows CD-R burning) 11 MB
Download
.elf (for emulators and real hardware via serial) 9.2 MB

Comments

Log in with itch.io to leave a comment.

Hi This is very interesting as a chiptune musician, can I ask what it is the intended workflow if I wanted to run my own xm files. Open the cdi add the xm files and remake the cdi ? 

Many XM features are not supported, and there are several limitations.

There is not really an "intended workflow" at the moment beyond just "build the demo for the game jam submission". Currently, you'd need to rebuild the entire project from source to change which .xm files are included, with minor edits to the source code.

If you have a .xm file you'd like me to try to play with this software, I'd be happy to make a build for you (possibly with spontaneous newly-developed XM features if I notice your .xm file depends on something I didn't implement yet).

Thanks for the reply, I'd be happy adjust the XM to suit if I knew the exact command and sample limitations, but happy to send you it either way, I ordered a dreamcast after seeing your tracker/player but had been meaning to get one anyway, so still getting it set up for homebrew, I play live shows in the chipscene and it would be amazing to get a dreamcast on stage. Is it a possibility to have it load xm files from the folder in gdemu or something in future? so close to having a music scene for dreamcast

> Is it a possibility to have it load xm files from the folder in gdemu or something in future
Another game jam entry, https://purist.itch.io/dreamcast-jvm, does work this way, loading Java class files from the iso9660 filesystem. I just didn't bother to implement it for the XM player. Yes, it's definitely possible.

> so close to having a music scene for dreamcast

I think this would be interesting, but perhaps (even despite my own efforts), there's still a lot of work that could be done:

- AICA has hardware volume envelope generators, but the XM musicians I worked with for this jam were timid to use them, because there currently isn't good tooling to simulate them in an artist-friendly way.

- Similarly, AICA also has pitch and amplitude LFOs

- AICA also has a hardware low pass filter.

I think a properly min-maxed collections of sampled instruments for Dreamcast would make very liberal use of all of these features--with good tools, it would allow musicians to greatly reduce the storage requirements (in bytes) for a given desired instrument, while still producing a satisfactory sound.

Even more under-utilized is the AICA DSP, which can produce arbitrary real-time audio effects at "zero cost" to the performance of the rest of the Dreamcast application. Per channel effects could include but are not limited to:

- surround
- reverb
- reflection
- echo/delay
- chorus
- distortion

Etc...

I think to properly unleash the potential of the AICA, one would need to create a complete "DAW" specifically for the AICA, to expose all of these effects in an artist-friendly way.

It also has the yamaha XG/XS midi engine right, I have a few similar hardware synths like yamaha qy100/nsx-39 (hatsune miku) that has these same dsp effects I believe. I write everything in trackers, for c64, gameboy, amiga, megadrive/genesis,psp they all have native trackers or cross platform tools (you can use furnace/deflemask and use simple tools to convert song to bin file for megadrive for example), the chiptune scene mostly uses these.

Seeing chips like the saturn (interesting chip) that has zero music tools to the  power that the AICA chip has. until your project, seemingly untouched.

Yeah it would be possible it seems could have a native tracker on the dreamcast. Imagine your inputting notes into the tracker via the official keyboard and mouse, the tracker supports mod or xm commands but extends to harness the dsp and midi engine also. using instruments from both the aica midi engine and samples selected from folder. Testing some notes live playing on the keyboard before inputting.  Thats the sort of thing I dream of. 

I see it has some official but rare midi input hardware also.  Things like c64/amiga, nes, snes, megadrive, gameboy you can hook a midi keyboard or sequencer to in a similar way. 

Of course we are used to working with limitations with whatever tools even remotely work. Having your player read xm files from a folder would be enough to make it viable.
commands I used in my track were 0 (arp) , 4 (vibrato), 2 (porta down), EC (note cut), E9(retrig), 3(porta to note) and volume column commands like volume number and -(reduce by amount)

Thanks again for your thoughts. You can find me at avrilcadabra on youtube and such, love using consoles and old computers for music.


Nice i think this is the first i have seen doing this love it thanks for sharing..

Thanks for reviewing!

I feel the AICA is still under-utilized in this demo, and I'd love to see even fancier usages.