xref: /freebsd/contrib/file/magic/Magdir/audio (revision a2dfb7224ec9933ee804cae54d51848dce938b6b)
1b6cee71dSXin LI
2b6cee71dSXin LI#------------------------------------------------------------------------------
3*a2dfb722SXin LI# $File: audio,v 1.124 2022/08/28 08:58:20 christos Exp $
4b6cee71dSXin LI# audio:  file(1) magic for sound formats (see also "iff")
5b6cee71dSXin LI#
6b6cee71dSXin LI# Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com),
7b6cee71dSXin LI# and others
8b6cee71dSXin LI#
9b6cee71dSXin LI
10b6cee71dSXin LI# Sun/NeXT audio data
11b6cee71dSXin LI0	string		.snd		Sun/NeXT audio data:
12b6cee71dSXin LI>12	belong		1		8-bit ISDN mu-law,
13b6cee71dSXin LI!:mime	audio/basic
14b6cee71dSXin LI>12	belong		2		8-bit linear PCM [REF-PCM],
15b6cee71dSXin LI!:mime	audio/basic
16b6cee71dSXin LI>12	belong		3		16-bit linear PCM,
17b6cee71dSXin LI!:mime	audio/basic
18b6cee71dSXin LI>12	belong		4		24-bit linear PCM,
19b6cee71dSXin LI!:mime	audio/basic
20b6cee71dSXin LI>12	belong		5		32-bit linear PCM,
21b6cee71dSXin LI!:mime	audio/basic
22b6cee71dSXin LI>12	belong		6		32-bit IEEE floating point,
23b6cee71dSXin LI!:mime	audio/basic
24b6cee71dSXin LI>12	belong		7		64-bit IEEE floating point,
25b6cee71dSXin LI!:mime	audio/basic
26b6cee71dSXin LI>12	belong		8		Fragmented sample data,
27b6cee71dSXin LI>12	belong		10		DSP program,
28b6cee71dSXin LI>12	belong		11		8-bit fixed point,
29b6cee71dSXin LI>12	belong		12		16-bit fixed point,
30b6cee71dSXin LI>12	belong		13		24-bit fixed point,
31b6cee71dSXin LI>12	belong		14		32-bit fixed point,
32b6cee71dSXin LI>12	belong		18		16-bit linear with emphasis,
33b6cee71dSXin LI>12	belong		19		16-bit linear compressed,
34b6cee71dSXin LI>12	belong		20		16-bit linear with emphasis and compression,
35b6cee71dSXin LI>12	belong		21		Music kit DSP commands,
36b6cee71dSXin LI>12	belong		23		8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice enc.),
37b6cee71dSXin LI!:mime  audio/x-adpcm
38b6cee71dSXin LI>12	belong		24		compressed (8-bit CCITT G.722 ADPCM)
39b6cee71dSXin LI>12	belong		25		compressed (3-bit CCITT G.723.3 ADPCM),
40b6cee71dSXin LI>12	belong		26		compressed (5-bit CCITT G.723.5 ADPCM),
41b6cee71dSXin LI>12	belong		27		8-bit A-law (CCITT G.711),
42b6cee71dSXin LI>20	belong		1		mono,
43b6cee71dSXin LI>20	belong		2		stereo,
44b6cee71dSXin LI>20	belong		4		quad,
45b6cee71dSXin LI>16	belong		>0		%d Hz
46b6cee71dSXin LI
47b6cee71dSXin LI# DEC systems (e.g. DECstation 5000) use a variant of the Sun/NeXT format
48b6cee71dSXin LI# that uses little-endian encoding and has a different magic number
49b6cee71dSXin LI0	lelong		0x0064732E	DEC audio data:
50b6cee71dSXin LI>12	lelong		1		8-bit ISDN mu-law,
51b6cee71dSXin LI!:mime	audio/x-dec-basic
52b6cee71dSXin LI>12	lelong		2		8-bit linear PCM [REF-PCM],
53b6cee71dSXin LI!:mime	audio/x-dec-basic
54b6cee71dSXin LI>12	lelong		3		16-bit linear PCM,
55b6cee71dSXin LI!:mime	audio/x-dec-basic
56b6cee71dSXin LI>12	lelong		4		24-bit linear PCM,
57b6cee71dSXin LI!:mime	audio/x-dec-basic
58b6cee71dSXin LI>12	lelong		5		32-bit linear PCM,
59b6cee71dSXin LI!:mime	audio/x-dec-basic
60b6cee71dSXin LI>12	lelong		6		32-bit IEEE floating point,
61b6cee71dSXin LI!:mime	audio/x-dec-basic
62b6cee71dSXin LI>12	lelong		7		64-bit IEEE floating point,
63b6cee71dSXin LI!:mime	audio/x-dec-basic
64b6cee71dSXin LI>12	belong		8		Fragmented sample data,
65b6cee71dSXin LI>12	belong		10		DSP program,
66b6cee71dSXin LI>12	belong		11		8-bit fixed point,
67b6cee71dSXin LI>12	belong		12		16-bit fixed point,
68b6cee71dSXin LI>12	belong		13		24-bit fixed point,
69b6cee71dSXin LI>12	belong		14		32-bit fixed point,
70b6cee71dSXin LI>12	belong		18		16-bit linear with emphasis,
71b6cee71dSXin LI>12	belong		19		16-bit linear compressed,
72b6cee71dSXin LI>12	belong		20		16-bit linear with emphasis and compression,
73b6cee71dSXin LI>12	belong		21		Music kit DSP commands,
74b6cee71dSXin LI>12	lelong		23		8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice enc.),
75b6cee71dSXin LI!:mime	audio/x-dec-basic
76b6cee71dSXin LI>12	belong		24		compressed (8-bit CCITT G.722 ADPCM)
77b6cee71dSXin LI>12	belong		25		compressed (3-bit CCITT G.723.3 ADPCM),
78b6cee71dSXin LI>12	belong		26		compressed (5-bit CCITT G.723.5 ADPCM),
79b6cee71dSXin LI>12	belong		27		8-bit A-law (CCITT G.711),
80b6cee71dSXin LI>20	lelong		1		mono,
81b6cee71dSXin LI>20	lelong		2		stereo,
82b6cee71dSXin LI>20	lelong		4		quad,
83b6cee71dSXin LI>16	lelong		>0		%d Hz
84b6cee71dSXin LI
85b6cee71dSXin LI# Creative Labs AUDIO stuff
86b6cee71dSXin LI0	string	MThd			Standard MIDI data
87b6cee71dSXin LI!:mime	audio/midi
88b6cee71dSXin LI>8 	beshort	x			(format %d)
89b6cee71dSXin LI>10	beshort	x			using %d track
90b6cee71dSXin LI>10	beshort		>1		\bs
91b6cee71dSXin LI>12	beshort&0x7fff	x		at 1/%d
92b6cee71dSXin LI>12	beshort&0x8000	>0		SMPTE
93b6cee71dSXin LI
94b6cee71dSXin LI0	string	CTMF			Creative Music (CMF) data
95b6cee71dSXin LI!:mime	audio/x-unknown
96b6cee71dSXin LI0	string	SBI			SoundBlaster instrument data
97b6cee71dSXin LI!:mime	audio/x-unknown
98b6cee71dSXin LI0	string	Creative\ Voice\ File	Creative Labs voice data
99b6cee71dSXin LI!:mime	audio/x-unknown
100b6cee71dSXin LI# is this next line right?  it came this way...
101b6cee71dSXin LI>19	byte	0x1A
102b6cee71dSXin LI>23	byte	>0			- version %d
103b6cee71dSXin LI>22	byte	>0			\b.%d
104b6cee71dSXin LI
105b6cee71dSXin LI# first entry is also the string "NTRK"
106b6cee71dSXin LI0	belong		0x4e54524b	MultiTrack sound data
107b6cee71dSXin LI>4	belong		x		- version %d
108b6cee71dSXin LI
109b6cee71dSXin LI# Extended MOD format (*.emd) (Greg Roelofs, newt@uchicago.edu); NOT TESTED
110b6cee71dSXin LI# [based on posting 940824 by "Dirk/Elastik", husberg@lehtori.cc.tut.fi]
111b6cee71dSXin LI0	string		EMOD		Extended MOD sound data,
112b6cee71dSXin LI>4	byte&0xf0	x		version %d
113b6cee71dSXin LI>4	byte&0x0f	x		\b.%d,
114b6cee71dSXin LI>45	byte		x		%d instruments
115b6cee71dSXin LI>83	byte		0		(module)
116b6cee71dSXin LI>83	byte		1		(song)
117b6cee71dSXin LI
118b6cee71dSXin LI# Real Audio (Magic .ra\0375)
119b6cee71dSXin LI0	belong		0x2e7261fd	RealAudio sound file
120b6cee71dSXin LI!:mime	audio/x-pn-realaudio
121b6cee71dSXin LI0	string		.RMF\0\0\0	RealMedia file
122b6cee71dSXin LI!:mime	application/vnd.rn-realmedia
123b6cee71dSXin LI#video/x-pn-realvideo
124b6cee71dSXin LI#video/vnd.rn-realvideo
125b6cee71dSXin LI#application/vnd.rn-realmedia
126b6cee71dSXin LI#	sigh, there are many mimes for that but the above are the most common.
127b6cee71dSXin LI
128b6cee71dSXin LI# MTM/669/FAR/S3M/ULT/XM format checking [Aaron Eppert, aeppert@dialin.ind.net]
129b6cee71dSXin LI# Oct 31, 1995
130b6cee71dSXin LI# fixed by <doj@cubic.org> 2003-06-24
131b6cee71dSXin LI# Too short...
132b6cee71dSXin LI#0	string		MTM		MultiTracker Module sound file
133b6cee71dSXin LI#0	string		if		Composer 669 Module sound data
134b6cee71dSXin LI#0	string		JN		Composer 669 Module sound data (extended format)
135b6cee71dSXin LI0	string		MAS_U		ULT(imate) Module sound data
136b6cee71dSXin LI
137b6cee71dSXin LI#0	string		FAR		Module sound data
138b6cee71dSXin LI#>4	string		>\15		Title: "%s"
139b6cee71dSXin LI
140b6cee71dSXin LI0x2c	string		SCRM		ScreamTracker III Module sound data
141b6cee71dSXin LI>0	string		>\0		Title: "%s"
142d38c30c0SXin LI!:mime	audio/x-s3m
143d38c30c0SXin LI
144d38c30c0SXin LI# .stm before it got above .s3m extension
145d38c30c0SXin LI0x16	string		\!Scream\!	ScreamTracker Module sound data
146d38c30c0SXin LI>0	string		>\0		Title: "%s"
147b6cee71dSXin LI
148b6cee71dSXin LI# Gravis UltraSound patches
149b6cee71dSXin LI# From <ache@nagual.ru>
150b6cee71dSXin LI
151b6cee71dSXin LI0	string		GF1PATCH110\0ID#000002\0	GUS patch
152b6cee71dSXin LI0	string		GF1PATCH100\0ID#000002\0	Old GUS	patch
153b6cee71dSXin LI
154b6cee71dSXin LI# mime types according to http://www.geocities.com/nevilo/mod.htm:
155b6cee71dSXin LI#	audio/it	.it
156b6cee71dSXin LI#	audio/x-zipped-it	.itz
157b6cee71dSXin LI#	audio/xm	fasttracker modules
158b6cee71dSXin LI#	audio/x-s3m	screamtracker modules
159b6cee71dSXin LI#	audio/s3m	screamtracker modules
160b6cee71dSXin LI#	audio/x-zipped-mod	mdz
161b6cee71dSXin LI#	audio/mod	mod
162b6cee71dSXin LI#	audio/x-mod	All modules (mod, s3m, 669, mtm, med, xm, it, mdz, stm, itz, xmz, s3z)
163b6cee71dSXin LI
164b6cee71dSXin LI#
165b6cee71dSXin LI# Taken from loader code from mikmod version 2.14
166b6cee71dSXin LI# by Steve McIntyre (stevem@chiark.greenend.org.uk)
167b6cee71dSXin LI# <doj@cubic.org> added title printing on 2003-06-24
168b6cee71dSXin LI0	string	MAS_UTrack_V00
169b6cee71dSXin LI>14	string	>/0		ultratracker V1.%.1s module sound data
170b6cee71dSXin LI!:mime	audio/x-mod
171b6cee71dSXin LI#audio/x-tracker-module
172b6cee71dSXin LI
173b6cee71dSXin LI0	string	UN05		MikMod UNI format module sound data
174b6cee71dSXin LI
175b6cee71dSXin LI0	string	Extended\ Module: Fasttracker II module sound data
176b6cee71dSXin LI!:mime	audio/x-mod
177b6cee71dSXin LI#audio/x-tracker-module
178b6cee71dSXin LI>17	string	>\0		Title: "%s"
179b6cee71dSXin LI
180b6cee71dSXin LI21	string/c	=!SCREAM!	Screamtracker 2 module sound data
181b6cee71dSXin LI!:mime	audio/x-mod
182b6cee71dSXin LI#audio/x-screamtracker-module
183b6cee71dSXin LI21	string	BMOD2STM	Screamtracker 2 module sound data
184b6cee71dSXin LI!:mime	audio/x-mod
185b6cee71dSXin LI#audio/x-screamtracker-module
186b6cee71dSXin LI1080	string	M.K.		4-channel Protracker module sound data
187b6cee71dSXin LI!:mime	audio/x-mod
188b6cee71dSXin LI#audio/x-protracker-module
189b6cee71dSXin LI>0	string	>\0		Title: "%s"
190b6cee71dSXin LI1080	string	M!K!		4-channel Protracker module sound data
191b6cee71dSXin LI!:mime	audio/x-mod
192b6cee71dSXin LI#audio/x-protracker-module
193b6cee71dSXin LI>0	string	>\0		Title: "%s"
194b6cee71dSXin LI1080	string	FLT4		4-channel Startracker module sound data
195b6cee71dSXin LI!:mime	audio/x-mod
196b6cee71dSXin LI#audio/x-startracker-module
197b6cee71dSXin LI>0	string	>\0		Title: "%s"
198b6cee71dSXin LI1080	string	FLT8		8-channel Startracker module sound data
199b6cee71dSXin LI!:mime	audio/x-mod
200b6cee71dSXin LI#audio/x-startracker-module
201b6cee71dSXin LI>0	string	>\0		Title: "%s"
202b6cee71dSXin LI1080	string	4CHN		4-channel Fasttracker module sound data
203b6cee71dSXin LI!:mime	audio/x-mod
204b6cee71dSXin LI#audio/x-fasttracker-module
205b6cee71dSXin LI>0	string	>\0		Title: "%s"
206b6cee71dSXin LI1080	string	6CHN		6-channel Fasttracker module sound data
207b6cee71dSXin LI!:mime	audio/x-mod
208b6cee71dSXin LI#audio/x-fasttracker-module
209b6cee71dSXin LI>0	string	>\0		Title: "%s"
210b6cee71dSXin LI1080	string	8CHN		8-channel Fasttracker module sound data
211b6cee71dSXin LI!:mime	audio/x-mod
212b6cee71dSXin LI#audio/x-fasttracker-module
213b6cee71dSXin LI>0	string	>\0		Title: "%s"
214b6cee71dSXin LI1080	string	CD81		8-channel Octalyser module sound data
215b6cee71dSXin LI!:mime	audio/x-mod
216b6cee71dSXin LI#audio/x-octalysertracker-module
217b6cee71dSXin LI>0	string	>\0		Title: "%s"
218b6cee71dSXin LI1080	string	OKTA		8-channel Octalyzer module sound data
219b6cee71dSXin LI!:mime	audio/x-mod
220b6cee71dSXin LI#audio/x-octalysertracker-module
221b6cee71dSXin LI>0	string	>\0		Title: "%s"
222b6cee71dSXin LI# Not good enough.
223b6cee71dSXin LI#1082	string	CH
224b6cee71dSXin LI#>1080	string	>/0		%.2s-channel Fasttracker "oktalyzer" module sound data
225b6cee71dSXin LI1080	string	16CN		16-channel Taketracker module sound data
226b6cee71dSXin LI!:mime	audio/x-mod
227b6cee71dSXin LI#audio/x-taketracker-module
228b6cee71dSXin LI>0	string	>\0		Title: "%s"
229b6cee71dSXin LI1080	string	32CN		32-channel Taketracker module sound data
230b6cee71dSXin LI!:mime	audio/x-mod
231b6cee71dSXin LI#audio/x-taketracker-module
232b6cee71dSXin LI>0	string	>\0		Title: "%s"
233b6cee71dSXin LI
234b6cee71dSXin LI# TOC sound files -Trevor Johnson <trevor@jpj.net>
235b6cee71dSXin LI#
236b6cee71dSXin LI0       string          TOC             TOC sound file
237b6cee71dSXin LI
238b6cee71dSXin LI# sidfiles <pooka@iki.fi>
239b6cee71dSXin LI# added name,author,(c) and new RSID type by <doj@cubic.org> 2003-06-24
240b6cee71dSXin LI0	string		SIDPLAY\ INFOFILE	Sidplay info file
241b6cee71dSXin LI
242b6cee71dSXin LI0	string		PSID			PlaySID v2.2+ (AMIGA) sidtune
243b6cee71dSXin LI>4	beshort		>0			w/ header v%d,
244b6cee71dSXin LI>14	beshort		=1			single song,
245b6cee71dSXin LI>14	beshort		>1			%d songs,
246b6cee71dSXin LI>16	beshort		>0			default song: %d
247b6cee71dSXin LI>0x16	string		>\0			name: "%s"
248b6cee71dSXin LI>0x36	string		>\0			author: "%s"
249b6cee71dSXin LI>0x56	string		>\0			copyright: "%s"
250b6cee71dSXin LI
251b6cee71dSXin LI0	string		RSID			RSID sidtune PlaySID compatible
252b6cee71dSXin LI>4	beshort		>0			w/ header v%d,
253b6cee71dSXin LI>14	beshort		=1			single song,
254b6cee71dSXin LI>14	beshort		>1			%d songs,
255b6cee71dSXin LI>16	beshort		>0			default song: %d
256b6cee71dSXin LI>0x16	string		>\0			name: "%s"
257b6cee71dSXin LI>0x36	string		>\0			author: "%s"
258b6cee71dSXin LI>0x56	string		>\0			copyright: "%s"
259b6cee71dSXin LI
260b6cee71dSXin LI# IRCAM sound files - Michael Pruett <michael@68k.org>
261b6cee71dSXin LI# http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/IRCAM/IRCAM.html
262b6cee71dSXin LI0	belong		0x64a30100		IRCAM file (VAX little-endian)
263b6cee71dSXin LI0	belong		0x0001a364		IRCAM file (VAX big-endian)
264b6cee71dSXin LI0	belong		0x64a30200		IRCAM file (Sun big-endian)
265b6cee71dSXin LI0	belong		0x0002a364		IRCAM file (Sun little-endian)
266b6cee71dSXin LI0	belong		0x64a30300		IRCAM file (MIPS little-endian)
267b6cee71dSXin LI0	belong		0x0003a364		IRCAM file (MIPS big-endian)
268b6cee71dSXin LI0	belong		0x64a30400		IRCAM file (NeXT big-endian)
269b6cee71dSXin LI0	belong		0x64a30400		IRCAM file (NeXT big-endian)
270b6cee71dSXin LI0	belong		0x0004a364		IRCAM file (NeXT little-endian)
271b6cee71dSXin LI
272b6cee71dSXin LI# NIST SPHERE <mpruett@sgi.com>
273b6cee71dSXin LI0	string		NIST_1A\n\ \ \ 1024\n	NIST SPHERE file
274b6cee71dSXin LI
275b6cee71dSXin LI# Sample Vision <mpruett@sgi.com>
276b6cee71dSXin LI0	string		SOUND\ SAMPLE\ DATA\ 	Sample Vision file
277b6cee71dSXin LI
278b6cee71dSXin LI# Audio Visual Research <tonigonenstein@users.sourceforge.net>
279b6cee71dSXin LI0	string		2BIT			Audio Visual Research file,
280b6cee71dSXin LI>12	beshort		=0			mono,
281b6cee71dSXin LI>12	beshort		=-1			stereo,
282b6cee71dSXin LI>14	beshort		x			%d bits
283b6cee71dSXin LI>16	beshort		=0			unsigned,
284b6cee71dSXin LI>16	beshort		=-1			signed,
285b6cee71dSXin LI>22	belong&0x00ffffff	x		%d Hz,
286b6cee71dSXin LI>18	beshort		=0			no loop,
287b6cee71dSXin LI>18	beshort		=-1			loop,
288b6cee71dSXin LI>21	ubyte		<128			note %d,
289b6cee71dSXin LI>22	byte		=0			replay 5.485 KHz
290b6cee71dSXin LI>22	byte		=1			replay 8.084 KHz
291b6cee71dSXin LI>22	byte		=2			replay 10.971 KHz
292b6cee71dSXin LI>22	byte		=3			replay 16.168 KHz
293b6cee71dSXin LI>22	byte		=4			replay 21.942 KHz
294b6cee71dSXin LI>22	byte		=5			replay 32.336 KHz
295b6cee71dSXin LI>22	byte		=6			replay 43.885 KHz
296b6cee71dSXin LI>22	byte		=7			replay 47.261 KHz
297b6cee71dSXin LI
298b6cee71dSXin LI# SGI SoundTrack <mpruett@sgi.com>
299b6cee71dSXin LI0	string		_SGI_SoundTrack		SGI SoundTrack project file
300b6cee71dSXin LI# ID3 version 2 tags <waschk@informatik.uni-rostock.de>
301b6cee71dSXin LI0	string		ID3	Audio file with ID3 version 2
302b6cee71dSXin LI>3	byte		x	\b.%d
303b6cee71dSXin LI>4	byte		x	\b.%d
304b6cee71dSXin LI>>5	byte		&0x80	\b, unsynchronized frames
305b6cee71dSXin LI>>5	byte		&0x40	\b, extended header
306b6cee71dSXin LI>>5	byte		&0x20	\b, experimental
307b6cee71dSXin LI>>5	byte		&0x10	\b, footer present
3085f0216bdSXin LI>(6.I+10)	indirect	x	\b, contains:
309b6cee71dSXin LI
310b6cee71dSXin LI# NSF (NES sound file) magic
311b6cee71dSXin LI0	string		NESM\x1a	NES Sound File
312b6cee71dSXin LI>14	string		>\0		("%s" by
313b6cee71dSXin LI>46	string		>\0		%s, copyright
314b6cee71dSXin LI>78	string		>\0		%s),
315b6cee71dSXin LI>5	byte		x		version %d,
316b6cee71dSXin LI>6	byte		x		%d tracks,
317b6cee71dSXin LI>122	byte&0x2	=1		dual PAL/NTSC
318b6cee71dSXin LI>122	byte&0x1	=1		PAL
319b6cee71dSXin LI>122	byte&0x1	=0		NTSC
320b6cee71dSXin LI
3215f0216bdSXin LI# NSFE (Extended NES sound file) magic
3225f0216bdSXin LI# http://slickproductions.org/docs/NSF/nsfespec.txt
3235f0216bdSXin LI# From: David Pflug <david@pflug.email>
3245f0216bdSXin LI0	string		NSFE		Extended NES Sound File
3255f0216bdSXin LI>48	search/0x1000	auth
3265f0216bdSXin LI>>&0	string		>\0		("%s"
3275f0216bdSXin LI>>>&1	string		>\0		by %s
3285f0216bdSXin LI>>>>&1	string		>\0		\b, copyright %s
3295f0216bdSXin LI>>>>>&1	string		>\0		\b, ripped by %s
3305f0216bdSXin LI>20	byte		x		\b), %d tracks,
3315f0216bdSXin LI>18	byte&0x2	=1		dual PAL/NTSC
3325f0216bdSXin LI>18     byte&0x2	=0
3335f0216bdSXin LI>>18	byte&0x1	=1		PAL
3345f0216bdSXin LI>>18	byte&0x1	=0		NTSC
3355f0216bdSXin LI
336b6cee71dSXin LI# Type: SNES SPC700 sound files
337b6cee71dSXin LI# From: Josh Triplett <josh@freedesktop.org>
338b6cee71dSXin LI0	string	SNES-SPC700\ Sound\ File\ Data\ v	SNES SPC700 sound file
339b6cee71dSXin LI>&0	string	0.30					\b, version %s
340b6cee71dSXin LI>>0x23	byte	0x1B					\b, without ID666 tag
341b6cee71dSXin LI>>0x23	byte	0x1A					\b, with ID666 tag
342b6cee71dSXin LI>>>0x2E	string	>\0					\b, song "%.32s"
343b6cee71dSXin LI>>>0x4E	string	>\0					\b, game "%.32s"
344b6cee71dSXin LI
345b6cee71dSXin LI# Impulse tracker module (audio/x-it)
346b6cee71dSXin LI0	string		IMPM		Impulse Tracker module sound data -
347b6cee71dSXin LI!:mime	audio/x-mod
348b6cee71dSXin LI>4	string		>\0		"%s"
349b6cee71dSXin LI>40	leshort		!0		compatible w/ITv%x
350b6cee71dSXin LI>42	leshort		!0		created w/ITv%x
351b6cee71dSXin LI
352b6cee71dSXin LI# Imago Orpheus module (audio/x-imf)
353b6cee71dSXin LI60	string		IM10		Imago Orpheus module sound data -
354b6cee71dSXin LI>0	string		>\0		"%s"
355b6cee71dSXin LI
356b6cee71dSXin LI# From <collver1@attbi.com>
357b6cee71dSXin LI# These are the /etc/magic entries to decode modules, instruments, and
358b6cee71dSXin LI# samples in Impulse Tracker's native format.
359b6cee71dSXin LI
360b6cee71dSXin LI0	string		IMPS		Impulse Tracker Sample
361b6cee71dSXin LI>18	byte		&2		16 bit
362b6cee71dSXin LI>18	byte		^2		8 bit
363b6cee71dSXin LI>18	byte		&4		stereo
364b6cee71dSXin LI>18	byte		^4		mono
365b6cee71dSXin LI0	string		IMPI		Impulse Tracker Instrument
366b6cee71dSXin LI>28	leshort		!0		ITv%x
367b6cee71dSXin LI>30	byte		!0		%d samples
368b6cee71dSXin LI
369b6cee71dSXin LI# Yamaha TX Wave:  file(1) magic for Yamaha TX Wave audio files
370b6cee71dSXin LI# From <collver1@attbi.com>
371b6cee71dSXin LI0	string		LM8953		Yamaha TX Wave
372b6cee71dSXin LI>22	byte		0x49		looped
373b6cee71dSXin LI>22	byte		0xC9		non-looped
374b6cee71dSXin LI>23	byte		1		33kHz
375b6cee71dSXin LI>23	byte		2		50kHz
376b6cee71dSXin LI>23	byte		3		16kHz
377b6cee71dSXin LI
378b6cee71dSXin LI# scream tracker:  file(1) magic for Scream Tracker sample files
379b6cee71dSXin LI#
380b6cee71dSXin LI# From <collver1@attbi.com>
381b6cee71dSXin LI76	string		SCRS		Scream Tracker Sample
382b6cee71dSXin LI>0	byte		1		sample
383b6cee71dSXin LI>0	byte		2		adlib melody
384b6cee71dSXin LI>0	byte		>2		adlib drum
385b6cee71dSXin LI>31	byte		&2		stereo
386b6cee71dSXin LI>31	byte		^2		mono
387b6cee71dSXin LI>31	byte		&4		16bit little endian
388b6cee71dSXin LI>31	byte		^4		8bit
389b6cee71dSXin LI>30	byte		0		unpacked
390b6cee71dSXin LI>30	byte		1		packed
391b6cee71dSXin LI
392b6cee71dSXin LI# audio
393b6cee71dSXin LI# From: Cory Dikkers <cdikkers@swbell.net>
394b6cee71dSXin LI0	string		MMD0		MED music file, version 0
395b6cee71dSXin LI0	string		MMD1		OctaMED Pro music file, version 1
396b6cee71dSXin LI0	string		MMD3		OctaMED Soundstudio music file, version 3
397b6cee71dSXin LI0	string		OctaMEDCmpr	OctaMED Soundstudio compressed file
398b6cee71dSXin LI0	string		MED		MED_Song
399b6cee71dSXin LI0	string		SymM		Symphonie SymMOD music file
400b6cee71dSXin LI#
40148c779cdSXin LI# Track Length (TRL), Tracks (TRK), Samples (SMP), Subsongs (SS)
40248c779cdSXin LI# http://lclevy.free.fr/exotica/ahx/ahxformat.txt
403b6cee71dSXin LI0	string		THX		AHX version
404b6cee71dSXin LI>3	byte		=0		1 module data
405b6cee71dSXin LI>3	byte		=1		2 module data
406*a2dfb722SXin LI>11	ubyte		x		TRK: %u
407*a2dfb722SXin LI>10	ubyte		x		TRL: %u
408*a2dfb722SXin LI>12	ubyte		x		SMP: %u
409*a2dfb722SXin LI>13	ubyte		x		SS: %u
410*a2dfb722SXin LI>(4.H)		string		x		Title: "%.128s"
411*a2dfb722SXin LI
412*a2dfb722SXin LI# header is mostly AHX format
413*a2dfb722SXin LI0		string		HVL
414*a2dfb722SXin LI>3		byte		<2	Hively Tracker Song
415*a2dfb722SXin LI>3		byte		=0		v1 module data
416*a2dfb722SXin LI>3		byte		=1		v2 module data
417*a2dfb722SXin LI>11		ubyte		x		TRK: %u
418*a2dfb722SXin LI>10		ubyte		x		TRL: %u
419*a2dfb722SXin LI>12		ubyte		x		SMP: %u
420*a2dfb722SXin LI>13		ubyte		x		SS: %u
421*a2dfb722SXin LI>8		ubyte/4		=0		CHN: 4
422*a2dfb722SXin LI>8		ubyte/4		>0		CHN: 4+%u
423*a2dfb722SXin LI#>-0		offset		<0xffff
424*a2dfb722SXin LI>(4.H)		string		x		Title: "%.128s"
425*a2dfb722SXin LI
426b6cee71dSXin LI#
427b6cee71dSXin LI0	string		OKTASONG	Oktalyzer module data
428b6cee71dSXin LI#
429b6cee71dSXin LI0	string		DIGI\ Booster\ module\0	%s
430b6cee71dSXin LI>20	byte		>0		%c
431b6cee71dSXin LI>>21	byte		>0		\b%c
432b6cee71dSXin LI>>>22	byte		>0		\b%c
433b6cee71dSXin LI>>>>23	byte		>0		\b%c
434b6cee71dSXin LI>610	string		>\0		\b, "%s"
435b6cee71dSXin LI#
436b6cee71dSXin LI0	string		DBM0	   	DIGI Booster Pro Module
437b6cee71dSXin LI>4	byte		>0		V%X.
438b6cee71dSXin LI>>5	byte		x		\b%02X
439b6cee71dSXin LI>16	string		>\0		\b, "%s"
440b6cee71dSXin LI#
441b6cee71dSXin LI0	string		FTMN		FaceTheMusic module
442b6cee71dSXin LI>16	string		>\0d		\b, "%s"
443b6cee71dSXin LI
444b6cee71dSXin LI# From: <doj@cubic.org> 2003-06-24
445b6cee71dSXin LI0	string		AMShdr\32	Velvet Studio AMS Module v2.2
446b6cee71dSXin LI0	string		Extreme		Extreme Tracker AMS Module v1.3
447b6cee71dSXin LI0	string		DDMF		Xtracker DMF Module
448b6cee71dSXin LI>4	byte		x		v%i
449b6cee71dSXin LI>0xD	string		>\0		Title: "%s"
450b6cee71dSXin LI>0x2B	string		>\0		Composer: "%s"
451b6cee71dSXin LI0	string		DSM\32		Dynamic Studio Module DSM
452b6cee71dSXin LI0	string		SONG		DigiTrekker DTM Module
453b6cee71dSXin LI0	string		DMDL		DigiTrakker MDL Module
454b6cee71dSXin LI0	string		PSM\32		Protracker Studio PSM Module
455b6cee71dSXin LI44	string		PTMF		Poly Tracker PTM Module
456b6cee71dSXin LI>0	string		>\32		Title: "%s"
457b6cee71dSXin LI0	string		MT20		MadTracker 2.0 Module MT2
458b6cee71dSXin LI0	string		RAD\40by\40REALiTY!! RAD Adlib Tracker Module RAD
459b6cee71dSXin LI0	string		RTMM		RTM Module
460b6cee71dSXin LI0x426	string		MaDoKaN96	XMS Adlib Module
461b6cee71dSXin LI>0	string		>\0		Composer: "%s"
462b6cee71dSXin LI0	string		AMF		AMF Module
463b6cee71dSXin LI>4	string		>\0		Title: "%s"
46443a5ec4eSXin LI0	string		MODINFO1	Open Cubic Player Module Information MDZ
465b6cee71dSXin LI0	string		Extended\40Instrument: Fast Tracker II Instrument
466b6cee71dSXin LI
467b6cee71dSXin LI# From: Takeshi Hamasaki <hma@syd.odn.ne.jp>
468b6cee71dSXin LI# NOA Nancy Codec file
469b6cee71dSXin LI0	string		\210NOA\015\012\032	NOA Nancy Codec Movie file
470b6cee71dSXin LI# Yamaha SMAF format
471b6cee71dSXin LI0	string		MMMD		Yamaha SMAF file
472b6cee71dSXin LI# Sharp Jisaku Melody format for PDC
473b6cee71dSXin LI0	string		\001Sharp\040JisakuMelody	SHARP Cell-Phone ringing Melody
474b6cee71dSXin LI>20	string		Ver01.00	Ver. 1.00
475b6cee71dSXin LI>>32	byte		x		, %d tracks
476b6cee71dSXin LI
477b6cee71dSXin LI# Free lossless audio codec <http://flac.sourceforge.net>
478b6cee71dSXin LI# From: Przemyslaw Augustyniak <silvathraec@rpg.pl>
479b6cee71dSXin LI0	string			fLaC		FLAC audio bitstream data
48058a0f0d0SEitan Adler!:mime	audio/flac
481b6cee71dSXin LI>4	byte&0x7f		>0		\b, unknown version
482b6cee71dSXin LI>4	byte&0x7f		0		\b
483b6cee71dSXin LI# some common bits/sample values
484b6cee71dSXin LI>>20	beshort&0x1f0		0x030		\b, 4 bit
485b6cee71dSXin LI>>20	beshort&0x1f0		0x050		\b, 6 bit
486b6cee71dSXin LI>>20	beshort&0x1f0		0x070		\b, 8 bit
487b6cee71dSXin LI>>20	beshort&0x1f0		0x0b0		\b, 12 bit
488b6cee71dSXin LI>>20	beshort&0x1f0		0x0f0		\b, 16 bit
489b6cee71dSXin LI>>20	beshort&0x1f0		0x170		\b, 24 bit
490b6cee71dSXin LI>>20	byte&0xe		0x0		\b, mono
491b6cee71dSXin LI>>20	byte&0xe		0x2		\b, stereo
492b6cee71dSXin LI>>20	byte&0xe		0x4		\b, 3 channels
493b6cee71dSXin LI>>20	byte&0xe		0x6		\b, 4 channels
494b6cee71dSXin LI>>20	byte&0xe		0x8		\b, 5 channels
495b6cee71dSXin LI>>20	byte&0xe		0xa		\b, 6 channels
496b6cee71dSXin LI>>20	byte&0xe		0xc		\b, 7 channels
497b6cee71dSXin LI>>20	byte&0xe		0xe		\b, 8 channels
49858a0f0d0SEitan Adler# sample rates derived from known oscillator frequencies;
49958a0f0d0SEitan Adler# 24.576 MHz (video/fs=48kHz), 22.5792 (audio/fs=44.1kHz) and
50058a0f0d0SEitan Adler# 16.384 (other/fs=32kHz).
50158a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x02b110	\b, 11.025 kHz
50258a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x03e800	\b, 16 kHz
503b6cee71dSXin LI>>17	belong&0xfffff0       	0x056220	\b, 22.05 kHz
504b6cee71dSXin LI>>17	belong&0xfffff0       	0x05dc00	\b, 24 kHz
50558a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x07d000	\b, 32 kHz
50658a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x0ac440	\b, 44.1 kHz
50758a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x0bb800	\b, 48 kHz
508b6cee71dSXin LI>>17	belong&0xfffff0       	0x0fa000	\b, 64 kHz
50958a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x158880	\b, 88.2 kHz
51058a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x177000	\b, 96 kHz
51158a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x1f4000	\b, 128 kHz
51258a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x2b1100	\b, 176.4 kHz
51358a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x2ee000	\b, 192 kHz
51458a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x3e8000	\b, 256 kHz
51558a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x562200	\b, 352.8 kHz
51658a0f0d0SEitan Adler>>17	belong&0xfffff0       	0x5dc000	\b, 384 kHz
517b6cee71dSXin LI>>21	byte&0xf		>0		\b, >4G samples
518b6cee71dSXin LI>>21	byte&0xf		0		\b
519b6cee71dSXin LI>>>22	belong			>0		\b, %u samples
520b6cee71dSXin LI>>>22	belong			0		\b, length unknown
521b6cee71dSXin LI
522b6cee71dSXin LI# (ISDN) VBOX voice message file (Wolfram Kleff)
523b6cee71dSXin LI0       string          VBOX            VBOX voice message data
524b6cee71dSXin LI
525b6cee71dSXin LI# ReBorn Song Files (.rbs)
526b6cee71dSXin LI# David J. Singer <doc@deadvirgins.org.uk>
527b6cee71dSXin LI8       string          RB40             RBS Song file
528b6cee71dSXin LI>29     string          ReBorn           created by ReBorn
529b6cee71dSXin LI>37     string          Propellerhead    created by ReBirth
530b6cee71dSXin LI
531b6cee71dSXin LI# Synthesizer Generator and Kimwitu share their file format
532b6cee71dSXin LI0	string		A#S#C#S#S#L#V#3	    Synthesizer Generator or Kimwitu data
533b6cee71dSXin LI# Kimwitu++ uses a slightly different magic
534b6cee71dSXin LI0	string		A#S#C#S#S#L#HUB	    Kimwitu++ data
535b6cee71dSXin LI
536b6cee71dSXin LI# From "Simon Hosie
537b6cee71dSXin LI0       string  TFMX-SONG       TFMX module sound data
538b6cee71dSXin LI
539b6cee71dSXin LI# Monkey's Audio compressed audio format (.ape)
540b6cee71dSXin LI# From danny.milo@gmx.net (Danny Milosavljevic)
541b6cee71dSXin LI# New version from Abel Cheung <abel (@) oaka.org>
542b6cee71dSXin LI0		string		MAC\040		Monkey's Audio compressed format
543b6cee71dSXin LI!:mime audio/x-ape
544b6cee71dSXin LI>4		uleshort	>0x0F8B		version %d
545b6cee71dSXin LI>>(0x08.l)	uleshort	=1000		with fast compression
546b6cee71dSXin LI>>(0x08.l)	uleshort	=2000		with normal compression
547b6cee71dSXin LI>>(0x08.l)	uleshort	=3000		with high compression
548b6cee71dSXin LI>>(0x08.l)	uleshort	=4000		with extra high compression
549b6cee71dSXin LI>>(0x08.l)	uleshort	=5000		with insane compression
550b6cee71dSXin LI>>(0x08.l+18)	uleshort	=1		\b, mono
551b6cee71dSXin LI>>(0x08.l+18)	uleshort	=2		\b, stereo
552b6cee71dSXin LI>>(0x08.l+20)	ulelong		x		\b, sample rate %d
553b6cee71dSXin LI>4		uleshort	<0x0F8C		version %d
554b6cee71dSXin LI>>6		uleshort	=1000		with fast compression
555b6cee71dSXin LI>>6		uleshort	=2000		with normal compression
556b6cee71dSXin LI>>6		uleshort	=3000		with high compression
557b6cee71dSXin LI>>6		uleshort	=4000		with extra high compression
558b6cee71dSXin LI>>6		uleshort	=5000		with insane compression
559b6cee71dSXin LI>>10		uleshort	=1		\b, mono
560b6cee71dSXin LI>>10		uleshort	=2		\b, stereo
561b6cee71dSXin LI>>12		ulelong		x		\b, sample rate %d
562b6cee71dSXin LI
563b6cee71dSXin LI# adlib sound files
56458a0f0d0SEitan Adler# From: Alex Myczko <alex@aiei.ch>
56548c779cdSXin LI
56648c779cdSXin LI# https://github.com/rerrahkr/BambooTracker
567*a2dfb722SXin LI0	string	BambooTracker	BambooTracker
568*a2dfb722SXin LI>13	string	Mod		Module
569*a2dfb722SXin LI>13	string	Ist		Instrument
570*a2dfb722SXin LI>13	string	Bnk		Bank
57148c779cdSXin LI>22	byte	x		\b, version %u
57248c779cdSXin LI>21	byte	x		\b.%u
57348c779cdSXin LI>20	byte	x		\b.%u
57448c779cdSXin LI
575d38c30c0SXin LI0	string		CC2x		CheeseCutter 2 song
576d38c30c0SXin LI
577b6cee71dSXin LI0    	string		RAWADATA	RdosPlay RAW
578b6cee71dSXin LI
579b6cee71dSXin LI1068	string		RoR		AMUSIC Adlib Tracker
580b6cee71dSXin LI
581b6cee71dSXin LI0	string		JCH		EdLib
582b6cee71dSXin LI
583b6cee71dSXin LI0	string		mpu401tr	MPU-401 Trakker
584b6cee71dSXin LI
585b6cee71dSXin LI0	string		SAdT		Surprise! Adlib Tracker
586b6cee71dSXin LI>4	byte		x		Version %d
587b6cee71dSXin LI
588b6cee71dSXin LI0	string		XAD!		eXotic ADlib
589b6cee71dSXin LI
590b6cee71dSXin LI0	string		ofTAZ!		eXtra Simple Music
591b6cee71dSXin LI
59248c779cdSXin LI0	string		FMK!		FM Kingtracker Song
59348c779cdSXin LI
59448c779cdSXin LI0	string		DFM		DFM Song
59548c779cdSXin LI
59648c779cdSXin LI0	string		\<CUD-FM-File\>	CFF Song
59748c779cdSXin LI
59848c779cdSXin LI0	string		_A2module	A2M Song
59948c779cdSXin LI
600b6cee71dSXin LI# Spectrum 128 tunes (.ay files).
601b6cee71dSXin LI# From: Emanuel Haupt <ehaupt@critical.ch>
602b6cee71dSXin LI0	string		ZXAYEMUL	Spectrum 128 tune
603b6cee71dSXin LI
604b6cee71dSXin LI0	string		\0BONK		BONK,
605b6cee71dSXin LI#>5	byte		x		version %d
606b6cee71dSXin LI>14	byte		x		%d channel(s),
607b6cee71dSXin LI>15	byte		=1		lossless,
608b6cee71dSXin LI>15	byte		=0		lossy,
609b6cee71dSXin LI>16	byte		x		mid-side
610b6cee71dSXin LI
611b6cee71dSXin LI384	string		LockStream	LockStream Embedded file (mostly MP3 on old Nokia phones)
612b6cee71dSXin LI
613b6cee71dSXin LI# format VQF (proprietary codec for sound)
614b6cee71dSXin LI# some infos on the header file available at :
615b6cee71dSXin LI# http://www.twinvq.org/english/technology_format.html
616b6cee71dSXin LI0	string		TWIN97012000	VQF data
617b6cee71dSXin LI>27	short		0		\b, Mono
618b6cee71dSXin LI>27	short		1		\b, Stereo
619b6cee71dSXin LI>31	short 		>0		\b, %d kbit/s
620b6cee71dSXin LI>35	short 		>0		\b, %d kHz
621b6cee71dSXin LI
622b6cee71dSXin LI# Nelson A. de Oliveira (naoliv@gmail.com)
623b6cee71dSXin LI# .eqf
624b6cee71dSXin LI0	string	Winamp\ EQ\ library\ file	%s
625b6cee71dSXin LI# it will match only versions like v<digit>.<digit>
626b6cee71dSXin LI# Since I saw only eqf files with version v1.1 I think that it's OK
627b6cee71dSXin LI>23	string	x	\b%.4s
628b6cee71dSXin LI# .preset
629b6cee71dSXin LI0	string	[Equalizer\ preset]	XMMS equalizer preset
630b6cee71dSXin LI# .m3u
631b6cee71dSXin LI0	search/1	#EXTM3U 	M3U playlist text
632b6cee71dSXin LI# .pls
633b6cee71dSXin LI0	search/1	[playlist]	PLS playlist text
634b6cee71dSXin LI# licq.conf
635b6cee71dSXin LI1	string	[licq]			LICQ configuration file
636b6cee71dSXin LI
637b6cee71dSXin LI# Atari ST audio files by Dirk Jagdmann <doj@cubic.org>
638d38c30c0SXin LI# NOTE: Most SNDH music is packed using ICE, which has
639d38c30c0SXin LI# magic numbers "ICE!" and "Ice!". Some SNDH music is
640d38c30c0SXin LI# not packed, so we check for both packed and unpacked.
641d38c30c0SXin LI12	string			SNDH	SNDH Atari ST music
642d38c30c0SXin LI0	belong&0xFFDFDFFF	0x49434521
643d38c30c0SXin LI>14	search/40		NDH	SNDH Atari ST music
644d38c30c0SXin LI>14	search/40		TITL	SNDH Atari ST music
645b6cee71dSXin LI0	string		SC68\ Music-file\ /\ (c)\ (BeN)jami	sc68 Atari ST music
646b6cee71dSXin LI
647b6cee71dSXin LI# musepak support From: "Jiri Pejchal" <jiri.pejchal@gmail.com>
6483e41d09dSXin LI0       string          MP+     Musepack audio (MP+)
649b6cee71dSXin LI!:mime	audio/x-musepack
650b6cee71dSXin LI>3      byte            255     \b, SV pre8
651b6cee71dSXin LI>3      byte&0xF        0x6     \b, SV 6
652b6cee71dSXin LI>3      byte&0xF        0x8     \b, SV 8
653b6cee71dSXin LI>3      byte&0xF        0x7     \b, SV 7
654b6cee71dSXin LI>>3     byte&0xF0       0x0     \b.0
655b6cee71dSXin LI>>3     byte&0xF0       0x10    \b.1
656b6cee71dSXin LI>>3     byte&0xF0       240     \b.15
657b6cee71dSXin LI>>10    byte&0xF0       0x0     \b, no profile
658b6cee71dSXin LI>>10    byte&0xF0       0x10    \b, profile 'Unstable/Experimental'
659b6cee71dSXin LI>>10    byte&0xF0       0x50    \b, quality 0
660b6cee71dSXin LI>>10    byte&0xF0       0x60    \b, quality 1
661b6cee71dSXin LI>>10    byte&0xF0       0x70    \b, quality 2 (Telephone)
662b6cee71dSXin LI>>10    byte&0xF0       0x80    \b, quality 3 (Thumb)
663b6cee71dSXin LI>>10    byte&0xF0       0x90    \b, quality 4 (Radio)
664b6cee71dSXin LI>>10    byte&0xF0       0xA0    \b, quality 5 (Standard)
665b6cee71dSXin LI>>10    byte&0xF0       0xB0    \b, quality 6 (Xtreme)
666b6cee71dSXin LI>>10    byte&0xF0       0xC0    \b, quality 7 (Insane)
667b6cee71dSXin LI>>10    byte&0xF0       0xD0    \b, quality 8 (BrainDead)
668b6cee71dSXin LI>>10    byte&0xF0       0xE0    \b, quality 9
669b6cee71dSXin LI>>10    byte&0xF0       0xF0    \b, quality 10
670b6cee71dSXin LI>>27    byte            0x0     \b, Buschmann 1.7.0-9, Klemm 0.90-1.05
671b6cee71dSXin LI>>27    byte            102     \b, Beta 1.02
672b6cee71dSXin LI>>27    byte            104     \b, Beta 1.04
673b6cee71dSXin LI>>27    byte            105     \b, Alpha 1.05
674b6cee71dSXin LI>>27    byte            106     \b, Beta 1.06
675b6cee71dSXin LI>>27    byte            110     \b, Release 1.1
676b6cee71dSXin LI>>27    byte            111     \b, Alpha 1.11
677b6cee71dSXin LI>>27    byte            112     \b, Beta 1.12
678b6cee71dSXin LI>>27    byte            113     \b, Alpha 1.13
679b6cee71dSXin LI>>27    byte            114     \b, Beta 1.14
680b6cee71dSXin LI>>27    byte            115     \b, Alpha 1.15
681b6cee71dSXin LI
6823e41d09dSXin LI0       string          MPCK    Musepack audio (MPCK)
6833e41d09dSXin LI!:mime	audio/x-musepack
6843e41d09dSXin LI
685b6cee71dSXin LI# IMY
686b6cee71dSXin LI# from http://filext.com/detaillist.php?extdetail=IMY
68748c779cdSXin LI# https://cellphones.about.com/od/cellularfaqs/f/rf_imelody.htm
688b6cee71dSXin LI# http://download.ncl.ie/doc/api/ie/ncl/media/music/IMelody.html
689b6cee71dSXin LI# http://www.wx800.com/msg/download/irda/iMelody.pdf
690b6cee71dSXin LI0	string	BEGIN:IMELODY	iMelody Ringtone Format
691b6cee71dSXin LI
692b6cee71dSXin LI# From: "Mateus Caruccio" <mateus@caruccio.com>
693b6cee71dSXin LI# guitar pro v3,4,5 from http://filext.com/file-extension/gp3
694b6cee71dSXin LI0	string	\030FICHIER\ GUITAR\ PRO\ v3.	Guitar Pro Ver. 3 Tablature
695b6cee71dSXin LI
696b6cee71dSXin LI# From: "Leslie P. Polzer" <leslie.polzer@gmx.net>
697b6cee71dSXin LI60	string	SONG		SoundFX Module sound file
698b6cee71dSXin LI
699b6cee71dSXin LI# Type: Adaptive Multi-Rate Codec
700b6cee71dSXin LI# URL:  http://filext.com/detaillist.php?extdetail=AMR
701b6cee71dSXin LI# From: Russell Coker <russell@coker.com.au>
702b6cee71dSXin LI0	string	#!AMR		Adaptive Multi-Rate Codec (GSM telephony)
70348c779cdSXin LI!:mime	audio/amr
70448c779cdSXin LI!:ext  amr
705b6cee71dSXin LI
706b6cee71dSXin LI# Type: SuperCollider 3 Synth Definition File Format
707b6cee71dSXin LI# From: Mario Lang <mlang@debian.org>
708b6cee71dSXin LI0	string	SCgf	SuperCollider3 Synth Definition file,
709b6cee71dSXin LI>4	belong	x	version %d
710b6cee71dSXin LI
711b6cee71dSXin LI# Type: True Audio Lossless Audio
71248c779cdSXin LI# URL:  https://wiki.multimedia.cx/index.php?title=True_Audio
713b6cee71dSXin LI# From: Mike Melanson <mike@multimedia.cx>
714b6cee71dSXin LI0	string	TTA1	True Audio Lossless Audio
715b6cee71dSXin LI
716b6cee71dSXin LI# Type: WavPack Lossless Audio
71748c779cdSXin LI# URL:  https://wiki.multimedia.cx/index.php?title=WavPack
718b6cee71dSXin LI# From: Mike Melanson <mike@multimedia.cx>
719b6cee71dSXin LI0	string	wvpk	WavPack Lossless Audio
720b6cee71dSXin LI
721b6cee71dSXin LI# From Fabio R. Schmidlin <frs@pop.com.br>
722b6cee71dSXin LI# VGM music file
72340427ccaSGordon Tetlow0	string		Vgm\040
724b6cee71dSXin LI>9	ubyte		>0	VGM Video Game Music dump v
72548c779cdSXin LI!:mime	audio/x-vgm
72648c779cdSXin LI!:ext	vgm
727b6cee71dSXin LI>>9	ubyte/16	>0	\b%d
728b6cee71dSXin LI>>9	ubyte&0x0F	x	\b%d
729b6cee71dSXin LI>>8	ubyte/16	x	\b.%d
730b6cee71dSXin LI>>8	ubyte&0x0F	>0	\b%d
731b6cee71dSXin LI#Get soundchips
732b6cee71dSXin LI>>8	ubyte		x	\b, soundchip(s)=
73343a5ec4eSXin LI>>0x0C	ulelong		>0	SN76489 (PSG),
73443a5ec4eSXin LI>>0x10	ulelong		>0	YM2413 (OPLL),
73543a5ec4eSXin LI>>0x2C	ulelong		>0	YM2612 (OPN2),
73643a5ec4eSXin LI>>0x30	ulelong		>0	YM2151 (OPM),
737b6cee71dSXin LI>>0x38	ulelong		>0	Sega PCM,
738b6cee71dSXin LI>>0x34	ulelong		>0xC
73943a5ec4eSXin LI>>>0x40	ulelong		>0	RF5C68 (PCM),
740b6cee71dSXin LI>>0x34	ulelong		>0x10
74143a5ec4eSXin LI>>>0x44	ulelong		>0	YM2203 (OPN),
742b6cee71dSXin LI>>0x34	ulelong		>0x14
74343a5ec4eSXin LI>>>0x48	ulelong		>0	YM2608 (OPNA),
744b6cee71dSXin LI>>0x34	ulelong		>0x18
74543a5ec4eSXin LI>>>0x4C	lelong		>0	YM2610 (OPNB),
74643a5ec4eSXin LI>>>0x4C	lelong		<0	YM2610B (OPNB+2FM),
747b6cee71dSXin LI>>0x34	ulelong		>0x1C
74843a5ec4eSXin LI>>>0x50	ulelong		>0	YM3812 (OPL2),
749b6cee71dSXin LI>>0x34	ulelong		>0x20
75043a5ec4eSXin LI>>>0x54	ulelong		>0	YM3526 (OPL),
751b6cee71dSXin LI>>0x34	ulelong		>0x24
75243a5ec4eSXin LI>>>0x58	ulelong		>0	Y8950 (MSX-Audio),
753b6cee71dSXin LI>>0x34	ulelong		>0x28
75443a5ec4eSXin LI>>>0x5C	ulelong		>0	YMF262 (OPL3),
755b6cee71dSXin LI>>0x34	ulelong		>0x2C
75643a5ec4eSXin LI>>>0x60	ulelong		>0	YMF278B (OPL4),
757b6cee71dSXin LI>>0x34	ulelong		>0x30
75843a5ec4eSXin LI>>>0x64	ulelong		>0	YMF271 (OPX),
759b6cee71dSXin LI>>0x34	ulelong		>0x34
76043a5ec4eSXin LI>>>0x68	ulelong		>0	YMZ280B (PCMD8),
761b6cee71dSXin LI>>0x34	ulelong		>0x38
76243a5ec4eSXin LI>>>0x6C	ulelong		>0	RF5C164 (PCM),
763b6cee71dSXin LI>>0x34	ulelong		>0x3C
764b6cee71dSXin LI>>>0x70	ulelong		>0	PWM,
765b6cee71dSXin LI>>0x34	ulelong		>0x40
766b6cee71dSXin LI>>>0x74	ulelong		>0
767b6cee71dSXin LI>>>>0x78 ubyte		0x00	AY-3-8910,
768b6cee71dSXin LI>>>>0x78 ubyte		0x01	AY-3-8912,
769b6cee71dSXin LI>>>>0x78 ubyte		0x02	AY-3-8913,
770b6cee71dSXin LI>>>>0x78 ubyte		0x03	AY-3-8930,
771b6cee71dSXin LI>>>>0x78 ubyte		0x10	YM2149,
772b6cee71dSXin LI>>>>0x78 ubyte		0x11	YM3439,
773d38c30c0SXin LI>>>>0x78 ubyte		0x12	YMZ284,
774d38c30c0SXin LI>>>>0x78 ubyte		0x13	YMZ294,
77548c779cdSXin LI# VGM 1.61
77648c779cdSXin LI>>0x34	ulelong		>0x4C
77748c779cdSXin LI>>>0x80	ulelong		>0	DMG,
77848c779cdSXin LI>>0x34	ulelong		>0x50
77948c779cdSXin LI>>>0x84	lelong		>0	NES APU,
78048c779cdSXin LI>>>0x84	lelong		<0	NES APU with FDS,
78148c779cdSXin LI>>0x34	ulelong		>0x54
78248c779cdSXin LI>>>0x88	ulelong		>0	MultiPCM,
78348c779cdSXin LI>>0x34	ulelong		>0x58
78443a5ec4eSXin LI>>>0x8C	ulelong		>0	uPD7759 (ADPCM Speech),
78548c779cdSXin LI>>0x34	ulelong		>0x5C
78643a5ec4eSXin LI>>>0x90	ulelong		>0	OKIM6258 (ADPCM Speech),
78748c779cdSXin LI>>0x34	ulelong		>0x64
78843a5ec4eSXin LI>>>0x98	ulelong		>0	OKIM6295 (ADPCM),
78948c779cdSXin LI>>0x34	ulelong		>0x68
79048c779cdSXin LI>>>0x9C	ulelong		>0	K051649,
79148c779cdSXin LI>>0x34	ulelong		>0x6C
79248c779cdSXin LI>>>0xA0	ulelong		>0	K054539,
79348c779cdSXin LI>>0x34	ulelong		>0x70
79448c779cdSXin LI>>>0xA4	ulelong		>0	HuC6280,
79548c779cdSXin LI>>0x34	ulelong		>0x74
79648c779cdSXin LI>>>0xA8	ulelong		>0	C140,
79748c779cdSXin LI>>0x34	ulelong		>0x78
79848c779cdSXin LI>>>0xAC	ulelong		>0	K053260,
79948c779cdSXin LI>>0x34	ulelong		>0x7C
80048c779cdSXin LI>>>0xB0	ulelong		>0	Pokey,
80148c779cdSXin LI>>0x34	ulelong		>0x80
80248c779cdSXin LI>>>0xB4	ulelong		>0	QSound,
80348c779cdSXin LI# VGM 1.71
80448c779cdSXin LI>>0x34	ulelong		>0x84
80548c779cdSXin LI>>>0xB8	ulelong		>0	SCSP,
80648c779cdSXin LI>>0x34	ulelong		>0x8C
80748c779cdSXin LI>>>0xC0	ulelong		>0	WonderSwan,
80848c779cdSXin LI>>0x34	ulelong		>0x90
80948c779cdSXin LI>>>0xC4	ulelong		>0	VSU,
81048c779cdSXin LI>>0x34	ulelong		>0x94
81148c779cdSXin LI>>>0xC8	ulelong		>0	SAA1099,
81248c779cdSXin LI>>0x34	ulelong		>0x98
81343a5ec4eSXin LI>>>0xCC	ulelong		>0	ES5503 (DOC),
81448c779cdSXin LI>>0x34	ulelong		>0x9C
81543a5ec4eSXin LI>>>0xD0	lelong		>0	ES5505 (OTIS),
81643a5ec4eSXin LI>>>0xD0	lelong		<0	ES5506 (OTTO),
81748c779cdSXin LI>>0x34	ulelong		>0xA4
81848c779cdSXin LI>>>0xD8	ulelong		>0	X1-010,
81948c779cdSXin LI>>0x34	ulelong		>0xA8
82048c779cdSXin LI>>>0xDC	ulelong		>0	C352,
82148c779cdSXin LI>>0x34	ulelong		>0xAC
82248c779cdSXin LI>>>0xE0	ulelong		>0	GA20,
823b6cee71dSXin LI
824b6cee71dSXin LI# GVOX Encore file format
825b6cee71dSXin LI# Since this is a proprietary file format and there is no publicly available
826b6cee71dSXin LI# format specification, this is just based on induction
827b6cee71dSXin LI#
828b6cee71dSXin LI0	string	SCOW
829b6cee71dSXin LI>4	byte	0xc4	GVOX Encore music, version 5.0 or above
830b6cee71dSXin LI>4	byte	0xc2	GVOX Encore music, version < 5.0
831b6cee71dSXin LI
832b6cee71dSXin LI0	string	ZBOT
833b6cee71dSXin LI>4	byte	0xc5	GVOX Encore music, version < 5.0
834b6cee71dSXin LI
8353e41d09dSXin LI# Summary:	Garmin Voice Processing Module (WAVE audios)
8363e41d09dSXin LI# From:		Joerg Jenderek
83748c779cdSXin LI# URL:		https://www.garmin.com/
83848c779cdSXin LI# Reference:	http://www.poi-factory.com/node/19580
8393e41d09dSXin LI# NOTE:		there exist 2 other Garmin VPM formats
8403e41d09dSXin LI0		string	AUDIMG
8413e41d09dSXin LI# skip text files starting with string "AUDIMG"
8423e41d09dSXin LI>13		ubyte		<13	Garmin Voice Processing Module
8433e41d09dSXin LI!:mime	audio/x-vpm-wav-garmin
8443e41d09dSXin LI!:ext	vpm
8453e41d09dSXin LI# 3 bytes indicating the voice version (200,220)
8463e41d09dSXin LI>>6		string		x	\b, version %3.3s
8473e41d09dSXin LI# day of release (01-31)
8483e41d09dSXin LI>>12		ubyte		x	\b, %.2d
8493e41d09dSXin LI# month of release (01-12)
8503e41d09dSXin LI>>13		ubyte		x	\b.%.2d
8513e41d09dSXin LI# year of release (like 2006, 2007, 2008)
8523e41d09dSXin LI>>14		uleshort	x	\b.%.4d
8533e41d09dSXin LI# hour of release (0-23)
8543e41d09dSXin LI>>11		ubyte		x	%.2d
8553e41d09dSXin LI# minute of release (0-59)
8563e41d09dSXin LI>>10		ubyte		x	\b:%.2d
8573e41d09dSXin LI# second of release (0-59)
8583e41d09dSXin LI>>9		ubyte		x	\b:%.2d
8593e41d09dSXin LI# if you select a language like german on your garmin device
86040427ccaSGordon Tetlow# you can only select voice modules with corresponding language byte ID like 1
8613e41d09dSXin LI>>18		ubyte		x	\b, language ID %d
86248c779cdSXin LI# structure for phrases/sentences?
86348c779cdSXin LI# number of voice sample in the 1st phrase?
86443a5ec4eSXin LI#>>19		uleshort		x	\b, %#x samples
86543a5ec4eSXin LI#>>>21		uleshort		>0	\b, at %#4.4x
86643a5ec4eSXin LI#>>>(21.s)	ubequad			x	%#llx
86748c779cdSXin LI# 2nd phrase?
86843a5ec4eSXin LI#>>23		uleshort		x	\b, %#x samples
86943a5ec4eSXin LI#>>>25		uleshort		>0	\b, at %#4.4x
87043a5ec4eSXin LI#>>>(25.s)	ubequad			x	%#llx
8713e41d09dSXin LI# pointer to 1st audio WAV sample
8723e41d09dSXin LI>>16		uleshort	>0
87343a5ec4eSXin LI>>>(16.s)	ulelong		>0	\b, at %#x
8743e41d09dSXin LI# WAV length
87548c779cdSXin LI# 1 space char after "bytes" to get phrase "bytes RIFF"
87648c779cdSXin LI>>>>(16.s+4)	ulelong		>0	%u bytes
8773e41d09dSXin LI# look for magic
8783e41d09dSXin LI>>>>>(&-8.l)	string		RIFF
8793e41d09dSXin LI# determine type by ./riff
88048c779cdSXin LI>>>>>>&-4	indirect	x
8813e41d09dSXin LI# 2 - ~ 131 WAV samples following same way
88248c779cdSXin LI#
88348c779cdSXin LI# Summary:	encrypted Garmin Voice Processing Module
88448c779cdSXin LI# From:		Joerg Jenderek
88548c779cdSXin LI# URL:		https://www.garmin.com/us/products/ontheroad/voicestudio
88648c779cdSXin LI# NOTE:		Encrypted variant used in voices like DrNightmare, Elfred, Yeti.
88748c779cdSXin LI#		There exist 2 other Garmin VPM formats
88848c779cdSXin LI0	ubequad		0xa141190fecc8ced6	Garmin Voice Processing Module (encrypted)
88948c779cdSXin LI!:mime	audio/x-vpm-garmin
89048c779cdSXin LI!:ext	vpm
8913e41d09dSXin LI
89240427ccaSGordon Tetlow# From Martin Mueller Skarbiniks Pedersen
89340427ccaSGordon Tetlow0		string		GDM
89440427ccaSGordon Tetlow>0x3		byte		0xFE	General Digital Music.
89540427ccaSGordon Tetlow>0x4		string		>\0	title: "%s"
89640427ccaSGordon Tetlow>0x24		string		>\0	musician: "%s"
89740427ccaSGordon Tetlow>>0x44		beshort		0x0D0A
89840427ccaSGordon Tetlow>>>0x46		byte		0x1A
89940427ccaSGordon Tetlow>>>>0x47	string		GMFS	Version
90040427ccaSGordon Tetlow>>>>0x4B	byte		x	%d.
90140427ccaSGordon Tetlow>>>>0x4C	byte		x	\b%02d
90240427ccaSGordon Tetlow>>>>0x4D	beshort		0x000	(2GDM v
90340427ccaSGordon Tetlow>>>>0x4F	byte		x	\b%d.
90440427ccaSGordon Tetlow>>>>>0x50	byte		x	\b%d)
90540427ccaSGordon Tetlow
90640427ccaSGordon Tetlow0		string		MTM	Multitracker
90740427ccaSGordon Tetlow>0x3		byte/16		x	Version %d.
90840427ccaSGordon Tetlow>0x3		byte&0x0F	x	\b%02d
90940427ccaSGordon Tetlow>>0x4		string		>\0	title: "%s"
91040427ccaSGordon Tetlow
91140427ccaSGordon Tetlow0		string		MO3
91240427ccaSGordon Tetlow>3		ubyte		<6	MOdule with MP3
91340427ccaSGordon Tetlow>>3		byte		0	Version	0	(With MP3 and lossless)
91440427ccaSGordon Tetlow>>3		byte		1	Version	1	(With ogg and lossless)
91540427ccaSGordon Tetlow>>3		byte		3	Version 2.2
91640427ccaSGordon Tetlow>>3		byte		4	(With no LAME header)
91740427ccaSGordon Tetlow>>3		byte		5	Version 2.4
91840427ccaSGordon Tetlow
91940427ccaSGordon Tetlow0		string		ADRVPACK	AProSys	module
92040427ccaSGordon Tetlow
92140427ccaSGordon Tetlow# ftp://ftp.modland.com/pub/documents/format_documentation/\
92240427ccaSGordon Tetlow# Art%20Of%20Noise%20(.aon).txt
92340427ccaSGordon Tetlow0		string		AON
92440427ccaSGordon Tetlow>4		string		"ArtOfNoise by Bastian Spiegel(twice/lego)"
92540427ccaSGordon Tetlow>0x2e		string		NAME	Art of Noise Tracker Song
92640427ccaSGordon Tetlow>3		string		<9
92740427ccaSGordon Tetlow>3		string		4	(4 voices)
92840427ccaSGordon Tetlow>3		string		8	(8 voices)
92940427ccaSGordon Tetlow>>0x36		string		>\0	Title: "%s"
93040427ccaSGordon Tetlow
93140427ccaSGordon Tetlow0		string		FAR
93240427ccaSGordon Tetlow>0x2c		byte		0x0d
93340427ccaSGordon Tetlow>0x2d		byte		0x0a
93440427ccaSGordon Tetlow>0x2e		byte		0x1a
93540427ccaSGordon Tetlow>>0x3		byte		0xFE	Farandole Tracker Song
93640427ccaSGordon Tetlow>>>0x31		byte/16		x	Version %d.
93740427ccaSGordon Tetlow>>>0x31		byte&0x0F	x	\b%02d
93840427ccaSGordon Tetlow>>>>0x4		string		>\0	\b, title: "%s"
93958a0f0d0SEitan Adler
94048c779cdSXin LI# magic for Klystrack, https://kometbomb.github.io/klystrack/
94158a0f0d0SEitan Adler# from Alex Myczko <alex@aiei.ch>
94258a0f0d0SEitan Adler0	string	cyd!song	Klystrack song
94358a0f0d0SEitan Adler>8	byte	>0		\b, version %u
94458a0f0d0SEitan Adler>8	byte	>26
94558a0f0d0SEitan Adler#>>9	byte	x		\b, channels %u
94658a0f0d0SEitan Adler#>>10	leshort	x		\b, time signature %u
94758a0f0d0SEitan Adler#>>12	leshort	x		\b, sequence step %u
94858a0f0d0SEitan Adler#>>14	byte	x		\b, instruments %u
94958a0f0d0SEitan Adler#>>15	leshort	x		\b, patterns %u
95058a0f0d0SEitan Adler#>>17	leshort	x		\b, sequences %u
95158a0f0d0SEitan Adler#>>19	leshort	x		\b, length %u
95258a0f0d0SEitan Adler#>>21	leshort	x		\b, loop point %u
95358a0f0d0SEitan Adler#>>23	byte	x		\b, master volume %u
95458a0f0d0SEitan Adler#>>24	byte	x		\b, song speed %u
95558a0f0d0SEitan Adler#>>25	byte	x		\b, song speed2 %u
95658a0f0d0SEitan Adler#>>26	byte	x		\b, song rate %u
95758a0f0d0SEitan Adler#>>27	belong	x		\b, flags %#x
95858a0f0d0SEitan Adler#>>31	byte	x		\b, multiplex period %u
95958a0f0d0SEitan Adler#>>32	byte	x		\b, pitch inaccuracy %u
96058a0f0d0SEitan Adler>>149	pstring	x		\b, title %s
96158a0f0d0SEitan Adler
96258a0f0d0SEitan Adler0	string	cyd!inst	Klystrack instrument
96358a0f0d0SEitan Adler
96458a0f0d0SEitan Adler# magic for WOPL instrument files, https://github.com/Wohlstand/OPL3BankEditor
96558a0f0d0SEitan Adler# see Specifications/WOPL-and-OPLI-Specification.txt
96658a0f0d0SEitan Adler
96758a0f0d0SEitan Adler0	string	WOPL3-INST\0	WOPL instrument
96858a0f0d0SEitan Adler>11	leshort	x	\b, version %u
96958a0f0d0SEitan Adler0	string	WOPL3-BANK\0	WOPL instrument bank
97058a0f0d0SEitan Adler>11	leshort	x	\b, version %u
97158a0f0d0SEitan Adler
97258a0f0d0SEitan Adler# AdLib/OPL instrument files. Format specifications on
97358a0f0d0SEitan Adler#  http://www.shikadi.net/moddingwiki
97458a0f0d0SEitan Adler0	string	Junglevision\ Patch\ File	Junglevision instrument data
97558a0f0d0SEitan Adler0	string	#OPL_II#	DMX OP2 instrument data
97658a0f0d0SEitan Adler0	string	IBK\x1a		IBK instrument data
97758a0f0d0SEitan Adler0	string	2OP\x1a		IBK instrument data, 2 operators
97858a0f0d0SEitan Adler0	string	4OP\x1a		IBK instrument data, 4 operators
97958a0f0d0SEitan Adler2	string	ADLIB-		AdLib instrument data
98058a0f0d0SEitan Adler>0	byte	x		\b, version %u
98158a0f0d0SEitan Adler>1	byte	x		\b.%u
9822dc4dbb9SEitan Adler
9832dc4dbb9SEitan Adler# CRI ADX ADPCM audio
9842dc4dbb9SEitan Adler# Used by various Sega games.
9852dc4dbb9SEitan Adler# https://en.wikipedia.org/wiki/ADX_(file_format)
9862dc4dbb9SEitan Adler# https://wiki.multimedia.cx/index.php/CRI_ADX_file
9872dc4dbb9SEitan Adler# Added by David Korth <gerbilsoft@gerbilsoft.com>
9882dc4dbb9SEitan Adler0x00		beshort		0x8000
9892dc4dbb9SEitan Adler>(2.S-2)	string		(c)CRI		CRI ADX ADPCM audio
99048c779cdSXin LI!:ext adx
99148c779cdSXin LI!:mime audio/x-adx
99248c779cdSXin LI!:strength +50
9932dc4dbb9SEitan Adler>>0x12		byte		x		v%u
9942dc4dbb9SEitan Adler>>0x04		byte		0x02		\b, pre-set prediction coefficients
9952dc4dbb9SEitan Adler>>0x04		byte		0x03		\b, standard ADX
9962dc4dbb9SEitan Adler>>0x04		byte		0x04		\b, exponential scale
99748c779cdSXin LI>>0x04		byte		0x10		\b, AHX (Dreamcast)
99848c779cdSXin LI>>0x04		byte		0x11		\b, AHX
9992dc4dbb9SEitan Adler>>0x08		belong		x		\b, %u Hz
10002dc4dbb9SEitan Adler>>0x12		byte		0x03
10012dc4dbb9SEitan Adler>>>0x02		beshort		>0x2B
10022dc4dbb9SEitan Adler>>>>0x18	belong		!0		\b, looping
10032dc4dbb9SEitan Adler>>0x12		byte		0x04
10042dc4dbb9SEitan Adler>>>0x02		beshort		>0x37
10052dc4dbb9SEitan Adler>>>>0x24	belong		!0		\b, looping
10062dc4dbb9SEitan Adler>>0x13		byte&0x08	0x08		\b, encrypted
10072dc4dbb9SEitan Adler
10082dc4dbb9SEitan Adler# Lossless audio (.la) (http://www.lossless-audio.com/)
10092dc4dbb9SEitan Adler0	string	LA
10102dc4dbb9SEitan Adler>2	string	03	Lossless audio version 0.3
10112dc4dbb9SEitan Adler>2	string	04	Lossless audio version 0.4
10122dc4dbb9SEitan Adler
10132dc4dbb9SEitan Adler# Sony PlayStation Audio (.xa)
10142dc4dbb9SEitan Adler0	leshort 0x4158	Sony PlayStation Audio
10152dc4dbb9SEitan Adler
101648c779cdSXin LI# Portable Sound Format
101748c779cdSXin LI# Used for audio rips for various consoles.
101848c779cdSXin LI# http://fileformats.archiveteam.org/wiki/Portable_Sound_Format
101948c779cdSXin LI# Added by David Korth <gerbilsoft@gerbilsoft.com>
1020d38c30c0SXin LI0	string	PSF
1021d38c30c0SXin LI>3	byte	0x01
1022d38c30c0SXin LI>3	byte	0x02
1023d38c30c0SXin LI>3	byte	0x11
1024d38c30c0SXin LI>3	byte	0x12
1025d38c30c0SXin LI>3	byte	0x13
1026d38c30c0SXin LI>3	byte	0x21
1027d38c30c0SXin LI>3	byte	0x22
1028d38c30c0SXin LI>3	byte	0x23
1029d38c30c0SXin LI>3	byte	0x41
1030d38c30c0SXin LI>>0	string	PSF	Portable Sound Format
103148c779cdSXin LI!:mime	audio/x-psf
1032d38c30c0SXin LI>>>3	byte	0x01	(Sony PlayStation)
1033d38c30c0SXin LI>>>3	byte	0x02	(Sony PlayStation 2)
1034d38c30c0SXin LI>>>3	byte	0x11	(Sega Saturn)
1035d38c30c0SXin LI>>>3	byte	0x12	(Sega Dreamcast)
1036d38c30c0SXin LI>>>3	byte	0x13	(Sega Mega Drive)
1037d38c30c0SXin LI>>>3	byte	0x21	(Nintendo 64)
1038d38c30c0SXin LI>>>3	byte	0x22	(Game Boy Advance)
1039d38c30c0SXin LI>>>3	byte	0x23	(Super NES)
1040d38c30c0SXin LI>>>3	byte	0x41	(Capcom QSound)
104148c779cdSXin LI
104248c779cdSXin LI# Atari 8-bit SAP audio format
104348c779cdSXin LI# http://asap.sourceforge.net/sap-format.html
104448c779cdSXin LI# Added by David Korth <gerbilsoft@gerbilsoft.com>
104548c779cdSXin LI0	string		SAP\r\n	Atari 8-bit SAP audio file
104648c779cdSXin LI!:mime	audio/x-sap
104748c779cdSXin LI!:ext	sap
104848c779cdSXin LI>5	search/1024	NAME
104948c779cdSXin LI>>&1	string		x	\b: %s
105048c779cdSXin LI>>5	search/1024	AUTHOR
105148c779cdSXin LI>>>&1	string		x	by %s
105248c779cdSXin LI
105348c779cdSXin LI# Nintendo Wii BRSTM audio format (fields)
105448c779cdSXin LI# NOTE: Assuming HEAD starts at 0x40.
105548c779cdSXin LI# FIXME: Replace 0x48 with HEAD offset plus 8.
105648c779cdSXin LI0	name	nintendo-wii-brstm-fields
105748c779cdSXin LI>(0x10.L)	string	HEAD	\b:
105848c779cdSXin LI>>(0x10.L+0x0C)	belong	x
105948c779cdSXin LI>>>(&-4.L+0x48)	belong	x
106048c779cdSXin LI>>>>&-4		byte	0	PCM, signed 8-bit,
106148c779cdSXin LI>>>>&-4		byte	1	PCM, signed 16-bit,
106248c779cdSXin LI>>>>&-4		byte	2	THP ADPCM,
106348c779cdSXin LI>>>>&-3		byte	!0	looping,
106448c779cdSXin LI>>>>&-2		byte	1	mono
106548c779cdSXin LI>>>>&-2		byte	2	stereo
106648c779cdSXin LI>>>>&-2		byte	3	3 channels
106748c779cdSXin LI>>>>&-2		byte	4	quad
106848c779cdSXin LI>>>>&-2		byte	>4	%u channels
106948c779cdSXin LI>>>>&0		beshort	!0	%u Hz
107048c779cdSXin LI
107148c779cdSXin LI# Nintendo Wii BRSTM audio format
107248c779cdSXin LI# https://wiibrew.org/wiki/BRSTM_file
107348c779cdSXin LI# Added by David Korth <gerbilsoft@gerbilsoft.com>
107448c779cdSXin LI0	string		RSTM	Nintendo Wii BRSTM audio file
107548c779cdSXin LI!:mime	audio/x-brstm
107648c779cdSXin LI!:ext	brstm
107748c779cdSXin LI# Wii is big-endian, so default to BE.
107848c779cdSXin LI>4	beshort		0xFEFF
107948c779cdSXin LI>>0	use		nintendo-wii-brstm-fields
108048c779cdSXin LI>4	leshort		0xFEFF
108148c779cdSXin LI>>0	use		\^nintendo-wii-brstm-fields
108248c779cdSXin LI
108348c779cdSXin LI# Nintendo 3DS BCSTM audio format (fields)
108448c779cdSXin LI0	name	nintendo-3ds-bcstm-fields
108548c779cdSXin LI>(0x18.l)	string	INFO	\b:
108648c779cdSXin LI# INFO block: Stream information starts at 0x20 (minus 4 for the 'INFO' magic)
108748c779cdSXin LI>>&0x1C		byte	0	PCM, signed 8-bit,
108848c779cdSXin LI>>&0x1C		byte	1	PCM, signed 16-bit,
108948c779cdSXin LI>>&0x1C		byte	2	DSP ADPCM,
109048c779cdSXin LI>>&0x1C		byte	3	IMA ADPCM,
109148c779cdSXin LI>>&0x1D		byte	!0	looping,
109248c779cdSXin LI>>&0x1E		byte	1	mono
109348c779cdSXin LI>>&0x1E		byte	2	stereo
109448c779cdSXin LI>>&0x1E		byte	3	3 channels
109548c779cdSXin LI>>&0x1E		byte	4	quad
109648c779cdSXin LI>>&0x1E		byte	>4	%u channels
109748c779cdSXin LI>>&0x20		lelong	!0	%u Hz
109848c779cdSXin LI
109948c779cdSXin LI# Nintendo 3DS BCSTM audio format
110048c779cdSXin LI# https://www.3dbrew.org/wiki/BCSTM
110148c779cdSXin LI# Added by David Korth <gerbilsoft@gerbilsoft.com>
110248c779cdSXin LI0	string		CSTM	Nintendo 3DS BCSTM audio file
110348c779cdSXin LI!:mime	audio/x-bcstm
110448c779cdSXin LI!:ext	bcstm
110548c779cdSXin LI# 3DS is little-endian, so default to LE.
110648c779cdSXin LI>4	leshort		0xFEFF
110748c779cdSXin LI>>0	use		nintendo-3ds-bcstm-fields
110848c779cdSXin LI>4	beshort		0xFEFF
110948c779cdSXin LI>>0	use		\^nintendo-3ds-bcstm-fields
111048c779cdSXin LI
111148c779cdSXin LI# Nintendo Wii U BFSTM audio format
111248c779cdSXin LI# http://mk8.tockdom.com/wiki/BFSTM_(File_Format)
111348c779cdSXin LI# NOTE: This format is very similar to BCSTM.
111448c779cdSXin LI# Added by David Korth <gerbilsoft@gerbilsoft.com>
111548c779cdSXin LI0	string		FSTM	Nintendo Wii U BFSTM audio file
111648c779cdSXin LI!:mime	audio/x-bfstm
111748c779cdSXin LI!:ext	bfstm
111848c779cdSXin LI# BFSTM is used on both Wii U (BE) and Switch (LE),
111948c779cdSXin LI# so default to LE.
112048c779cdSXin LI>4	leshort		0xFEFF
112148c779cdSXin LI>>0	use		nintendo-3ds-bcstm-fields
112248c779cdSXin LI>4	beshort		0xFEFF
112348c779cdSXin LI>>0	use		\^nintendo-3ds-bcstm-fields
112448c779cdSXin LI
112548c779cdSXin LI# Nintendo 3DS BCSTM audio format (fields)
112648c779cdSXin LI0	name	nintendo-3ds-bcwav-fields
112748c779cdSXin LI>(0x18.l)	string	INFO	\b:
112848c779cdSXin LI# INFO block (minus 4 for INFO magic)
112948c779cdSXin LI>>&0x4		byte	0	PCM, signed 8-bit,
113048c779cdSXin LI>>&0x4		byte	1	PCM, signed 16-bit,
113148c779cdSXin LI>>&0x4		byte	2	DSP ADPCM,
113248c779cdSXin LI>>&0x4		byte	3	IMA ADPCM,
113348c779cdSXin LI>>&0x5		byte	!0	looping,
113448c779cdSXin LI>>&0x8		lelong	x	stereo
113548c779cdSXin LI>>&0x8		lelong	!0	%u Hz
113648c779cdSXin LI
113748c779cdSXin LI# Nintendo 3DS BCWAV audio format
113848c779cdSXin LI# https://www.3dbrew.org/wiki/BCWAV
113948c779cdSXin LI# Added by David Korth <gerbilsoft@gerbilsoft.com>
114048c779cdSXin LI0	string		CWAV	Nintendo 3DS BCWAV audio file
114148c779cdSXin LI!:mime	audio/x-bcwav
114248c779cdSXin LI!:ext	bcwav
114348c779cdSXin LI# 3DS is little-endian, so default to LE.
114448c779cdSXin LI>4	leshort		0xFEFF
114548c779cdSXin LI>>0	use		nintendo-3ds-bcwav-fields
114648c779cdSXin LI>4	beshort		0xFEFF
114748c779cdSXin LI>>0	use		\^nintendo-3ds-bcwav-fields
1148*a2dfb722SXin LI
1149*a2dfb722SXin LI# Philips DSDIFF audio format (Direct Stream Digital Interchange File Format)
1150*a2dfb722SXin LI# Used for DSD audio recordings and Super Audio CD (SACD) mastering annotations
1151*a2dfb722SXin LI# https://dsd-guide.com/sites/default/files/white-papers/DSDIFF_1.5_Spec.pdf
1152*a2dfb722SXin LI# From: Toni Ruottu <toni.ruottu@iki.fi>
1153*a2dfb722SXin LI0		string		FRM8
1154*a2dfb722SXin LI12		string		DSD\x20		DSDIFF audio bitstream data
1155*a2dfb722SXin LI!:mime		audio/x-dff
1156*a2dfb722SXin LI!:ext		dff
1157*a2dfb722SXin LI
1158*a2dfb722SXin LI# format version chunk
1159*a2dfb722SXin LI>&0		string		FVER
1160*a2dfb722SXin LI# version 1
1161*a2dfb722SXin LI>>&8		byte		1
1162*a2dfb722SXin LI
1163*a2dfb722SXin LI# v1 / sampling resolution ( 1 bit PDM only )
1164*a2dfb722SXin LI>>>&0		string		x		\b, 1 bit
1165*a2dfb722SXin LI
1166*a2dfb722SXin LI# v1 / sound property chunk
1167*a2dfb722SXin LI>>>&0		search/0xff	PROP
1168*a2dfb722SXin LI>>>>&8		string		SND
1169*a2dfb722SXin LI
1170*a2dfb722SXin LI# v1 / sound property chunk / channel configuration chunk
1171*a2dfb722SXin LI>>>>>&0		search/0xff	CHNL
1172*a2dfb722SXin LI>>>>>>&8	ubeshort	1							\b, mono
1173*a2dfb722SXin LI>>>>>>&8	ubeshort	2
1174*a2dfb722SXin LI>>>>>>>&0	string		SLFTSRGT						\b, stereo
1175*a2dfb722SXin LI>>>>>>>&0	default		x							\b, 2 channels
1176*a2dfb722SXin LI>>>>>>&8	ubeshort	3
1177*a2dfb722SXin LI>>>>>>>&0	string		SLFTSRGTLFE\x20						\b, 2.1 stereo
1178*a2dfb722SXin LI>>>>>>>&0	string		SLFTSRGTC\x20\x20\x20					\b, 3.0 stereo
1179*a2dfb722SXin LI>>>>>>>&0	default		x							\b, 3 channels
1180*a2dfb722SXin LI>>>>>>&8	ubeshort	4
1181*a2dfb722SXin LI>>>>>>>&0	string		MLFTMRGTLS\x20\x20RS\x20\x20				\b, 4.0 surround
1182*a2dfb722SXin LI>>>>>>>&0	string		SLFTSRGTC\x20\x20\x20LFE\x20				\b, 3.1 stereo
1183*a2dfb722SXin LI>>>>>>>&0	default		x							\b, 4 channels
1184*a2dfb722SXin LI>>>>>>&8	ubeshort	5
1185*a2dfb722SXin LI>>>>>>>&0	string		MLFTMRGTC\x20\x20\x20LS\x20\x20RS\x20\x20		\b, 5.0 surround
1186*a2dfb722SXin LI>>>>>>>&0	string		MLFTMRGTLFE\x20LS\x20\x20RS\x20\x20			\b, 4.1 surround
1187*a2dfb722SXin LI>>>>>>>&0	default		x							\b, 5 channels
1188*a2dfb722SXin LI>>>>>>&8	ubeshort	6
1189*a2dfb722SXin LI>>>>>>>&0	string		MLFTMRGTC\x20\x20\x20LFE\x20LS\x20\x20RS\x20\x20	\b, 5.1 surround
1190*a2dfb722SXin LI>>>>>>>&0	default		x							\b, 6 channels
1191*a2dfb722SXin LI>>>>>>&8	ubeshort	>6							\b, %u channels
1192*a2dfb722SXin LI
1193*a2dfb722SXin LI# v1 / sound property chunk / sample rate chunk
1194*a2dfb722SXin LI>>>>>&0		search/0xff	FS\x20\x20
1195*a2dfb722SXin LI>>>>>>&0	string		x		\b,
1196*a2dfb722SXin LI>>>>>>&8	ubelong%44100	0
1197*a2dfb722SXin LI>>>>>>>&-4	ubelong/44100	x		"DSD %u"
1198*a2dfb722SXin LI>>>>>>>&-4	ubelong		x		%u Hz
1199*a2dfb722SXin LI
1200*a2dfb722SXin LI# v1 / sound property chunk / compression type chunk
1201*a2dfb722SXin LI>>>>>&0		search/0xff	CMPR
1202*a2dfb722SXin LI>>>>>>&8	string		DSD\x20		\b, no compression
1203*a2dfb722SXin LI>>>>>>&8	string		DST\x20		\b, DST compression
1204*a2dfb722SXin LI>>>>>>&8	default		x		\b, unknown compression
1205*a2dfb722SXin LI
1206*a2dfb722SXin LI# v1 / quest for metadata
1207*a2dfb722SXin LI>>>&0		string		x
1208*a2dfb722SXin LI
1209*a2dfb722SXin LI# v1 / quest for metadata / edited master information chunk
1210*a2dfb722SXin LI>>>>&0		search		DIIN
1211*a2dfb722SXin LI>>>>>&0		ubequad		>0		\b, "edited master" metadata
1212*a2dfb722SXin LI
1213*a2dfb722SXin LI# v1 / quest for metadata / ID3 chunk ( defacto standard )
1214*a2dfb722SXin LI>>>>&0		search		ID3\x20
1215*a2dfb722SXin LI>>>>>&8		string		ID3		\b, ID3 version 2
1216*a2dfb722SXin LI>>>>>&0		byte		x		\b.%u
1217*a2dfb722SXin LI>>>>>&1		byte		x		\b.%u
1218*a2dfb722SXin LI
1219*a2dfb722SXin LI# v1 / quest for metadata / failure ( possibly due to -P bytes=... being too low )
1220*a2dfb722SXin LI>>>>&0		default		x		\b, ID3 missing (or unreachable)
1221*a2dfb722SXin LI
1222*a2dfb722SXin LI# version > 1 or 0
1223*a2dfb722SXin LI>>&0		default		x		\b, unknown version
1224*a2dfb722SXin LI
1225*a2dfb722SXin LI# Sony DSF audio format (Direct Stream Digital Stream File)
1226*a2dfb722SXin LI# Used for lossless digital storage of songs produced as DSD audio
1227*a2dfb722SXin LI# Portable analog of a track stored on a Super Audio CD (SACD)
1228*a2dfb722SXin LI# https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf
1229*a2dfb722SXin LI# From: Toni Ruottu <toni.ruottu@iki.fi>
1230*a2dfb722SXin LI0		string		DSD\x20		DSF audio bitstream data
1231*a2dfb722SXin LI!:mime		audio/x-dsf
1232*a2dfb722SXin LI!:ext		dsf
1233*a2dfb722SXin LI
1234*a2dfb722SXin LI# format chunk
1235*a2dfb722SXin LI>28		string		fmt\x20
1236*a2dfb722SXin LI# version 1
1237*a2dfb722SXin LI>>&8		ulelong		1
1238*a2dfb722SXin LI
1239*a2dfb722SXin LI# v1 / sampling resolution ( 1 bit PDM only )
1240*a2dfb722SXin LI# NOTE: the spec incorrectly uses "bits per sample" instead of "bits per byte"
1241*a2dfb722SXin LI>>>&0		string		x		\b, 1 bit
1242*a2dfb722SXin LI
1243*a2dfb722SXin LI# v1 / channel configuration
1244*a2dfb722SXin LI>>>>&4		ulelong		1		\b, mono
1245*a2dfb722SXin LI>>>>&4		ulelong		2		\b, stereo
1246*a2dfb722SXin LI>>>>&4		ulelong		3		\b, 3.0 stereo
1247*a2dfb722SXin LI>>>>&4		ulelong		4		\b, 4.0 surround
1248*a2dfb722SXin LI>>>>&4		ulelong		5		\b, 3.1 stereo
1249*a2dfb722SXin LI>>>>&4		ulelong		6		\b, 5.0 surround
1250*a2dfb722SXin LI>>>>&4		ulelong		7		\b, 5.1 surround
1251*a2dfb722SXin LI>>>>&0		default		x
1252*a2dfb722SXin LI>>>>>&4		ulelong		x		\b, %u channels
1253*a2dfb722SXin LI
1254*a2dfb722SXin LI# v1 / sample rate chunk
1255*a2dfb722SXin LI>>>>&0		string		x		\b,
1256*a2dfb722SXin LI>>>>&12		ulelong%44100	0
1257*a2dfb722SXin LI>>>>>&-4	ulelong/44100	x		"DSD %u"
1258*a2dfb722SXin LI>>>>&12		ulelong		x		%u Hz
1259*a2dfb722SXin LI
1260*a2dfb722SXin LI# v1 / compression
1261*a2dfb722SXin LI>>>>&0		string		x
1262*a2dfb722SXin LI>>>>>&0		ulelong		0		\b, no compression
1263*a2dfb722SXin LI>>>>>&0		default		x		\b, unknown compression
1264*a2dfb722SXin LI
1265*a2dfb722SXin LI# v1 / embedded ID3v2 metadata
1266*a2dfb722SXin LI>>>0		string		x 		\b, ID3
1267*a2dfb722SXin LI>>>>20		ulequad		!0
1268*a2dfb722SXin LI>>>>>(20.q)	string		ID3		version 2
1269*a2dfb722SXin LI>>>>>>&0	byte		x		\b.%u
1270*a2dfb722SXin LI>>>>>>&1	byte		x		\b.%u
1271*a2dfb722SXin LI# unable to verify ID3 ( possibly due to -P bytes=... being too low )
1272*a2dfb722SXin LI>>>>>&0		default		x		unreachable
1273*a2dfb722SXin LI>>>>&0		default		x		missing
1274*a2dfb722SXin LI
1275*a2dfb722SXin LI# version > 1 or 0
1276*a2dfb722SXin LI>>&0		default		x		\b, unknown version
1277