Updated 7 November 2026

Music: MOD, S3M, XM, MIDI, MP3

Tracker music (MOD, S3M, XM — one song per format at a time), MIDI through a SoundFont / the system sound bank, and MP3 (emulator only).

Conventions on every page: Availability says whether a symbol exists on the console BIOS, the emulator, or both. c8b and C8B are the same table.

Contents

ProTracker MOD (c8b.mod)

c8b.mod.load

c8b.mod.load(path)

Loads a module file (stops the current song).

  • Returns: boolean
  • Availability: Console (BIOS) and emulator
c8b.mod.load("music/song.mod")
c8b.mod.setLooping(true)
c8b.mod.play()

c8b.mod.unload

c8b.mod.unload()

Frees the loaded module.

  • Availability: Console (BIOS) and emulator

c8b.mod.play

c8b.mod.play()

Starts playback.

  • Availability: Console (BIOS) and emulator

c8b.mod.stop

c8b.mod.stop()

Stops playback.

  • Availability: Console (BIOS) and emulator

c8b.mod.pause

c8b.mod.pause()

Pauses.

  • Availability: Console (BIOS) and emulator

c8b.mod.resume

c8b.mod.resume()

Resumes.

  • Availability: Console (BIOS) and emulator

c8b.mod.setVolume

c8b.mod.setVolume(volume)

Volume 0-64 (clamped; integer).

  • Availability: Console (BIOS) and emulator

c8b.mod.getVolume

c8b.mod.getVolume()

Volume 0-64.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.mod.setLooping

c8b.mod.setLooping(flag)

Loop at song end.

  • Availability: Console (BIOS) and emulator

c8b.mod.isPlaying

c8b.mod.isPlaying()

Playing state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.mod.isPaused

c8b.mod.isPaused()

Paused state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.mod.isLoaded

c8b.mod.isLoaded()

Whether a module is loaded.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.mod.getPosition

c8b.mod.getPosition()

Current order (song) position.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.mod.setPosition

c8b.mod.setPosition(order)

Jumps to an order position.

  • Availability: Console (BIOS) and emulator

c8b.mod.getRow

c8b.mod.getRow()

Current row in the pattern.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.mod.getTitle

c8b.mod.getTitle()

Module title.

  • Returns: string
  • Availability: Console (BIOS) and emulator

c8b.mod.getNumChannels

c8b.mod.getNumChannels()

Channel count.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.mod.getSongLength

c8b.mod.getSongLength()

Number of orders.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.mod.setBassBoost

c8b.mod.setBassBoost(enabled, [gainDb=6])

Player bass boost.

  • Availability: Console (BIOS) and emulator

c8b.mod.setWarmth

c8b.mod.setWarmth(enabled, [amount=128])

Player warmth filter.

  • Availability: Console (BIOS) and emulator

c8b.mod.isBassBoostEnabled

c8b.mod.isBassBoostEnabled()

Bass boost state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.mod.isWarmthEnabled

c8b.mod.isWarmthEnabled()

Warmth state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.mod.getBPM

c8b.mod.getBPM()

Current BPM.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.mod.getTempo

c8b.mod.getTempo()

Current tempo/speed value (ticks per row).

  • Returns: integer
  • Availability: Console (BIOS) and emulator

Scream Tracker 3 (c8b.s3m)

c8b.s3m.load

c8b.s3m.load(path)

Loads a module file (stops the current song).

  • Returns: boolean
  • Availability: Console (BIOS) and emulator
c8b.s3m.load("music/song.s3m")
c8b.s3m.setLooping(true)
c8b.s3m.play()

c8b.s3m.unload

c8b.s3m.unload()

Frees the loaded module.

  • Availability: Console (BIOS) and emulator

c8b.s3m.play

c8b.s3m.play()

Starts playback.

  • Availability: Console (BIOS) and emulator

c8b.s3m.stop

c8b.s3m.stop()

Stops playback.

  • Availability: Console (BIOS) and emulator

c8b.s3m.pause

c8b.s3m.pause()

Pauses.

  • Availability: Console (BIOS) and emulator

c8b.s3m.resume

c8b.s3m.resume()

Resumes.

  • Availability: Console (BIOS) and emulator

c8b.s3m.setVolume

c8b.s3m.setVolume(volume)

Volume 0-64 (clamped; integer).

  • Availability: Console (BIOS) and emulator

c8b.s3m.getVolume

c8b.s3m.getVolume()

Volume 0-64.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.s3m.setLooping

c8b.s3m.setLooping(flag)

Loop at song end.

  • Availability: Console (BIOS) and emulator

c8b.s3m.isPlaying

c8b.s3m.isPlaying()

Playing state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.s3m.isPaused

c8b.s3m.isPaused()

Paused state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.s3m.isLoaded

c8b.s3m.isLoaded()

Whether a module is loaded.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.s3m.getPosition

c8b.s3m.getPosition()

Current order (song) position.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.s3m.setPosition

c8b.s3m.setPosition(order)

Jumps to an order position.

  • Availability: Console (BIOS) and emulator

c8b.s3m.getRow

c8b.s3m.getRow()

Current row in the pattern.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.s3m.getTitle

c8b.s3m.getTitle()

Module title.

  • Returns: string
  • Availability: Console (BIOS) and emulator

c8b.s3m.getNumChannels

c8b.s3m.getNumChannels()

Channel count.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.s3m.getSongLength

c8b.s3m.getSongLength()

Number of orders.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.s3m.setBassBoost

c8b.s3m.setBassBoost(enabled, [gainDb=6])

Player bass boost.

  • Availability: Console (BIOS) and emulator

c8b.s3m.setWarmth

c8b.s3m.setWarmth(enabled, [amount=128])

Player warmth filter.

  • Availability: Console (BIOS) and emulator

c8b.s3m.isBassBoostEnabled

c8b.s3m.isBassBoostEnabled()

Bass boost state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.s3m.isWarmthEnabled

c8b.s3m.isWarmthEnabled()

Warmth state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.s3m.getBPM

c8b.s3m.getBPM()

Current BPM.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.s3m.getSpeed

c8b.s3m.getSpeed()

Current tempo/speed value (ticks per row).

  • Returns: integer
  • Availability: Console (BIOS) and emulator

FastTracker 2 XM (c8b.xm)

c8b.xm.load

c8b.xm.load(path)

Loads a module file (stops the current song).

  • Returns: boolean
  • Availability: Console (BIOS) and emulator
c8b.xm.load("music/song.xm")
c8b.xm.setLooping(true)
c8b.xm.play()

c8b.xm.unload

c8b.xm.unload()

Frees the loaded module.

  • Availability: Console (BIOS) and emulator

c8b.xm.play

c8b.xm.play()

Starts playback.

  • Availability: Console (BIOS) and emulator

c8b.xm.stop

c8b.xm.stop()

Stops playback.

  • Availability: Console (BIOS) and emulator

c8b.xm.pause

c8b.xm.pause()

Pauses.

  • Availability: Console (BIOS) and emulator

c8b.xm.resume

c8b.xm.resume()

Resumes.

  • Availability: Console (BIOS) and emulator

c8b.xm.setVolume

c8b.xm.setVolume(volume)

Volume 0-64 (clamped; integer).

  • Availability: Console (BIOS) and emulator

c8b.xm.getVolume

c8b.xm.getVolume()

Volume 0-64.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.xm.setLooping

c8b.xm.setLooping(flag)

Loop at song end.

  • Availability: Console (BIOS) and emulator

c8b.xm.isPlaying

c8b.xm.isPlaying()

Playing state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.xm.isPaused

c8b.xm.isPaused()

Paused state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.xm.isLoaded

c8b.xm.isLoaded()

Whether a module is loaded.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.xm.getPosition

c8b.xm.getPosition()

Current order (song) position.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.xm.setPosition

c8b.xm.setPosition(order)

Jumps to an order position.

  • Availability: Console (BIOS) and emulator

c8b.xm.getRow

c8b.xm.getRow()

Current row in the pattern.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.xm.getTitle

c8b.xm.getTitle()

Module title.

  • Returns: string
  • Availability: Console (BIOS) and emulator

c8b.xm.getNumChannels

c8b.xm.getNumChannels()

Channel count.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.xm.getSongLength

c8b.xm.getSongLength()

Number of orders.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.xm.setBassBoost

c8b.xm.setBassBoost(enabled, [gainDb=6])

Player bass boost.

  • Availability: Console (BIOS) and emulator

c8b.xm.setWarmth

c8b.xm.setWarmth(enabled, [amount=128])

Player warmth filter.

  • Availability: Console (BIOS) and emulator

c8b.xm.isBassBoostEnabled

c8b.xm.isBassBoostEnabled()

Bass boost state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.xm.isWarmthEnabled

c8b.xm.isWarmthEnabled()

Warmth state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.xm.getBPM

c8b.xm.getBPM()

Current BPM.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.xm.getTempo

c8b.xm.getTempo()

Current tempo/speed value (ticks per row).

  • Returns: integer
  • Availability: Console (BIOS) and emulator

MIDI (c8b.midi, SF2/system sound bank)

c8b.midi.init

c8b.midi.init(sf2Path, [sampleRate=22050])

Initialises the synthesizer with an SF2 sound font.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.initFromQSPI

c8b.midi.initFromQSPI([sampleRate=22050])

Initialises from the system sound bank in QSPI flash (emulator: a sound bank loaded at startup). The console does not do this automatically for games.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.isInitialized

c8b.midi.isInitialized()

Whether a sound font is loaded.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.hasSoundFont

c8b.midi.hasSoundFont()

Whether the system sound bank is present.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.shutdown

c8b.midi.shutdown()

Frees the synthesizer.

  • Availability: Console (BIOS) and emulator

c8b.midi.load

c8b.midi.load(path)

Loads a .mid file.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.loadFromPointer

c8b.midi.loadFromPointer(ptr, size)

Loads MIDI data from memory (pointer as light userdata or integer, e.g. from a native plugin).

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.play

c8b.midi.play()

Plays.

  • Availability: Console (BIOS) and emulator

c8b.midi.stop

c8b.midi.stop()

Stops.

  • Availability: Console (BIOS) and emulator

c8b.midi.pause

c8b.midi.pause()

Pauses.

  • Availability: Console (BIOS) and emulator

c8b.midi.resume

c8b.midi.resume()

Resumes.

  • Availability: Console (BIOS) and emulator

c8b.midi.isPlaying

c8b.midi.isPlaying()

Playing.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.isLoaded

c8b.midi.isLoaded()

Loaded.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.setVolume

c8b.midi.setVolume(v)

Volume 0.0-1.0.

  • Availability: Console (BIOS) and emulator

c8b.midi.getVolume

c8b.midi.getVolume()

Volume.

  • Returns: number
  • Availability: Console (BIOS) and emulator

c8b.midi.setLooping

c8b.midi.setLooping(flag)

Looping.

  • Availability: Console (BIOS) and emulator

c8b.midi.getPosition

c8b.midi.getPosition()

Position in ms.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.midi.getDuration

c8b.midi.getDuration()

Duration in ms.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.midi.seek

c8b.midi.seek(ms)

Seeks.

  • Availability: Console (BIOS) and emulator

c8b.midi.getPresetCount

c8b.midi.getPresetCount()

Presets in the sound font.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.midi.getPresetName

c8b.midi.getPresetName(index)

Preset name or nil.

  • Returns: string
  • Availability: Console (BIOS) and emulator

c8b.midi.setBassBoost

c8b.midi.setBassBoost(enabled, [gainDb=4])

Bass boost.

  • Availability: Console (BIOS) and emulator

c8b.midi.isBassBoostEnabled

c8b.midi.isBassBoostEnabled()

Bass boost state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.setWarmth

c8b.midi.setWarmth(enabled, [amount=140])

Warmth.

  • Availability: Console (BIOS) and emulator

c8b.midi.isWarmthEnabled

c8b.midi.isWarmthEnabled()

Warmth state.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.midi.getPatternPosition

c8b.midi.getPatternPosition()

Virtual pattern index (4 s per pattern) for tracker-style visualisers.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.midi.getRow

c8b.midi.getRow()

Virtual row 0-63.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.midi.getSongLength

c8b.midi.getSongLength()

Number of virtual patterns.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.midi.getNumChannels

c8b.midi.getNumChannels()

Always 16.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

MP3 (c8b.mp3)

c8b.mp3.load

c8b.mp3.load(path)

Loads an MP3 file.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator
  • Note: MP3 playback works only in the emulator. On the console load returns false and all queries return defaults.

c8b.mp3.play

c8b.mp3.play()

Plays.

  • Availability: Console (BIOS) and emulator

c8b.mp3.stop

c8b.mp3.stop()

Stops.

  • Availability: Console (BIOS) and emulator

c8b.mp3.pause

c8b.mp3.pause()

Pauses.

  • Availability: Console (BIOS) and emulator

c8b.mp3.resume

c8b.mp3.resume()

Resumes.

  • Availability: Console (BIOS) and emulator

c8b.mp3.isLoaded

c8b.mp3.isLoaded()

Loaded.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.mp3.isPlaying

c8b.mp3.isPlaying()

Playing.

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.mp3.setLooping

c8b.mp3.setLooping(flag)

Looping.

  • Availability: Console (BIOS) and emulator

c8b.mp3.setVolume

c8b.mp3.setVolume(v)

Volume 0.0-1.0.

  • Availability: Console (BIOS) and emulator

c8b.mp3.getVolume

c8b.mp3.getVolume()

Volume.

  • Returns: number
  • Availability: Console (BIOS) and emulator

c8b.mp3.getPosition

c8b.mp3.getPosition()

Position in ms.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.mp3.getDuration

c8b.mp3.getDuration()

Duration in ms.

  • Returns: integer
  • Availability: Console (BIOS) and emulator

c8b.mp3.seek

c8b.mp3.seek(ms)

Seeks (negative clamped to 0).

  • Returns: boolean
  • Availability: Console (BIOS) and emulator

c8b.mp3.getSpectrum

c8b.mp3.getSpectrum()

Spectrum bands of the MP3 stream.

  • Returns: table
  • Availability: Console (BIOS) and emulator