xref: /dragonfly/contrib/file/magic/Magdir/audio (revision f9993810)
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