SND file v3 handler

0. Contents

This is the documentation of sndtool2-3.2.1.
   1. Purpose
   2. SND file format
   3. Examples
   4. Development status
   5. Copying
   6. Requirements
   7. See also
   8. Downloading

1. Purpose

Read SND file, play it, convert it to S3M or MIDI.

2. SND file format

SND is a file format for storing NES (and some other console) music (almost) losslessly.
SND version 3 file format:
   Position Length Description
   0        4      Signature: "SND",26
   4        1      Version of file format. We use 3.
   5        1      Channelcount. For NES, 5.
   6        1      Rate (unsigned integer)
                   How many rows does it play in a second?
                   General values are 50 and 60.
   7        9      Unused, set to zero
   0x10     n      Events, see below
   
Event format:
   Data         Bytes Description
   0xFF          1     Next row (submit this row)
   0xFD x        2     Submit this row x times
   0xFE c t      3     Set channel c (zero based) type:
                        type 1: square
                        type 2: noise
                        type 3: triangle
                        type 4: dpcm
   0xFB n sl sh  2+s   Redefine PCM sample number n (1-based)
                        Size = sh:sl
                        PCM data follows (bytes 0x60..0x9F)
   0xdv c wl wh  4     Alter square wave on channel c:
                        Set duty = d (2,4,8,12)
                        Volume = v (0..15)
                        Wavelen = wh:wl (0..0x7FF)
   c wl wh v     4     Alter channel c
                        For triangle and noise:
                         Wavelen = wh:wl (0..0x7FF)
                         Volume = v (0..15)
                        For dpcm:
                         Sample number = v (set to 0 to stop sample)
                         Wavelen = wh:wl (0..0x7FF)

SNDv3 files are generated by nezplay (produced by
a patch to nezamp) from NSF and GBS files.

SNDv2 format was proposed to Martin Korth (no$gmb author)
for Game Boy music logging, but never applied.

SNDv1 files were generated by older versions
of iNES from NES gaming sessions.

Note that SNDv3 files use wavelengths whereas SNDv2
and SNDv1 files use frequencies. Therefore this format
isn't backwards compatible.
The program converts the SND to MidiS3M with Adlib instruments.
PCM samples are converted into S3M digital samples.
Conversion to MIDI format is also supported, but it doesn't save the PCM samples.

3. Examples

This zip file contains some S3M files generated by sndtool2 (only the instrument list has been finetuned by hand) and one MIDI generated by sndtool2 (not edited).
Note that the S3M files use adlib instruments.
Most mod players are unable to playback them, and most of the rest which can, only use an emulator which isn't perfect.

4. Development status

The program works, but isn't yet ready for users.
Command line options have to be implemented and the instrument type heuristics enhanced.
Three primary goals are:

5. Copying

sndtool2 has been written by Joel Yliluoma, a.k.a. Bisqwit,
and is distributed under the following terms:
* No warranty. You are free to modify this source and to
* distribute the modified sources, as long as you keep the
* existing copyright messages intact and as long as you
* remember to add your own copyright markings.
* You are not allowed to distribute the program or modified versions
* of the program without including the source code (or a reference to
* the publicly available source) and this notice with it.

6. Requirements

GNU tools are always good to have near.

7. See also

8. Downloading

The official home page of sndtool2 is at http://iki.fi/bisqwit/source/sndtool2.html.
Check there for new versions.

Generated from progdesc.php (last updated: Sun, 11 Jan 2004 17:49:25 +0200)
with docmaker.php (last updated: Sun, 9 May 2004 04:55:44 +0300)
at Mon, 26 Jul 2004 00:49:36 +0300