rtld - do not allow both dynamic DTV index and static TLS offset
[dragonfly.git] / contrib / file / magic / Magdir / audio
blob0328f7ba5e44ff90857df7141dfc96a80980ae2a
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")
6 # Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com),
7 # and others
10 # Sun/NeXT audio data
11 0       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
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
49 0       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
85 # Creative Labs AUDIO stuff
86 0       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
94 0       string  CTMF                    Creative Music (CMF) data
95 !:mime  audio/x-unknown
96 0       string  SBI                     SoundBlaster instrument data
97 !:mime  audio/x-unknown
98 0       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
105 # first entry is also the string "NTRK"
106 0       belong          0x4e54524b      MultiTrack sound data
107 >4      belong          x               - version %d
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]
111 0       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)
118 # Real Audio (Magic .ra\0375)
119 0       belong          0x2e7261fd      RealAudio sound file
120 !:mime  audio/x-pn-realaudio
121 0       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.
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)
135 0       string          MAS_U           ULT(imate) Module sound data
137 #0      string          FAR             Module sound data
138 #>4     string          >\15            Title: "%s"
140 0x2c    string          SCRM            ScreamTracker III Module sound data
141 >0      string          >\0             Title: "%s"
142 !:mime  audio/x-s3m
144 # .stm before it got above .s3m extension
145 0x16    string          \!Scream\!      ScreamTracker Module sound data
146 >0      string          >\0             Title: "%s"
148 # Gravis UltraSound patches
149 # From <ache@nagual.ru>
151 0       string          GF1PATCH110\0ID#000002\0        GUS patch
152 0       string          GF1PATCH100\0ID#000002\0        Old GUS patch
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)
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
168 0       string  MAS_UTrack_V00
169 >14     string  >/0             ultratracker V1.%.1s module sound data
170 !:mime  audio/x-mod
171 #audio/x-tracker-module
173 0       string  UN05            MikMod UNI format module sound data
175 0       string  Extended\ Module: Fasttracker II module sound data
176 !:mime  audio/x-mod
177 #audio/x-tracker-module
178 >17     string  >\0             Title: "%s"
180 21      string/c        =!SCREAM!       Screamtracker 2 module sound data
181 !:mime  audio/x-mod
182 #audio/x-screamtracker-module
183 21      string  BMOD2STM        Screamtracker 2 module sound data
184 !:mime  audio/x-mod
185 #audio/x-screamtracker-module
186 1080    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"
190 1080    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"
194 1080    string  FLT4            4-channel Startracker module sound data
195 !:mime  audio/x-mod
196 #audio/x-startracker-module
197 >0      string  >\0             Title: "%s"
198 1080    string  FLT8            8-channel Startracker module sound data
199 !:mime  audio/x-mod
200 #audio/x-startracker-module
201 >0      string  >\0             Title: "%s"
202 1080    string  4CHN            4-channel Fasttracker module sound data
203 !:mime  audio/x-mod
204 #audio/x-fasttracker-module
205 >0      string  >\0             Title: "%s"
206 1080    string  6CHN            6-channel Fasttracker module sound data
207 !:mime  audio/x-mod
208 #audio/x-fasttracker-module
209 >0      string  >\0             Title: "%s"
210 1080    string  8CHN            8-channel Fasttracker module sound data
211 !:mime  audio/x-mod
212 #audio/x-fasttracker-module
213 >0      string  >\0             Title: "%s"
214 1080    string  CD81            8-channel Octalyser module sound data
215 !:mime  audio/x-mod
216 #audio/x-octalysertracker-module
217 >0      string  >\0             Title: "%s"
218 1080    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
225 1080    string  16CN            16-channel Taketracker module sound data
226 !:mime  audio/x-mod
227 #audio/x-taketracker-module
228 >0      string  >\0             Title: "%s"
229 1080    string  32CN            32-channel Taketracker module sound data
230 !:mime  audio/x-mod
231 #audio/x-taketracker-module
232 >0      string  >\0             Title: "%s"
234 # TOC sound files -Trevor Johnson <trevor@jpj.net>
236 0       string          TOC             TOC sound file
238 # sidfiles <pooka@iki.fi>
239 # added name,author,(c) and new RSID type by <doj@cubic.org> 2003-06-24
240 0       string          SIDPLAY\ INFOFILE       Sidplay info file
242 0       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"
251 0       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"
260 # IRCAM sound files - Michael Pruett <michael@68k.org>
261 # http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/IRCAM/IRCAM.html
262 0       belong          0x64a30100              IRCAM file (VAX little-endian)
263 0       belong          0x0001a364              IRCAM file (VAX big-endian)
264 0       belong          0x64a30200              IRCAM file (Sun big-endian)
265 0       belong          0x0002a364              IRCAM file (Sun little-endian)
266 0       belong          0x64a30300              IRCAM file (MIPS little-endian)
267 0       belong          0x0003a364              IRCAM file (MIPS big-endian)
268 0       belong          0x64a30400              IRCAM file (NeXT big-endian)
269 0       belong          0x64a30400              IRCAM file (NeXT big-endian)
270 0       belong          0x0004a364              IRCAM file (NeXT little-endian)
272 # NIST SPHERE <mpruett@sgi.com>
273 0       string          NIST_1A\n\ \ \ 1024\n   NIST SPHERE file
275 # Sample Vision <mpruett@sgi.com>
276 0       string          SOUND\ SAMPLE\ DATA\    Sample Vision file
278 # Audio Visual Research <tonigonenstein@users.sourceforge.net>
279 0       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
298 # SGI SoundTrack <mpruett@sgi.com>
299 0       string          _SGI_SoundTrack         SGI SoundTrack project file
300 # ID3 version 2 tags <waschk@informatik.uni-rostock.de>
301 0       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:
310 # NSF (NES sound file) magic
311 0       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
321 # NSFE (Extended NES sound file) magic
322 # http://slickproductions.org/docs/NSF/nsfespec.txt
323 # From: David Pflug <david@pflug.email>
324 0       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
336 # Type: SNES SPC700 sound files
337 # From: Josh Triplett <josh@freedesktop.org>
338 0       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"
345 # Impulse tracker module (audio/x-it)
346 0       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
352 # Imago Orpheus module (audio/x-imf)
353 60      string          IM10            Imago Orpheus module sound data -
354 >0      string          >\0             "%s"
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.
360 0       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
365 0       string          IMPI            Impulse Tracker Instrument
366 >28     leshort         !0              ITv%x
367 >30     byte            !0              %d samples
369 # Yamaha TX Wave:  file(1) magic for Yamaha TX Wave audio files
370 # From <collver1@attbi.com>
371 0       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
378 # scream tracker:  file(1) magic for Scream Tracker sample files
380 # From <collver1@attbi.com>
381 76      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
392 # audio
393 # From: Cory Dikkers <cdikkers@swbell.net>
394 0       string          MMD0            MED music file, version 0
395 0       string          MMD1            OctaMED Pro music file, version 1
396 0       string          MMD3            OctaMED Soundstudio music file, version 3
397 0       string          OctaMEDCmpr     OctaMED Soundstudio compressed file
398 0       string          MED             MED_Song
399 0       string          SymM            Symphonie SymMOD music file
401 # Track Length (TRL), Tracks (TRK), Samples (SMP), Subsongs (SS)
402 # http://lclevy.free.fr/exotica/ahx/ahxformat.txt
403 0       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"
412 # header is mostly AHX format
413 0               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"
427 0       string          OKTASONG        Oktalyzer module data
429 0       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"
436 0       string          DBM0            DIGI Booster Pro Module
437 >4      byte            >0              V%X.
438 >>5     byte            x               \b%02X
439 >16     string          >\0             \b, "%s"
441 0       string          FTMN            FaceTheMusic module
442 >16     string          >\0d            \b, "%s"
444 # From: <doj@cubic.org> 2003-06-24
445 0       string          AMShdr\32       Velvet Studio AMS Module v2.2
446 0       string          Extreme         Extreme Tracker AMS Module v1.3
447 0       string          DDMF            Xtracker DMF Module
448 >4      byte            x               v%i
449 >0xD    string          >\0             Title: "%s"
450 >0x2B   string          >\0             Composer: "%s"
451 0       string          DSM\32          Dynamic Studio Module DSM
452 0       string          SONG            DigiTrekker DTM Module
453 0       string          DMDL            DigiTrakker MDL Module
454 0       string          PSM\32          Protracker Studio PSM Module
455 44      string          PTMF            Poly Tracker PTM Module
456 >0      string          >\32            Title: "%s"
457 0       string          MT20            MadTracker 2.0 Module MT2
458 0       string          RAD\40by\40REALiTY!! RAD Adlib Tracker Module RAD
459 0       string          RTMM            RTM Module
460 0x426   string          MaDoKaN96       XMS Adlib Module
461 >0      string          >\0             Composer: "%s"
462 0       string          AMF             AMF Module
463 >4      string          >\0             Title: "%s"
464 0       string          MODINFO1        Open Cubic Player Module Information MDZ
465 0       string          Extended\40Instrument: Fast Tracker II Instrument
467 # From: Takeshi Hamasaki <hma@syd.odn.ne.jp>
468 # NOA Nancy Codec file
469 0       string          \210NOA\015\012\032     NOA Nancy Codec Movie file
470 # Yamaha SMAF format
471 0       string          MMMD            Yamaha SMAF file
472 # Sharp Jisaku Melody format for PDC
473 0       string          \001Sharp\040JisakuMelody       SHARP Cell-Phone ringing Melody
474 >20     string          Ver01.00        Ver. 1.00
475 >>32    byte            x               , %d tracks
477 # Free lossless audio codec <http://flac.sourceforge.net>
478 # From: Przemyslaw Augustyniak <silvathraec@rpg.pl>
479 0       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
522 # (ISDN) VBOX voice message file (Wolfram Kleff)
523 0       string          VBOX            VBOX voice message data
525 # ReBorn Song Files (.rbs)
526 # David J. Singer <doc@deadvirgins.org.uk>
527 8       string          RB40             RBS Song file
528 >29     string          ReBorn           created by ReBorn
529 >37     string          Propellerhead    created by ReBirth
531 # Synthesizer Generator and Kimwitu share their file format
532 0       string          A#S#C#S#S#L#V#3     Synthesizer Generator or Kimwitu data
533 # Kimwitu++ uses a slightly different magic
534 0       string          A#S#C#S#S#L#HUB     Kimwitu++ data
536 # From "Simon Hosie
537 0       string  TFMX-SONG       TFMX module sound data
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>
542 0               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
563 # adlib sound files
564 # From: Alex Myczko <alex@aiei.ch>
566 # https://github.com/rerrahkr/BambooTracker
567 0       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
575 0       string          CC2x            CheeseCutter 2 song
577 0       string          RAWADATA        RdosPlay RAW
579 1068    string          RoR             AMUSIC Adlib Tracker
581 0       string          JCH             EdLib
583 0       string          mpu401tr        MPU-401 Trakker
585 0       string          SAdT            Surprise! Adlib Tracker
586 >4      byte            x               Version %d
588 0       string          XAD!            eXotic ADlib
590 0       string          ofTAZ!          eXtra Simple Music
592 0       string          FMK!            FM Kingtracker Song
594 0       string          DFM             DFM Song
596 0       string          \<CUD-FM-File\> CFF Song
598 0       string          _A2module       A2M Song
600 # Spectrum 128 tunes (.ay files).
601 # From: Emanuel Haupt <ehaupt@critical.ch>
602 0       string          ZXAYEMUL        Spectrum 128 tune
604 0       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
611 384     string          LockStream      LockStream Embedded file (mostly MP3 on old Nokia phones)
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
616 0       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
622 # Nelson A. de Oliveira (naoliv@gmail.com)
623 # .eqf
624 0       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
629 0       string  [Equalizer\ preset]     XMMS equalizer preset
630 # .m3u
631 0       search/1        #EXTM3U         M3U playlist text
632 # .pls
633 0       search/1        [playlist]      PLS playlist text
634 # licq.conf
635 1       string  [licq]                  LICQ configuration file
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.
641 12      string                  SNDH    SNDH Atari ST music
642 0       belong&0xFFDFDFFF       0x49434521
643 >14     search/40               NDH     SNDH Atari ST music
644 >14     search/40               TITL    SNDH Atari ST music
645 0       string          SC68\ Music-file\ /\ (c)\ (BeN)jami     sc68 Atari ST music
647 # musepak support From: "Jiri Pejchal" <jiri.pejchal@gmail.com>
648 0       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
682 0       string          MPCK    Musepack audio (MPCK)
683 !:mime  audio/x-musepack
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
690 0       string  BEGIN:IMELODY   iMelody Ringtone Format
692 # From: "Mateus Caruccio" <mateus@caruccio.com>
693 # guitar pro v3,4,5 from http://filext.com/file-extension/gp3
694 0       string  \030FICHIER\ GUITAR\ PRO\ v3.   Guitar Pro Ver. 3 Tablature
696 # From: "Leslie P. Polzer" <leslie.polzer@gmx.net>
697 60      string  SONG            SoundFX Module sound file
699 # Type: Adaptive Multi-Rate Codec
700 # URL:  http://filext.com/detaillist.php?extdetail=AMR
701 # From: Russell Coker <russell@coker.com.au>
702 0       string  #!AMR           Adaptive Multi-Rate Codec (GSM telephony)
703 !:mime  audio/amr
704 !:ext  amr
706 # Type: SuperCollider 3 Synth Definition File Format
707 # From: Mario Lang <mlang@debian.org>
708 0       string  SCgf    SuperCollider3 Synth Definition file,
709 >4      belong  x       version %d
711 # Type: True Audio Lossless Audio
712 # URL:  https://wiki.multimedia.cx/index.php?title=True_Audio
713 # From: Mike Melanson <mike@multimedia.cx>
714 0       string  TTA1    True Audio Lossless Audio
716 # Type: WavPack Lossless Audio
717 # URL:  https://wiki.multimedia.cx/index.php?title=WavPack
718 # From: Mike Melanson <mike@multimedia.cx>
719 0       string  wvpk    WavPack Lossless Audio
721 # From Fabio R. Schmidlin <frs@pop.com.br>
722 # VGM music file
723 0       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,
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
828 0       string  SCOW
829 >4      byte    0xc4    GVOX Encore music, version 5.0 or above
830 >4      byte    0xc2    GVOX Encore music, version < 5.0
832 0       string  ZBOT
833 >4      byte    0xc5    GVOX Encore music, version < 5.0
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
840 0               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
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
888 0       ubequad         0xa141190fecc8ced6      Garmin Voice Processing Module (encrypted)
889 !:mime  audio/x-vpm-garmin
890 !:ext   vpm
892 # From Martin Mueller Skarbiniks Pedersen
893 0               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)
906 0               string          MTM     Multitracker
907 >0x3            byte/16         x       Version %d.
908 >0x3            byte&0x0F       x       \b%02d
909 >>0x4           string          >\0     title: "%s"
911 0               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
919 0               string          ADRVPACK        AProSys module
921 # ftp://ftp.modland.com/pub/documents/format_documentation/\
922 # Art%20Of%20Noise%20(.aon).txt
923 0               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"
931 0               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"
940 # magic for Klystrack, https://kometbomb.github.io/klystrack/
941 # from Alex Myczko <alex@aiei.ch>
942 0       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
962 0       string  cyd!inst        Klystrack instrument
964 # magic for WOPL instrument files, https://github.com/Wohlstand/OPL3BankEditor
965 # see Specifications/WOPL-and-OPLI-Specification.txt
967 0       string  WOPL3-INST\0    WOPL instrument
968 >11     leshort x       \b, version %u
969 0       string  WOPL3-BANK\0    WOPL instrument bank
970 >11     leshort x       \b, version %u
972 # AdLib/OPL instrument files. Format specifications on
973 #  http://www.shikadi.net/moddingwiki
974 0       string  Junglevision\ Patch\ File       Junglevision instrument data
975 0       string  #OPL_II#        DMX OP2 instrument data
976 0       string  IBK\x1a         IBK instrument data
977 0       string  2OP\x1a         IBK instrument data, 2 operators
978 0       string  4OP\x1a         IBK instrument data, 4 operators
979 2       string  ADLIB-          AdLib instrument data
980 >0      byte    x               \b, version %u
981 >1      byte    x               \b.%u
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>
988 0x00            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
1008 # Lossless audio (.la) (http://www.lossless-audio.com/)
1009 0       string  LA
1010 >2      string  03      Lossless audio version 0.3
1011 >2      string  04      Lossless audio version 0.4
1013 # Sony PlayStation Audio (.xa)
1014 0       leshort 0x4158  Sony PlayStation Audio
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>
1020 0       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)
1042 # Atari 8-bit SAP audio format
1043 # http://asap.sourceforge.net/sap-format.html
1044 # Added by David Korth <gerbilsoft@gerbilsoft.com>
1045 0       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
1053 # Nintendo Wii BRSTM audio format (fields)
1054 # NOTE: Assuming HEAD starts at 0x40.
1055 # FIXME: Replace 0x48 with HEAD offset plus 8.
1056 0       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
1071 # Nintendo Wii BRSTM audio format
1072 # https://wiibrew.org/wiki/BRSTM_file
1073 # Added by David Korth <gerbilsoft@gerbilsoft.com>
1074 0       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
1083 # Nintendo 3DS BCSTM audio format (fields)
1084 0       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
1099 # Nintendo 3DS BCSTM audio format
1100 # https://www.3dbrew.org/wiki/BCSTM
1101 # Added by David Korth <gerbilsoft@gerbilsoft.com>
1102 0       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
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>
1115 0       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
1125 # Nintendo 3DS BCSTM audio format (fields)
1126 0       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
1137 # Nintendo 3DS BCWAV audio format
1138 # https://www.3dbrew.org/wiki/BCWAV
1139 # Added by David Korth <gerbilsoft@gerbilsoft.com>
1140 0       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
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>
1153 0               string          FRM8
1154 12              string          DSD\x20         DSDIFF audio bitstream data
1155 !:mime          audio/x-dff
1156 !:ext           dff
1158 # format version chunk
1159 >&0             string          FVER
1160 # version 1
1161 >>&8            byte            1
1163 # v1 / sampling resolution ( 1 bit PDM only )
1164 >>>&0           string          x               \b, 1 bit
1166 # v1 / sound property chunk
1167 >>>&0           search/0xff     PROP
1168 >>>>&8          string          SND
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
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
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
1206 # v1 / quest for metadata
1207 >>>&0           string          x
1209 # v1 / quest for metadata / edited master information chunk
1210 >>>>&0          search          DIIN
1211 >>>>>&0         ubequad         >0              \b, "edited master" metadata
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
1219 # v1 / quest for metadata / failure ( possibly due to -P bytes=... being too low )
1220 >>>>&0          default         x               \b, ID3 missing (or unreachable)
1222 # version > 1 or 0
1223 >>&0            default         x               \b, unknown version
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>
1230 0               string          DSD\x20         DSF audio bitstream data
1231 !:mime          audio/x-dsf
1232 !:ext           dsf
1234 # format chunk
1235 >28             string          fmt\x20
1236 # version 1
1237 >>&8            ulelong         1
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
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
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
1260 # v1 / compression
1261 >>>>&0          string          x
1262 >>>>>&0         ulelong         0               \b, no compression
1263 >>>>>&0         default         x               \b, unknown compression
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
1275 # version > 1 or 0
1276 >>&0            default         x               \b, unknown version