xref: /dragonfly/contrib/file/magic/Magdir/audio (revision 739f0ef867128a933e021db3d831e906fcafd825)
1
2#------------------------------------------------------------------------------
3# $File: audio,v 1.124 2022/08/28 08:58:20 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
1861080      string    M.K.                4-channel Protracker module sound data
187!:mime    audio/x-mod
188#audio/x-protracker-module
189>0        string    >\0                 Title: "%s"
1901080      string    M!K!                4-channel Protracker module sound data
191!:mime    audio/x-mod
192#audio/x-protracker-module
193>0        string    >\0                 Title: "%s"
1941080      string    FLT4                4-channel Startracker module sound data
195!:mime    audio/x-mod
196#audio/x-startracker-module
197>0        string    >\0                 Title: "%s"
1981080      string    FLT8                8-channel Startracker module sound data
199!:mime    audio/x-mod
200#audio/x-startracker-module
201>0        string    >\0                 Title: "%s"
2021080      string    4CHN                4-channel Fasttracker module sound data
203!:mime    audio/x-mod
204#audio/x-fasttracker-module
205>0        string    >\0                 Title: "%s"
2061080      string    6CHN                6-channel Fasttracker module sound data
207!:mime    audio/x-mod
208#audio/x-fasttracker-module
209>0        string    >\0                 Title: "%s"
2101080      string    8CHN                8-channel Fasttracker module sound data
211!:mime    audio/x-mod
212#audio/x-fasttracker-module
213>0        string    >\0                 Title: "%s"
2141080      string    CD81                8-channel Octalyser module sound data
215!:mime    audio/x-mod
216#audio/x-octalysertracker-module
217>0        string    >\0                 Title: "%s"
2181080      string    OKTA                8-channel Octalyzer module sound data
219!:mime    audio/x-mod
220#audio/x-octalysertracker-module
221>0        string    >\0                 Title: "%s"
222# Not good enough.
223#1082     string    CH
224#>1080    string    >/0                 %.2s-channel Fasttracker "oktalyzer" module sound data
2251080      string    16CN                16-channel Taketracker module sound data
226!:mime    audio/x-mod
227#audio/x-taketracker-module
228>0        string    >\0                 Title: "%s"
2291080      string    32CN                32-channel Taketracker module sound data
230!:mime    audio/x-mod
231#audio/x-taketracker-module
232>0        string    >\0                 Title: "%s"
233
234# TOC sound files -Trevor Johnson <trevor@jpj.net>
235#
2360       string          TOC             TOC sound file
237
238# sidfiles <pooka@iki.fi>
239# added name,author,(c) and new RSID type by <doj@cubic.org> 2003-06-24
2400         string              SIDPLAY\ INFOFILE   Sidplay info file
241
2420         string              PSID                          PlaySID v2.2+ (AMIGA) sidtune
243>4        beshort             >0                            w/ header v%d,
244>14       beshort             =1                            single song,
245>14       beshort             >1                            %d songs,
246>16       beshort             >0                            default song: %d
247>0x16     string              >\0                           name: "%s"
248>0x36     string              >\0                           author: "%s"
249>0x56     string              >\0                           copyright: "%s"
250
2510         string              RSID                          RSID sidtune PlaySID compatible
252>4        beshort             >0                            w/ header v%d,
253>14       beshort             =1                            single song,
254>14       beshort             >1                            %d songs,
255>16       beshort             >0                            default song: %d
256>0x16     string              >\0                           name: "%s"
257>0x36     string              >\0                           author: "%s"
258>0x56     string              >\0                           copyright: "%s"
259
260# IRCAM sound files - Michael Pruett <michael@68k.org>
261# http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/IRCAM/IRCAM.html
2620         belong              0x64a30100                    IRCAM file (VAX little-endian)
2630         belong              0x0001a364                    IRCAM file (VAX big-endian)
2640         belong              0x64a30200                    IRCAM file (Sun big-endian)
2650         belong              0x0002a364                    IRCAM file (Sun little-endian)
2660         belong              0x64a30300                    IRCAM file (MIPS little-endian)
2670         belong              0x0003a364                    IRCAM file (MIPS big-endian)
2680         belong              0x64a30400                    IRCAM file (NeXT big-endian)
2690         belong              0x64a30400                    IRCAM file (NeXT big-endian)
2700         belong              0x0004a364                    IRCAM file (NeXT little-endian)
271
272# NIST SPHERE <mpruett@sgi.com>
2730         string              NIST_1A\n\ \ \ 1024\n         NIST SPHERE file
274
275# Sample Vision <mpruett@sgi.com>
2760         string              SOUND\ SAMPLE\ DATA\          Sample Vision file
277
278# Audio Visual Research <tonigonenstein@users.sourceforge.net>
2790         string              2BIT                          Audio Visual Research file,
280>12       beshort             =0                            mono,
281>12       beshort             =-1                           stereo,
282>14       beshort             x                             %d bits
283>16       beshort             =0                            unsigned,
284>16       beshort             =-1                           signed,
285>22       belong&0x00ffffff   x                   %d Hz,
286>18       beshort             =0                            no loop,
287>18       beshort             =-1                           loop,
288>21       ubyte               <128                          note %d,
289>22       byte                =0                            replay 5.485 KHz
290>22       byte                =1                            replay 8.084 KHz
291>22       byte                =2                            replay 10.971 KHz
292>22       byte                =3                            replay 16.168 KHz
293>22       byte                =4                            replay 21.942 KHz
294>22       byte                =5                            replay 32.336 KHz
295>22       byte                =6                            replay 43.885 KHz
296>22       byte                =7                            replay 47.261 KHz
297
298# SGI SoundTrack <mpruett@sgi.com>
2990         string              _SGI_SoundTrack               SGI SoundTrack project file
300# ID3 version 2 tags <waschk@informatik.uni-rostock.de>
3010         string              ID3       Audio file with ID3 version 2
302>3        byte                x         \b.%d
303>4        byte                x         \b.%d
304>>5       byte                &0x80     \b, unsynchronized frames
305>>5       byte                &0x40     \b, extended header
306>>5       byte                &0x20     \b, experimental
307>>5       byte                &0x10     \b, footer present
308>(6.I+10) indirect  x         \b, contains:
309
310# NSF (NES sound file) magic
3110         string              NESM\x1a  NES Sound File
312>14       string              >\0                 ("%s" by
313>46       string              >\0                 %s, copyright
314>78       string              >\0                 %s),
315>5        byte                x                   version %d,
316>6        byte                x                   %d tracks,
317>122      byte&0x2  =1                  dual PAL/NTSC
318>122      byte&0x1  =1                  PAL
319>122      byte&0x1  =0                  NTSC
320
321# NSFE (Extended NES sound file) magic
322# http://slickproductions.org/docs/NSF/nsfespec.txt
323# From: David Pflug <david@pflug.email>
3240         string              NSFE                Extended NES Sound File
325>48       search/0x1000       auth
326>>&0      string              >\0                 ("%s"
327>>>&1     string              >\0                 by %s
328>>>>&1    string              >\0                 \b, copyright %s
329>>>>>&1   string              >\0                 \b, ripped by %s
330>20       byte                x                   \b), %d tracks,
331>18       byte&0x2  =1                  dual PAL/NTSC
332>18     byte&0x2    =0
333>>18      byte&0x1  =1                  PAL
334>>18      byte&0x1  =0                  NTSC
335
336# Type: SNES SPC700 sound files
337# From: Josh Triplett <josh@freedesktop.org>
3380         string    SNES-SPC700\ Sound\ File\ Data\ v       SNES SPC700 sound file
339>&0       string    0.30                                              \b, version %s
340>>0x23    byte      0x1B                                              \b, without ID666 tag
341>>0x23    byte      0x1A                                              \b, with ID666 tag
342>>>0x2E   string    >\0                                               \b, song "%.32s"
343>>>0x4E   string    >\0                                               \b, game "%.32s"
344
345# Impulse tracker module (audio/x-it)
3460         string              IMPM                Impulse Tracker module sound data -
347!:mime    audio/x-mod
348>4        string              >\0                 "%s"
349>40       leshort             !0                  compatible w/ITv%x
350>42       leshort             !0                  created w/ITv%x
351
352# Imago Orpheus module (audio/x-imf)
35360        string              IM10                Imago Orpheus module sound data -
354>0        string              >\0                 "%s"
355
356# From <collver1@attbi.com>
357# These are the /etc/magic entries to decode modules, instruments, and
358# samples in Impulse Tracker's native format.
359
3600         string              IMPS                Impulse Tracker Sample
361>18       byte                &2                  16 bit
362>18       byte                ^2                  8 bit
363>18       byte                &4                  stereo
364>18       byte                ^4                  mono
3650         string              IMPI                Impulse Tracker Instrument
366>28       leshort             !0                  ITv%x
367>30       byte                !0                  %d samples
368
369# Yamaha TX Wave:  file(1) magic for Yamaha TX Wave audio files
370# From <collver1@attbi.com>
3710         string              LM8953              Yamaha TX Wave
372>22       byte                0x49                looped
373>22       byte                0xC9                non-looped
374>23       byte                1                   33kHz
375>23       byte                2                   50kHz
376>23       byte                3                   16kHz
377
378# scream tracker:  file(1) magic for Scream Tracker sample files
379#
380# From <collver1@attbi.com>
38176        string              SCRS                Scream Tracker Sample
382>0        byte                1                   sample
383>0        byte                2                   adlib melody
384>0        byte                >2                  adlib drum
385>31       byte                &2                  stereo
386>31       byte                ^2                  mono
387>31       byte                &4                  16bit little endian
388>31       byte                ^4                  8bit
389>30       byte                0                   unpacked
390>30       byte                1                   packed
391
392# audio
393# From: Cory Dikkers <cdikkers@swbell.net>
3940         string              MMD0                MED music file, version 0
3950         string              MMD1                OctaMED Pro music file, version 1
3960         string              MMD3                OctaMED Soundstudio music file, version 3
3970         string              OctaMEDCmpr         OctaMED Soundstudio compressed file
3980         string              MED                 MED_Song
3990         string              SymM                Symphonie SymMOD music file
400#
401# Track Length (TRL), Tracks (TRK), Samples (SMP), Subsongs (SS)
402# http://lclevy.free.fr/exotica/ahx/ahxformat.txt
4030         string              THX                 AHX version
404>3        byte                =0                  1 module data
405>3        byte                =1                  2 module data
406>11       ubyte               x                   TRK: %u
407>10       ubyte               x                   TRL: %u
408>12       ubyte               x                   SMP: %u
409>13       ubyte               x                   SS: %u
410>(4.H)              string              x                   Title: "%.128s"
411
412# header is mostly AHX format
4130                   string              HVL
414>3                  byte                <2        Hively Tracker Song
415>3                  byte                =0                  v1 module data
416>3                  byte                =1                  v2 module data
417>11                 ubyte               x                   TRK: %u
418>10                 ubyte               x                   TRL: %u
419>12                 ubyte               x                   SMP: %u
420>13                 ubyte               x                   SS: %u
421>8                  ubyte/4             =0                  CHN: 4
422>8                  ubyte/4             >0                  CHN: 4+%u
423#>-0                offset              <0xffff
424>(4.H)              string              x                   Title: "%.128s"
425
426#
4270         string              OKTASONG  Oktalyzer module data
428#
4290         string              DIGI\ Booster\ module\0       %s
430>20       byte                >0                  %c
431>>21      byte                >0                  \b%c
432>>>22     byte                >0                  \b%c
433>>>>23    byte                >0                  \b%c
434>610      string              >\0                 \b, "%s"
435#
4360         string              DBM0                DIGI Booster Pro Module
437>4        byte                >0                  V%X.
438>>5       byte                x                   \b%02X
439>16       string              >\0                 \b, "%s"
440#
4410         string              FTMN                FaceTheMusic module
442>16       string              >\0d                \b, "%s"
443
444# From: <doj@cubic.org> 2003-06-24
4450         string              AMShdr\32 Velvet Studio AMS Module v2.2
4460         string              Extreme             Extreme Tracker AMS Module v1.3
4470         string              DDMF                Xtracker DMF Module
448>4        byte                x                   v%i
449>0xD      string              >\0                 Title: "%s"
450>0x2B     string              >\0                 Composer: "%s"
4510         string              DSM\32              Dynamic Studio Module DSM
4520         string              SONG                DigiTrekker DTM Module
4530         string              DMDL                DigiTrakker MDL Module
4540         string              PSM\32              Protracker Studio PSM Module
45544        string              PTMF                Poly Tracker PTM Module
456>0        string              >\32                Title: "%s"
4570         string              MT20                MadTracker 2.0 Module MT2
4580         string              RAD\40by\40REALiTY!! RAD Adlib Tracker Module RAD
4590         string              RTMM                RTM Module
4600x426     string              MaDoKaN96 XMS Adlib Module
461>0        string              >\0                 Composer: "%s"
4620         string              AMF                 AMF Module
463>4        string              >\0                 Title: "%s"
4640         string              MODINFO1  Open Cubic Player Module Information MDZ
4650         string              Extended\40Instrument: Fast Tracker II Instrument
466
467# From: Takeshi Hamasaki <hma@syd.odn.ne.jp>
468# NOA Nancy Codec file
4690         string              \210NOA\015\012\032 NOA Nancy Codec Movie file
470# Yamaha SMAF format
4710         string              MMMD                Yamaha SMAF file
472# Sharp Jisaku Melody format for PDC
4730         string              \001Sharp\040JisakuMelody     SHARP Cell-Phone ringing Melody
474>20       string              Ver01.00  Ver. 1.00
475>>32      byte                x                   , %d tracks
476
477# Free lossless audio codec <http://flac.sourceforge.net>
478# From: Przemyslaw Augustyniak <silvathraec@rpg.pl>
4790         string                        fLaC                FLAC audio bitstream data
480!:mime    audio/flac
481>4        byte&0x7f           >0                  \b, unknown version
482>4        byte&0x7f           0                   \b
483# some common bits/sample values
484>>20      beshort&0x1f0                 0x030               \b, 4 bit
485>>20      beshort&0x1f0                 0x050               \b, 6 bit
486>>20      beshort&0x1f0                 0x070               \b, 8 bit
487>>20      beshort&0x1f0                 0x0b0               \b, 12 bit
488>>20      beshort&0x1f0                 0x0f0               \b, 16 bit
489>>20      beshort&0x1f0                 0x170               \b, 24 bit
490>>20      byte&0xe            0x0                 \b, mono
491>>20      byte&0xe            0x2                 \b, stereo
492>>20      byte&0xe            0x4                 \b, 3 channels
493>>20      byte&0xe            0x6                 \b, 4 channels
494>>20      byte&0xe            0x8                 \b, 5 channels
495>>20      byte&0xe            0xa                 \b, 6 channels
496>>20      byte&0xe            0xc                 \b, 7 channels
497>>20      byte&0xe            0xe                 \b, 8 channels
498# sample rates derived from known oscillator frequencies;
499# 24.576 MHz (video/fs=48kHz), 22.5792 (audio/fs=44.1kHz) and
500# 16.384 (other/fs=32kHz).
501>>17      belong&0xfffff0               0x02b110  \b, 11.025 kHz
502>>17      belong&0xfffff0               0x03e800  \b, 16 kHz
503>>17      belong&0xfffff0               0x056220  \b, 22.05 kHz
504>>17      belong&0xfffff0               0x05dc00  \b, 24 kHz
505>>17      belong&0xfffff0               0x07d000  \b, 32 kHz
506>>17      belong&0xfffff0               0x0ac440  \b, 44.1 kHz
507>>17      belong&0xfffff0               0x0bb800  \b, 48 kHz
508>>17      belong&0xfffff0               0x0fa000  \b, 64 kHz
509>>17      belong&0xfffff0               0x158880  \b, 88.2 kHz
510>>17      belong&0xfffff0               0x177000  \b, 96 kHz
511>>17      belong&0xfffff0               0x1f4000  \b, 128 kHz
512>>17      belong&0xfffff0               0x2b1100  \b, 176.4 kHz
513>>17      belong&0xfffff0               0x2ee000  \b, 192 kHz
514>>17      belong&0xfffff0               0x3e8000  \b, 256 kHz
515>>17      belong&0xfffff0               0x562200  \b, 352.8 kHz
516>>17      belong&0xfffff0               0x5dc000  \b, 384 kHz
517>>21      byte&0xf            >0                  \b, >4G samples
518>>21      byte&0xf            0                   \b
519>>>22     belong                        >0                  \b, %u samples
520>>>22     belong                        0                   \b, length unknown
521
522# (ISDN) VBOX voice message file (Wolfram Kleff)
5230       string          VBOX            VBOX voice message data
524
525# ReBorn Song Files (.rbs)
526# David J. Singer <doc@deadvirgins.org.uk>
5278       string          RB40             RBS Song file
528>29     string          ReBorn           created by ReBorn
529>37     string          Propellerhead    created by ReBirth
530
531# Synthesizer Generator and Kimwitu share their file format
5320         string              A#S#C#S#S#L#V#3         Synthesizer Generator or Kimwitu data
533# Kimwitu++ uses a slightly different magic
5340         string              A#S#C#S#S#L#HUB         Kimwitu++ data
535
536# From "Simon Hosie
5370       string  TFMX-SONG       TFMX module sound data
538
539# Monkey's Audio compressed audio format (.ape)
540# From danny.milo@gmx.net (Danny Milosavljevic)
541# New version from Abel Cheung <abel (@) oaka.org>
5420                   string              MAC\040             Monkey's Audio compressed format
543!:mime audio/x-ape
544>4                  uleshort  >0x0F8B             version %d
545>>(0x08.l)          uleshort  =1000               with fast compression
546>>(0x08.l)          uleshort  =2000               with normal compression
547>>(0x08.l)          uleshort  =3000               with high compression
548>>(0x08.l)          uleshort  =4000               with extra high compression
549>>(0x08.l)          uleshort  =5000               with insane compression
550>>(0x08.l+18)       uleshort  =1                  \b, mono
551>>(0x08.l+18)       uleshort  =2                  \b, stereo
552>>(0x08.l+20)       ulelong             x                   \b, sample rate %d
553>4                  uleshort  <0x0F8C             version %d
554>>6                 uleshort  =1000               with fast compression
555>>6                 uleshort  =2000               with normal compression
556>>6                 uleshort  =3000               with high compression
557>>6                 uleshort  =4000               with extra high compression
558>>6                 uleshort  =5000               with insane compression
559>>10                uleshort  =1                  \b, mono
560>>10                uleshort  =2                  \b, stereo
561>>12                ulelong             x                   \b, sample rate %d
562
563# adlib sound files
564# From: Alex Myczko <alex@aiei.ch>
565
566# https://github.com/rerrahkr/BambooTracker
5670         string    BambooTracker       BambooTracker
568>13       string    Mod                 Module
569>13       string    Ist                 Instrument
570>13       string    Bnk                 Bank
571>22       byte      x                   \b, version %u
572>21       byte      x                   \b.%u
573>20       byte      x                   \b.%u
574
5750         string              CC2x                CheeseCutter 2 song
576
5770         string              RAWADATA  RdosPlay RAW
578
5791068      string              RoR                 AMUSIC Adlib Tracker
580
5810         string              JCH                 EdLib
582
5830         string              mpu401tr  MPU-401 Trakker
584
5850         string              SAdT                Surprise! Adlib Tracker
586>4        byte                x                   Version %d
587
5880         string              XAD!                eXotic ADlib
589
5900         string              ofTAZ!              eXtra Simple Music
591
5920         string              FMK!                FM Kingtracker Song
593
5940         string              DFM                 DFM Song
595
5960         string              \<CUD-FM-File\>     CFF Song
597
5980         string              _A2module A2M Song
599
600# Spectrum 128 tunes (.ay files).
601# From: Emanuel Haupt <ehaupt@critical.ch>
6020         string              ZXAYEMUL  Spectrum 128 tune
603
6040         string              \0BONK              BONK,
605#>5       byte                x                   version %d
606>14       byte                x                   %d channel(s),
607>15       byte                =1                  lossless,
608>15       byte                =0                  lossy,
609>16       byte                x                   mid-side
610
611384       string              LockStream          LockStream Embedded file (mostly MP3 on old Nokia phones)
612
613# format VQF (proprietary codec for sound)
614# some infos on the header file available at :
615# http://www.twinvq.org/english/technology_format.html
6160         string              TWIN97012000        VQF data
617>27       short               0                   \b, Mono
618>27       short               1                   \b, Stereo
619>31       short               >0                  \b, %d kbit/s
620>35       short               >0                  \b, %d kHz
621
622# Nelson A. de Oliveira (naoliv@gmail.com)
623# .eqf
6240         string    Winamp\ EQ\ library\ file     %s
625# it will match only versions like v<digit>.<digit>
626# Since I saw only eqf files with version v1.1 I think that it's OK
627>23       string    x         \b%.4s
628# .preset
6290         string    [Equalizer\ preset] XMMS equalizer preset
630# .m3u
6310         search/1  #EXTM3U   M3U playlist text
632# .pls
6330         search/1  [playlist]          PLS playlist text
634# licq.conf
6351         string    [licq]                        LICQ configuration file
636
637# Atari ST audio files by Dirk Jagdmann <doj@cubic.org>
638# NOTE: Most SNDH music is packed using ICE, which has
639# magic numbers "ICE!" and "Ice!". Some SNDH music is
640# not packed, so we check for both packed and unpacked.
64112        string                        SNDH      SNDH Atari ST music
6420         belong&0xFFDFDFFF   0x49434521
643>14       search/40           NDH       SNDH Atari ST music
644>14       search/40           TITL      SNDH Atari ST music
6450         string              SC68\ Music-file\ /\ (c)\ (BeN)jami     sc68 Atari ST music
646
647# musepak support From: "Jiri Pejchal" <jiri.pejchal@gmail.com>
6480       string          MP+     Musepack audio (MP+)
649!:mime    audio/x-musepack
650>3      byte            255     \b, SV pre8
651>3      byte&0xF        0x6     \b, SV 6
652>3      byte&0xF        0x8     \b, SV 8
653>3      byte&0xF        0x7     \b, SV 7
654>>3     byte&0xF0       0x0     \b.0
655>>3     byte&0xF0       0x10    \b.1
656>>3     byte&0xF0       240     \b.15
657>>10    byte&0xF0       0x0     \b, no profile
658>>10    byte&0xF0       0x10    \b, profile 'Unstable/Experimental'
659>>10    byte&0xF0       0x50    \b, quality 0
660>>10    byte&0xF0       0x60    \b, quality 1
661>>10    byte&0xF0       0x70    \b, quality 2 (Telephone)
662>>10    byte&0xF0       0x80    \b, quality 3 (Thumb)
663>>10    byte&0xF0       0x90    \b, quality 4 (Radio)
664>>10    byte&0xF0       0xA0    \b, quality 5 (Standard)
665>>10    byte&0xF0       0xB0    \b, quality 6 (Xtreme)
666>>10    byte&0xF0       0xC0    \b, quality 7 (Insane)
667>>10    byte&0xF0       0xD0    \b, quality 8 (BrainDead)
668>>10    byte&0xF0       0xE0    \b, quality 9
669>>10    byte&0xF0       0xF0    \b, quality 10
670>>27    byte            0x0     \b, Buschmann 1.7.0-9, Klemm 0.90-1.05
671>>27    byte            102     \b, Beta 1.02
672>>27    byte            104     \b, Beta 1.04
673>>27    byte            105     \b, Alpha 1.05
674>>27    byte            106     \b, Beta 1.06
675>>27    byte            110     \b, Release 1.1
676>>27    byte            111     \b, Alpha 1.11
677>>27    byte            112     \b, Beta 1.12
678>>27    byte            113     \b, Alpha 1.13
679>>27    byte            114     \b, Beta 1.14
680>>27    byte            115     \b, Alpha 1.15
681
6820       string          MPCK    Musepack audio (MPCK)
683!:mime    audio/x-musepack
684
685# IMY
686# from http://filext.com/detaillist.php?extdetail=IMY
687# https://cellphones.about.com/od/cellularfaqs/f/rf_imelody.htm
688# http://download.ncl.ie/doc/api/ie/ncl/media/music/IMelody.html
689# http://www.wx800.com/msg/download/irda/iMelody.pdf
6900         string    BEGIN:IMELODY       iMelody Ringtone Format
691
692# From: "Mateus Caruccio" <mateus@caruccio.com>
693# guitar pro v3,4,5 from http://filext.com/file-extension/gp3
6940         string    \030FICHIER\ GUITAR\ PRO\ v3. Guitar Pro Ver. 3 Tablature
695
696# From: "Leslie P. Polzer" <leslie.polzer@gmx.net>
69760        string    SONG                SoundFX Module sound file
698
699# Type: Adaptive Multi-Rate Codec
700# URL:  http://filext.com/detaillist.php?extdetail=AMR
701# From: Russell Coker <russell@coker.com.au>
7020         string    #!AMR               Adaptive Multi-Rate Codec (GSM telephony)
703!:mime    audio/amr
704!:ext  amr
705
706# Type: SuperCollider 3 Synth Definition File Format
707# From: Mario Lang <mlang@debian.org>
7080         string    SCgf      SuperCollider3 Synth Definition file,
709>4        belong    x         version %d
710
711# Type: True Audio Lossless Audio
712# URL:  https://wiki.multimedia.cx/index.php?title=True_Audio
713# From: Mike Melanson <mike@multimedia.cx>
7140         string    TTA1      True Audio Lossless Audio
715
716# Type: WavPack Lossless Audio
717# URL:  https://wiki.multimedia.cx/index.php?title=WavPack
718# From: Mike Melanson <mike@multimedia.cx>
7190         string    wvpk      WavPack Lossless Audio
720
721# From Fabio R. Schmidlin <frs@pop.com.br>
722# VGM music file
7230         string              Vgm\040
724>9        ubyte               >0        VGM Video Game Music dump v
725!:mime    audio/x-vgm
726!:ext     vgm
727>>9       ubyte/16  >0        \b%d
728>>9       ubyte&0x0F          x         \b%d
729>>8       ubyte/16  x         \b.%d
730>>8       ubyte&0x0F          >0        \b%d
731#Get soundchips
732>>8       ubyte               x         \b, soundchip(s)=
733>>0x0C    ulelong             >0        SN76489 (PSG),
734>>0x10    ulelong             >0        YM2413 (OPLL),
735>>0x2C    ulelong             >0        YM2612 (OPN2),
736>>0x30    ulelong             >0        YM2151 (OPM),
737>>0x38    ulelong             >0        Sega PCM,
738>>0x34    ulelong             >0xC
739>>>0x40   ulelong             >0        RF5C68 (PCM),
740>>0x34    ulelong             >0x10
741>>>0x44   ulelong             >0        YM2203 (OPN),
742>>0x34    ulelong             >0x14
743>>>0x48   ulelong             >0        YM2608 (OPNA),
744>>0x34    ulelong             >0x18
745>>>0x4C   lelong              >0        YM2610 (OPNB),
746>>>0x4C   lelong              <0        YM2610B (OPNB+2FM),
747>>0x34    ulelong             >0x1C
748>>>0x50   ulelong             >0        YM3812 (OPL2),
749>>0x34    ulelong             >0x20
750>>>0x54   ulelong             >0        YM3526 (OPL),
751>>0x34    ulelong             >0x24
752>>>0x58   ulelong             >0        Y8950 (MSX-Audio),
753>>0x34    ulelong             >0x28
754>>>0x5C   ulelong             >0        YMF262 (OPL3),
755>>0x34    ulelong             >0x2C
756>>>0x60   ulelong             >0        YMF278B (OPL4),
757>>0x34    ulelong             >0x30
758>>>0x64   ulelong             >0        YMF271 (OPX),
759>>0x34    ulelong             >0x34
760>>>0x68   ulelong             >0        YMZ280B (PCMD8),
761>>0x34    ulelong             >0x38
762>>>0x6C   ulelong             >0        RF5C164 (PCM),
763>>0x34    ulelong             >0x3C
764>>>0x70   ulelong             >0        PWM,
765>>0x34    ulelong             >0x40
766>>>0x74   ulelong             >0
767>>>>0x78 ubyte                0x00      AY-3-8910,
768>>>>0x78 ubyte                0x01      AY-3-8912,
769>>>>0x78 ubyte                0x02      AY-3-8913,
770>>>>0x78 ubyte                0x03      AY-3-8930,
771>>>>0x78 ubyte                0x10      YM2149,
772>>>>0x78 ubyte                0x11      YM3439,
773>>>>0x78 ubyte                0x12      YMZ284,
774>>>>0x78 ubyte                0x13      YMZ294,
775# VGM 1.61
776>>0x34    ulelong             >0x4C
777>>>0x80   ulelong             >0        DMG,
778>>0x34    ulelong             >0x50
779>>>0x84   lelong              >0        NES APU,
780>>>0x84   lelong              <0        NES APU with FDS,
781>>0x34    ulelong             >0x54
782>>>0x88   ulelong             >0        MultiPCM,
783>>0x34    ulelong             >0x58
784>>>0x8C   ulelong             >0        uPD7759 (ADPCM Speech),
785>>0x34    ulelong             >0x5C
786>>>0x90   ulelong             >0        OKIM6258 (ADPCM Speech),
787>>0x34    ulelong             >0x64
788>>>0x98   ulelong             >0        OKIM6295 (ADPCM),
789>>0x34    ulelong             >0x68
790>>>0x9C   ulelong             >0        K051649,
791>>0x34    ulelong             >0x6C
792>>>0xA0   ulelong             >0        K054539,
793>>0x34    ulelong             >0x70
794>>>0xA4   ulelong             >0        HuC6280,
795>>0x34    ulelong             >0x74
796>>>0xA8   ulelong             >0        C140,
797>>0x34    ulelong             >0x78
798>>>0xAC   ulelong             >0        K053260,
799>>0x34    ulelong             >0x7C
800>>>0xB0   ulelong             >0        Pokey,
801>>0x34    ulelong             >0x80
802>>>0xB4   ulelong             >0        QSound,
803# VGM 1.71
804>>0x34    ulelong             >0x84
805>>>0xB8   ulelong             >0        SCSP,
806>>0x34    ulelong             >0x8C
807>>>0xC0   ulelong             >0        WonderSwan,
808>>0x34    ulelong             >0x90
809>>>0xC4   ulelong             >0        VSU,
810>>0x34    ulelong             >0x94
811>>>0xC8   ulelong             >0        SAA1099,
812>>0x34    ulelong             >0x98
813>>>0xCC   ulelong             >0        ES5503 (DOC),
814>>0x34    ulelong             >0x9C
815>>>0xD0   lelong              >0        ES5505 (OTIS),
816>>>0xD0   lelong              <0        ES5506 (OTTO),
817>>0x34    ulelong             >0xA4
818>>>0xD8   ulelong             >0        X1-010,
819>>0x34    ulelong             >0xA8
820>>>0xDC   ulelong             >0        C352,
821>>0x34    ulelong             >0xAC
822>>>0xE0   ulelong             >0        GA20,
823
824# GVOX Encore file format
825# Since this is a proprietary file format and there is no publicly available
826# format specification, this is just based on induction
827#
8280         string    SCOW
829>4        byte      0xc4      GVOX Encore music, version 5.0 or above
830>4        byte      0xc2      GVOX Encore music, version < 5.0
831
8320         string    ZBOT
833>4        byte      0xc5      GVOX Encore music, version < 5.0
834
835# Summary:          Garmin Voice Processing Module (WAVE audios)
836# From:             Joerg Jenderek
837# URL:              https://www.garmin.com/
838# Reference:        http://www.poi-factory.com/node/19580
839# NOTE:             there exist 2 other Garmin VPM formats
8400                   string    AUDIMG
841# skip text files starting with string "AUDIMG"
842>13                 ubyte               <13       Garmin Voice Processing Module
843!:mime    audio/x-vpm-wav-garmin
844!:ext     vpm
845# 3 bytes indicating the voice version (200,220)
846>>6                 string              x         \b, version %3.3s
847# day of release (01-31)
848>>12                ubyte               x         \b, %.2d
849# month of release (01-12)
850>>13                ubyte               x         \b.%.2d
851# year of release (like 2006, 2007, 2008)
852>>14                uleshort  x         \b.%.4d
853# hour of release (0-23)
854>>11                ubyte               x         %.2d
855# minute of release (0-59)
856>>10                ubyte               x         \b:%.2d
857# second of release (0-59)
858>>9                 ubyte               x         \b:%.2d
859# if you select a language like german on your garmin device
860# you can only select voice modules with corresponding language byte ID like 1
861>>18                ubyte               x         \b, language ID %d
862# structure for phrases/sentences?
863# number of voice sample in the 1st phrase?
864#>>19               uleshort            x         \b, %#x samples
865#>>>21              uleshort            >0        \b, at %#4.4x
866#>>>(21.s)          ubequad                       x         %#llx
867# 2nd phrase?
868#>>23               uleshort            x         \b, %#x samples
869#>>>25              uleshort            >0        \b, at %#4.4x
870#>>>(25.s)          ubequad                       x         %#llx
871# pointer to 1st audio WAV sample
872>>16                uleshort  >0
873>>>(16.s) ulelong             >0        \b, at %#x
874# WAV length
875# 1 space char after "bytes" to get phrase "bytes RIFF"
876>>>>(16.s+4)        ulelong             >0        %u bytes
877# look for magic
878>>>>>(&-8.l)        string              RIFF
879# determine type by ./riff
880>>>>>>&-4 indirect  x
881# 2 - ~ 131 WAV samples following same way
882#
883# Summary:          encrypted Garmin Voice Processing Module
884# From:             Joerg Jenderek
885# URL:              https://www.garmin.com/us/products/ontheroad/voicestudio
886# NOTE:             Encrypted variant used in voices like DrNightmare, Elfred, Yeti.
887#                   There exist 2 other Garmin VPM formats
8880         ubequad             0xa141190fecc8ced6  Garmin Voice Processing Module (encrypted)
889!:mime    audio/x-vpm-garmin
890!:ext     vpm
891
892# From Martin Mueller Skarbiniks Pedersen
8930                   string              GDM
894>0x3                byte                0xFE      General Digital Music.
895>0x4                string              >\0       title: "%s"
896>0x24               string              >\0       musician: "%s"
897>>0x44              beshort             0x0D0A
898>>>0x46             byte                0x1A
899>>>>0x47  string              GMFS      Version
900>>>>0x4B  byte                x         %d.
901>>>>0x4C  byte                x         \b%02d
902>>>>0x4D  beshort             0x000     (2GDM v
903>>>>0x4F  byte                x         \b%d.
904>>>>>0x50 byte                x         \b%d)
905
9060                   string              MTM       Multitracker
907>0x3                byte/16             x         Version %d.
908>0x3                byte&0x0F x         \b%02d
909>>0x4               string              >\0       title: "%s"
910
9110                   string              MO3
912>3                  ubyte               <6        MOdule with MP3
913>>3                 byte                0         Version   0         (With MP3 and lossless)
914>>3                 byte                1         Version   1         (With ogg and lossless)
915>>3                 byte                3         Version 2.2
916>>3                 byte                4         (With no LAME header)
917>>3                 byte                5         Version 2.4
918
9190                   string              ADRVPACK  AProSys   module
920
921# ftp://ftp.modland.com/pub/documents/format_documentation/\
922# Art%20Of%20Noise%20(.aon).txt
9230                   string              AON
924>4                  string              "ArtOfNoise by Bastian Spiegel(twice/lego)"
925>0x2e               string              NAME      Art of Noise Tracker Song
926>3                  string              <9
927>3                  string              4         (4 voices)
928>3                  string              8         (8 voices)
929>>0x36              string              >\0       Title: "%s"
930
9310                   string              FAR
932>0x2c               byte                0x0d
933>0x2d               byte                0x0a
934>0x2e               byte                0x1a
935>>0x3               byte                0xFE      Farandole Tracker Song
936>>>0x31             byte/16             x         Version %d.
937>>>0x31             byte&0x0F x         \b%02d
938>>>>0x4             string              >\0       \b, title: "%s"
939
940# magic for Klystrack, https://kometbomb.github.io/klystrack/
941# from Alex Myczko <alex@aiei.ch>
9420         string    cyd!song  Klystrack song
943>8        byte      >0                  \b, version %u
944>8        byte      >26
945#>>9      byte      x                   \b, channels %u
946#>>10     leshort   x                   \b, time signature %u
947#>>12     leshort   x                   \b, sequence step %u
948#>>14     byte      x                   \b, instruments %u
949#>>15     leshort   x                   \b, patterns %u
950#>>17     leshort   x                   \b, sequences %u
951#>>19     leshort   x                   \b, length %u
952#>>21     leshort   x                   \b, loop point %u
953#>>23     byte      x                   \b, master volume %u
954#>>24     byte      x                   \b, song speed %u
955#>>25     byte      x                   \b, song speed2 %u
956#>>26     byte      x                   \b, song rate %u
957#>>27     belong    x                   \b, flags %#x
958#>>31     byte      x                   \b, multiplex period %u
959#>>32     byte      x                   \b, pitch inaccuracy %u
960>>149     pstring   x                   \b, title %s
961
9620         string    cyd!inst  Klystrack instrument
963
964# magic for WOPL instrument files, https://github.com/Wohlstand/OPL3BankEditor
965# see Specifications/WOPL-and-OPLI-Specification.txt
966
9670         string    WOPL3-INST\0        WOPL instrument
968>11       leshort   x         \b, version %u
9690         string    WOPL3-BANK\0        WOPL instrument bank
970>11       leshort   x         \b, version %u
971
972# AdLib/OPL instrument files. Format specifications on
973#  http://www.shikadi.net/moddingwiki
9740         string    Junglevision\ Patch\ File     Junglevision instrument data
9750         string    #OPL_II#  DMX OP2 instrument data
9760         string    IBK\x1a             IBK instrument data
9770         string    2OP\x1a             IBK instrument data, 2 operators
9780         string    4OP\x1a             IBK instrument data, 4 operators
9792         string    ADLIB-              AdLib instrument data
980>0        byte      x                   \b, version %u
981>1        byte      x                   \b.%u
982
983# CRI ADX ADPCM audio
984# Used by various Sega games.
985# https://en.wikipedia.org/wiki/ADX_(file_format)
986# https://wiki.multimedia.cx/index.php/CRI_ADX_file
987# Added by David Korth <gerbilsoft@gerbilsoft.com>
9880x00                beshort             0x8000
989>(2.S-2)  string              (c)CRI              CRI ADX ADPCM audio
990!:ext adx
991!:mime audio/x-adx
992!:strength +50
993>>0x12              byte                x                   v%u
994>>0x04              byte                0x02                \b, pre-set prediction coefficients
995>>0x04              byte                0x03                \b, standard ADX
996>>0x04              byte                0x04                \b, exponential scale
997>>0x04              byte                0x10                \b, AHX (Dreamcast)
998>>0x04              byte                0x11                \b, AHX
999>>0x08              belong              x                   \b, %u Hz
1000>>0x12              byte                0x03
1001>>>0x02             beshort             >0x2B
1002>>>>0x18  belong              !0                  \b, looping
1003>>0x12              byte                0x04
1004>>>0x02             beshort             >0x37
1005>>>>0x24  belong              !0                  \b, looping
1006>>0x13              byte&0x08 0x08                \b, encrypted
1007
1008# Lossless audio (.la) (http://www.lossless-audio.com/)
10090         string    LA
1010>2        string    03        Lossless audio version 0.3
1011>2        string    04        Lossless audio version 0.4
1012
1013# Sony PlayStation Audio (.xa)
10140         leshort 0x4158      Sony PlayStation Audio
1015
1016# Portable Sound Format
1017# Used for audio rips for various consoles.
1018# http://fileformats.archiveteam.org/wiki/Portable_Sound_Format
1019# Added by David Korth <gerbilsoft@gerbilsoft.com>
10200         string    PSF
1021>3        byte      0x01
1022>3        byte      0x02
1023>3        byte      0x11
1024>3        byte      0x12
1025>3        byte      0x13
1026>3        byte      0x21
1027>3        byte      0x22
1028>3        byte      0x23
1029>3        byte      0x41
1030>>0       string    PSF       Portable Sound Format
1031!:mime    audio/x-psf
1032>>>3      byte      0x01      (Sony PlayStation)
1033>>>3      byte      0x02      (Sony PlayStation 2)
1034>>>3      byte      0x11      (Sega Saturn)
1035>>>3      byte      0x12      (Sega Dreamcast)
1036>>>3      byte      0x13      (Sega Mega Drive)
1037>>>3      byte      0x21      (Nintendo 64)
1038>>>3      byte      0x22      (Game Boy Advance)
1039>>>3      byte      0x23      (Super NES)
1040>>>3      byte      0x41      (Capcom QSound)
1041
1042# Atari 8-bit SAP audio format
1043# http://asap.sourceforge.net/sap-format.html
1044# Added by David Korth <gerbilsoft@gerbilsoft.com>
10450         string              SAP\r\n   Atari 8-bit SAP audio file
1046!:mime    audio/x-sap
1047!:ext     sap
1048>5        search/1024         NAME
1049>>&1      string              x         \b: %s
1050>>5       search/1024         AUTHOR
1051>>>&1     string              x         by %s
1052
1053# Nintendo Wii BRSTM audio format (fields)
1054# NOTE: Assuming HEAD starts at 0x40.
1055# FIXME: Replace 0x48 with HEAD offset plus 8.
10560         name      nintendo-wii-brstm-fields
1057>(0x10.L) string    HEAD      \b:
1058>>(0x10.L+0x0C)     belong    x
1059>>>(&-4.L+0x48)     belong    x
1060>>>>&-4             byte      0         PCM, signed 8-bit,
1061>>>>&-4             byte      1         PCM, signed 16-bit,
1062>>>>&-4             byte      2         THP ADPCM,
1063>>>>&-3             byte      !0        looping,
1064>>>>&-2             byte      1         mono
1065>>>>&-2             byte      2         stereo
1066>>>>&-2             byte      3         3 channels
1067>>>>&-2             byte      4         quad
1068>>>>&-2             byte      >4        %u channels
1069>>>>&0              beshort   !0        %u Hz
1070
1071# Nintendo Wii BRSTM audio format
1072# https://wiibrew.org/wiki/BRSTM_file
1073# Added by David Korth <gerbilsoft@gerbilsoft.com>
10740         string              RSTM      Nintendo Wii BRSTM audio file
1075!:mime    audio/x-brstm
1076!:ext     brstm
1077# Wii is big-endian, so default to BE.
1078>4        beshort             0xFEFF
1079>>0       use                 nintendo-wii-brstm-fields
1080>4        leshort             0xFEFF
1081>>0       use                 \^nintendo-wii-brstm-fields
1082
1083# Nintendo 3DS BCSTM audio format (fields)
10840         name      nintendo-3ds-bcstm-fields
1085>(0x18.l) string    INFO      \b:
1086# INFO block: Stream information starts at 0x20 (minus 4 for the 'INFO' magic)
1087>>&0x1C             byte      0         PCM, signed 8-bit,
1088>>&0x1C             byte      1         PCM, signed 16-bit,
1089>>&0x1C             byte      2         DSP ADPCM,
1090>>&0x1C             byte      3         IMA ADPCM,
1091>>&0x1D             byte      !0        looping,
1092>>&0x1E             byte      1         mono
1093>>&0x1E             byte      2         stereo
1094>>&0x1E             byte      3         3 channels
1095>>&0x1E             byte      4         quad
1096>>&0x1E             byte      >4        %u channels
1097>>&0x20             lelong    !0        %u Hz
1098
1099# Nintendo 3DS BCSTM audio format
1100# https://www.3dbrew.org/wiki/BCSTM
1101# Added by David Korth <gerbilsoft@gerbilsoft.com>
11020         string              CSTM      Nintendo 3DS BCSTM audio file
1103!:mime    audio/x-bcstm
1104!:ext     bcstm
1105# 3DS is little-endian, so default to LE.
1106>4        leshort             0xFEFF
1107>>0       use                 nintendo-3ds-bcstm-fields
1108>4        beshort             0xFEFF
1109>>0       use                 \^nintendo-3ds-bcstm-fields
1110
1111# Nintendo Wii U BFSTM audio format
1112# http://mk8.tockdom.com/wiki/BFSTM_(File_Format)
1113# NOTE: This format is very similar to BCSTM.
1114# Added by David Korth <gerbilsoft@gerbilsoft.com>
11150         string              FSTM      Nintendo Wii U BFSTM audio file
1116!:mime    audio/x-bfstm
1117!:ext     bfstm
1118# BFSTM is used on both Wii U (BE) and Switch (LE),
1119# so default to LE.
1120>4        leshort             0xFEFF
1121>>0       use                 nintendo-3ds-bcstm-fields
1122>4        beshort             0xFEFF
1123>>0       use                 \^nintendo-3ds-bcstm-fields
1124
1125# Nintendo 3DS BCSTM audio format (fields)
11260         name      nintendo-3ds-bcwav-fields
1127>(0x18.l) string    INFO      \b:
1128# INFO block (minus 4 for INFO magic)
1129>>&0x4              byte      0         PCM, signed 8-bit,
1130>>&0x4              byte      1         PCM, signed 16-bit,
1131>>&0x4              byte      2         DSP ADPCM,
1132>>&0x4              byte      3         IMA ADPCM,
1133>>&0x5              byte      !0        looping,
1134>>&0x8              lelong    x         stereo
1135>>&0x8              lelong    !0        %u Hz
1136
1137# Nintendo 3DS BCWAV audio format
1138# https://www.3dbrew.org/wiki/BCWAV
1139# Added by David Korth <gerbilsoft@gerbilsoft.com>
11400         string              CWAV      Nintendo 3DS BCWAV audio file
1141!:mime    audio/x-bcwav
1142!:ext     bcwav
1143# 3DS is little-endian, so default to LE.
1144>4        leshort             0xFEFF
1145>>0       use                 nintendo-3ds-bcwav-fields
1146>4        beshort             0xFEFF
1147>>0       use                 \^nintendo-3ds-bcwav-fields
1148
1149# Philips DSDIFF audio format (Direct Stream Digital Interchange File Format)
1150# Used for DSD audio recordings and Super Audio CD (SACD) mastering annotations
1151# https://dsd-guide.com/sites/default/files/white-papers/DSDIFF_1.5_Spec.pdf
1152# From: Toni Ruottu <toni.ruottu@iki.fi>
11530                   string              FRM8
115412                  string              DSD\x20             DSDIFF audio bitstream data
1155!:mime              audio/x-dff
1156!:ext               dff
1157
1158# format version chunk
1159>&0                 string              FVER
1160# version 1
1161>>&8                byte                1
1162
1163# v1 / sampling resolution ( 1 bit PDM only )
1164>>>&0               string              x                   \b, 1 bit
1165
1166# v1 / sound property chunk
1167>>>&0               search/0xff         PROP
1168>>>>&8              string              SND
1169
1170# v1 / sound property chunk / channel configuration chunk
1171>>>>>&0             search/0xff         CHNL
1172>>>>>>&8  ubeshort  1                                                                     \b, mono
1173>>>>>>&8  ubeshort  2
1174>>>>>>>&0 string              SLFTSRGT                                                    \b, stereo
1175>>>>>>>&0 default             x                                                                     \b, 2 channels
1176>>>>>>&8  ubeshort  3
1177>>>>>>>&0 string              SLFTSRGTLFE\x20                                                       \b, 2.1 stereo
1178>>>>>>>&0 string              SLFTSRGTC\x20\x20\x20                                                 \b, 3.0 stereo
1179>>>>>>>&0 default             x                                                                     \b, 3 channels
1180>>>>>>&8  ubeshort  4
1181>>>>>>>&0 string              MLFTMRGTLS\x20\x20RS\x20\x20                                \b, 4.0 surround
1182>>>>>>>&0 string              SLFTSRGTC\x20\x20\x20LFE\x20                                \b, 3.1 stereo
1183>>>>>>>&0 default             x                                                                     \b, 4 channels
1184>>>>>>&8  ubeshort  5
1185>>>>>>>&0 string              MLFTMRGTC\x20\x20\x20LS\x20\x20RS\x20\x20                   \b, 5.0 surround
1186>>>>>>>&0 string              MLFTMRGTLFE\x20LS\x20\x20RS\x20\x20                         \b, 4.1 surround
1187>>>>>>>&0 default             x                                                                     \b, 5 channels
1188>>>>>>&8  ubeshort  6
1189>>>>>>>&0 string              MLFTMRGTC\x20\x20\x20LFE\x20LS\x20\x20RS\x20\x20  \b, 5.1 surround
1190>>>>>>>&0 default             x                                                                     \b, 6 channels
1191>>>>>>&8  ubeshort  >6                                                                    \b, %u channels
1192
1193# v1 / sound property chunk / sample rate chunk
1194>>>>>&0             search/0xff         FS\x20\x20
1195>>>>>>&0  string              x                   \b,
1196>>>>>>&8  ubelong%44100       0
1197>>>>>>>&-4          ubelong/44100       x                   "DSD %u"
1198>>>>>>>&-4          ubelong             x                   %u Hz
1199
1200# v1 / sound property chunk / compression type chunk
1201>>>>>&0             search/0xff         CMPR
1202>>>>>>&8  string              DSD\x20             \b, no compression
1203>>>>>>&8  string              DST\x20             \b, DST compression
1204>>>>>>&8  default             x                   \b, unknown compression
1205
1206# v1 / quest for metadata
1207>>>&0               string              x
1208
1209# v1 / quest for metadata / edited master information chunk
1210>>>>&0              search              DIIN
1211>>>>>&0             ubequad             >0                  \b, "edited master" metadata
1212
1213# v1 / quest for metadata / ID3 chunk ( defacto standard )
1214>>>>&0              search              ID3\x20
1215>>>>>&8             string              ID3                 \b, ID3 version 2
1216>>>>>&0             byte                x                   \b.%u
1217>>>>>&1             byte                x                   \b.%u
1218
1219# v1 / quest for metadata / failure ( possibly due to -P bytes=... being too low )
1220>>>>&0              default             x                   \b, ID3 missing (or unreachable)
1221
1222# version > 1 or 0
1223>>&0                default             x                   \b, unknown version
1224
1225# Sony DSF audio format (Direct Stream Digital Stream File)
1226# Used for lossless digital storage of songs produced as DSD audio
1227# Portable analog of a track stored on a Super Audio CD (SACD)
1228# https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf
1229# From: Toni Ruottu <toni.ruottu@iki.fi>
12300                   string              DSD\x20             DSF audio bitstream data
1231!:mime              audio/x-dsf
1232!:ext               dsf
1233
1234# format chunk
1235>28                 string              fmt\x20
1236# version 1
1237>>&8                ulelong             1
1238
1239# v1 / sampling resolution ( 1 bit PDM only )
1240# NOTE: the spec incorrectly uses "bits per sample" instead of "bits per byte"
1241>>>&0               string              x                   \b, 1 bit
1242
1243# v1 / channel configuration
1244>>>>&4              ulelong             1                   \b, mono
1245>>>>&4              ulelong             2                   \b, stereo
1246>>>>&4              ulelong             3                   \b, 3.0 stereo
1247>>>>&4              ulelong             4                   \b, 4.0 surround
1248>>>>&4              ulelong             5                   \b, 3.1 stereo
1249>>>>&4              ulelong             6                   \b, 5.0 surround
1250>>>>&4              ulelong             7                   \b, 5.1 surround
1251>>>>&0              default             x
1252>>>>>&4             ulelong             x                   \b, %u channels
1253
1254# v1 / sample rate chunk
1255>>>>&0              string              x                   \b,
1256>>>>&12             ulelong%44100       0
1257>>>>>&-4  ulelong/44100       x                   "DSD %u"
1258>>>>&12             ulelong             x                   %u Hz
1259
1260# v1 / compression
1261>>>>&0              string              x
1262>>>>>&0             ulelong             0                   \b, no compression
1263>>>>>&0             default             x                   \b, unknown compression
1264
1265# v1 / embedded ID3v2 metadata
1266>>>0                string              x                   \b, ID3
1267>>>>20              ulequad             !0
1268>>>>>(20.q)         string              ID3                 version 2
1269>>>>>>&0  byte                x                   \b.%u
1270>>>>>>&1  byte                x                   \b.%u
1271# unable to verify ID3 ( possibly due to -P bytes=... being too low )
1272>>>>>&0             default             x                   unreachable
1273>>>>&0              default             x                   missing
1274
1275# version > 1 or 0
1276>>&0                default             x                   \b, unknown version
1277