BeRoTracker Download
Version 1.00.2026.09.29 · Linux, Windows & macOS

BeRoTracker

BeRoTracker is a music tracker for Linux, Windows and macOS. It follows the keyboard-based workflow of Impulse Tracker, with sample editing, plugins, MIDI and OPL3 synthesis. Download the ZIP, extract it and run.

256 channels Pattern matrix VST2, VST3, CLAP, BTP OPL3 synthesis Portable
BeRoTracker pattern editor showing five channels, hexadecimal row numbers and song controls.
The pattern editor with the 8×8 font and the default Camouflage palette.
Features

Writing music in BeRoTracker

Enter notes in patterns and arrange them into a song. You can use samples, plugin instruments and OPL3 voices together, edit drums in separate patterns, and connect effects in the modular editor.

Pattern editor

Up to 256 channels, numbered in hexadecimal from 00. Transpose, vary, roll or amplify a selection, extend it to match the clipboard, or render a pattern to a sample.

Pattern matrix

Patterns run down, channels across, one cell each. A cell can send its channel to a channel pattern, so one bassline is written once and read by every pattern that wants it. Shift + F11.

Drum patterns

A separate editor for drum patterns, with drum instruments and its own order list. Press the pattern editor shortcut again to switch between the two editors.

Samples and instruments

Edit waveforms, apply effects, resample audio or generate samples with the built-in synthesizer. Instruments have note maps, jump points and envelopes with ADSR tools and tools to double or halve their length.

Modular routing

Connect amplifiers, a parametric EQ, built-in effects and individual FM voices in the modular editor. The EQ includes presets.

Plugins

Supports VST2, VST3, CLAP and BeRoTracker's own BTP format. Plugin scan results are cached. Plugins can open their own editor windows, and their parameters can be automated.

MIDI

Import and export MIDI files, assign MIDI controllers to automation columns, and send playback to external instruments through a MIDI output port.

OPL3 synthesis

Use OPL3 instruments alongside samples and save them in the BRT file. They support ^^^ and === just as samples do. The importer reads 42 AdLib formats, including HSC, AdLib Tracker 2 and several game music formats, and 17 kinds of AdLib instrument file and instrument bank, from SBI and IBK to Doom's GENMIDI. A song can be written back out as an AdLib RAW register capture.

Display

The interface is drawn with Vulkan where the driver offers it, with OpenGL otherwise and with Metal on macOS, and scales with the window in every case. Choose a high-resolution font or the classic 8×8 font, and customise the 16-colour palette.

Portable

No installer needed. Extract the archive to a writable folder and start the program. Settings, caches and logs are stored alongside the executable.

Channel patterns and the pattern matrix

A channel pattern is one column lifted out of a pattern and given a life of its own, which any number of patterns can then read. The trackers one has to pay for do this with an order list of their own, one per channel. Here it comes out of the pattern itself, so nothing is put beside the order list: the pattern stays the unit of the song, and a channel only says where its notes come from.

The matrix
Shift + F11, on the same key as the order list: one says in which sequence the patterns play, the other what stands in them. Patterns run down, channels across. A mark per cell says whether the channel lies in the pattern and carries notes, carries only an automation lane, is empty, or reads from a channel pattern, and a pattern that the order list calls up is marked as well. Alt + N swaps the marks for the channel pattern numbers, Alt + F shows all patterns, only those in the order list, or only those that are not empty.
Typing in a cell
A number typed into a cell points that channel at that channel pattern, one hex place at a time with the cursor moving on, the way the pattern editor works. A number nobody has used yet comes into being by being typed. FFFF means no channel pattern at all, the space bar repeats the row above, and Enter jumps to that cell in the pattern editor.
In and out
Alt + E lifts the column into a channel pattern of its own and leaves what lay in the pattern lying underneath, so sending the channel home brings it back. Alt + B writes what the channel reads back into the pattern and drops the redirect, Alt + U gives this channel a copy of its own where others read the same one, and Alt + S points it at an empty one to silence it without taking anything away.
Length and phase
A channel pattern grows to the length of the longest pattern reading it, so a column can always be written over its whole length. How often it comes round is a separate question and nothing happens to it by itself: Shift + R sets the period, Alt + R halves it and Shift + Alt + R doubles it, Shift + P sets which row the pattern's first row reaches. One shorter than its pattern and not set to repeat simply runs out and is empty after its last row, rather than coming round behind the author's back.
In the pattern editor
A redirected channel says so in its header, with the channel pattern's number and name beside the channel number. Editing there edits the shared thing, which is the point of it; Alt + U in the matrix is the way out when it is not what was meant. The five automation lanes belong to the channel and travel with it.
Old players keep working
The pattern blocks of a BRT file are written as the song is heard: a channel reading from a channel pattern has those notes laid into the pattern data before it is written. An older BeRoTracker opens such a song and plays it correctly, and loses nothing but the structure.
The layer is a block of its own
The channel patterns and the map pointing at them live in two separate BRT blocks, CPDA and CPMP, each with its length in front of it, which is what every reader of this format has always stepped over when it met a block it did not know. A song that uses no channel pattern writes neither block and comes out byte for byte the way it did before this layer existed.
Newer files stay readable
The map block names the lowest reader version allowed to apply it. A reader below that skips the layer and plays the resolved song rather than applying a map it understands only half, which would change what is heard. The size of one map entry stands in the block head too, so a later field that changes nothing about the sound can be appended and older readers walk past it; a field that does change the sound raises the minimum version instead.
Saving says so
When a song was opened carrying a layer this version may not apply, the save path warns before it writes a byte, because writing the song out again would leave that layer behind.
Exporting
Saving as MOD, S3M, XM or IT writes the resolved notes as well, so a song built out of channel patterns needs no flattening by hand before it leaves the house.
Engine

Mixing and audio output

The mixer supports 256 channels and several interpolation methods, from nearest neighbour to windowed SINC with up to 1024 taps.

Mixing
256 channels, volume ramping, click removal, retro low-pass and high-pass filters, and biquad filters
Resampling
Nearest, linear, cubic spline, polyphase FIR, and windowed SINC from 8 up to 1024 taps
Effects
Parametric EQ with presets, amplifier and plugins, connected in the modular editor
Linux audio
ALSA, PipeWire, PulseAudio, JACK
Windows audio
WinMM, WASAPI, DirectSound, ASIO
macOS audio
CoreAudio, with MIDI in and out over CoreMIDI
Export
WAV and MIDI, the whole song or individual channels, instruments and samples; AdLib RAW as an OPL register capture

Colour palettes

Seven palettes are included, with Camouflage as the default. You can also load and save your own. Each palette has 16 colours.

Camouflage default
Light Blue
Midnight Tracking
Volcanic
Formats

Supported file formats

Use BRT to save songs with all BeRoTracker features. You can also save as MOD, S3M, XM or IT, within the limits of each format.

Load
BRTMODS3MXMITMT2MTMDMFIMFOKTSTM669MIDI
Load AdLib / FM
A2MA2TRADFMKCFFAMDXMSSATSA2DFMMTKHSCLDSD00KSMMADMTRMKJPLXPISDMOXSMDTMSNGRAWDROCMFROLLAASCISDBAGDSQXJBMMXADBMFIMFWLF
Save
BRTMODS3MXMIT
Plugins
BTPVST2VST3CLAP
Import
SF2DLSWAVFLACOGGMIDI
AdLib instruments and banks
IBKBNKOP2TMBSBO3FIBA2BSBIINSCIFSGIFINA2IA2F
Export
WAVMIDIRAW
Archives
ZIPMDZS3ZXMZITZ

Supported files can be loaded directly from ZIP archives, including nested archives. To save a compressed module, use .zip or a compressed module extension such as .xmz.

AdLib import

BeRoTracker imports 42 AdLib formats: tracker modules, sequenced music, OPL register captures and game music. They are converted to patterns and OPL3 instruments that you can edit and use alongside samples. Conversion has some limits, described below. Instrument files and banks of the same family are read as well, 17 kinds of them.

Tracker modules

These formats already use patterns and order lists, which are imported into BeRoTracker's pattern editor.

A2M, A2T
AdLib Tracker 2, including older file versions. Up to 20 tracks and 256 rows per pattern, with register macros. Supports SIXPACK, LZW, LZSS, aPLib and LZH compression.
RAD
Reality AdLib Tracker versions 1 and 2.1. Version 1 uses nine voices; 2.1 adds four-operator instruments, instrument volume and names, named tracks, riffs and detuning, with two chip voices per channel.
FMK
FM Kingtracker. 18 tracks with four-operator instruments and rhythm-mode drums.
CFF
Boomtracker 4 (CUD-FM-File). Reads both uncompressed and YsComp-compressed files.
SAT, SA2
Surprise! Adlib Tracker, file versions 1, 5 and 6, and Surprise! Adlib Tracker 2, versions 8 and 9. The latter stores individual tracks rather than complete patterns.
AMD, XMS
AMusic and MaDoKaN96 XMS files, including packed patterns.
DFM
Digital-FM. Handles one- and two-byte cells and the format's 135 Hz tick rate.
MTK
MPU-401 Trakker. Reads memory dumps packed with Ross Data Compression.
HSC
HSC-Tracker. Detected by file size and layout, since the format has no identifying signature.
CMF
SoundFX Macs Opera, identified by its A.H. signature. It shares the CMF extension with the Creative Music File and is otherwise unrelated to it: a 99-position order list, 64-row patterns and six-byte events, played at 18.2 rows per second divided by 1, 2 or 4. All 10 test files loaded, with all 18,610 note pitches and all 8,323 drum events matching the reference, and all 10 were byte-identical on a round trip.
LDS
LOUDNESS Sound System. Nine voices, pitch in 1/16-semitone steps, and per-voice pattern offsets and transposition in the order list.
MAD
Mlat Adlib Tracker. One-byte cells for notes, releases and pattern endings. Each track has a fixed instrument; the format has no volume commands.
MTR
Master Tracker. Both versions are supported, with their text headers and hexadecimal counts.
PIS
Beni Tracker. Each order-list position selects a separate pattern column for each of the nine voices.
DTM
DeFy Adlib Tracker. Uses a fixed speed of two ticks per row.
XSM
eXtra Simple Music. Nine voices, one instrument per voice and one-byte cells.
SNG
Faust Music Creator. Instruments start at full volume and have individual F-number pitch offsets.
SNG + INS
AdLib Tracker 1.0. Keep the companion INS instrument file in the same directory as the song.
DMO
TwinTeam. Encrypted, compressed Scream Tracker 3 modules, decoded and loaded through the S3M importer.

Per-voice sequences

These formats store independent event sequences for each voice. The importer runs the sequences and writes the resulting notes into editable patterns.

D00
EdLib by Vibrants, compressed and uncompressed. Imports one playback tick per row to preserve event timing.
KSM
Ken Silverman Music. Runs at 240 Hz, with five of its 16 tracks used for rhythm-mode drums. Requires insts.dat in the song directory.
MKJ
MKJamz. Nine interleaved sequences of 16-bit events, with no volume commands.
PLX
PALLADIX Sound System. Variable-length events with flags indicating which fields are present. Pitch can be stored as a direct frequency value.
JBM
JBM Adlib Music by Johannes Bjerregaard. Eleven free-running voices, each following a list of sequence numbers, with the tick rate stored as a timer divider. All 9 test files loaded, with all 8,353 note pitches and all 954 drum events matching the reference, and all 9 were byte-identical on a round trip.

OPL register captures

Captures contain timed writes to the OPL registers. The importer reconstructs notes, instruments, volume changes, pitch bends and rhythm-mode drums from those writes, then converts them to patterns. Timing changes are recorded in the pattern rows.

RAW
RAC raw AdLib captures. Supports fractional tick rates and rate changes during playback. All 316 test files loaded; comparison with the original player gave 99.95% note-pitch agreement and matching drum events. 308 of the 316 were byte-identical on a round trip.
IMF, WLF
id Software AdLib music. Uses 560 Hz, or 700 Hz for the Wolfenstein ending. Note-pitch agreement with the original driver was 98.8% in the tested files.
DRO
DOSBox raw OPL captures. Millisecond timing, with header variants detected from the file layout. Both available test files had matching note pitches and were byte-identical on a round trip.
SNG
SNGPlay. Register/value pairs, with register zero used for delays. This is separate from the two tracker formats that also use the SNG extension.

A song can also be written back out as a RAW capture. The export plays it through a mixer of its own and records every write that reaches the OPL3 chip, timed by the chip's own sample clock rather than by the mixer's blocks. The call rate is selectable from 50 to 2000 per second, with 1000 as the default, which is fine enough for the steps of a register macro as well as for ticks.

Music with a dedicated playback driver

These formats store instruments and events interpreted by a playback driver. The importers reproduce the driver's behaviour and convert its OPL output into patterns. The resulting tracks follow chip voices, so their layout can differ from the source file's channels.

CMF
Creative Music File. Reproduces the driver's pitch tables, rhythm mode and detuning. All 459 test files loaded; 378,494 of 378,496 notes matched the reference pitch, and all drum events matched. Every file was byte-identical on a round trip.
M
Ultima 6 Music. LZW-compressed byte code, run by the driver at 60 Hz, with notes, mute factors, pitch slides, vibrato and a subsong stack. All 12 test files loaded, with all 7,787 note pitches matching the reference, and all 12 were byte-identical on a round trip.
ROL
AdLib Visual Composer. Separate sequences for notes, instruments, volume and pitch, with nine melodic voices or 11 voices in percussion mode. Keep standard.bnk beside the song. All 247 test files loaded, with matching note and drum pitches, and all 247 were byte-identical on a round trip.
LAA
LucasArts AdLib MIDI with the ADL  signature, and the older Lucasfilm format. Tested with 257 LucasArts and 27 Lucasfilm files.
SCI
Sierra AdLib MIDI. Requires patch.003 beside the song. Tested with 104 EGA files. VGA support is implemented but has no test files; only the first subsong is played.
SDB, AGD, SQX
HERAD by Stéphane Picq. Supports HSQ and SQX compression and instrument macros for operator levels, feedback, transposition and pitch slides. All 24 test files loaded, with 93.8% note-pitch agreement, and all 24 were byte-identical on a round trip. Excluding two AGD files that use the upper nine OPL3 voices, note-pitch agreement was 98.2%.

The LucasArts, Lucasfilm and Sierra formats share an importer. All 388 test files loaded, with all 246,674 note pitches matching the reference, and all 388 were byte-identical on a round trip. Standard MIDI and CMF have separate importers.

XAD formats

XAD wraps music data in a shared header that identifies the player and stores the title, author and speed. All six player formats are supported.

Hypnosis
Nine-channel rows containing notes only, with a fixed table of 12 F-numbers defining the tuning.
PSI
Nine independent sequences. The importer follows their loops to determine the song length.
BMF
All three versions, with packed sequences running at 70, 68.5 or 18.2 Hz. Reads standalone .bmf files as well as BMF data inside XAD.
FLASH
Tracker format with instruments, an order list and 64-row patterns.
RAT
Tracker format with instrument-specific tuning ratios.
HYBRID
Player and music from the Domark game MiG-29M Super Fulcrum, named after the cracktro that reused them. Each order-list position selects nine tracks. Pitch slides run on every playback tick.

Instrument files and banks

Apart from the songs, BeRoTracker reads 17 kinds of AdLib instrument file and instrument bank. Every one of them holds the same thing, the eleven register bytes of one chip voice, once over for an instrument and many times over for a bank; what they differ in is the wrapping. Most name themselves with a signature, and the ones that carry none are told apart by their extension and their length, the way the trackers of that family tell them apart too. In the instrument browser a bank is walked into like a module, so single instruments can be picked out of it, while a single instrument file goes straight into a slot. Either way the list says which kind it found.

IBK
Sound Blaster instrument bank. 128 timbres with their names behind them.
BNK
AdLib's own bank, the one its Visual Composer reads. A name list points into a list of records, and every field of a record is a byte of its own instead of being folded into the registers of the chip.
OP2
DMX driver bank, which is what a GENMIDI lump of a Doom is.
TMB
Apogee Sound System bank. 256 records of 13 bytes and not a name in the whole file, so it is recognised by its extension and its length.
SB, O3
Sound Blaster banks of the Unix side: 128 SBI records one behind the other. They are checked before everything else, because each one opens with the signature of a single instrument and would otherwise read as its own first timbre.
FIB
Bank of the FIN family, holding the same records with two names in front of their eleven bytes.
A2B
AdLib Tracker 2 bank, squeezed with one of the packers that tracker carries.
SBI, 2OP, 4OP
Sound Blaster timbre, one instrument. 4OP in place of the signature carries both operator pairs of one voice.
INS
AdLib's own instrument, the single file beside the bank above. 80 bytes, or 54 where the two waveforms and the name were left off, and every field is a word.
INS, raw
The smaller trackers of that family. Eleven bytes and a twelfth for a slide, and nothing else; a longer file of that name is read as a Surprise! Adlib Tracker record instead.
CIF
CUD-FM instrument, which holds its eleven bytes the way the HSC family does.
SGI
One instrument written with one field per byte, of which only the lowest bits are used.
FIN
One instrument with two names in front of its eleven bytes, the single file beside the FIB bank.
A2I, A2F
AdLib Tracker 2 instrument, and the same instrument with its register macro, both packed like the bank.

AdLib song formats are import-only; the one way back out is the RAW register capture described above. Effects are mapped to BeRoTracker commands or instrument settings where possible. Unsupported commands are omitted, including HSC's two individual operator-level effects and some Boomtracker commands.

Playback can differ from the original. BeRoTracker uses period-based pitches, tick timing and Scream Tracker / Impulse Tracker effects for both samples and FM voices. Source tick rates are converted to tempo values with 16 bits of fractional precision, but slides and vibrato use BeRoTracker's own units. AdLib Tracker 2 has the most complete support: register macros, carrier-level volume and its original note table are preserved. Older formats use exact note pitches rather than that table's roughly 14.5-cent downward offset. Round-trip figures compare an imported song against the same song saved as BRT and loaded again, so a byte-identical result means the import survives being edited and stored. The test results above apply to the tested files; compatibility varies by format and song.

For formats without patterns, the importer chooses a row length that preserves note events while keeping the song within the 240-pattern limit. The tested id Software IMF files used four playback ticks per row without losing notes. If a voice is triggered twice within a single source tick, only the second trigger is kept.

Requirements

System requirements

Graphics
On Linux and Windows, Vulkan 1.0 or OpenGL 4.3 with a compatibility profile: BeRoTracker looks for a Vulkan device that can present to the window and falls back to OpenGL when there is none, and --force-opengl skips that check. If neither is available it reports an error at startup. On macOS it draws through Metal and nothing else; there is no OpenGL there.
Linux
x86-64 with X11 or Wayland. Wayland requires EGL and libxkbcommon for keyboard input.
Windows
x86-64. Uses Windows system DLLs; no additional runtime installation is needed.
macOS
ARM64, macOS 11 or newer, which is every Mac with an Apple chip. There is no Intel build.
Audio
One of the audio backends listed above.
Keyboard
Note-key layouts can be set to QWERTY, QWERTZ or AZERTY. Alt Gr is treated as Alt on every system.
Disk
Space for the extracted archive, settings, caches and logs. On Linux and Windows the application folder must be writable; on macOS the bundle is never written into and everything goes to ~/Library/Application Support/BeRoTracker.
Download

Download BeRoTracker

The ZIP includes the Linux and Windows executables and the macOS application bundle, icons, a Linux desktop entry and EQ presets. Extract it to a writable folder.

BeRoTracker.zip · 26.6 MiB · version 1.00.2026.09.29 SHA-256 f368822b0b354dfeb962489ef6c16fee43ea4451134f377b33d1d033889bcf3d
Download BeRoTracker ZIP

BeRoTracker is free to download. If you find it useful, you can support its development at donate.rosseaux.com.

Linux

$ unzip BeRoTracker.zip
$ cd BeRoTracker
$ ./BeRoTracker

# Optional: install the icon and menu entry
$ ./install-desktop.sh

Windows

Extract the ZIP, then run
the Windows executable:

BeRoTracker\BeRoTracker.exe

macOS

$ unzip BeRoTracker.zip
$ xattr -dr com.apple.quarantine BeRoTracker
$ open BeRoTracker/BeRoTracker.app

# Before dragging the bundle elsewhere
$ cd BeRoTracker
$ ./BeRoTrackerMacOSPrepareDragDropInstallation

The macOS build is signed but not notarised, so Gatekeeper stops the first start. Either take the quarantine mark off the extracted folder as shown above, or right-click the bundle, choose Open and answer the question once. Out of the archive BeRoTracker.app shares the palettes and EQ presets with the other two builds, which lie beside it; BeRoTrackerMacOSPrepareDragDropInstallation puts a set of both inside the bundle so it can be moved anywhere, /Applications included, and takes nothing out of the folder. BeRoTrackerMacOS starts the same program from a terminal.