Document:Synergy MIDI Tracker - Standalone Replay
Author:bsp
Date:26-May-2026

1 Table of Contents

2 About

synergy_replay is the free and open-source (MIT license) standalone player for the Synergy sequencer (aka Syntracker) and Eureka DAW.
It can be integrated in video games and demos for playing music and sound effects.
Instrument data is stored in .syn files, sequencer data in .mid Standard MIDI files (SMF).
The replay uses a "C" API.

3 Demo

This demo tune is ~26kb in size (compressed), uses (up to) 194 stereo voices, and consists of 26 tracks and 24 procedurally generated samples (~4727kb in RAM). Some instruments use realtime phase modulation sound synthesis (bass, chords, some of the percussion), and there are 13 audio FX (eq, delay, chorus, reverb) and 42 output sends.
The procedural samples (including the bass and snare drums) are generated by Eureka's built-in Cycle modular softsynth, and some are generated from procedural track MIDI sequences (e.g. the rain effects). The opening sound uses a procedurally generated wavetable.
No pre-baked (static) samples were used in this demo tune.
The average CPU load is ~14% on a single M2pro CPU core, and the (multi-)sample precalculation takes a little under a second.

4 History

With the rise of arcade machines, home computers and video game console in the 1980ies, and their ever increasing audio capabilities due to synth chips like the Commodore 64's SID 6581/8580, Ricoh's 2A0x (NES), Atari's POKEY, General Instruments' AY-3-8912 (CPC, ZX Spectrum), Yamaha's YM (arcades and Sega Genesis) and OPL series (MS-DOS PCs and MSX), Hudson Soft's HuC6280 (PC-Engine), Commodore Amiga's Paula, and Sony's SPC700 (SNES), came a slew of music players and editors for producing sound effects and music for video games.
At the same time, aided by the popularity and affordability of the C64, Atari ST, and Amiga home computers in particular, people, mostly in Europe, began to form non-profit demoscene groups who produced (non-interactive) programs with stunning graphics and sound, often rivaling, or even exceeding the quality of commercial games 1.
While the music for video games, especially in Japan, was often composed using MIDI or MML (Music Macro Language), in Europe the preferred formats were Trackers, which originated in the demoscene, most notably 1987's Soundtracker (and its mod2 format) for the Commodore Amiga 34.
With the advent of CDROMs in the late 80ies (e.g. the PC-Engine CD-ROM2 in 1988), it became viable to produce music by all means necessary, including professional audio gear / synthesizers, or even full blown orchestras.
By the end of the millenium, the hardware capabilities of computers and game consoles skyrocketed. In 1999, the Playstation 2 for example came with 48 (mono) / 24 (stereo) hardware channels, and, not soon after, the original X-Box (in 2001) featured 256 hardware stereo voices (NVidia MCPX/SoundStorm APU).
For a while, (audio-)hardware limitations were still a challenge on mobile devices like the Gameboy Advance but later systems like the Nintendo 3DS or the Sony PSP came with dedicated DSPs (digital signal processors) for mixing audio and decoding MP3 streams (often not accessible directly on a low level but only via software APIs).
With virtually limitless sound capabilities, CD / DVD like sample rates and high audio channels counts, the data sizes for the voice sample data soon exceeded that of a mixed down and compressed stereo stream, making the latter the preferred and most common way of storing music for games today.

1
2
3
4

5 Realtime music and effects

With MP3s / compressed audio streams having a clear production workflow advantage over realtime sample / sound synthesis, what are the reasons for using non-standard editors and replay routines in this day and age ?
Here are some:
Granted, if you are working on the next billion dollar AAA game, this is most likely not for you and you will want to stick to the standard workflows and tools.
However, for indie-games (and demos), this could be an interesting option that goes well beyond traditional tracker modules in terms of audio quality and replay features, while still retaining a low data / RAM / CPU footprint.
Last but not least: It's More Fun to Compute.

5

6 Supported features

synergy_replay supports a large subset of all the Synergy / Eureka editor features.
Here's a technical feature list summary:

6.1 Restrictions

The following features are currently not supported by the standalone replay (some may be added in future versions):
The default configuration uses the following (configurable) limits:

6.2 MIDI

Even though, at its heart, Synergy is a tracker (but also has piano-roll, drum, and timeline editors), sequencer events are stored as MIDI streams.
This is
It does support classic tracker effect commands via the bundled PTFX script, though.

7 Workflow

8 Building

First of all, check out the GIT repository at https://github.com/bsp2/tks.git.

8.1 macOS

% cd tks
% . ./setenv_macos.sh
% cd tksampler
% m bin_sr
% cd synergy_replay
% m clean
% m bin
% ./sr_replay
macOS build steps
note_s
tested in the homebrew environment (using Apple's CLANG-based XCode compiler)
note_s
install portaudio via brew install portaudio

8.2 Linux

% cd tks
% . ./setenv_linux.sh
% cd tksampler
% m bin_sr
% cd synergy_replay
% m clean
% m bin
% ./sr_replay
Linux build steps
note_s
on Debian / Ubuntu, install portaudio via sudo apt-get install portaudio19-dev

9 API

The main functions (in chronological order) are:
note_s
st_plugin_single_init_fxn_t is a pointer to the plugin init function, e.g. amp_init in amp.c
note_s
sr_cycle_calc_waveform_fxn_t is a pointer to the auto-generated cycle_calc_waveform_<songname> function in autogen_calc_<songname>_float.c (example)
See sr.h and main.c details.

9.1 External MIDI events

The external MIDI API sr_midi_* functions can be used to trigger sound effects, pre-rendered sequences, and modulate synth parameters and effect / mixbus sends.
void sr_midi_program_change   (sr_proj_t proj, u8 port, u8 ch, u8  program);
void sr_midi_note_on          (sr_proj_t proj, u8 port, u8 ch, u8  note, u8  vel);
void sr_midi_note_off         (sr_proj_t proj, u8 port, u8 ch, u8  note, u8  vel);
void sr_midi_midi_pitchbend   (sr_proj_t proj, u8 port, u8 ch, u16 pb);
void sr_midi_channel_pressure (sr_proj_t proj, u8 port, u8 ch, u8  v);
void sr_midi_poly_pressure    (sr_proj_t proj, u8 port, u8 ch, u8  note, u8  v);
void sr_midi_cc               (sr_proj_t proj, u8 port, u8 ch, u8  cc,   u8  v);
void sr_midi_rpn              (sr_proj_t proj, u8 port, u8 ch, u16 rpn,  u16 v);
external MIDI API
caution_s
These functions must only be called from the same thread that calls sr_process().

10 Downloads

11 License

Distributed under terms of the MIT license (https://opensource.org/licenses/MIT)
Copyright 2006-2026 by bsp

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
MIT license

Valid HTML 4.01 Transitional

Document created in 16ms on 26-May-2026 12:38:56