1
2#------------------------------------------------------------------------------
3# $File: audio,v 1.127 2023/03/05 20:15:49 christos Exp $
4# audio:  file(1) magic for sound formats (see also "iff")
5#
6# Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com),
7# and others
8#
9
10# Sun/NeXT audio data
110         string              .snd                Sun/NeXT audio data:
12>12       belong              1                   8-bit ISDN mu-law,
13!:mime    audio/basic
14>12       belong              2                   8-bit linear PCM [REF-PCM],
15!:mime    audio/basic
16>12       belong              3                   16-bit linear PCM,
17!:mime    audio/basic
18>12       belong              4                   24-bit linear PCM,
19!:mime    audio/basic
20>12       belong              5                   32-bit linear PCM,
21!:mime    audio/basic
22>12       belong              6                   32-bit IEEE floating point,
23!:mime    audio/basic
24>12       belong              7                   64-bit IEEE floating point,
25!:mime    audio/basic
26>12       belong              8                   Fragmented sample data,
27>12       belong              10                  DSP program,
28>12       belong              11                  8-bit fixed point,
29>12       belong              12                  16-bit fixed point,
30>12       belong              13                  24-bit fixed point,
31>12       belong              14                  32-bit fixed point,
32>12       belong              18                  16-bit linear with emphasis,
33>12       belong              19                  16-bit linear compressed,
34>12       belong              20                  16-bit linear with emphasis and compression,
35>12       belong              21                  Music kit DSP commands,
36>12       belong              23                  8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice enc.),
37!:mime  audio/x-adpcm
38>12       belong              24                  compressed (8-bit CCITT G.722 ADPCM)
39>12       belong              25                  compressed (3-bit CCITT G.723.3 ADPCM),
40>12       belong              26                  compressed (5-bit CCITT G.723.5 ADPCM),
41>12       belong              27                  8-bit A-law (CCITT G.711),
42>20       belong              1                   mono,
43>20       belong              2                   stereo,
44>20       belong              4                   quad,
45>16       belong              >0                  %d Hz
46
47# DEC systems (e.g. DECstation 5000) use a variant of the Sun/NeXT format
48# that uses little-endian encoding and has a different magic number
490         lelong              0x0064732E          DEC audio data:
50>12       lelong              1                   8-bit ISDN mu-law,
51!:mime    audio/x-dec-basic
52>12       lelong              2                   8-bit linear PCM [REF-PCM],
53!:mime    audio/x-dec-basic
54>12       lelong              3                   16-bit linear PCM,
55!:mime    audio/x-dec-basic
56>12       lelong              4                   24-bit linear PCM,
57!:mime    audio/x-dec-basic
58>12       lelong              5                   32-bit linear PCM,
59!:mime    audio/x-dec-basic
60>12       lelong              6                   32-bit IEEE floating point,
61!:mime    audio/x-dec-basic
62>12       lelong              7                   64-bit IEEE floating point,
63!:mime    audio/x-dec-basic
64>12       belong              8                   Fragmented sample data,
65>12       belong              10                  DSP program,
66>12       belong              11                  8-bit fixed point,
67>12       belong              12                  16-bit fixed point,
68>12       belong              13                  24-bit fixed point,
69>12       belong              14                  32-bit fixed point,
70>12       belong              18                  16-bit linear with emphasis,
71>12       belong              19                  16-bit linear compressed,
72>12       belong              20                  16-bit linear with emphasis and compression,
73>12       belong              21                  Music kit DSP commands,
74>12       lelong              23                  8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice enc.),
75!:mime    audio/x-dec-basic
76>12       belong              24                  compressed (8-bit CCITT G.722 ADPCM)
77>12       belong              25                  compressed (3-bit CCITT G.723.3 ADPCM),
78>12       belong              26                  compressed (5-bit CCITT G.723.5 ADPCM),
79>12       belong              27                  8-bit A-law (CCITT G.711),
80>20       lelong              1                   mono,
81>20       lelong              2                   stereo,
82>20       lelong              4                   quad,
83>16       lelong              >0                  %d Hz
84
85# Creative Labs AUDIO stuff
860         string    MThd                          Standard MIDI data
87!:mime    audio/midi
88>8        beshort   x                             (format %d)
89>10       beshort   x                             using %d track
90>10       beshort             >1                  \bs
91>12       beshort&0x7fff      x                   at 1/%d
92>12       beshort&0x8000      >0                  SMPTE
93
940         string    CTMF                          Creative Music (CMF) data
95!:mime    audio/x-unknown
960         string    SBI                           SoundBlaster instrument data
97!:mime    audio/x-unknown
980         string    Creative\ Voice\ File         Creative Labs voice data
99!:mime    audio/x-unknown
100# is this next line right?  it came this way...
101>19       byte      0x1A
102>23       byte      >0                            - version %d
103>22       byte      >0                            \b.%d
104
105# first entry is also the string "NTRK"
1060         belong              0x4e54524b          MultiTrack sound data
107>4        belong              x                   - version %d
108
109# Extended MOD format (*.emd) (Greg Roelofs, newt@uchicago.edu); NOT TESTED
110# [based on posting 940824 by "Dirk/Elastik", husberg@lehtori.cc.tut.fi]
1110         string              EMOD                Extended MOD sound data,
112>4        byte&0xf0 x                   version %d
113>4        byte&0x0f x                   \b.%d,
114>45       byte                x                   %d instruments
115>83       byte                0                   (module)
116>83       byte                1                   (song)
117
118# Real Audio (Magic .ra\0375)
1190         belong              0x2e7261fd          RealAudio sound file
120!:mime    audio/x-pn-realaudio
1210         string              .RMF\0\0\0          RealMedia file
122!:mime    application/vnd.rn-realmedia
123#video/x-pn-realvideo
124#video/vnd.rn-realvideo
125#application/vnd.rn-realmedia
126#         sigh, there are many mimes for that but the above are the most common.
127
128# MTM/669/FAR/S3M/ULT/XM format checking [Aaron Eppert, aeppert@dialin.ind.net]
129# Oct 31, 1995
130# fixed by <doj@cubic.org> 2003-06-24
131# Too short...
132#0        string              MTM                 MultiTracker Module sound file
133#0        string              if                  Composer 669 Module sound data
134#0        string              JN                  Composer 669 Module sound data (extended format)
1350         string              MAS_U               ULT(imate) Module sound data
136
137#0        string              FAR                 Module sound data
138#>4       string              >\15                Title: "%s"
139
1400x2c      string              SCRM                ScreamTracker III Module sound data
141>0        string              >\0                 Title: "%s"
142!:mime    audio/x-s3m
143
144# .stm before it got above .s3m extension
1450x16      string              \!Scream\!          ScreamTracker Module sound data
146>0        string              >\0                 Title: "%s"
147
148# Gravis UltraSound patches
149# From <ache@nagual.ru>
150
1510         string              GF1PATCH110\0ID#000002\0      GUS patch
1520         string              GF1PATCH100\0ID#000002\0      Old GUS   patch
153
154# mime types according to http://www.geocities.com/nevilo/mod.htm:
155#         audio/it  .it
156#         audio/x-zipped-it   .itz
157#         audio/xm  fasttracker modules
158#         audio/x-s3m         screamtracker modules
159#         audio/s3m screamtracker modules
160#         audio/x-zipped-mod  mdz
161#         audio/mod mod
162#         audio/x-mod         All modules (mod, s3m, 669, mtm, med, xm, it, mdz, stm, itz, xmz, s3z)
163
164#
165# Taken from loader code from mikmod version 2.14
166# by Steve McIntyre (stevem@chiark.greenend.org.uk)
167# <doj@cubic.org> added title printing on 2003-06-24
1680         string    MAS_UTrack_V00
169>14       string    >/0                 ultratracker V1.%.1s module sound data
170!:mime    audio/x-mod
171#audio/x-tracker-module
172
1730         string    UN05                MikMod UNI format module sound data
174
1750         string    Extended\ Module: Fasttracker II module sound data
176!:mime    audio/x-mod
177#audio/x-tracker-module
178>17       string    >\0                 Title: "%s"
179
18021        string/c  =!SCREAM! Screamtracker 2 module sound data
181!:mime    audio/x-mod
182#audio/x-screamtracker-module
18321        string    BMOD2STM  Screamtracker 2 module sound data
184!:mime    audio/x-mod
185#audio/x-screamtracker-module
186
1871080      string    \!PM!               4-channel Protracker module sound data
188!:mime    audio/x-mod
189#audio/x-protracker-module
190>0        string    >\0                 Title: "%s"
191
1921080      string    M.K.                4-channel Protracker module sound data
193!:mime    audio/x-mod
194#audio/x-protracker-module
195>0        string    >\0                 Title: "%s"
196
1971080      string    M!K!                4-channel Protracker module sound data
198!:mime    audio/x-mod
199#audio/x-protracker-module
200>0        string    >\0                 Title: "%s"
201
2021080      string    FLT4                4-channel Startracker module sound data
203!:mime    audio/x-mod
204#audio/x-startracker-module
205>0        string    >\0                 Title: "%s"
206
2071080      string    FLT8                8-channel Startracker module sound data
208!:mime    audio/x-mod
209#audio/x-startracker-module
210>0        string    >\0                 Title: "%s"
211
2121080      string    4CHN                4-channel Fasttracker module sound data
213!:mime    audio/x-mod
214#audio/x-fasttracker-module
215>0        string    >\0                 Title: "%s"
216
2171080      string    6CHN                6-channel Fasttracker module sound data
218!:mime    audio/x-mod
219#audio/x-fasttracker-module
220>0        string    >\0                 Title: "%s"
221
2221080      string    8CHN                8-channel Fasttracker module sound data
223!:mime    audio/x-mod
224#audio/x-fasttracker-module
225>0        string    >\0                 Title: "%s"
226
2271080      string    CD81                8-channel Octalyser module sound data
228!:mime    audio/x-mod
229#audio/x-octalysertracker-module
230>0        string    >\0                 Title: "%s"
231
2321080      string    OKTA                8-channel Octalyzer module sound data
233!:mime    audio/x-mod
234#audio/x-octalysertracker-module
235>0        string    >\0                 Title: "%s"
236
237# Not good enough.
238#1082     string    CH
239#>1080    string    >/0                 %.2s-channel Fasttracker "oktalyzer" module sound data
2401080      string    16CN                16-channel Taketracker module sound data
241!:mime    audio/x-mod
242#audio/x-taketracker-module
243>0        string    >\0                 Title: "%s"
2441080      string    32CN                32-channel Taketracker module sound data
245!:mime    audio/x-mod
246#audio/x-taketracker-module
247>0        string    >\0                 Title: "%s"
248
249# TOC sound files -Trevor Johnson <trevor@jpj.net>
250#
2510       string          TOC             TOC sound file
252
253# sidfiles <pooka@iki.fi>
254# added name,author,(c) and new RSID type by <doj@cubic.org> 2003-06-24
2550         string              SIDPLAY\ INFOFILE   Sidplay info file
256
2570         string              PSID                          PlaySID v2.2+ (AMIGA) sidtune
258>4        beshort             >0                            w/ header v%d,
259>14       beshort             =1                            single song,
260>14       beshort             >1                            %d songs,
261>16       beshort             >0                            default song: %d
262>0x16     string              >\0                           name: "%s"
263>0x36     string              >\0                           author: "%s"
264>0x56     string              >\0                           copyright: "%s"
265
2660         string              RSID                          RSID sidtune PlaySID compatible
267>4        beshort             >0                            w/ header v%d,
268>14       beshort             =1                            single song,
269>14       beshort             >1                            %d songs,
270>16       beshort             >0                            default song: %d
271>0x16     string              >\0                           name: "%s"
272>0x36     string              >\0                           author: "%s"
273>0x56     string              >\0                           copyright: "%s"
274
275# IRCAM sound files - Michael Pruett <michael@68k.org>
276# http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/IRCAM/IRCAM.html
2770         belong              0x64a30100                    IRCAM file (VAX little-endian)
2780         belong              0x0001a364                    IRCAM file (VAX big-endian)
2790         belong              0x64a30200                    IRCAM file (Sun big-endian)
2800         belong              0x0002a364                    IRCAM file (Sun little-endian)
2810         belong              0x64a30300                    IRCAM file (MIPS little-endian)
2820         belong              0x0003a364                    IRCAM file (MIPS big-endian)
2830         belong              0x64a30400                    IRCAM file (NeXT big-endian)
2840         belong              0x64a30400                    IRCAM file (NeXT big-endian)
2850         belong              0x0004a364                    IRCAM file (NeXT little-endian)
286
287# NIST SPHERE <mpruett@sgi.com>
2880         string              NIST_1A\n\ \ \ 1024\n         NIST SPHERE file
289
290# Sample Vision <mpruett@sgi.com>
2910         string              SOUND\ SAMPLE\ DATA\          Sample Vision file
292
293# Audio Visual Research <tonigonenstein@users.sourceforge.net>
2940         string              2BIT                          Audio Visual Research file,
295>12       beshort             =0                            mono,
296>12       beshort             =-1                           stereo,
297>14       beshort             x                             %d bits
298>16       beshort             =0                            unsigned,
299>16       beshort             =-1                           signed,
300>22       belong&0x00ffffff   x                   %d Hz,
301>18       beshort             =0                            no loop,
302>18       beshort             =-1                           loop,
303>21       ubyte               <128                          note %d,
304>22       byte                =0                            replay 5.485 KHz
305>22       byte                =1                            replay 8.084 KHz
306>22       byte                =2                            replay 10.971 KHz
307>22       byte                =3                            replay 16.168 KHz
308>22       byte                =4                            replay 21.942 KHz
309>22       byte                =5                            replay 32.336 KHz
310>22       byte                =6                            replay 43.885 KHz
311>22       byte                =7                            replay 47.261 KHz
312
313# SGI SoundTrack <mpruett@sgi.com>
3140         string              _SGI_SoundTrack               SGI SoundTrack project file
315# ID3 version 2 tags <waschk@informatik.uni-rostock.de>
3160         string              ID3       Audio file with ID3 version 2
317>3        byte                x         \b.%d
318>4        byte                x         \b.%d
319>>5       byte                &0x80     \b, unsynchronized frames
320>>5       byte                &0x40     \b, extended header
321>>5       byte                &0x20     \b, experimental
322>>5       byte                &0x10     \b, footer present
323>(6.I+10) indirect  x         \b, contains:
324
325# NSF (NES sound file) magic
3260         string              NESM\x1a  NES Sound File
327>14       string              >\0                 ("%s" by
328>46       string              >\0                 %s, copyright
329>78       string              >\0                 %s),
330>5        byte                x                   version %d,
331>6        byte                x                   %d tracks,
332>122      byte&0x2  =1                  dual PAL/NTSC
333>122      byte&0x1  =1                  PAL
334>122      byte&0x1  =0                  NTSC
335
336# NSFE (Extended NES sound file) magic
337# http://slickproductions.org/docs/NSF/nsfespec.txt
338# From: David Pflug <david@pflug.email>
3390         string              NSFE                Extended NES Sound File
340>48       search/0x1000       auth
341>>&0      string              >\0                 ("%s"
342>>>&1     string              >\0                 by %s
343>>>>&1    string              >\0                 \b, copyright %s
344>>>>>&1   string              >\0                 \b, ripped by %s
345>20       byte                x                   \b), %d tracks,
346>18       byte&0x2  =1                  dual PAL/NTSC
347>18     byte&0x2    =0
348>>18      byte&0x1  =1                  PAL
349>>18      byte&0x1  =0                  NTSC
350
351# Type: SNES SPC700 sound files
352# From: Josh Triplett <josh@freedesktop.org>
3530         string    SNES-SPC700\ Sound\ File\ Data\ v       SNES SPC700 sound file
354>&0       string    0.30                                              \b, version %s
355>>0x23    byte      0x1B                                              \b, without ID666 tag
356>>0x23    byte      0x1A                                              \b, with ID666 tag
357>>>0x2E   string    >\0                                               \b, song "%.32s"
358>>>0x4E   string    >\0                                               \b, game "%.32s"
359
360# Impulse tracker module (audio/x-it)
3610         string              IMPM                Impulse Tracker module sound data -
362!:mime    audio/x-mod
363>4        string              >\0                 "%s"
364>40       leshort             !0                  compatible w/ITv%x
365>42       leshort             !0                  created w/ITv%x
366
367# Imago Orpheus module (audio/x-imf)
36860        string              IM10                Imago Orpheus module sound data -
369>0        string              >\0                 "%s"
370
371# From <collver1@attbi.com>
372# These are the /etc/magic entries to decode modules, instruments, and
373# samples in Impulse Tracker's native format.
374
3750         string              IMPS                Impulse Tracker Sample
376>18       byte                &2                  16 bit
377>18       byte                ^2                  8 bit
378>18       byte                &4                  stereo
379>18       byte                ^4                  mono
3800         string              IMPI                Impulse Tracker Instrument
381>28       leshort             !0                  ITv%x
382>30       byte                !0                  %d samples
383
384# Yamaha TX Wave:  file(1) magic for Yamaha TX Wave audio files
385# From <collver1@attbi.com>
3860         string              LM8953              Yamaha TX Wave
387>22       byte                0x49                looped
388>22       byte                0xC9                non-looped
389>23       byte                1                   33kHz
390>23       byte                2                   50kHz
391>23       byte                3                   16kHz
392
393# scream tracker:  file(1) magic for Scream Tracker sample files
394#
395# From <collver1@attbi.com>
39676        string              SCRS                Scream Tracker Sample
397>0        byte                1                   sample
398>0        byte                2                   adlib melody
399>0        byte                >2                  adlib drum
400>31       byte                &2                  stereo
401>31       byte                ^2                  mono
402>31       byte                &4                  16bit little endian
403>31       byte                ^4                  8bit
404>30       byte                0                   unpacked
405>30       byte                1                   packed
406
407# audio
408# From: Cory Dikkers <cdikkers@swbell.net>
4090         string              MMD0                MED music file, version 0
4100         string              MMD1                OctaMED Pro music file, version 1
4110         string              MMD3                OctaMED Soundstudio music file, version 3
4120         string              OctaMEDCmpr         OctaMED Soundstudio compressed file
4130         string              MED                 MED_Song
4140         string              SymM                Symphonie SymMOD music file
415#
416# Track Length (TRL), Tracks (TRK), Samples (SMP), Subsongs (SS)
417# http://lclevy.free.fr/exotica/ahx/ahxformat.txt
4180         string              THX                 AHX version
419>3        byte                =0                  1 module data
420>3        byte                =1                  2 module data
421>11       ubyte               x                   TRK: %u
422>10       ubyte               x                   TRL: %u
423>12       ubyte               x                   SMP: %u
424>13       ubyte               x                   SS: %u
425>(4.H)              string              x                   Title: "%.128s"
426
427# header is mostly AHX format
4280                   string              HVL
429>3                  byte                <2        Hively Tracker Song
430>3                  byte                =0                  v1 module data
431>3                  byte                =1                  v2 module data
432>11                 ubyte               x                   TRK: %u
433>10                 ubyte               x                   TRL: %u
434>12                 ubyte               x                   SMP: %u
435>13                 ubyte               x                   SS: %u
436>8                  ubyte/4             =0                  CHN: 4
437>8                  ubyte/4             >0                  CHN: 4+%u
438#>-0                offset              <0xffff
439>(4.H)              string              x                   Title: "%.128s"
440
441#
4420         string              OKTASONG  Oktalyzer module data
443#
4440         string              DIGI\ Booster\ module\0       %s
445>20       byte                >0                  %c
446>>21      byte                >0                  \b%c
447>>>22     byte                >0                  \b%c
448>>>>23    byte                >0                  \b%c
449>610      string              >\0                 \b, "%s"
450#
4510         string              DBM0                DIGI Booster Pro Module
452>4        byte                >0                  V%X.
453>>5       byte                x                   \b%02X
454>16       string              >\0                 \b, "%s"
455#
4560         string              FTMN                FaceTheMusic module
457>16       string              >\0d                \b, "%s"
458
459# From: <doj@cubic.org> 2003-06-24
4600         string              AMShdr\32 Velvet Studio AMS Module v2.2
4610         string              Extreme             Extreme Tracker AMS Module v1.3
4620         string              DDMF                Xtracker DMF Module
463>4        byte                x                   v%i
464>0xD      string              >\0                 Title: "%s"
465>0x2B     string              >\0                 Composer: "%s"
4660         string              DSM\32              Dynamic Studio Module DSM
4670         string              SONG                DigiTrekker DTM Module
4680         string              DMDL                DigiTrakker MDL Module
4690         string              PSM\32              Protracker Studio PSM Module
47044        string              PTMF                Poly Tracker PTM Module
471>0        string              >\32                Title: "%s"
4720         string              MT20                MadTracker 2.0 Module MT2
4730         string              RAD\40by\40REALiTY!! RAD Adlib Tracker Module RAD
4740         string              RTMM                RTM Module
4750x426     string              MaDoKaN96 XMS Adlib Module
476>0        string              >\0                 Composer: "%s"
4770         string              AMF                 AMF Module
478>4        string              >\0                 Title: "%s"
4790         string              MODINFO1  Open Cubic Player Module Information MDZ
4800         string              Extended\40Instrument: Fast Tracker II Instrument
481
482# From: Takeshi Hamasaki <hma@syd.odn.ne.jp>
483# NOA Nancy Codec file
4840         string              \210NOA\015\012\032 NOA Nancy Codec Movie file
485# Yamaha SMAF format
4860         string              MMMD                Yamaha SMAF file
487# Sharp Jisaku Melody format for PDC
4880         string              \001Sharp\040JisakuMelody     SHARP Cell-Phone ringing Melody
489>20       string              Ver01.00  Ver. 1.00
490>>32      byte                x                   , %d tracks
491
492# Free lossless audio codec <http://flac.sourceforge.net>
493# From: Przemyslaw Augustyniak <silvathraec@rpg.pl>
4940         string                        fLaC                FLAC audio bitstream data
495!:mime    audio/flac
496>4        byte&0x7f           >0                  \b, unknown version
497>4        byte&0x7f           0                   \b
498# some common bits/sample values
499>>20      beshort&0x1f0                 0x030               \b, 4 bit
500>>20      beshort&0x1f0                 0x050               \b, 6 bit
501>>20      beshort&0x1f0                 0x070               \b, 8 bit
502>>20      beshort&0x1f0                 0x0b0               \b, 12 bit
503>>20      beshort&0x1f0                 0x0f0               \b, 16 bit
504>>20      beshort&0x1f0                 0x170               \b, 24 bit
505>>20      byte&0xe            0x0                 \b, mono
506>>20      byte&0xe            0x2                 \b, stereo
507>>20      byte&0xe            0x4                 \b, 3 channels
508>>20      byte&0xe            0x6                 \b, 4 channels
509>>20      byte&0xe            0x8                 \b, 5 channels
510>>20      byte&0xe            0xa                 \b, 6 channels
511>>20      byte&0xe            0xc                 \b, 7 channels
512>>20      byte&0xe            0xe                 \b, 8 channels
513# sample rates derived from known oscillator frequencies;
514# 24.576 MHz (video/fs=48kHz), 22.5792 (audio/fs=44.1kHz) and
515# 16.384 (other/fs=32kHz).
516>>17      belong&0xfffff0               0x02b110  \b, 11.025 kHz
517>>17      belong&0xfffff0               0x03e800  \b, 16 kHz
518>>17      belong&0xfffff0               0x056220  \b, 22.05 kHz
519>>17      belong&0xfffff0               0x05dc00  \b, 24 kHz
520>>17      belong&0xfffff0               0x07d000  \b, 32 kHz
521>>17      belong&0xfffff0               0x0ac440  \b, 44.1 kHz
522>>17      belong&0xfffff0               0x0bb800  \b, 48 kHz
523>>17      belong&0xfffff0               0x0fa000  \b, 64 kHz
524>>17      belong&0xfffff0               0x158880  \b, 88.2 kHz
525>>17      belong&0xfffff0               0x177000  \b, 96 kHz
526>>17      belong&0xfffff0               0x1f4000  \b, 128 kHz
527>>17      belong&0xfffff0               0x2b1100  \b, 176.4 kHz
528>>17      belong&0xfffff0               0x2ee000  \b, 192 kHz
529>>17      belong&0xfffff0               0x3e8000  \b, 256 kHz
530>>17      belong&0xfffff0               0x562200  \b, 352.8 kHz
531>>17      belong&0xfffff0               0x5dc000  \b, 384 kHz
532>>21      byte&0xf            >0                  \b, >4G samples
533>>21      byte&0xf            0                   \b
534>>>22     belong                        >0                  \b, %u samples
535>>>22     belong                        0                   \b, length unknown
536
537# (ISDN) VBOX voice message file (Wolfram Kleff)
5380       string          VBOX            VBOX voice message data
539
540# ReBorn Song Files (.rbs)
541# David J. Singer <doc@deadvirgins.org.uk>
5428       string          RB40             RBS Song file
543>29     string          ReBorn           created by ReBorn
544>37     string          Propellerhead    created by ReBirth
545
546# Synthesizer Generator and Kimwitu share their file format
5470         string              A#S#C#S#S#L#V#3         Synthesizer Generator or Kimwitu data
548# Kimwitu++ uses a slightly different magic
5490         string              A#S#C#S#S#L#HUB         Kimwitu++ data
550
551# From "Simon Hosie
5520       string  TFMX-SONG       TFMX module sound data
553
554# Monkey's Audio compressed audio format (.ape)
555# From danny.milo@gmx.net (Danny Milosavljevic)
556# New version from Abel Cheung <abel (@) oaka.org>
5570                   string              MAC\040             Monkey's Audio compressed format
558!:mime audio/x-ape
559>4                  uleshort  >0x0F8B             version %d
560>>(0x08.l)          uleshort  =1000               with fast compression
561>>(0x08.l)          uleshort  =2000               with normal compression
562>>(0x08.l)          uleshort  =3000               with high compression
563>>(0x08.l)          uleshort  =4000               with extra high compression
564>>(0x08.l)          uleshort  =5000               with insane compression
565>>(0x08.l+18)       uleshort  =1                  \b, mono
566>>(0x08.l+18)       uleshort  =2                  \b, stereo
567>>(0x08.l+20)       ulelong             x                   \b, sample rate %d
568>4                  uleshort  <0x0F8C             version %d
569>>6                 uleshort  =1000               with fast compression
570>>6                 uleshort  =2000               with normal compression
571>>6                 uleshort  =3000               with high compression
572>>6                 uleshort  =4000               with extra high compression
573>>6                 uleshort  =5000               with insane compression
574>>10                uleshort  =1                  \b, mono
575>>10                uleshort  =2                  \b, stereo
576>>12                ulelong             x                   \b, sample rate %d
577
578# adlib sound files
579# From: Alex Myczko <alex@aiei.ch>
580
581# https://github.com/rerrahkr/BambooTracker
5820         string    BambooTracker       BambooTracker
583>13       string    Mod                 Module
584>13       string    Ist                 Instrument
585>13       string    Bnk                 Bank
586>22       byte      x                   \b, version %u
587>21       byte      x                   \b.%u
588>20       byte      x                   \b.%u
589
5900         string              CC2x                CheeseCutter 2 song
591
5920         string              RAWADATA  RdosPlay RAW
593
5941068      string              RoR                 AMUSIC Adlib Tracker
595
5960         string              JCH                 EdLib
597
5980         string              mpu401tr  MPU-401 Trakker
599
6000         string              SAdT                Surprise! Adlib Tracker
601>4        byte                x                   Version %d
602
6030         string              XAD!                eXotic ADlib
604
6050         string              ofTAZ!              eXtra Simple Music
606
6070         string              FMK!                FM Kingtracker Song
608
6090         string              DFM                 DFM Song
610
6110         string              \<CUD-FM-File\>     CFF Song
612
6130         string              _A2module A2M Song
614
615# Spectrum 128 tunes (.ay files).
616# From: Emanuel Haupt <ehaupt@critical.ch>
6170         string              ZXAYEMUL  Spectrum 128 tune
618
6190         string              \0BONK              BONK,
620#>5       byte                x                   version %d
621>14       byte                x                   %d channel(s),
622>15       byte                =1                  lossless,
623>15       byte                =0                  lossy,
624>16       byte                x                   mid-side
625
626384       string              LockStream          LockStream Embedded file (mostly MP3 on old Nokia phones)
627
628# format VQF (proprietary codec for sound)
629# some infos on the header file available at :
630# http://www.twinvq.org/english/technology_format.html
6310         string              TWIN97012000        VQF data
632>27       short               0                   \b, Mono
633>27       short               1                   \b, Stereo
634>31       short               >0                  \b, %d kbit/s
635>35       short               >0                  \b, %d kHz
636
637# Nelson A. de Oliveira (naoliv@gmail.com)
638# .eqf
6390         string    Winamp\ EQ\ library\ file     %s
640# it will match only versions like v<digit>.<digit>
641# Since I saw only eqf files with version v1.1 I think that it's OK
642>23       string    x         \b%.4s
643# .preset
6440         string    [Equalizer\ preset] XMMS equalizer preset
645# .m3u
6460         search/1  #EXTM3U   M3U playlist text
647# .pls
6480         search/1  [playlist]          PLS playlist text
649# licq.conf
6501         string    [licq]                        LICQ configuration file
651
652# Atari ST audio files by Dirk Jagdmann <doj@cubic.org>
653# NOTE: Most SNDH music is packed using ICE, which has
654# magic numbers "ICE!" and "Ice!". Some SNDH music is
655# not packed, so we check for both packed and unpacked.
65612        string                        SNDH      SNDH Atari ST music
6570         belong&0xFFDFDFFF   0x49434521
658>14       search/40           NDH       SNDH Atari ST music
659>14       search/40           TITL      SNDH Atari ST music
6600         string              SC68\ Music-file\ /\ (c)\ (BeN)jami     sc68 Atari ST music
661
662# musepak support From: "Jiri Pejchal" <jiri.pejchal@gmail.com>
6630       string          MP+     Musepack audio (MP+)
664!:mime    audio/x-musepack
665>3      byte            255     \b, SV pre8
666>3      byte&0xF        0x6     \b, SV 6
667>3      byte&0xF        0x8     \b, SV 8
668>3      byte&0xF        0x7     \b, SV 7
669>>3     byte&0xF0       0x0     \b.0
670>>3     byte&0xF0       0x10    \b.1
671>>3     byte&0xF0       240     \b.15
672>>10    byte&0xF0       0x0     \b, no profile
673>>10    byte&0xF0       0x10    \b, profile 'Unstable/Experimental'
674>>10    byte&0xF0       0x50    \b, quality 0
675>>10    byte&0xF0       0x60    \b, quality 1
676>>10    byte&0xF0       0x70    \b, quality 2 (Telephone)
677>>10    byte&0xF0       0x80    \b, quality 3 (Thumb)
678>>10    byte&0xF0       0x90    \b, quality 4 (Radio)
679>>10    byte&0xF0       0xA0    \b, quality 5 (Standard)
680>>10    byte&0xF0       0xB0    \b, quality 6 (Xtreme)
681>>10    byte&0xF0       0xC0    \b, quality 7 (Insane)
682>>10    byte&0xF0       0xD0    \b, quality 8 (BrainDead)
683>>10    byte&0xF0       0xE0    \b, quality 9
684>>10    byte&0xF0       0xF0    \b, quality 10
685>>27    byte            0x0     \b, Buschmann 1.7.0-9, Klemm 0.90-1.05
686>>27    byte            102     \b, Beta 1.02
687>>27    byte            104     \b, Beta 1.04
688>>27    byte            105     \b, Alpha 1.05
689>>27    byte            106     \b, Beta 1.06
690>>27    byte            110     \b, Release 1.1
691>>27    byte            111     \b, Alpha 1.11
692>>27    byte            112     \b, Beta 1.12
693>>27    byte            113     \b, Alpha 1.13
694>>27    byte            114     \b, Beta 1.14
695>>27    byte            115     \b, Alpha 1.15
696
6970       string          MPCK    Musepack audio (MPCK)
698!:mime    audio/x-musepack
699
700# IMY
701# from http://filext.com/detaillist.php?extdetail=IMY
702# https://cellphones.about.com/od/cellularfaqs/f/rf_imelody.htm
703# http://download.ncl.ie/doc/api/ie/ncl/media/music/IMelody.html
704# http://www.wx800.com/msg/download/irda/iMelody.pdf
7050         string    BEGIN:IMELODY       iMelody Ringtone Format
706
707# From: "Mateus Caruccio" <mateus@caruccio.com>
708# guitar pro v3,4,5 from http://filext.com/file-extension/gp3
7090         string    \030FICHIER\ GUITAR\ PRO\ v3. Guitar Pro Ver. 3 Tablature
710
711# From: "Leslie P. Polzer" <leslie.polzer@gmx.net>
71260        string    SONG                SoundFX Module sound file
713
714# Type: Adaptive Multi-Rate Codec
715# URL:  http://filext.com/detaillist.php?extdetail=AMR
716# From: Russell Coker <russell@coker.com.au>
7170         string    #!AMR               Adaptive Multi-Rate Codec (GSM telephony)
718!:mime    audio/amr
719!:ext  amr
720
721# Type: SuperCollider 3 Synth Definition File Format
722# From: Mario Lang <mlang@debian.org>
7230         string    SCgf      SuperCollider3 Synth Definition file,
724>4        belong    x         version %d
725
726# Type: True Audio Lossless Audio
727# URL:  https://wiki.multimedia.cx/index.php?title=True_Audio
728# From: Mike Melanson <mike@multimedia.cx>
7290         string    TTA1      True Audio Lossless Audio
730
731# Type: WavPack Lossless Audio
732# URL:  https://wiki.multimedia.cx/index.php?title=WavPack
733# From: Mike Melanson <mike@multimedia.cx>
7340         string    wvpk      WavPack Lossless Audio
735
736# From Fabio R. Schmidlin <frs@pop.com.br>
737# VGM music file
7380         string              Vgm\040
739>9        ubyte               >0        VGM Video Game Music dump v
740!:mime    audio/x-vgm
741!:ext     vgm
742>>9       ubyte/16  >0        \b%d
743>>9       ubyte&0x0F          x         \b%d
744>>8       ubyte/16  x         \b.%d
745>>8       ubyte&0x0F          >0        \b%d
746#Get soundchips
747>>8       ubyte               x         \b, soundchip(s)=
748>>0x0C    ulelong             >0        SN76489 (PSG),
749>>0x10    ulelong             >0        YM2413 (OPLL),
750>>0x2C    ulelong             >0        YM2612 (OPN2),
751>>0x30    ulelong             >0        YM2151 (OPM),
752>>0x38    ulelong             >0        Sega PCM,
753>>0x34    ulelong             >0xC
754>>>0x40   ulelong             >0        RF5C68 (PCM),
755>>0x34    ulelong             >0x10
756>>>0x44   ulelong             >0        YM2203 (OPN),
757>>0x34    ulelong             >0x14
758>>>0x48   ulelong             >0        YM2608 (OPNA),
759>>0x34    ulelong             >0x18
760>>>0x4C   lelong              >0        YM2610 (OPNB),
761>>>0x4C   lelong              <0        YM2610B (OPNB+2FM),
762>>0x34    ulelong             >0x1C
763>>>0x50   ulelong             >0        YM3812 (OPL2),
764>>0x34    ulelong             >0x20
765>>>0x54   ulelong             >0        YM3526 (OPL),
766>>0x34    ulelong             >0x24
767>>>0x58   ulelong             >0        Y8950 (MSX-Audio),
768>>0x34    ulelong             >0x28
769>>>0x5C   ulelong             >0        YMF262 (OPL3),
770>>0x34    ulelong             >0x2C
771>>>0x60   ulelong             >0        YMF278B (OPL4),
772>>0x34    ulelong             >0x30
773>>>0x64   ulelong             >0        YMF271 (OPX),
774>>0x34    ulelong             >0x34
775>>>0x68   ulelong             >0        YMZ280B (PCMD8),
776>>0x34    ulelong             >0x38
777>>>0x6C   ulelong             >0        RF5C164 (PCM),
778>>0x34    ulelong             >0x3C
779>>>0x70   ulelong             >0        PWM,
780>>0x34    ulelong             >0x40
781>>>0x74   ulelong             >0
782>>>>0x78 ubyte                0x00      AY-3-8910,
783>>>>0x78 ubyte                0x01      AY-3-8912,
784>>>>0x78 ubyte                0x02      AY-3-8913,
785>>>>0x78 ubyte                0x03      AY-3-8930,
786>>>>0x78 ubyte                0x10      YM2149,
787>>>>0x78 ubyte                0x11      YM3439,
788>>>>0x78 ubyte                0x12      YMZ284,
789>>>>0x78 ubyte                0x13      YMZ294,
790# VGM 1.61
791>>0x34    ulelong             >0x4C
792>>>0x80   ulelong             >0        DMG,
793>>0x34    ulelong             >0x50
794>>>0x84   lelong              >0        NES APU,
795>>>0x84   lelong              <0        NES APU with FDS,
796>>0x34    ulelong             >0x54
797>>>0x88   ulelong             >0        MultiPCM,
798>>0x34    ulelong             >0x58
799>>>0x8C   ulelong             >0        uPD7759 (ADPCM Speech),
800>>0x34    ulelong             >0x5C
801>>>0x90   ulelong             >0        OKIM6258 (ADPCM Speech),
802>>0x34    ulelong             >0x64
803>>>0x98   ulelong             >0        OKIM6295 (ADPCM),
804>>0x34    ulelong             >0x68
805>>>0x9C   ulelong             >0        K051649,
806>>0x34    ulelong             >0x6C
807>>>0xA0   ulelong             >0        K054539,
808>>0x34    ulelong             >0x70
809>>>0xA4   ulelong             >0        HuC6280,
810>>0x34    ulelong             >0x74
811>>>0xA8   ulelong             >0        C140,
812>>0x34    ulelong             >0x78
813>>>0xAC   ulelong             >0        K053260,
814>>0x34    ulelong             >0x7C
815>>>0xB0   ulelong             >0        Pokey,
816>>0x34    ulelong             >0x80
817>>>0xB4   ulelong             >0        QSound,
818# VGM 1.71
819>>0x34    ulelong             >0x84
820>>>0xB8   ulelong             >0        SCSP,
821>>0x34    ulelong             >0x8C
822>>>0xC0   ulelong             >0        WonderSwan,
823>>0x34    ulelong             >0x90
824>>>0xC4   ulelong             >0        VSU,
825>>0x34    ulelong             >0x94
826>>>0xC8   ulelong             >0        SAA1099,
827>>0x34    ulelong             >0x98
828>>>0xCC   ulelong             >0        ES5503 (DOC),
829>>0x34    ulelong             >0x9C
830>>>0xD0   lelong              >0        ES5505 (OTIS),
831>>>0xD0   lelong              <0        ES5506 (OTTO),
832>>0x34    ulelong             >0xA4
833>>>0xD8   ulelong             >0        X1-010,
834>>0x34    ulelong             >0xA8
835>>>0xDC   ulelong             >0        C352,
836>>0x34    ulelong             >0xAC
837>>>0xE0   ulelong             >0        GA20,
838
839# GVOX Encore file format
840# Since this is a proprietary file format and there is no publicly available
841# format specification, this is just based on induction
842#
8430         string    SCOW
844>4        byte      0xc4      GVOX Encore music, version 5.0 or above
845>4        byte      0xc2      GVOX Encore music, version < 5.0
846
8470         string    ZBOT
848>4        byte      0xc5      GVOX Encore music, version < 5.0
849
850# Summary:          Garmin Voice Processing Module (WAVE audios)
851# From:             Joerg Jenderek
852# URL:              https://www.garmin.com/
853# Reference:        http://www.poi-factory.com/node/19580
854# NOTE:             there exist 2 other Garmin VPM formats
8550                   string    AUDIMG
856# skip text files starting with string "AUDIMG"
857>13                 ubyte               <13       Garmin Voice Processing Module
858!:mime    audio/x-vpm-wav-garmin
859!:ext     vpm
860# 3 bytes indicating the voice version (200,220)
861>>6                 string              x         \b, version %3.3s
862# day of release (01-31)
863>>12                ubyte               x         \b, %.2d
864# month of release (01-12)
865>>13                ubyte               x         \b.%.2d
866# year of release (like 2006, 2007, 2008)
867>>14                uleshort  x         \b.%.4d
868# hour of release (0-23)
869>>11                ubyte               x         %.2d
870# minute of release (0-59)
871>>10                ubyte               x         \b:%.2d
872# second of release (0-59)
873>>9                 ubyte               x         \b:%.2d
874# if you select a language like german on your garmin device
875# you can only select voice modules with corresponding language byte ID like 1
876>>18                ubyte               x         \b, language ID %d
877# structure for phrases/sentences?
878# number of voice sample in the 1st phrase?
879#>>19               uleshort            x         \b, %#x samples
880#>>>21              uleshort            >0        \b, at %#4.4x
881#>>>(21.s)          ubequad                       x         %#llx
882# 2nd phrase?
883#>>23               uleshort            x         \b, %#x samples
884#>>>25              uleshort            >0        \b, at %#4.4x
885#>>>(25.s)          ubequad                       x         %#llx
886# pointer to 1st audio WAV sample
887>>16                uleshort  >0
888>>>(16.s) ulelong             >0        \b, at %#x
889# WAV length
890# 1 space char after "bytes" to get phrase "bytes RIFF"
891>>>>(16.s+4)        ulelong             >0        %u bytes
892# look for magic
893>>>>>(&-8.l)        string              RIFF
894# determine type by ./riff
895>>>>>>&-4 indirect  x
896# 2 - ~ 131 WAV samples following same way
897#
898# Summary:          encrypted Garmin Voice Processing Module
899# From:             Joerg Jenderek
900# URL:              https://www.garmin.com/us/products/ontheroad/voicestudio
901# NOTE:             Encrypted variant used in voices like DrNightmare, Elfred, Yeti.
902#                   There exist 2 other Garmin VPM formats
9030         ubequad             0xa141190fecc8ced6  Garmin Voice Processing Module (encrypted)
904!:mime    audio/x-vpm-garmin
905!:ext     vpm
906
907# From Martin Mueller Skarbiniks Pedersen
9080                   string              GDM
909>0x3                byte                0xFE      General Digital Music.
910>0x4                string              >\0       title: "%s"
911>0x24               string              >\0       musician: "%s"
912>>0x44              beshort             0x0D0A
913>>>0x46             byte                0x1A
914>>>>0x47  string              GMFS      Version
915>>>>0x4B  byte                x         %d.
916>>>>0x4C  byte                x         \b%02d
917>>>>0x4D  beshort             0x000     (2GDM v
918>>>>0x4F  byte                x         \b%d.
919>>>>>0x50 byte                x         \b%d)
920
9210                   string              MTM       Multitracker
922>0x3                byte/16             x         Version %d.
923>0x3                byte&0x0F x         \b%02d
924>>0x4               string              >\0       title: "%s"
925
9260                   string              MO3
927>3                  ubyte               <6        MOdule with MP3
928>>3                 byte                0         Version   0         (With MP3 and lossless)
929>>3                 byte                1         Version   1         (With ogg and lossless)
930>>3                 byte                3         Version 2.2
931>>3                 byte                4         (With no LAME header)
932>>3                 byte                5         Version 2.4
933
9340                   string              ADRVPACK  AProSys   module
935
936# ftp://ftp.modland.com/pub/documents/format_documentation/\
937# Art%20Of%20Noise%20(.aon).txt
9380                   string              AON
939>4                  string              "ArtOfNoise by Bastian Spiegel(twice/lego)"
940>0x2e               string              NAME      Art of Noise Tracker Song
941>3                  string              <9
942>3                  string              4         (4 voices)
943>3                  string              8         (8 voices)
944>>0x36              string              >\0       Title: "%s"
945
9460                   string              FAR
947>0x2c               byte                0x0d
948>0x2d               byte                0x0a
949>0x2e               byte                0x1a
950>>0x3               byte                0xFE      Farandole Tracker Song
951>>>0x31             byte/16             x         Version %d.
952>>>0x31             byte&0x0F x         \b%02d
953>>>>0x4             string              >\0       \b, title: "%s"
954
955# magic for Klystrack, https://kometbomb.github.io/klystrack/
956# from Alex Myczko <alex@aiei.ch>
9570         string    cyd!song  Klystrack song
958>8        byte      >0                  \b, version %u
959>8        byte      >26
960#>>9      byte      x                   \b, channels %u
961#>>10     leshort   x                   \b, time signature %u
962#>>12     leshort   x                   \b, sequence step %u
963#>>14     byte      x                   \b, instruments %u
964#>>15     leshort   x                   \b, patterns %u
965#>>17     leshort   x                   \b, sequences %u
966#>>19     leshort   x                   \b, length %u
967#>>21     leshort   x                   \b, loop point %u
968#>>23     byte      x                   \b, master volume %u
969#>>24     byte      x                   \b, song speed %u
970#>>25     byte      x                   \b, song speed2 %u
971#>>26     byte      x                   \b, song rate %u
972#>>27     belong    x                   \b, flags %#x
973#>>31     byte      x                   \b, multiplex period %u
974#>>32     byte      x                   \b, pitch inaccuracy %u
975>>149     pstring   x                   \b, title %s
976
9770         string    cyd!inst  Klystrack instrument
978
979# magic for WOPL instrument files, https://github.com/Wohlstand/OPL3BankEditor
980# see Specifications/WOPL-and-OPLI-Specification.txt
981
9820         string    WOPL3-INST\0        WOPL instrument
983>11       leshort   x         \b, version %u
9840         string    WOPL3-BANK\0        WOPL instrument bank
985>11       leshort   x         \b, version %u
986
987# AdLib/OPL instrument files. Format specifications on
988#  http://www.shikadi.net/moddingwiki
9890         string    Junglevision\ Patch\ File     Junglevision instrument data
9900         string    #OPL_II#  DMX OP2 instrument data
9910         string    IBK\x1a             IBK instrument data
9920         string    2OP\x1a             IBK instrument data, 2 operators
9930         string    4OP\x1a             IBK instrument data, 4 operators
9942         string    ADLIB-              AdLib instrument data
995>0        byte      x                   \b, version %u
996>1        byte      x                   \b.%u
997
998# CRI ADX ADPCM audio
999# Used by various Sega games.
1000# https://en.wikipedia.org/wiki/ADX_(file_format)
1001# https://wiki.multimedia.cx/index.php/CRI_ADX_file
1002# Added by David Korth <gerbilsoft@gerbilsoft.com>
10030x00                beshort             0x8000
1004>(2.S-2)  string              (c)CRI              CRI ADX ADPCM audio
1005!:ext adx
1006!:mime audio/x-adx
1007!:strength +50
1008>>0x12              byte                x                   v%u
1009>>0x04              byte                0x02                \b, pre-set prediction coefficients
1010>>0x04              byte                0x03                \b, standard ADX
1011>>0x04              byte                0x04                \b, exponential scale
1012>>0x04              byte                0x10                \b, AHX (Dreamcast)
1013>>0x04              byte                0x11                \b, AHX
1014>>0x08              belong              x                   \b, %u Hz
1015>>0x12              byte                0x03
1016>>>0x02             beshort             >0x2B
1017>>>>0x18  belong              !0                  \b, looping
1018>>0x12              byte                0x04
1019>>>0x02             beshort             >0x37
1020>>>>0x24  belong              !0                  \b, looping
1021>>0x13              byte&0x08 0x08                \b, encrypted
1022
1023# Lossless audio (.la) (http://www.lossless-audio.com/)
10240         string    LA
1025>2        string    03        Lossless audio version 0.3
1026>2        string    04        Lossless audio version 0.4
1027
1028# Sony PlayStation Audio (.xa)
10290         leshort 0x4158      Sony PlayStation Audio
1030
1031# Portable Sound Format
1032# Used for audio rips for various consoles.
1033# http://fileformats.archiveteam.org/wiki/Portable_Sound_Format
1034# Added by David Korth <gerbilsoft@gerbilsoft.com>
10350         string    PSF
1036>3        byte      0x01
1037>3        byte      0x02
1038>3        byte      0x11
1039>3        byte      0x12
1040>3        byte      0x13
1041>3        byte      0x21
1042>3        byte      0x22
1043>3        byte      0x23
1044>3        byte      0x41
1045>>0       string    PSF       Portable Sound Format
1046!:mime    audio/x-psf
1047>>>3      byte      0x01      (Sony PlayStation)
1048>>>3      byte      0x02      (Sony PlayStation 2)
1049>>>3      byte      0x11      (Sega Saturn)
1050>>>3      byte      0x12      (Sega Dreamcast)
1051>>>3      byte      0x13      (Sega Mega Drive)
1052>>>3      byte      0x21      (Nintendo 64)
1053>>>3      byte      0x22      (Game Boy Advance)
1054>>>3      byte      0x23      (Super NES)
1055>>>3      byte      0x41      (Capcom QSound)
1056
1057# Atari 8-bit SAP audio format
1058# http://asap.sourceforge.net/sap-format.html
1059# Added by David Korth <gerbilsoft@gerbilsoft.com>
10600         string              SAP\r\n   Atari 8-bit SAP audio file
1061!:mime    audio/x-sap
1062!:ext     sap
1063>5        search/1024         NAME
1064>>&1      string              x         \b: %s
1065>>5       search/1024         AUTHOR
1066>>>&1     string              x         by %s
1067
1068# Nintendo Wii BRSTM audio format (fields)
1069# NOTE: Assuming HEAD starts at 0x40.
1070# FIXME: Replace 0x48 with HEAD offset plus 8.
10710         name      nintendo-wii-brstm-fields
1072>(0x10.L) string    HEAD      \b:
1073>>(0x10.L+0x0C)     belong    x
1074>>>(&-4.L+0x48)     belong    x
1075>>>>&-4             byte      0         PCM, signed 8-bit,
1076>>>>&-4             byte      1         PCM, signed 16-bit,
1077>>>>&-4             byte      2         THP ADPCM,
1078>>>>&-3             byte      !0        looping,
1079>>>>&-2             byte      1         mono
1080>>>>&-2             byte      2         stereo
1081>>>>&-2             byte      3         3 channels
1082>>>>&-2             byte      4         quad
1083>>>>&-2             byte      >4        %u channels
1084>>>>&0              beshort   !0        %u Hz
1085
1086# Nintendo Wii BRSTM audio format
1087# https://wiibrew.org/wiki/BRSTM_file
1088# Added by David Korth <gerbilsoft@gerbilsoft.com>
10890         string              RSTM      Nintendo Wii BRSTM audio file
1090!:mime    audio/x-brstm
1091!:ext     brstm
1092# Wii is big-endian, so default to BE.
1093>4        beshort             0xFEFF
1094>>0       use                 nintendo-wii-brstm-fields
1095>4        leshort             0xFEFF
1096>>0       use                 \^nintendo-wii-brstm-fields
1097
1098# Nintendo 3DS BCSTM audio format (fields)
10990         name      nintendo-3ds-bcstm-fields
1100>(0x18.l) string    INFO      \b:
1101# INFO block: Stream information starts at 0x20 (minus 4 for the 'INFO' magic)
1102>>&0x1C             byte      0         PCM, signed 8-bit,
1103>>&0x1C             byte      1         PCM, signed 16-bit,
1104>>&0x1C             byte      2         DSP ADPCM,
1105>>&0x1C             byte      3         IMA ADPCM,
1106>>&0x1D             byte      !0        looping,
1107>>&0x1E             byte      1         mono
1108>>&0x1E             byte      2         stereo
1109>>&0x1E             byte      3         3 channels
1110>>&0x1E             byte      4         quad
1111>>&0x1E             byte      >4        %u channels
1112>>&0x20             lelong    !0        %u Hz
1113
1114# Nintendo 3DS BCSTM audio format
1115# https://www.3dbrew.org/wiki/BCSTM
1116# Added by David Korth <gerbilsoft@gerbilsoft.com>
11170         string              CSTM      Nintendo 3DS BCSTM audio file
1118!:mime    audio/x-bcstm
1119!:ext     bcstm
1120# 3DS is little-endian, so default to LE.
1121>4        leshort             0xFEFF
1122>>0       use                 nintendo-3ds-bcstm-fields
1123>4        beshort             0xFEFF
1124>>0       use                 \^nintendo-3ds-bcstm-fields
1125
1126# Nintendo Wii U BFSTM audio format
1127# http://mk8.tockdom.com/wiki/BFSTM_(File_Format)
1128# NOTE: This format is very similar to BCSTM.
1129# Added by David Korth <gerbilsoft@gerbilsoft.com>
11300         string              FSTM      Nintendo Wii U BFSTM audio file
1131!:mime    audio/x-bfstm
1132!:ext     bfstm
1133# BFSTM is used on both Wii U (BE) and Switch (LE),
1134# so default to LE.
1135>4        leshort             0xFEFF
1136>>0       use                 nintendo-3ds-bcstm-fields
1137>4        beshort             0xFEFF
1138>>0       use                 \^nintendo-3ds-bcstm-fields
1139
1140# Nintendo 3DS BCSTM audio format (fields)
11410         name      nintendo-3ds-bcwav-fields
1142>(0x18.l) string    INFO      \b:
1143# INFO block (minus 4 for INFO magic)
1144>>&0x4              byte      0         PCM, signed 8-bit,
1145>>&0x4              byte      1         PCM, signed 16-bit,
1146>>&0x4              byte      2         DSP ADPCM,
1147>>&0x4              byte      3         IMA ADPCM,
1148>>&0x5              byte      !0        looping,
1149>>&0x8              lelong    x         stereo
1150>>&0x8              lelong    !0        %u Hz
1151
1152# Nintendo 3DS BCWAV audio format
1153# https://www.3dbrew.org/wiki/BCWAV
1154# Added by David Korth <gerbilsoft@gerbilsoft.com>
11550         string              CWAV      Nintendo 3DS BCWAV audio file
1156!:mime    audio/x-bcwav
1157!:ext     bcwav
1158# 3DS is little-endian, so default to LE.
1159>4        leshort             0xFEFF
1160>>0       use                 nintendo-3ds-bcwav-fields
1161>4        beshort             0xFEFF
1162>>0       use                 \^nintendo-3ds-bcwav-fields
1163
1164# Philips DSDIFF audio format (Direct Stream Digital Interchange File Format)
1165# Used for DSD audio recordings and Super Audio CD (SACD) mastering annotations
1166# https://dsd-guide.com/sites/default/files/white-papers/DSDIFF_1.5_Spec.pdf
1167# From: Toni Ruottu <toni.ruottu@iki.fi>
11680                   string              FRM8
116912                  string              DSD\x20             DSDIFF audio bitstream data
1170!:mime              audio/x-dff
1171!:ext               dff
1172
1173# format version chunk
1174>&0                 string              FVER
1175# version 1
1176>>&8                byte                1
1177
1178# v1 / sampling resolution ( 1 bit PDM only )
1179>>>&0               string              x                   \b, 1 bit
1180
1181# v1 / sound property chunk
1182>>>&0               search/0xff         PROP
1183>>>>&8              string              SND
1184
1185# v1 / sound property chunk / channel configuration chunk
1186>>>>>&0             search/0xff         CHNL
1187>>>>>>&8  ubeshort  1                                                                     \b, mono
1188>>>>>>&8  ubeshort  2
1189>>>>>>>&0 string              SLFTSRGT                                                    \b, stereo
1190>>>>>>>&0 default             x                                                                     \b, 2 channels
1191>>>>>>&8  ubeshort  3
1192>>>>>>>&0 string              SLFTSRGTLFE\x20                                                       \b, 2.1 stereo
1193>>>>>>>&0 string              SLFTSRGTC\x20\x20\x20                                                 \b, 3.0 stereo
1194>>>>>>>&0 default             x                                                                     \b, 3 channels
1195>>>>>>&8  ubeshort  4
1196>>>>>>>&0 string              MLFTMRGTLS\x20\x20RS\x20\x20                                \b, 4.0 surround
1197>>>>>>>&0 string              SLFTSRGTC\x20\x20\x20LFE\x20                                \b, 3.1 stereo
1198>>>>>>>&0 default             x                                                                     \b, 4 channels
1199>>>>>>&8  ubeshort  5
1200>>>>>>>&0 string              MLFTMRGTC\x20\x20\x20LS\x20\x20RS\x20\x20                   \b, 5.0 surround
1201>>>>>>>&0 string              MLFTMRGTLFE\x20LS\x20\x20RS\x20\x20                         \b, 4.1 surround
1202>>>>>>>&0 default             x                                                                     \b, 5 channels
1203>>>>>>&8  ubeshort  6
1204>>>>>>>&0 string              MLFTMRGTC\x20\x20\x20LFE\x20LS\x20\x20RS\x20\x20  \b, 5.1 surround
1205>>>>>>>&0 default             x                                                                     \b, 6 channels
1206>>>>>>&8  ubeshort  >6                                                                    \b, %u channels
1207
1208# v1 / sound property chunk / sample rate chunk
1209>>>>>&0             search/0xff         FS\x20\x20
1210>>>>>>&0  string              x                   \b,
1211>>>>>>&8  ubelong%44100       0
1212>>>>>>>&-4          ubelong/44100       x                   "DSD %u"
1213>>>>>>>&-4          ubelong             x                   %u Hz
1214
1215# v1 / sound property chunk / compression type chunk
1216>>>>>&0             search/0xff         CMPR
1217>>>>>>&8  string              DSD\x20             \b, no compression
1218>>>>>>&8  string              DST\x20             \b, DST compression
1219>>>>>>&8  default             x                   \b, unknown compression
1220
1221# v1 / quest for metadata
1222>>>&0               string              x
1223
1224# v1 / quest for metadata / edited master information chunk
1225>>>>&0              search              DIIN
1226>>>>>&0             ubequad             >0                  \b, "edited master" metadata
1227
1228# v1 / quest for metadata / ID3 chunk ( defacto standard )
1229>>>>&0              search              ID3\x20
1230>>>>>&8             string              ID3                 \b, ID3 version 2
1231>>>>>&0             byte                x                   \b.%u
1232>>>>>&1             byte                x                   \b.%u
1233
1234# v1 / quest for metadata / failure ( possibly due to -P bytes=... being too low )
1235>>>>&0              default             x                   \b, ID3 missing (or unreachable)
1236
1237# version > 1 or 0
1238>>&0                default             x                   \b, unknown version
1239
1240# Sony DSF audio format (Direct Stream Digital Stream File)
1241# Used for lossless digital storage of songs produced as DSD audio
1242# Portable analog of a track stored on a Super Audio CD (SACD)
1243# https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf
1244# From: Toni Ruottu <toni.ruottu@iki.fi>
12450                   string              DSD\x20             DSF audio bitstream data
1246!:mime              audio/x-dsf
1247!:ext               dsf
1248
1249# format chunk
1250>28                 string              fmt\x20
1251# version 1
1252>>&8                ulelong             1
1253
1254# v1 / sampling resolution ( 1 bit PDM only )
1255# NOTE: the spec incorrectly uses "bits per sample" instead of "bits per byte"
1256>>>&0               string              x                   \b, 1 bit
1257
1258# v1 / channel configuration
1259>>>>&4              ulelong             1                   \b, mono
1260>>>>&4              ulelong             2                   \b, stereo
1261>>>>&4              ulelong             3                   \b, 3.0 stereo
1262>>>>&4              ulelong             4                   \b, 4.0 surround
1263>>>>&4              ulelong             5                   \b, 3.1 stereo
1264>>>>&4              ulelong             6                   \b, 5.0 surround
1265>>>>&4              ulelong             7                   \b, 5.1 surround
1266>>>>&0              default             x
1267>>>>>&4             ulelong             x                   \b, %u channels
1268
1269# v1 / sample rate chunk
1270>>>>&0              string              x                   \b,
1271>>>>&12             ulelong%44100       0
1272>>>>>&-4  ulelong/44100       x                   "DSD %u"
1273>>>>&12             ulelong             x                   %u Hz
1274
1275# v1 / compression
1276>>>>&0              string              x
1277>>>>>&0             ulelong             0                   \b, no compression
1278>>>>>&0             default             x                   \b, unknown compression
1279
1280# v1 / embedded ID3v2 metadata
1281>>>0                string              x                   \b, ID3
1282>>>>20              ulequad             !0
1283>>>>>(20.q)         string              ID3                 version 2
1284>>>>>>&0  byte                x                   \b.%u
1285>>>>>>&1  byte                x                   \b.%u
1286# unable to verify ID3 ( possibly due to -P bytes=... being too low )
1287>>>>>&0             default             x                   unreachable
1288>>>>&0              default             x                   missing
1289
1290# version > 1 or 0
1291>>&0                default             x                   \b, unknown version
1292