The players

What player to use?

Arkos Tracker 2 comes with several players. Which one to use depends on your needs.

Note (1): Since alpha4, a new feature called “player configuration” allows to compile only the parts of the players that your song needs. It saves a lot of memory and CPU! Check out this feature here.

Note (2): Since alpha4, the Z80 players target Rasm. Please check the compatibility page for how to use them with any other assembler.

Generic player (AKG)

This is the classical player, the kind STarKos and AT1 produced. It can play all the FM features of the song, but does not handle samples directly: it is up to you to play them. This player is the best compromise between power and efficiency. The songs and player are optimized both in speed and memory. This is probably the player to use in a game, as it handles long music very well. It also has a support for sound effects. Demos may use it, but cycle-accurate code won’t like it: it can not be stabilized anymore, or with great difficulty, because of the new effect management.

Basically, if you don’t know what player to use, use this one.

Pros:

  • Supports all the features of AT2 (all effects, subsongs, etc.).
  • Best compromise between speed/memory.
  • Sound effect support.

Cons:

  • Can not be stabilized, due to its complexity.
  • Rather large player (almost 3kb… Unless you use Player Configuration!).

More information here.

Streamed player (AKY)

This is new for AT2. Some demos use their own player based on compressed YM. This allows for very fast player but huge music. AKY brings something new: both fast player and a excellent compression ratio! This player is 2x faster than AKG (7-12 scanlines on a CPC), but the songs are also 2-3x bigger (yet still 2-3x smaller than the existing YM-based solutions, ah!). Games will probably not make use of such fast player, and will suffer from the memory overhead. The best clients will be demos. Even better, the code also exists in a stabilized version, allowing its use in NOP-accurate loops!

Pros:

  • Fast as hell.
  • Exists in a “stabilized” version, i.e. NOP-accurate (on an Amstrad CPC).

Cons:

  • Larger songs.
  • Sound effects not managed (though easy to implement if someone asks me to do it).

More information here.

Lightweight player (AKL)

You are working on a 4k demo, or a 64k game? You have a tremendous hard time having a music in your overcrowded production? This player is for you: it is both light and produce short songs. This comes at a price: only a subset of AT2 features are available (see below). However, this is actually enough for 95 % of released music (…why am I bothering with all these effects?). Also, to save space, the code of the player is shared among tracks: indirections and sub-routines make it slower (in AT terminology. It is still faster than most generic player! Max: 35 scanlines on a CPC). It can also be fitted with the sound effect player.

Pros:

  • Smaller player and songs.
  • Sound effects managed.

Cons:

  • Slower than the other AT2 players.
  • Less features.

More information here.

RAW

This is not a player, but a binary format anyone can read. What’s its use?

  • Use it is a pivot format to convert AT2 songs into a format of your own.
  • Use its simple structure to play time-consuming music, such as MOD.

Platform interoperability?

Phrased differently: can a song exported in a PSG of 1000000 Hz (like on an Amstrad CPC) sounds well on a Spectrum? It depends mostly on the player, and a bit on the song:

  • AKY encodes all periods, software and hardware. So it will sound very different from a platform to another. You should export the song once again, targeting the right PSG frequency.
  • AKG and Lightweight songs are composed of notes, not period. So in theory, the song can be directly used to another platform. However, pitch effects are period-based, so they will sound differently.

Morality: listen to the song on the real hardware, or load the song in AT2 and set the PSG according to the hardware your are using. Correct the pitch effects/tables if needed!