SND file v3 handler

0. Contents

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

1. Purpose

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

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.

3. Examples

This zip file contains some s3m files generated by sndtool2 (only the instrument list has been finetuned by hand).
Note that they use adlib instruments. Most mod players are unable to play them.

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. Downloading

The official home page of sndtool2 is at http://oktober.stc.cx/source/sndtool2.html.
Check there for new versions.

Generated from progdesc.php (last updated: Wed, 27 Nov 2002 02:12:59 +0200)
with docmaker.php (last updated: Tue, 13 Aug 2002 14:17:29 +0300)
at Wed, 27 Nov 2002 02:13:00 +0200