GoatTracker module

From Just Solve the File Format Problem
Jump to: navigation, search
File Format
Name GoatTracker module
Ontology
Extension(s) .sng
Wikidata ID Q105852999

.sng is the native project file format used by GoatTracker, a popular cross-platform music tracker designed to compose music for the Commodore 64 SID (Sound Interface Device) chip.

The format stores the compositional data (patterns, instrument parameters, and sequence orders) rather than actual audio waveforms. It is intended to be opened and edited within the GoatTracker software, as opposed to the compiled .sid format which is used for playback.

Contents

Software

Description

The .sng format is a binary file format. It is structured to map directly to GoatTracker's internal memory structures, containing the following primary components:

  • Header and Metadata: Includes a file signature, format version number, and song title.
  • Global Parameters: Stores the song's initial tempo, timing mode (e.g., CIA or VBI), and the number of sub-songs contained within the file.
  • Instrument Data: GoatTracker instruments are defined by hardware register manipulation. The file stores tables for ADSR (Attack, Decay, Sustain, Release) envelopes, waveform shapes (triangle, sawtooth, pulse, noise), pulse-width modulation tables, and filter cutoff/resonance settings.
  • Order List: A sequential array dictating the playback order of the song's patterns.
  • Pattern Data: A matrix of note values, instrument triggers, and effect commands (such as portamento, vibrato, and arpeggios) mapped across the SID chip's voices.

Version Differences

There are notable differences between .sng files saved by GoatTracker 1.x and GoatTracker 2.x:

  • GoatTracker 2 introduced a 4th "track" dedicated solely to hardware filter manipulation, allowing complex filter sweeps independent of the 3 primary SID voices. Files utilizing this feature will not import correctly into GoatTracker 1.
  • GoatTracker 2 expanded the maximum number of patterns, instruments, and order list steps, altering the binary layout of the file.

Identification

.sng files can be identified by reading the file's magic bytes at the beginning of the file. The header typically begins with the ASCII string GTS followed by a version number byte (for example, GTS5, GTS6, or GTS7).

Specifications

GoatTracker is open-source software written in C and C++. Because the .sng format lacks formal, external documentation, the definitive specification for the file structure is the source code itself, specifically the file saving and loading routines (typically found in sndfile.cpp or similar files within the source tree).

Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox