Added CSV support
							parent
							
								
									35ffcbad33
								
							
						
					
					
						commit
						ba49572ffb
					
				| 
						 | 
					@ -10,5 +10,7 @@
 | 
				
			||||||
	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/javaFlacEncoder"/>
 | 
						<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/javaFlacEncoder"/>
 | 
				
			||||||
	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Apache Commons IO"/>
 | 
						<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Apache Commons IO"/>
 | 
				
			||||||
	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JColor"/>
 | 
						<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JColor"/>
 | 
				
			||||||
 | 
						<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Apache Commons CSV"/>
 | 
				
			||||||
 | 
						<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Apache Commons Codec"/>
 | 
				
			||||||
	<classpathentry kind="output" path="bin"/>
 | 
						<classpathentry kind="output" path="bin"/>
 | 
				
			||||||
</classpath>
 | 
					</classpath>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
4,0x0004,Compaq VSELP (Vector Sum Excited Linear Prediction)
 | 
					4,0x0004,Compaq VSELP (Vector Sum Excited Linear Prediction)
 | 
				
			||||||
5,0x0005,IBM CVSDM (Continuously Variable Slope Delta Modulation)
 | 
					5,0x0005,IBM CVSDM (Continuously Variable Slope Delta Modulation)
 | 
				
			||||||
6,0x0006,ITU G.711 a-law
 | 
					6,0x0006,ITU G.711 a-law
 | 
				
			||||||
7,0x0007,ITU G.711 u-law
 | 
					7,0x0007,ITU G.711 µ-law
 | 
				
			||||||
8,0x0008,Microsoft DTS
 | 
					8,0x0008,Microsoft DTS
 | 
				
			||||||
9,0x0009,DRM
 | 
					9,0x0009,DRM
 | 
				
			||||||
10,0x000A,WMA 9 Speech
 | 
					10,0x000A,WMA 9 Speech
 | 
				
			||||||
| 
						 | 
					@ -131,7 +131,7 @@
 | 
				
			||||||
355,0x0163,Windows Media Audio Lossless V9
 | 
					355,0x0163,Windows Media Audio Lossless V9
 | 
				
			||||||
356,0x0164,WMA Pro over S/PDIF
 | 
					356,0x0164,WMA Pro over S/PDIF
 | 
				
			||||||
357,0x0165,XMA (Xbox Media Audio)
 | 
					357,0x0165,XMA (Xbox Media Audio)
 | 
				
			||||||
358,0x0166,XMA2 (Xbox Media Audio V2)
 | 
					358,0x0166,XMA2 (Xbox Media Audio 2)
 | 
				
			||||||
368,0x0170,UNISYS NAP ADPCM
 | 
					368,0x0170,UNISYS NAP ADPCM
 | 
				
			||||||
369,0x0171,UNISYS NAP ULAW
 | 
					369,0x0171,UNISYS NAP ULAW
 | 
				
			||||||
370,0x0172,UNISYS NAP ALAW
 | 
					370,0x0172,UNISYS NAP ALAW
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		
		
			
  | 
| 
						 | 
					@ -0,0 +1,684 @@
 | 
				
			||||||
 | 
					SysEx ID Number,Company Name
 | 
				
			||||||
 | 
					00H,Unspecified
 | 
				
			||||||
 | 
					01H,Sequential Circuits
 | 
				
			||||||
 | 
					02H,IDP
 | 
				
			||||||
 | 
					03H,"Voyetra Turtle Beach, Inc."
 | 
				
			||||||
 | 
					04H,Moog Music
 | 
				
			||||||
 | 
					05H,Passport Designs
 | 
				
			||||||
 | 
					06H,Lexicon Inc.
 | 
				
			||||||
 | 
					07H,Kurzweil / Young Chang
 | 
				
			||||||
 | 
					08H,Fender
 | 
				
			||||||
 | 
					09H,MIDI9
 | 
				
			||||||
 | 
					0AH,AKG Acoustics
 | 
				
			||||||
 | 
					0BH,Voyce Music
 | 
				
			||||||
 | 
					0CH,WaveFrame (Timeline)
 | 
				
			||||||
 | 
					0DH,"ADA Signal Processors, Inc."
 | 
				
			||||||
 | 
					0EH,Garfield Electronics
 | 
				
			||||||
 | 
					0FH,Ensoniq
 | 
				
			||||||
 | 
					10H,Oberheim
 | 
				
			||||||
 | 
					11H,Apple
 | 
				
			||||||
 | 
					12H,Grey Matter Response
 | 
				
			||||||
 | 
					13H,Digidesign Inc.
 | 
				
			||||||
 | 
					14H,Palmtree Instruments
 | 
				
			||||||
 | 
					15H,JLCooper Electronics
 | 
				
			||||||
 | 
					16H,Lowrey Organ Company
 | 
				
			||||||
 | 
					17H,Adams-Smith
 | 
				
			||||||
 | 
					18H,E-mu
 | 
				
			||||||
 | 
					19H,Harmony Systems
 | 
				
			||||||
 | 
					1AH,ART
 | 
				
			||||||
 | 
					1BH,Baldwin
 | 
				
			||||||
 | 
					1CH,Eventide
 | 
				
			||||||
 | 
					1DH,Inventronics
 | 
				
			||||||
 | 
					1EH,Key Concepts
 | 
				
			||||||
 | 
					1FH,Clarity
 | 
				
			||||||
 | 
					20H,Passac
 | 
				
			||||||
 | 
					21H,Proel Labs (SIEL)
 | 
				
			||||||
 | 
					22H,Synthaxe (UK)
 | 
				
			||||||
 | 
					23H,Stepp
 | 
				
			||||||
 | 
					24H,Hohner
 | 
				
			||||||
 | 
					25H,Twister
 | 
				
			||||||
 | 
					26H,Ketron s.r.l.
 | 
				
			||||||
 | 
					27H,Jellinghaus MS
 | 
				
			||||||
 | 
					28H,Southworth Music Systems
 | 
				
			||||||
 | 
					29H,PPG (Germany)
 | 
				
			||||||
 | 
					2AH,CESYG Ltd.
 | 
				
			||||||
 | 
					2BH,Solid State Logic Organ Systems
 | 
				
			||||||
 | 
					2CH,Audio Veritrieb-P. Struven
 | 
				
			||||||
 | 
					2DH,Neve
 | 
				
			||||||
 | 
					2EH,Soundtracs Ltd.
 | 
				
			||||||
 | 
					2FH,Elka
 | 
				
			||||||
 | 
					30H,Dynacord
 | 
				
			||||||
 | 
					31H,Viscount International Spa (Intercontinental Electronics)
 | 
				
			||||||
 | 
					32H,Drawmer
 | 
				
			||||||
 | 
					33H,Clavia Digital Instruments
 | 
				
			||||||
 | 
					34H,Audio Architecture
 | 
				
			||||||
 | 
					35H,Generalmusic Corp SpA
 | 
				
			||||||
 | 
					36H,Cheetah Marketing
 | 
				
			||||||
 | 
					37H,C.T.M.
 | 
				
			||||||
 | 
					38H,Simmons UK
 | 
				
			||||||
 | 
					39H,Soundcraft Electronics
 | 
				
			||||||
 | 
					3AH,Steinberg Media Technologies GmbH
 | 
				
			||||||
 | 
					3BH,Wersi Gmbh
 | 
				
			||||||
 | 
					3CH,AVAB Niethammer AB
 | 
				
			||||||
 | 
					3DH,Digigram
 | 
				
			||||||
 | 
					3EH,Waldorf Electronics GmbH
 | 
				
			||||||
 | 
					3FH,Quasimidi
 | 
				
			||||||
 | 
					40H to 5FH,[Assigned by AMEI for Japanese Manufacturers]
 | 
				
			||||||
 | 
					60H to 7FH,[Reserved for Other Uses]
 | 
				
			||||||
 | 
					00H 00H 01H,Time/Warner Interactive
 | 
				
			||||||
 | 
					00H 00H 02H,Advanced Gravis Comp. Tech Ltd.
 | 
				
			||||||
 | 
					00H 00H 03H,Media Vision
 | 
				
			||||||
 | 
					00H 00H 04H,Dornes Research Group
 | 
				
			||||||
 | 
					00H 00H 05H,K-Muse
 | 
				
			||||||
 | 
					00H 00H 06H,Stypher
 | 
				
			||||||
 | 
					00H 00H 07H,Digital Music Corp.
 | 
				
			||||||
 | 
					00H 00H 08H,IOTA Systems
 | 
				
			||||||
 | 
					00H 00H 09H,New England Digital
 | 
				
			||||||
 | 
					00H 00H 0AH,Artisyn
 | 
				
			||||||
 | 
					00H 00H 0BH,IVL Technologies Ltd.
 | 
				
			||||||
 | 
					00H 00H 0CH,Southern Music Systems
 | 
				
			||||||
 | 
					00H 00H 0DH,Lake Butler Sound Company
 | 
				
			||||||
 | 
					00H 00H 0EH,Alesis Studio Electronics
 | 
				
			||||||
 | 
					00H 00H 0FH,Sound Creation
 | 
				
			||||||
 | 
					00H 00H 01H,Time/Warner Interactive
 | 
				
			||||||
 | 
					00H 00H 10H,DOD Electronics Corp.
 | 
				
			||||||
 | 
					00H 00H 11H,Studer-Editech
 | 
				
			||||||
 | 
					00H 00H 12H,Sonus
 | 
				
			||||||
 | 
					00H 00H 13H,Temporal Acuity Products
 | 
				
			||||||
 | 
					00H 00H 14H,Perfect Fretworks
 | 
				
			||||||
 | 
					00H 00H 15H,KAT Inc.
 | 
				
			||||||
 | 
					00H 00H 16H,Opcode Systems
 | 
				
			||||||
 | 
					00H 00H 17H,Rane Corporation
 | 
				
			||||||
 | 
					00H 00H 18H,Anadi Electronique
 | 
				
			||||||
 | 
					00H 00H 19H,KMX
 | 
				
			||||||
 | 
					00H 00H 1AH,Allen & Heath Brenell
 | 
				
			||||||
 | 
					00H 00H 1BH,Peavey Electronics
 | 
				
			||||||
 | 
					00H 00H 1CH,360 Systems
 | 
				
			||||||
 | 
					00H 00H 1DH,Spectrum Design and Development
 | 
				
			||||||
 | 
					00H 00H 1EH,Marquis Music
 | 
				
			||||||
 | 
					00H 00H 1FH,Zeta Systems
 | 
				
			||||||
 | 
					00H 00H 20H,Axxes (Brian Parsonett)
 | 
				
			||||||
 | 
					00H 00H 21H,Orban
 | 
				
			||||||
 | 
					00H 00H 22H,Indian Valley Mfg.
 | 
				
			||||||
 | 
					00H 00H 23H,Triton
 | 
				
			||||||
 | 
					00H 00H 24H,KTI
 | 
				
			||||||
 | 
					00H 00H 25H,Breakaway Technologies
 | 
				
			||||||
 | 
					00H 00H 26H,Leprecon / CAE Inc.
 | 
				
			||||||
 | 
					00H 00H 27H,Harrison Systems Inc.
 | 
				
			||||||
 | 
					00H 00H 28H,Future Lab/Mark Kuo
 | 
				
			||||||
 | 
					00H 00H 29H,Rocktron Corporation
 | 
				
			||||||
 | 
					00H 00H 2AH,PianoDisc
 | 
				
			||||||
 | 
					00H 00H 2BH,Cannon Research Group
 | 
				
			||||||
 | 
					00H 00H 2CH,Reserved
 | 
				
			||||||
 | 
					00H 00H 2DH,Rodgers Instrument LLC
 | 
				
			||||||
 | 
					00H 00H 2EH,Blue Sky Logic
 | 
				
			||||||
 | 
					00H 00H 2FH,Encore Electronics
 | 
				
			||||||
 | 
					00H 00H 30H,Uptown
 | 
				
			||||||
 | 
					00H 00H 31H,Voce
 | 
				
			||||||
 | 
					00H 00H 32H,"CTI Audio, Inc. (Musically Intel. Devs.)"
 | 
				
			||||||
 | 
					00H 00H 33H,S3 Incorporated
 | 
				
			||||||
 | 
					00H 00H 34H,Broderbund / Red Orb
 | 
				
			||||||
 | 
					00H 00H 35H,Allen Organ Co.
 | 
				
			||||||
 | 
					00H 00H 36H,Reserved
 | 
				
			||||||
 | 
					00H 00H 37H,Music Quest
 | 
				
			||||||
 | 
					00H 00H 38H,Aphex
 | 
				
			||||||
 | 
					00H 00H 39H,Gallien Krueger
 | 
				
			||||||
 | 
					00H 00H 3AH,IBM
 | 
				
			||||||
 | 
					00H 00H 3BH,Mark Of The Unicorn
 | 
				
			||||||
 | 
					00H 00H 3CH,Hotz Corporation
 | 
				
			||||||
 | 
					00H 00H 3DH,ETA Lighting
 | 
				
			||||||
 | 
					00H 00H 3EH,NSI Corporation
 | 
				
			||||||
 | 
					00H 00H 3FH,"Ad Lib, Inc."
 | 
				
			||||||
 | 
					00H 00H 40H,Richmond Sound Design
 | 
				
			||||||
 | 
					00H 00H 41H,Microsoft
 | 
				
			||||||
 | 
					00H 00H 42H,Mindscape (Software Toolworks)
 | 
				
			||||||
 | 
					00H 00H 43H,Russ Jones Marketing / Niche
 | 
				
			||||||
 | 
					00H 00H 44H,Intone
 | 
				
			||||||
 | 
					00H 00H 45H,Advanced Remote Technologies
 | 
				
			||||||
 | 
					00H 00H 46H,White Instruments
 | 
				
			||||||
 | 
					00H 00H 47H,GT Electronics/Groove Tubes
 | 
				
			||||||
 | 
					00H 00H 48H,Pacific Research & Engineering
 | 
				
			||||||
 | 
					00H 00H 49H,"Timeline Vista, Inc."
 | 
				
			||||||
 | 
					00H 00H 4AH,Mesa Boogie Ltd.
 | 
				
			||||||
 | 
					00H 00H 4BH,FSLI
 | 
				
			||||||
 | 
					00H 00H 4CH,Sequoia Development Group
 | 
				
			||||||
 | 
					00H 00H 4DH,Studio Electronics
 | 
				
			||||||
 | 
					00H 00H 4EH,"Euphonix, Inc"
 | 
				
			||||||
 | 
					00H 00H 4FH,"InterMIDI, Inc."
 | 
				
			||||||
 | 
					00H 00H 50H,MIDI Solutions Inc.
 | 
				
			||||||
 | 
					00H 00H 51H,3DO Company
 | 
				
			||||||
 | 
					00H 00H 52H,Lightwave Research / High End Systems
 | 
				
			||||||
 | 
					00H 00H 53H,Micro-W Corporation
 | 
				
			||||||
 | 
					00H 00H 54H,"Spectral Synthesis, Inc."
 | 
				
			||||||
 | 
					00H 00H 55H,Lone Wolf
 | 
				
			||||||
 | 
					00H 00H 56H,Studio Technologies Inc.
 | 
				
			||||||
 | 
					00H 00H 57H,"Peterson Electro-Musical Product, Inc."
 | 
				
			||||||
 | 
					00H 00H 58H,Atari Corporation
 | 
				
			||||||
 | 
					00H 00H 59H,Marion Systems Corporation
 | 
				
			||||||
 | 
					00H 00H 5AH,Design Event
 | 
				
			||||||
 | 
					00H 00H 5BH,Winjammer Software Ltd.
 | 
				
			||||||
 | 
					00H 00H 5CH,AT&T Bell Laboratories
 | 
				
			||||||
 | 
					00H 00H 5DH,Reserved
 | 
				
			||||||
 | 
					00H 00H 5EH,Symetrix
 | 
				
			||||||
 | 
					00H 00H 5FH,MIDI the World
 | 
				
			||||||
 | 
					00H 00H 60H,Spatializer
 | 
				
			||||||
 | 
					00H 00H 61H,Micros <20>eN MIDI
 | 
				
			||||||
 | 
					00H 00H 62H,Accordians International
 | 
				
			||||||
 | 
					00H 00H 63H,EuPhonics (now 3Com)
 | 
				
			||||||
 | 
					00H 00H 64H,Musonix
 | 
				
			||||||
 | 
					00H 00H 65H,Turtle Beach Systems (Voyetra)
 | 
				
			||||||
 | 
					00H 00H 66H,Loud Technologies / Mackie
 | 
				
			||||||
 | 
					00H 00H 67H,Compuserve
 | 
				
			||||||
 | 
					00H 00H 68H,BEC Technologies
 | 
				
			||||||
 | 
					00H 00H 69H,QRS Music Inc
 | 
				
			||||||
 | 
					00H 00H 6AH,P.G. Music
 | 
				
			||||||
 | 
					00H 00H 6BH,Sierra Semiconductor
 | 
				
			||||||
 | 
					00H 00H 6CH,EpiGraf
 | 
				
			||||||
 | 
					00H 00H 6DH,Electronics Diversified Inc
 | 
				
			||||||
 | 
					00H 00H 6EH,Tune 1000
 | 
				
			||||||
 | 
					00H 00H 6FH,Advanced Micro Devices
 | 
				
			||||||
 | 
					00H 00H 70H,Mediamation
 | 
				
			||||||
 | 
					00H 00H 71H,Sabine Musical Mfg. Co. Inc.
 | 
				
			||||||
 | 
					00H 00H 72H,Woog Labs
 | 
				
			||||||
 | 
					00H 00H 73H,Micropolis Corp
 | 
				
			||||||
 | 
					00H 00H 74H,Ta Horng Musical Instrument
 | 
				
			||||||
 | 
					00H 00H 75H,e-Tek Labs (Forte Tech)
 | 
				
			||||||
 | 
					00H 00H 76H,Electro-Voice
 | 
				
			||||||
 | 
					00H 00H 77H,Midisoft Corporation
 | 
				
			||||||
 | 
					00H 00H 78H,QSound Labs
 | 
				
			||||||
 | 
					00H 00H 79H,Westrex
 | 
				
			||||||
 | 
					00H 00H 7AH,Nvidia
 | 
				
			||||||
 | 
					00H 00H 7BH,ESS Technology
 | 
				
			||||||
 | 
					00H 00H 7CH,Media Trix Peripherals
 | 
				
			||||||
 | 
					00H 00H 7DH,Brooktree Corp
 | 
				
			||||||
 | 
					00H 00H 7EH,Otari Corp
 | 
				
			||||||
 | 
					00H 00H 7FH,"Key Electronics, Inc."
 | 
				
			||||||
 | 
					00H 01H 00H,Shure Incorporated
 | 
				
			||||||
 | 
					00H 01H 01H,AuraSound
 | 
				
			||||||
 | 
					00H 01H 02H,Crystal Semiconductor
 | 
				
			||||||
 | 
					00H 01H 03H,Conexant (Rockwell)
 | 
				
			||||||
 | 
					00H 01H 04H,Silicon Graphics
 | 
				
			||||||
 | 
					00H 01H 05H,M-Audio (Midiman)
 | 
				
			||||||
 | 
					00H 01H 06H,PreSonus
 | 
				
			||||||
 | 
					00H 01H 08H,Topaz Enterprises
 | 
				
			||||||
 | 
					00H 01H 09H,Cast Lighting
 | 
				
			||||||
 | 
					00H 01H 0AH,Microsoft Consumer Division
 | 
				
			||||||
 | 
					00H 01H 0BH,Sonic Foundry
 | 
				
			||||||
 | 
					00H 01H 0CH,Line 6 (Fast Forward)?(Yamaha)
 | 
				
			||||||
 | 
					00H 01H 0DH,Beatnik Inc
 | 
				
			||||||
 | 
					00H 01H 0EH,Van Koevering Company
 | 
				
			||||||
 | 
					00H 01H 0FH,Altech Systems
 | 
				
			||||||
 | 
					00H 01H 10H,S & S Research
 | 
				
			||||||
 | 
					00H 01H 11H,VLSI Technology
 | 
				
			||||||
 | 
					00H 01H 12H,Chromatic Research
 | 
				
			||||||
 | 
					00H 01H 13H,Sapphire
 | 
				
			||||||
 | 
					00H 01H 14H,IDRC
 | 
				
			||||||
 | 
					00H 01H 15H,Justonic Tuning
 | 
				
			||||||
 | 
					00H 01H 16H,TorComp Research Inc.
 | 
				
			||||||
 | 
					00H 01H 17H,Newtek Inc.
 | 
				
			||||||
 | 
					00H 01H 18H,Sound Sculpture
 | 
				
			||||||
 | 
					00H 01H 19H,Walker Technical
 | 
				
			||||||
 | 
					00H 01H 1AH,Digital Harmony (PAVO)
 | 
				
			||||||
 | 
					00H 01H 1BH,InVision Interactive
 | 
				
			||||||
 | 
					00H 01H 1CH,T-Square Design
 | 
				
			||||||
 | 
					00H 01H 1DH,Nemesys Music Technology
 | 
				
			||||||
 | 
					00H 01H 1EH,DBX Professional (Harman Intl)
 | 
				
			||||||
 | 
					00H 01H 1FH,Syndyne Corporation
 | 
				
			||||||
 | 
					00H 01H 20H,Bitheadz
 | 
				
			||||||
 | 
					00H 01H 21H,BandLab Technologies
 | 
				
			||||||
 | 
					00H 01H 22H,Analog Devices
 | 
				
			||||||
 | 
					00H 01H 23H,National Semiconductor
 | 
				
			||||||
 | 
					00H 01H 24H,Boom Theory / Adinolfi Alternative Percussion
 | 
				
			||||||
 | 
					00H 01H 25H,Virtual DSP Corporation
 | 
				
			||||||
 | 
					00H 01H 26H,Antares Systems
 | 
				
			||||||
 | 
					00H 01H 27H,Angel Software
 | 
				
			||||||
 | 
					00H 01H 28H,St Louis Music
 | 
				
			||||||
 | 
					00H 01H 29H,Passport Music Software LLC (Gvox)
 | 
				
			||||||
 | 
					00H 01H 2AH,Ashley Audio Inc.
 | 
				
			||||||
 | 
					00H 01H 2BH,Vari-Lite Inc.
 | 
				
			||||||
 | 
					00H 01H 2CH,Summit Audio Inc.
 | 
				
			||||||
 | 
					00H 01H 2DH,Aureal Semiconductor Inc.
 | 
				
			||||||
 | 
					00H 01H 2EH,SeaSound LLC
 | 
				
			||||||
 | 
					00H 01H 2FH,U.S. Robotics
 | 
				
			||||||
 | 
					00H 01H 30H,Aurisis Research
 | 
				
			||||||
 | 
					00H 01H 31H,Nearfield Research
 | 
				
			||||||
 | 
					00H 01H 32H,FM7 Inc
 | 
				
			||||||
 | 
					00H 01H 33H,Swivel Systems
 | 
				
			||||||
 | 
					00H 01H 34H,Hyperactive Audio Systems
 | 
				
			||||||
 | 
					00H 01H 35H,MidiLite (Castle Studios Productions)
 | 
				
			||||||
 | 
					00H 01H 36H,Radikal Technologies
 | 
				
			||||||
 | 
					00H 01H 37H,Roger Linn Design
 | 
				
			||||||
 | 
					00H 01H 38H,TC-Helicon Vocal Technologies
 | 
				
			||||||
 | 
					00H 01H 39H,Event Electronics
 | 
				
			||||||
 | 
					00H 01H 3AH,Sonic Network Inc
 | 
				
			||||||
 | 
					00H 01H 3BH,Realtime Music Solutions
 | 
				
			||||||
 | 
					00H 01H 3CH,Apogee Digital
 | 
				
			||||||
 | 
					00H 01H 3DH,"Classical Organs, Inc."
 | 
				
			||||||
 | 
					00H 01H 3EH,Microtools Inc.
 | 
				
			||||||
 | 
					00H 01H 3FH,Numark Industries
 | 
				
			||||||
 | 
					00H 01H 40H,"Frontier Design Group, LLC"
 | 
				
			||||||
 | 
					00H 01H 41H,Recordare LLC
 | 
				
			||||||
 | 
					00H 01H 42H,Starr Labs
 | 
				
			||||||
 | 
					00H 01H 43H,Voyager Sound Inc.
 | 
				
			||||||
 | 
					00H 01H 44H,Manifold Labs
 | 
				
			||||||
 | 
					00H 01H 45H,Aviom Inc.
 | 
				
			||||||
 | 
					00H 01H 46H,Mixmeister Technology
 | 
				
			||||||
 | 
					00H 01H 47H,Notation Software
 | 
				
			||||||
 | 
					00H 01H 48H,Mercurial Communications
 | 
				
			||||||
 | 
					00H 01H 49H,Wave Arts
 | 
				
			||||||
 | 
					00H 01H 4AH,Logic Sequencing Devices
 | 
				
			||||||
 | 
					00H 01H 4BH,Axess Electronics
 | 
				
			||||||
 | 
					00H 01H 4CH,Muse Research
 | 
				
			||||||
 | 
					00H 01H 4DH,Open Labs
 | 
				
			||||||
 | 
					00H 01H 4EH,Guillemot Corp
 | 
				
			||||||
 | 
					00H 01H 4FH,Samson Technologies
 | 
				
			||||||
 | 
					00H 01H 50H,Electronic Theatre Controls
 | 
				
			||||||
 | 
					00H 01H 51H,Blackberry (RIM)
 | 
				
			||||||
 | 
					00H 01H 52H,Mobileer
 | 
				
			||||||
 | 
					00H 01H 53H,Synthogy
 | 
				
			||||||
 | 
					00H 01H 54H,Lynx Studio Technology Inc.
 | 
				
			||||||
 | 
					00H 01H 55H,Damage Control Engineering LLC
 | 
				
			||||||
 | 
					00H 01H 56H,"Yost Engineering, Inc."
 | 
				
			||||||
 | 
					00H 01H 57H,Brooks & Forsman Designs LLC / DrumLite
 | 
				
			||||||
 | 
					00H 01H 58H,Infinite Response
 | 
				
			||||||
 | 
					00H 01H 59H,Garritan Corp
 | 
				
			||||||
 | 
					00H 01H 5AH,"Plogue Art et Technologie, Inc"
 | 
				
			||||||
 | 
					00H 01H 5BH,RJM Music Technology
 | 
				
			||||||
 | 
					00H 01H 5CH,Custom Solutions Software
 | 
				
			||||||
 | 
					00H 01H 5DH,Sonarcana LLC / Highly Liquid
 | 
				
			||||||
 | 
					00H 01H 5EH,Centrance
 | 
				
			||||||
 | 
					00H 01H 5FH,Kesumo LLC
 | 
				
			||||||
 | 
					00H 01H 60H,Stanton (Gibson Brands)
 | 
				
			||||||
 | 
					00H 01H 61H,Livid Instruments
 | 
				
			||||||
 | 
					00H 01H 62H,First Act / 745 Media
 | 
				
			||||||
 | 
					00H 01H 63H,"Pygraphics, Inc."
 | 
				
			||||||
 | 
					00H 01H 64H,Panadigm Innovations Ltd
 | 
				
			||||||
 | 
					00H 01H 65H,Avedis Zildjian Co
 | 
				
			||||||
 | 
					00H 01H 66H,Auvital Music Corp
 | 
				
			||||||
 | 
					00H 01H 67H,You Rock Guitar (was: Inspired Instruments)
 | 
				
			||||||
 | 
					00H 01H 68H,Chris Grigg Designs
 | 
				
			||||||
 | 
					00H 01H 69H,Slate Digital LLC
 | 
				
			||||||
 | 
					00H 01H 6AH,Mixware
 | 
				
			||||||
 | 
					00H 01H 6BH,Social Entropy
 | 
				
			||||||
 | 
					00H 01H 6CH,Source Audio LLC
 | 
				
			||||||
 | 
					00H 01H 6DH,Ernie Ball / Music Man
 | 
				
			||||||
 | 
					00H 01H 6EH,Fishman
 | 
				
			||||||
 | 
					00H 01H 6FH,Custom Audio Electronics
 | 
				
			||||||
 | 
					00H 01H 70H,American Audio/DJ
 | 
				
			||||||
 | 
					00H 01H 71H,Mega Control Systems
 | 
				
			||||||
 | 
					00H 01H 72H,Kilpatrick Audio
 | 
				
			||||||
 | 
					00H 01H 73H,iConnectivity
 | 
				
			||||||
 | 
					00H 01H 74H,Fractal Audio
 | 
				
			||||||
 | 
					00H 01H 75H,NetLogic Microsystems
 | 
				
			||||||
 | 
					00H 01H 76H,Music Computing
 | 
				
			||||||
 | 
					00H 01H 77H,Nektar Technology Inc
 | 
				
			||||||
 | 
					00H 01H 78H,Zenph Sound Innovations
 | 
				
			||||||
 | 
					00H 01H 79H,DJTechTools.com
 | 
				
			||||||
 | 
					00H 01H 7AH,Rezonance Labs
 | 
				
			||||||
 | 
					00H 01H 7BH,Decibel Eleven
 | 
				
			||||||
 | 
					00H 01H 7CH,CNMAT
 | 
				
			||||||
 | 
					00H 01H 7DH,Media Overkill
 | 
				
			||||||
 | 
					00H 01H 7EH,Confusion Studios
 | 
				
			||||||
 | 
					00H 01H 7FH,moForte Inc
 | 
				
			||||||
 | 
					00H 02H 00H,Miselu Inc
 | 
				
			||||||
 | 
					00H 02H 01H,Amelia<69>fs Compass LLC
 | 
				
			||||||
 | 
					00H 02H 02H,Zivix LLC
 | 
				
			||||||
 | 
					00H 02H 03H,Artiphon
 | 
				
			||||||
 | 
					00H 02H 04H,Synclavier Digital
 | 
				
			||||||
 | 
					00H 02H 05H,Light & Sound Control Devices LLC
 | 
				
			||||||
 | 
					00H 02H 06H,Retronyms Inc
 | 
				
			||||||
 | 
					00H 02H 07H,JS Technologies
 | 
				
			||||||
 | 
					00H 02H 08H,Quicco Sound
 | 
				
			||||||
 | 
					00H 02H 09H,A-Designs Audio
 | 
				
			||||||
 | 
					00H 02H 0AH,McCarthy Music Corp
 | 
				
			||||||
 | 
					00H 02H 0BH,Denon DJ
 | 
				
			||||||
 | 
					00H 02H 0CH,Keith Robert Murray
 | 
				
			||||||
 | 
					00H 02H 0DH,Google
 | 
				
			||||||
 | 
					00H 02H 0EH,ISP Technologies
 | 
				
			||||||
 | 
					00H 02H 0FH,Abstrakt Instruments LLC
 | 
				
			||||||
 | 
					00H 02H 10H,Meris LLC
 | 
				
			||||||
 | 
					00H 02H 11H,Sensorpoint LLC
 | 
				
			||||||
 | 
					00H 02H 12H,Hi-Z Labs
 | 
				
			||||||
 | 
					00H 02H 13H,Imitone
 | 
				
			||||||
 | 
					00H 02H 14H,Intellijel Designs Inc.
 | 
				
			||||||
 | 
					00H 02H 15H,Dasz Instruments Inc.
 | 
				
			||||||
 | 
					00H 02H 16H,Remidi
 | 
				
			||||||
 | 
					00H 02H 17H,Disaster Area Designs LLC
 | 
				
			||||||
 | 
					00H 02H 18H,Universal Audio
 | 
				
			||||||
 | 
					00H 02H 19H,Carter Duncan Corp
 | 
				
			||||||
 | 
					00H 02H 1AH,Essential Technology
 | 
				
			||||||
 | 
					00H 02H 1BH,Cantux Research LLC
 | 
				
			||||||
 | 
					00H 02H 1CH,Hummel Technologies
 | 
				
			||||||
 | 
					00H 02H 1DH,Sensel Inc
 | 
				
			||||||
 | 
					00H 02H 1EH,DBML Group
 | 
				
			||||||
 | 
					00H 02H 1FH,Madrona Labs
 | 
				
			||||||
 | 
					00H 02H 20H,Mesa Boogie
 | 
				
			||||||
 | 
					00H 02H 21H,Effigy Labs
 | 
				
			||||||
 | 
					00H 02H 22H,Amenote
 | 
				
			||||||
 | 
					00H 02H 23H,Red Panda LLC
 | 
				
			||||||
 | 
					00H 02H 24H,OnSong LLC
 | 
				
			||||||
 | 
					00H 02H 25H,Jamboxx Inc.
 | 
				
			||||||
 | 
					00H 02H 26H,Electro-Harmonix?
 | 
				
			||||||
 | 
					00H 02H 27H,RnD64 Inc
 | 
				
			||||||
 | 
					00H 02H 28H?,Neunaber Technology LLC?
 | 
				
			||||||
 | 
					00H 02H 29H,Kaom Inc.
 | 
				
			||||||
 | 
					00H 02H 2AH,Hallowell EMC
 | 
				
			||||||
 | 
					00H 02H 2BH,"Sound Devices, LLC"
 | 
				
			||||||
 | 
					00H 02H 2CH,"Spectrasonics, Inc"
 | 
				
			||||||
 | 
					00H 02H 2DH,"Second Sound, LLC"
 | 
				
			||||||
 | 
					00H 02H 2EH,8eo (Horn)
 | 
				
			||||||
 | 
					00H 02H 2FH,VIDVOX LLC
 | 
				
			||||||
 | 
					00H 02H 30H,Matthews Effects
 | 
				
			||||||
 | 
					00H 02H 31H,Bright Blue Beetle
 | 
				
			||||||
 | 
					00H 02H 32H,Audio Impressions
 | 
				
			||||||
 | 
					00H 02H 33H,?Looperlative
 | 
				
			||||||
 | 
					00H 02H 34H?,Steinway
 | 
				
			||||||
 | 
					00H 02H 35H,Ingenious Arts and Technologies LLC
 | 
				
			||||||
 | 
					00H 02H 36H,DCA Audio
 | 
				
			||||||
 | 
					00H 02H 37H,Buchla USA
 | 
				
			||||||
 | 
					00H 02H 38H,Sinicon
 | 
				
			||||||
 | 
					00H 02H 39H,Isla Instruments
 | 
				
			||||||
 | 
					00H 02H 3AH,Soundiron LLC
 | 
				
			||||||
 | 
					00H 02H 3BH,"Sonoclast, LLC"
 | 
				
			||||||
 | 
					00H 02H 3CH,Copper and Cedar
 | 
				
			||||||
 | 
					00H 02H 3DH,Whirled Notes
 | 
				
			||||||
 | 
					00H 02H 3EH,"Cejetvole, LLC"
 | 
				
			||||||
 | 
					00H 02H 3FH,DAWn Audio LLC
 | 
				
			||||||
 | 
					00H 02H 40H,Space Brain Circuits
 | 
				
			||||||
 | 
					00H 02H 41H,Caedence?
 | 
				
			||||||
 | 
					00H 02H 42H,"HCN Designs, LLC (The MIDI Maker)"
 | 
				
			||||||
 | 
					00H 02H 43H,PTZOptics
 | 
				
			||||||
 | 
					00H 02H 44H,Noise Engineering
 | 
				
			||||||
 | 
					00H 02H 45H,Synthesia LLC
 | 
				
			||||||
 | 
					00H 02H 46H,Jeff Whitehead Lutherie LLC
 | 
				
			||||||
 | 
					00H 02H 47H,Wampler Pedals Inc.
 | 
				
			||||||
 | 
					00H 02H 48H,Tapis Magique
 | 
				
			||||||
 | 
					00H 02H 49H,Leaf Secrets
 | 
				
			||||||
 | 
					00H 02H 4AH,Groove Synthesis
 | 
				
			||||||
 | 
					00H 02H 4BH,Audiocipher Technologies LLC
 | 
				
			||||||
 | 
					00H 02H 4CH,Mellotron Inc.
 | 
				
			||||||
 | 
					00H 02H 4DH,Hologram Electronics LLC
 | 
				
			||||||
 | 
					00H 02H 4EH,"iCON Americas, LLC"
 | 
				
			||||||
 | 
					00H 02H 4FH,Singular Sound
 | 
				
			||||||
 | 
					00H 02H 50H,Genovation Inc
 | 
				
			||||||
 | 
					00H 02H 51H,Method Red
 | 
				
			||||||
 | 
					00H 02H 52H,Brain Inventions
 | 
				
			||||||
 | 
					00H 02H 53H,Synervoz Communications Inc.
 | 
				
			||||||
 | 
					00H 02H 54H,Hypertriangle Inc
 | 
				
			||||||
 | 
					00H 20H 00H,Dream SAS
 | 
				
			||||||
 | 
					00H 20H 01H,Strand Lighting
 | 
				
			||||||
 | 
					00H 20H 02H,Amek Div of Harman Industries
 | 
				
			||||||
 | 
					00H 20H 03H,Casa Di Risparmio Di Loreto
 | 
				
			||||||
 | 
					00H 20H 04H,B?hm electronic GmbH
 | 
				
			||||||
 | 
					00H 20H 05H,Syntec Digital Audio
 | 
				
			||||||
 | 
					00H 20H 06H,Trident Audio Developments
 | 
				
			||||||
 | 
					00H 20H 07H,Real World Studio
 | 
				
			||||||
 | 
					00H 20H 08H,"Evolution Synthesis, Ltd"
 | 
				
			||||||
 | 
					00H 20H 09H,Yes Technology
 | 
				
			||||||
 | 
					00H 20H 0AH,Audiomatica
 | 
				
			||||||
 | 
					00H 20H 0BH,Bontempi SpA (Sigma)
 | 
				
			||||||
 | 
					00H 20H 0CH,F.B.T. Elettronica SpA
 | 
				
			||||||
 | 
					00H 20H 0DH,MidiTemp GmbH
 | 
				
			||||||
 | 
					00H 20H 0EH,LA Audio (Larking Audio)
 | 
				
			||||||
 | 
					00H 20H 0FH,Zero 88 Lighting Limited
 | 
				
			||||||
 | 
					00H 20H 10H,Micon Audio Electronics GmbH
 | 
				
			||||||
 | 
					00H 20H 11H,Forefront Technology
 | 
				
			||||||
 | 
					00H 20H 12H,Studio Audio and Video Ltd.
 | 
				
			||||||
 | 
					00H 20H 13H,Kenton Electronics
 | 
				
			||||||
 | 
					00H 20H 14H,Celco/ Electrosonic
 | 
				
			||||||
 | 
					00H 20H 15H,ADB
 | 
				
			||||||
 | 
					00H 20H 16H,Marshall Products Limited
 | 
				
			||||||
 | 
					00H 20H 17H,DDA
 | 
				
			||||||
 | 
					00H 20H 18H,BSS Audio Ltd.
 | 
				
			||||||
 | 
					00H 20H 19H,MA Lighting Technology
 | 
				
			||||||
 | 
					00H 20H 1AH,Fatar SRL c/o Music Industries
 | 
				
			||||||
 | 
					00H 20H 1BH,QSC Audio Products Inc.
 | 
				
			||||||
 | 
					00H 20H 1CH,Artisan Clasic Organ Inc.
 | 
				
			||||||
 | 
					00H 20H 1DH,Orla Spa
 | 
				
			||||||
 | 
					00H 20H 1EH,Pinnacle Audio (Klark Teknik PLC)
 | 
				
			||||||
 | 
					00H 20H 1FH,TC Electronics
 | 
				
			||||||
 | 
					00H 20H 20H,Doepfer Musikelektronik GmbH
 | 
				
			||||||
 | 
					00H 20H 21H,Creative ATC / E-mu
 | 
				
			||||||
 | 
					00H 20H 22H,Seyddo/Minami
 | 
				
			||||||
 | 
					00H 20H 23H,LG Electronics (Goldstar)
 | 
				
			||||||
 | 
					00H 20H 24H,Midisoft sas di M.Cima & C
 | 
				
			||||||
 | 
					00H 20H 25H,Samick Musical Inst. Co. Ltd.
 | 
				
			||||||
 | 
					00H 20H 26H,Penny and Giles (Bowthorpe PLC)
 | 
				
			||||||
 | 
					00H 20H 27H,Acorn Computer
 | 
				
			||||||
 | 
					00H 20H 28H,LSC Electronics Pty. Ltd.
 | 
				
			||||||
 | 
					00H 20H 29H,Focusrite/Novation
 | 
				
			||||||
 | 
					00H 20H 2AH,Samkyung Mechatronics
 | 
				
			||||||
 | 
					00H 20H 2BH,Medeli Electronics Co.
 | 
				
			||||||
 | 
					00H 20H 2CH,Charlie Lab SRL
 | 
				
			||||||
 | 
					00H 20H 2DH,Blue Chip Music Technology
 | 
				
			||||||
 | 
					00H 20H 2EH,BEE OH Corp
 | 
				
			||||||
 | 
					00H 20H 2FH,LG Semicon America
 | 
				
			||||||
 | 
					00H 20H 30H,TESI
 | 
				
			||||||
 | 
					00H 20H 31H,EMAGIC
 | 
				
			||||||
 | 
					00H 20H 32H,Behringer GmbH
 | 
				
			||||||
 | 
					00H 20H 33H,Access Music Electronics
 | 
				
			||||||
 | 
					00H 20H 34H,Synoptic
 | 
				
			||||||
 | 
					00H 20H 35H,Hanmesoft
 | 
				
			||||||
 | 
					00H 20H 36H,Terratec Electronic GmbH
 | 
				
			||||||
 | 
					00H 20H 37H,Proel SpA
 | 
				
			||||||
 | 
					00H 20H 38H,IBK MIDI
 | 
				
			||||||
 | 
					00H 20H 39H,IRCAM
 | 
				
			||||||
 | 
					00H 20H 3AH,Propellerhead Software
 | 
				
			||||||
 | 
					00H 20H 3BH,Red Sound Systems Ltd
 | 
				
			||||||
 | 
					00H 20H 3CH,Elektron ESI AB
 | 
				
			||||||
 | 
					00H 20H 3DH,Sintefex Audio
 | 
				
			||||||
 | 
					00H 20H 3EH,MAM (Music and More)
 | 
				
			||||||
 | 
					00H 20H 3FH,Amsaro GmbH
 | 
				
			||||||
 | 
					00H 20H 40H,CDS Advanced Technology BV (Lanbox)
 | 
				
			||||||
 | 
					00H 20H 41H,Mode Machines (Touched By Sound GmbH)
 | 
				
			||||||
 | 
					00H 20H 42H,DSP Arts
 | 
				
			||||||
 | 
					00H 20H 43H,Phil Rees Music Tech
 | 
				
			||||||
 | 
					00H 20H 44H,Stamer Musikanlagen GmbH
 | 
				
			||||||
 | 
					00H 20H 45H,Musical Muntaner S.A. dba Soundart
 | 
				
			||||||
 | 
					00H 20H 46H,C-Mexx Software
 | 
				
			||||||
 | 
					00H 20H 47H,Klavis Technologies
 | 
				
			||||||
 | 
					00H 20H 48H,Noteheads AB
 | 
				
			||||||
 | 
					00H 20H 49H,Algorithmix
 | 
				
			||||||
 | 
					00H 20H 4AH,Skrydstrup R&D
 | 
				
			||||||
 | 
					00H 20H 4BH,Professional Audio Company
 | 
				
			||||||
 | 
					00H 20H 4CH,NewWave Labs (MadWaves)
 | 
				
			||||||
 | 
					00H 20H 4DH,Vermona
 | 
				
			||||||
 | 
					00H 20H 4EH,Nokia
 | 
				
			||||||
 | 
					00H 20H 4FH,Wave Idea
 | 
				
			||||||
 | 
					00H 20H 50H,Hartmann GmbH
 | 
				
			||||||
 | 
					00H 20H 51H,Lion<6F>fs Tracs
 | 
				
			||||||
 | 
					00H 20H 52H,Analogue Systems
 | 
				
			||||||
 | 
					00H 20H 53H,Focal-JMlab
 | 
				
			||||||
 | 
					00H 20H 54H,Ringway Electronics (Chang-Zhou) Co Ltd
 | 
				
			||||||
 | 
					00H 20H 55H,Faith Technologies (Digiplug)
 | 
				
			||||||
 | 
					00H 20H 56H,Showworks
 | 
				
			||||||
 | 
					00H 20H 57H,Manikin Electronic
 | 
				
			||||||
 | 
					00H 20H 58H,1 Come Tech
 | 
				
			||||||
 | 
					00H 20H 59H,Phonic Corp
 | 
				
			||||||
 | 
					00H 20H 5AH,Dolby Australia (Lake)
 | 
				
			||||||
 | 
					00H 20H 5BH,Silansys Technologies
 | 
				
			||||||
 | 
					00H 20H 5CH,Winbond Electronics
 | 
				
			||||||
 | 
					00H 20H 5DH,Cinetix Medien und Interface GmbH
 | 
				
			||||||
 | 
					00H 20H 5EH,A&G Soluzioni Digitali
 | 
				
			||||||
 | 
					00H 20H 5FH,Sequentix GmbH
 | 
				
			||||||
 | 
					00H 20H 60H,Oram Pro Audio
 | 
				
			||||||
 | 
					00H 20H 61H,Be4 Ltd
 | 
				
			||||||
 | 
					00H 20H 62H,Infection Music
 | 
				
			||||||
 | 
					00H 20H 63H,Central Music Co. (CME)
 | 
				
			||||||
 | 
					00H 20H 64H,genoQs Machines GmbH
 | 
				
			||||||
 | 
					00H 20H 65H,Medialon
 | 
				
			||||||
 | 
					00H 20H 66H,Waves Audio Ltd
 | 
				
			||||||
 | 
					00H 20H 67H,Jerash Labs
 | 
				
			||||||
 | 
					00H 20H 68H,Da Fact
 | 
				
			||||||
 | 
					00H 20H 69H,Elby Designs
 | 
				
			||||||
 | 
					00H 20H 6AH,Spectral Audio
 | 
				
			||||||
 | 
					00H 20H 6BH,Arturia
 | 
				
			||||||
 | 
					00H 20H 6CH,Vixid
 | 
				
			||||||
 | 
					00H 20H 6DH,C-Thru Music
 | 
				
			||||||
 | 
					00H 20H 6EH,Ya Horng Electronic Co LTD
 | 
				
			||||||
 | 
					00H 20H 6FH,SM Pro Audio
 | 
				
			||||||
 | 
					00H 20H 70H,OTO Machines
 | 
				
			||||||
 | 
					00H 20H 71H,ELZAB S.A. (G LAB)
 | 
				
			||||||
 | 
					00H 20H 72H,Blackstar Amplification Ltd
 | 
				
			||||||
 | 
					00H 20H 73H,M3i Technologies GmbH
 | 
				
			||||||
 | 
					00H 20H 74H,Gemalto (from Xiring)
 | 
				
			||||||
 | 
					00H 20H 75H,Prostage SL
 | 
				
			||||||
 | 
					00H 20H 76H,Teenage Engineering
 | 
				
			||||||
 | 
					00H 20H 77H,Tobias Erichsen Consulting
 | 
				
			||||||
 | 
					00H 20H 78H,Nixer Ltd
 | 
				
			||||||
 | 
					00H 20H 79H,Hanpin Electron Co Ltd
 | 
				
			||||||
 | 
					00H 20H 7AH,<2C>gMIDI-hardware<72>h R.Sowa
 | 
				
			||||||
 | 
					00H 20H 7BH,Beyond Music Industrial Ltd
 | 
				
			||||||
 | 
					00H 20H 7CH,Kiss Box B.V.
 | 
				
			||||||
 | 
					00H 20H 7DH,Misa Digital Technologies Ltd
 | 
				
			||||||
 | 
					00H 20H 7EH,AI Musics Technology Inc
 | 
				
			||||||
 | 
					00H 20H 7FH,Serato Inc LP
 | 
				
			||||||
 | 
					00H 21H 00H,Limex
 | 
				
			||||||
 | 
					00H 21H 01H,Kyodday (Tokai)
 | 
				
			||||||
 | 
					00H 21H 02H,Mutable Instruments
 | 
				
			||||||
 | 
					00H 21H 03H,PreSonus Software Ltd
 | 
				
			||||||
 | 
					00H 21H 04H,Ingenico (was Xiring)
 | 
				
			||||||
 | 
					00H 21H 05H,Fairlight Instruments Pty Ltd
 | 
				
			||||||
 | 
					00H 21H 06H,Musicom Lab
 | 
				
			||||||
 | 
					00H 21H 07H,Modal Electronics (Modulus/VacoLoco)
 | 
				
			||||||
 | 
					00H 21H 08H,RWA (Hong Kong) Limited
 | 
				
			||||||
 | 
					00H 21H 09H,Native Instruments
 | 
				
			||||||
 | 
					00H 21H 0AH,Naonext
 | 
				
			||||||
 | 
					00H 21H 0BH,MFB
 | 
				
			||||||
 | 
					00H 21H 0CH,Teknel Research
 | 
				
			||||||
 | 
					00H 21H 0DH,Ploytec GmbH
 | 
				
			||||||
 | 
					00H 21H 0EH,Surfin Kangaroo Studio
 | 
				
			||||||
 | 
					00H 21H 0FH,Philips Electronics HK Ltd
 | 
				
			||||||
 | 
					00H 21H 10H,ROLI Ltd
 | 
				
			||||||
 | 
					00H 21H 11H,Panda-Audio Ltd
 | 
				
			||||||
 | 
					00H 21H 12H,BauM Software
 | 
				
			||||||
 | 
					00H 21H 13H,Machinewerks Ltd.
 | 
				
			||||||
 | 
					00H 21H 14H,Xiamen Elane Electronics
 | 
				
			||||||
 | 
					00H 21H 15H,Marshall Amplification PLC
 | 
				
			||||||
 | 
					00H 21H 16H,Kiwitechnics Ltd
 | 
				
			||||||
 | 
					00H 21H 17H,Rob Papen
 | 
				
			||||||
 | 
					00H 21H 18H,Spicetone OU
 | 
				
			||||||
 | 
					00H 21H 19H,V3Sound
 | 
				
			||||||
 | 
					00H 21H 1AH,IK Multimedia
 | 
				
			||||||
 | 
					00H 21H 1BH,Novalia Ltd
 | 
				
			||||||
 | 
					00H 21H 1CH,Modor Music
 | 
				
			||||||
 | 
					00H 21H 1DH,Ableton
 | 
				
			||||||
 | 
					00H 21H 1EH,Dtronics
 | 
				
			||||||
 | 
					00H 21H 1FH,ZAQ Audio
 | 
				
			||||||
 | 
					00H 21H 20H,Muabaobao Education Technology Co Ltd
 | 
				
			||||||
 | 
					00H 21H 21H,Flux Effects
 | 
				
			||||||
 | 
					00H 21H 22H,Audiothingies (MCDA)
 | 
				
			||||||
 | 
					00H 21H 23H,Retrokits
 | 
				
			||||||
 | 
					00H 21H 24H,Morningstar FX Pte Ltd
 | 
				
			||||||
 | 
					00H 21H 25H,Changsha Hotone Audio Co Ltd
 | 
				
			||||||
 | 
					00H 21H 26H,Expressive E
 | 
				
			||||||
 | 
					00H 21H 27H,Expert Sleepers Ltd
 | 
				
			||||||
 | 
					00H 21H 28H,Timecode-Vision Technology
 | 
				
			||||||
 | 
					00H 21H 29H,Hornberg Research GbR
 | 
				
			||||||
 | 
					00H 21H 2AH,Sonic Potions
 | 
				
			||||||
 | 
					00H 21H 2BH,Audiofront
 | 
				
			||||||
 | 
					00H 21H 2CH,Fred<65>fs Lab
 | 
				
			||||||
 | 
					00H 21H 2DH,Audio Modeling
 | 
				
			||||||
 | 
					00H 21H 2EH,C. Bechstein Digital GmbH
 | 
				
			||||||
 | 
					00H 21H 2FH,Motas Electronics Ltd
 | 
				
			||||||
 | 
					00H 21H 30H,Elk Audio
 | 
				
			||||||
 | 
					00H 21H 31H,Sonic Academy Ltd
 | 
				
			||||||
 | 
					00H 21H 32H,Bome Software
 | 
				
			||||||
 | 
					00H 21H 33H,AODYO SAS
 | 
				
			||||||
 | 
					00H 21H 34H,Pianoforce S.R.O
 | 
				
			||||||
 | 
					00H 21H 35H,Dreadbox P.C.
 | 
				
			||||||
 | 
					00H 21H 36H,TouchKeys Instruments Ltd
 | 
				
			||||||
 | 
					00H 21H 37H,The Gigrig Ltd
 | 
				
			||||||
 | 
					00H 21H 38H,ALM Co
 | 
				
			||||||
 | 
					00H 21H 39H,CH Sound Design
 | 
				
			||||||
 | 
					00H 21H 3AH,Beat Bars
 | 
				
			||||||
 | 
					00H 21H 3BH,Blokas
 | 
				
			||||||
 | 
					00H 21H 3CH,GEWA Music GmbH
 | 
				
			||||||
 | 
					00H 21H 3DH,dadamachines
 | 
				
			||||||
 | 
					00H 21H 3EH,Augmented Instruments Ltd (Bela)
 | 
				
			||||||
 | 
					00H 21H 3FH,Supercritical Ltd
 | 
				
			||||||
 | 
					00H 21H 40H,Genki Instruments
 | 
				
			||||||
 | 
					00H 21H 41H,Marienberg Devices Germany
 | 
				
			||||||
 | 
					00H 21H 42H,Supperware Ltd
 | 
				
			||||||
 | 
					00H 21H 43H,Imoxplus BVBA?
 | 
				
			||||||
 | 
					00H 21H 44H,Swapp Technologies SRL
 | 
				
			||||||
 | 
					00H 21H 45H,Electra One S.R.O.
 | 
				
			||||||
 | 
					00H 21H 46H,Digital Clef Limited
 | 
				
			||||||
 | 
					00H 21H 47H,Paul Whittington Group Ltd
 | 
				
			||||||
 | 
					00H 21H 48H,Music Hackspace
 | 
				
			||||||
 | 
					00H 21H 49H,Bitwig GMBH
 | 
				
			||||||
 | 
					00H 21H 4AH,Enhancia
 | 
				
			||||||
 | 
					00H 21H 4BH,KV 331
 | 
				
			||||||
 | 
					00H 21H 4CH,Tehnicadelarte
 | 
				
			||||||
 | 
					00H 21H 4DH,Endlesss Studio
 | 
				
			||||||
 | 
					00H 21H 4EH,"Dongguan MIDIPLUS Co., LTD"
 | 
				
			||||||
 | 
					00H 21H 4FH,Gracely Pty Ltd.
 | 
				
			||||||
 | 
					00H 21H 50H,Embodme
 | 
				
			||||||
 | 
					00H 21H 51H,MuseScore
 | 
				
			||||||
 | 
					00H 21H 52H,EPFL (E-Lab)
 | 
				
			||||||
 | 
					00H 21H 53H?,Orb3 Ltd.
 | 
				
			||||||
 | 
					00H 21H 54H,Pitch Innovations
 | 
				
			||||||
 | 
					00H 21H 55H,Playces?
 | 
				
			||||||
 | 
					00H 21H 56H,UDO Audio LTD
 | 
				
			||||||
 | 
					00H 21H 57H,RSS Sound Design
 | 
				
			||||||
 | 
					00H 21H 58H,Nonlinear Labs GmbH
 | 
				
			||||||
 | 
					00H 21H 59H,"Robkoo Information & Technologies Co., Ltd."
 | 
				
			||||||
 | 
					00H 21H 5AH,Cari Electronic
 | 
				
			||||||
 | 
					00H 21H 5BH,Oxi Electronic Instruments SL
 | 
				
			||||||
 | 
					00H 21H 5CH,XMPT
 | 
				
			||||||
 | 
					00H 21H 5DH,SHANGHAI HUAXIN MUSICAL INSTRUMENT?
 | 
				
			||||||
 | 
					00H 21H 5EH,"Shenzhen Huashi Technology Co., Ltd"
 | 
				
			||||||
 | 
					00H 21H 60H,"Guangzhou Rantion Technology Co., Ltd.?"
 | 
				
			||||||
 | 
					00H 21H 61H,Ryme Music
 | 
				
			||||||
 | 
					00H 21H 62H,GS Music
 | 
				
			||||||
 | 
					00H 21H 63H,"Shenzhen Flamma Innovation Co., Ltd"
 | 
				
			||||||
 | 
					?00H 21H 64H,"Shenzhen Mooer Audio Co.,LTD.?"
 | 
				
			||||||
 | 
					?00H 21H 65H,Raw Material Software Limited (JUCE)
 | 
				
			||||||
 | 
					?00H 21H 66H,Birdkids
 | 
				
			||||||
 | 
					?00H 21H 67H,Beijing QianYinHuLian Tech. Co
 | 
				
			||||||
 | 
					?00H 21H 68H,Nimikry Music OG
 | 
				
			||||||
 | 
					00H 21H 69H,Newzik
 | 
				
			||||||
 | 
					00H 21H 6AH,Hamburg Wave
 | 
				
			||||||
 | 
					00H 21H 6BH,Grimm Audio
 | 
				
			||||||
 | 
					00H 21H 6CH,Arcana Instruments LTD.
 | 
				
			||||||
 | 
					00H 21H 6DH,GameChanger Audio
 | 
				
			||||||
 | 
					00H 21H 6EH,OakTone
 | 
				
			||||||
 | 
					00H 21H 6FH,The Digi-Gurdy: A MIDI Hurdy Gurdy
 | 
				
			||||||
 | 
					00H 21H 70H,MusiKraken
 | 
				
			||||||
 | 
					00H 21H 71H,PhotoSynth > InterFACE
 | 
				
			||||||
 | 
					00H 21H 72H,Instruments of Things
 | 
				
			||||||
 | 
					00H 21H 73H,oodi
 | 
				
			||||||
 | 
					00H 21H 74H,Komires Sp. z o.o.
 | 
				
			||||||
 | 
					00H 21H 75H,Lehle GmbH
 | 
				
			||||||
 | 
					00H 21H 76H,Jou? Music Instruments
 | 
				
			||||||
 | 
					00H 21H 77H,Guangzhou Pearl River Amason Digital Musical Instrument Co. Ltd
 | 
				
			||||||
 | 
					00H 21H 78H,Rhesus Engineering GmbH
 | 
				
			||||||
 | 
					40H,Kawai Musical Instruments MFG. CO. Ltd
 | 
				
			||||||
 | 
					41H,Roland Corporation
 | 
				
			||||||
 | 
					42H,Korg Inc.
 | 
				
			||||||
 | 
					43H,Yamaha Corporation
 | 
				
			||||||
 | 
					44H,Casio Computer Co. Ltd
 | 
				
			||||||
 | 
					46H,Kamiya Studio Co. Ltd
 | 
				
			||||||
 | 
					47H,Akai Electric Co. Ltd.
 | 
				
			||||||
 | 
					48H,"Victor Company of Japan, Ltd."
 | 
				
			||||||
 | 
					4BH,Fujitsu Limited
 | 
				
			||||||
 | 
					4CH,Sony Corporation
 | 
				
			||||||
 | 
					4EH,Teac Corporation
 | 
				
			||||||
 | 
					50H,"Matsushita Electric Industrial Co. , Ltd"
 | 
				
			||||||
 | 
					51H,Fostex Corporation
 | 
				
			||||||
 | 
					52H,Zoom Corporation
 | 
				
			||||||
 | 
					54H,"Matsushita Communication Industrial Co., Ltd."
 | 
				
			||||||
 | 
					55H,"Suzuki Musical Instruments MFG. Co., Ltd."
 | 
				
			||||||
 | 
					56H,Fuji Sound Corporation Ltd.
 | 
				
			||||||
 | 
					57H,"Acoustic Technical Laboratory, Inc."
 | 
				
			||||||
 | 
					59H,"Faith, Inc."
 | 
				
			||||||
 | 
					5AH,Internet Corporation
 | 
				
			||||||
 | 
					5CH,Seekers Co. Ltd.
 | 
				
			||||||
 | 
					5FH,SD Card Association
 | 
				
			||||||
 | 
					00H 40H 00H,Crimson Technology Inc.
 | 
				
			||||||
 | 
					00H 40H 01H,Softbank Mobile Corp
 | 
				
			||||||
 | 
					00H 40H 03H,D&M Holdings Inc.
 | 
				
			||||||
 | 
					00H 40H 04H,Xing Inc.
 | 
				
			||||||
 | 
					00H 40H 05H,AlphaTheta Corporation
 | 
				
			||||||
 | 
					00H 40H 06H,Pioneer?Corporation
 | 
				
			||||||
 | 
					00H 40H 07H,Slik?Corporation
 | 
				
			||||||
		
		
			
  | 
| 
						 | 
					@ -7,16 +7,19 @@ import java.io.FileNotFoundException;
 | 
				
			||||||
import java.io.FileOutputStream;
 | 
					import java.io.FileOutputStream;
 | 
				
			||||||
import java.io.FilenameFilter;
 | 
					import java.io.FilenameFilter;
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
import java.io.InputStreamReader;
 | 
					import java.io.InputStreamReader;
 | 
				
			||||||
import java.io.RandomAccessFile;
 | 
					import java.io.RandomAccessFile;
 | 
				
			||||||
 | 
					import java.io.Reader;
 | 
				
			||||||
import java.net.URISyntaxException;
 | 
					import java.net.URISyntaxException;
 | 
				
			||||||
import java.nio.file.Files;
 | 
					import java.nio.file.Files;
 | 
				
			||||||
import java.nio.file.Path;
 | 
					 | 
				
			||||||
import java.util.LinkedHashMap;
 | 
					import java.util.LinkedHashMap;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javaFlacEncoder.FLAC_FileEncoder;
 | 
					import javaFlacEncoder.FLAC_FileEncoder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.commons.csv.CSVFormat;
 | 
				
			||||||
 | 
					import org.apache.commons.csv.CSVRecord;
 | 
				
			||||||
import org.apache.commons.io.FilenameUtils;
 | 
					import org.apache.commons.io.FilenameUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.diogonunes.jcolor.Ansi;
 | 
					import com.diogonunes.jcolor.Ansi;
 | 
				
			||||||
| 
						 | 
					@ -33,7 +36,7 @@ public class AudioExtractor {
 | 
				
			||||||
	 * Activate alternate behavior for command line terminal.
 | 
						 * Activate alternate behavior for command line terminal.
 | 
				
			||||||
	 * Specifically prints things in a narrower width, and overwrites previous lines to add color.
 | 
						 * Specifically prints things in a narrower width, and overwrites previous lines to add color.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	private final static boolean CMD_MODE = false;
 | 
						private final static boolean CMD_MODE = true;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * ANSI code to go up one line, followed by a carriage return.
 | 
						 * ANSI code to go up one line, followed by a carriage return.
 | 
				
			||||||
| 
						 | 
					@ -81,6 +84,11 @@ public class AudioExtractor {
 | 
				
			||||||
	 * Indicates the start of an XMA stream chunk in WAV files.
 | 
						 * Indicates the start of an XMA stream chunk in WAV files.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	private final static int ASCII_x2st = 0x7832_7374;
 | 
						private final static int ASCII_x2st = 0x7832_7374;
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Hex value for the ASCII sequence "seek".
 | 
				
			||||||
 | 
						 * Indicates the start of an XMA stream chunk in WAV files.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private final static int ASCII_seek = 0x7365_656B;
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Hex value for the ASCII sequence "fLaC".
 | 
						 * Hex value for the ASCII sequence "fLaC".
 | 
				
			||||||
	 * Indicates the start of an FLAC file.
 | 
						 * Indicates the start of an FLAC file.
 | 
				
			||||||
| 
						 | 
					@ -137,53 +145,60 @@ public class AudioExtractor {
 | 
				
			||||||
		System.out.println("Program:\tRidge Racer 6 Audio Extractor " + Ansi.colorize("v1.0", Attribute.BRIGHT_GREEN_TEXT()) + " by " 
 | 
							System.out.println("Program:\tRidge Racer 6 Audio Extractor " + Ansi.colorize("v1.0", Attribute.BRIGHT_GREEN_TEXT()) + " by " 
 | 
				
			||||||
				+ Ansi.colorize("Nes", Attribute.TEXT_COLOR(252, 42, 124)));
 | 
									+ Ansi.colorize("Nes", Attribute.TEXT_COLOR(252, 42, 124)));
 | 
				
			||||||
		System.out.println("Repository:\t" + Ansi.colorize("https://gitea.goblincave.synology.me/Nes/RR6AudioExtractor", Attribute.CYAN_TEXT()));
 | 
							System.out.println("Repository:\t" + Ansi.colorize("https://gitea.goblincave.synology.me/Nes/RR6AudioExtractor", Attribute.CYAN_TEXT()));
 | 
				
			||||||
 | 
							System.out.println();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		// Initialize user input reader
 | 
							// Initialize user input reader
 | 
				
			||||||
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
 | 
							BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		// determine which operation to execute
 | 
							while(true) {
 | 
				
			||||||
		String operationInput = null;
 | 
					 | 
				
			||||||
		if(args.length > 0)
 | 
					 | 
				
			||||||
			operationInput = args[0];
 | 
					 | 
				
			||||||
		String operation = retrieveOperation(reader, operationInput);
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if(args.length == 0) { // no arguments provided
 | 
								// determine which operation to execute
 | 
				
			||||||
 | 
								String operationInput = null;
 | 
				
			||||||
 | 
								if(args.length > 0)
 | 
				
			||||||
 | 
									operationInput = args[0];
 | 
				
			||||||
 | 
								String operation = retrieveOperation(reader, operationInput);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			switch(operation) {
 | 
								if(args.length == 0) { // no arguments provided
 | 
				
			||||||
				case "identify":
 | 
												
 | 
				
			||||||
					File unknownFile = retrieveFile(reader, "Please enter the path of a file: " + ANSI_BEIGE);
 | 
									switch(operation) {
 | 
				
			||||||
					identify(unknownFile);
 | 
										case "identify":
 | 
				
			||||||
					break;
 | 
											File unknownFile = retrieveFile(reader, "Please enter the path of a file: " + ANSI_BEIGE);
 | 
				
			||||||
				case "extract": // extract
 | 
											identify(unknownFile);
 | 
				
			||||||
					// Determine package directory
 | 
											break;
 | 
				
			||||||
					File currentDir = new File(new File(AudioExtractor.class.getProtectionDomain().getCodeSource().getLocation().toURI())
 | 
										case "extract": // extract
 | 
				
			||||||
							.getParent());
 | 
											// Determine package directory
 | 
				
			||||||
					boolean packDirFound = false;
 | 
											File currentDir = new File(new File(AudioExtractor.class.getProtectionDomain().getCodeSource().getLocation().toURI())
 | 
				
			||||||
					do {
 | 
													.getParent());
 | 
				
			||||||
						System.out.println(Ansi.colorize("\nPackage Directory:", Attribute.BOLD(), Attribute.CYAN_TEXT()));
 | 
											boolean packDirFound = false;
 | 
				
			||||||
						System.out.println("- " + Ansi.colorize("Current", Attribute.BRIGHT_RED_TEXT()) + " directory:\t" 
 | 
											do {
 | 
				
			||||||
								+ Ansi.colorize(currentDir.getPath(), Attribute.BRIGHT_CYAN_TEXT()));
 | 
												System.out.println(Ansi.colorize("\nPackage Directory:", Attribute.BOLD(), Attribute.CYAN_TEXT()));
 | 
				
			||||||
 | 
												System.out.println("- " + Ansi.colorize("Current", Attribute.BRIGHT_RED_TEXT()) + " directory:\t" 
 | 
				
			||||||
 | 
														+ Ansi.colorize(currentDir.getPath(), Attribute.BRIGHT_CYAN_TEXT()));
 | 
				
			||||||
 | 
												
 | 
				
			||||||
 | 
											} while(!packDirFound);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case "package": // pack
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case "patch": // patch
 | 
				
			||||||
 | 
											File waveFile = retrieveWave(reader);
 | 
				
			||||||
 | 
											patch(waveFile);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case "print": // print
 | 
				
			||||||
 | 
											Attribute color = retrieveColor(reader);
 | 
				
			||||||
 | 
											String message = retrieveInput(reader, "Please enter your logo message: " + ANSI_BEIGE);
 | 
				
			||||||
 | 
											System.out.println(Ansi.colorize(logoFormat(message), color));
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case "exit": // exit
 | 
				
			||||||
 | 
											System.out.println("Program closed.");
 | 
				
			||||||
 | 
											System.exit(0);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
					} while(!packDirFound);
 | 
					 | 
				
			||||||
					break;
 | 
					 | 
				
			||||||
				case "package": // pack
 | 
					 | 
				
			||||||
					break;
 | 
					 | 
				
			||||||
				case "patch": // patch
 | 
					 | 
				
			||||||
					File waveFile = retrieveWave(reader);
 | 
					 | 
				
			||||||
					patch(waveFile);
 | 
					 | 
				
			||||||
					break;
 | 
					 | 
				
			||||||
				case "print": // print
 | 
					 | 
				
			||||||
					Attribute color = retrieveColor(reader);
 | 
					 | 
				
			||||||
					String message = retrieveInput(reader, "Please enter your logo message: " + ANSI_BEIGE);
 | 
					 | 
				
			||||||
					System.out.println(Ansi.colorize(logoFormat(message), color));
 | 
					 | 
				
			||||||
					break;
 | 
					 | 
				
			||||||
				case "exit": // exit
 | 
					 | 
				
			||||||
					System.out.println("Program closed.");
 | 
					 | 
				
			||||||
					System.exit(0);
 | 
					 | 
				
			||||||
					break;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
		System.exit(0);
 | 
							System.exit(0);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if(args.length > 0) {
 | 
							if(args.length > 0) {
 | 
				
			||||||
| 
						 | 
					@ -260,6 +275,7 @@ public class AudioExtractor {
 | 
				
			||||||
		if(packMode)
 | 
							if(packMode)
 | 
				
			||||||
			pack(packDirectory, extractDirectory);
 | 
								pack(packDirectory, extractDirectory);
 | 
				
			||||||
		else extract(packDirectory, extractDirectory, compressBGM);
 | 
							else extract(packDirectory, extractDirectory, compressBGM);
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
| 
						 | 
					@ -284,7 +300,7 @@ public class AudioExtractor {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if(operation == null) {
 | 
							if(operation == null) {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
			String prompt = "\n" + Ansi.colorize("Operations", Attribute.BRIGHT_YELLOW_TEXT(), Attribute.BOLD()) + ":\n"
 | 
								String prompt = Ansi.colorize("Operations", Attribute.BRIGHT_YELLOW_TEXT(), Attribute.BOLD()) + ":\n"
 | 
				
			||||||
					+ "- " + Ansi.colorize("Identify", Attribute.BRIGHT_RED_TEXT()) + " a package or audio file\n"
 | 
										+ "- " + Ansi.colorize("Identify", Attribute.BRIGHT_RED_TEXT()) + " a package or audio file\n"
 | 
				
			||||||
					+ "- " + Ansi.colorize("Extract", Attribute.TEXT_COLOR(0xFF, 0x68, 0x1F)) + " audio tracks from a package (BIN -> WAV/XMA)\n"
 | 
										+ "- " + Ansi.colorize("Extract", Attribute.TEXT_COLOR(0xFF, 0x68, 0x1F)) + " audio tracks from a package (BIN -> WAV/XMA)\n"
 | 
				
			||||||
					+ "- " + Ansi.colorize("Convert", Attribute.TEXT_COLOR(0xFF, 0xEA, 0x00)) + " audio tracks to another format (XMA <-> WAV <-> FLAC)\n"
 | 
										+ "- " + Ansi.colorize("Convert", Attribute.TEXT_COLOR(0xFF, 0xEA, 0x00)) + " audio tracks to another format (XMA <-> WAV <-> FLAC)\n"
 | 
				
			||||||
| 
						 | 
					@ -374,21 +390,25 @@ public class AudioExtractor {
 | 
				
			||||||
								break;
 | 
													break;
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
							case ASCII_fmt: {
 | 
												case ASCII_fmt: {
 | 
				
			||||||
								readFormatChunk(file, (int) i);
 | 
													i = readFormatChunk(file, (int) i) - 4;
 | 
				
			||||||
								break;
 | 
													break;
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
							case ASCII_smpl: {
 | 
												case ASCII_smpl: {
 | 
				
			||||||
								readSampleChunk(file, (int) i);
 | 
													i = readSampleChunk(file, (int) i) - 4;
 | 
				
			||||||
								break;
 | 
													break;
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
							case ASCII_data: {
 | 
												case ASCII_data: {
 | 
				
			||||||
								readDataChunk(file, (int) i);
 | 
													i = readDataChunk(file, (int) i) - 4;
 | 
				
			||||||
								break;
 | 
													break;
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
							case ASCII_ALIG: {
 | 
												case ASCII_ALIG: {
 | 
				
			||||||
								readAlignmentChunk(file, (int) i);
 | 
													readAlignmentChunk(file, (int) i);
 | 
				
			||||||
								break;
 | 
													break;
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
 | 
												case ASCII_seek: {
 | 
				
			||||||
 | 
													readx2stChunk(file, (int) i);
 | 
				
			||||||
 | 
													break;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
							case ASCII_x2st: {
 | 
												case ASCII_x2st: {
 | 
				
			||||||
								readx2stChunk(file, (int) i);
 | 
													readx2stChunk(file, (int) i);
 | 
				
			||||||
								break;
 | 
													break;
 | 
				
			||||||
| 
						 | 
					@ -406,19 +426,26 @@ public class AudioExtractor {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Helper function to read RIFF header information.
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param file
 | 
				
			||||||
 | 
						 * @param offset
 | 
				
			||||||
 | 
						 * @throws IOException
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public static void readRIFFChunk(RandomAccessFile file, int offset) throws IOException {
 | 
						public static void readRIFFChunk(RandomAccessFile file, int offset) throws IOException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		System.out.println(formatAddress(offset) + ":\tRIFF (Resource Interchange File Format) chunk");
 | 
							System.out.println(formatAddress(offset, file.length()) + ":\tRIFF (Resource Interchange File Format) file");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if(offset + 8 < file.length()) {
 | 
							if(offset + 8 < file.length()) {
 | 
				
			||||||
			int riffSize = readChunkSize(file, offset);
 | 
								int riffSize = readChunkSize(file, offset);
 | 
				
			||||||
			System.out.println(formatAddress(offset + 4) + ":\t" + riffSize + " Bytes" + (riffSize > 1024 ? " (" + convertBytes(riffSize) + ")" : ""));
 | 
								System.out.println(formatAddress(offset + 4, file.length()) + ":\t" + riffSize + " Bytes" + (riffSize > 1024 ? " (" + convertBytes(riffSize) + ")" : ""));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if(offset + 12 < file.length()) {
 | 
							if(offset + 12 < file.length()) {
 | 
				
			||||||
			file.seek(offset + 8);
 | 
								file.seek(offset + 8);
 | 
				
			||||||
			if(file.readInt() == ASCII_WAVE)
 | 
								if(file.readInt() == ASCII_WAVE)
 | 
				
			||||||
				System.out.println(formatAddress(offset + 8) + ":\tWAVE (Waveform Audio File Format) type");
 | 
									System.out.println(formatAddress(offset + 8, file.length()) + ":\tWAVE (Waveform Audio File Format) type");
 | 
				
			||||||
			offset += 8;
 | 
								offset += 8;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
| 
						 | 
					@ -426,22 +453,32 @@ public class AudioExtractor {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static void readFormatChunk(RandomAccessFile file, int offset) throws IOException {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		System.out.println(formatAddress(offset) + ":\tfmt (Format) chunk");
 | 
						/**
 | 
				
			||||||
 | 
						 * Helper method to read format chunk information. 
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param file
 | 
				
			||||||
 | 
						 * @param offset from start of file to start of format chunk
 | 
				
			||||||
 | 
						 * @return offset from start of file to end of format chunk
 | 
				
			||||||
 | 
						 * @throws IOException
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static int readFormatChunk(RandomAccessFile file, int offset) throws IOException {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		int fmtSize = 8;
 | 
							System.out.println(formatAddress(offset, file.length()) + ":\tfmt (Format) chunk");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							int size = 8;
 | 
				
			||||||
		if(offset + 8 < file.length()) {
 | 
							if(offset + 8 < file.length()) {
 | 
				
			||||||
			fmtSize = readChunkSize(file, (int) offset);
 | 
								size = readChunkSize(file, (int) offset);
 | 
				
			||||||
			System.out.println(formatAddress(offset + 4) + ":\t" + fmtSize + " Bytes" + (fmtSize > 1024 ? " (" + convertBytes(fmtSize) + ")" : ""));
 | 
								System.out.println(formatAddress(offset + 0x04, file.length()) + ":\t" + size + " Bytes" + (size > 1024 ? " (" + convertBytes(size) + ")" : ""));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if(offset + fmtSize < file.length()) {
 | 
							if(offset + size < file.length()) {
 | 
				
			||||||
			file.seek(offset + 8);
 | 
								
 | 
				
			||||||
			byte[] LEBytes = new byte[2];
 | 
								byte[] LEBytes = new byte[2];
 | 
				
			||||||
 | 
								file.seek(offset + 0x08);
 | 
				
			||||||
			file.read(LEBytes);
 | 
								file.read(LEBytes);
 | 
				
			||||||
			int encoding = littleEndianToInt(LEBytes);
 | 
								int encoding = littleEndianToInt(LEBytes);
 | 
				
			||||||
			System.out.print(formatAddress(offset + 8) + "\t");
 | 
								System.out.print(formatAddress(offset + 0x08, file.length()) + ":\t");
 | 
				
			||||||
			if(encoding == 0x0001)
 | 
								if(encoding == 0x0001)
 | 
				
			||||||
				System.out.print("PCM (Pulse-Code Modulation)");
 | 
									System.out.print("PCM (Pulse-Code Modulation)");
 | 
				
			||||||
			else if(encoding == 0x0002)
 | 
								else if(encoding == 0x0002)
 | 
				
			||||||
| 
						 | 
					@ -450,34 +487,255 @@ public class AudioExtractor {
 | 
				
			||||||
				System.out.print("XMA (Xbox Media Audio)");
 | 
									System.out.print("XMA (Xbox Media Audio)");
 | 
				
			||||||
			else if(encoding == 0x0166)
 | 
								else if(encoding == 0x0166)
 | 
				
			||||||
				System.out.print("XMA2 (Xbox Media Audio 2)");
 | 
									System.out.print("XMA2 (Xbox Media Audio 2)");
 | 
				
			||||||
			else System.out.print("Unknown");
 | 
								else { 
 | 
				
			||||||
				// TODO lookup values from CSV
 | 
									boolean found = false;
 | 
				
			||||||
 | 
									InputStream filestream = AudioExtractor.class.getResourceAsStream("/encoding.csv");
 | 
				
			||||||
 | 
									InputStreamReader streamReader = new InputStreamReader(filestream);
 | 
				
			||||||
 | 
									Reader in = streamReader;
 | 
				
			||||||
 | 
									String[] headers = { "Decimal value", "Hexadecimal value", "Description" };
 | 
				
			||||||
 | 
									Iterable<CSVRecord> records = CSVFormat.EXCEL.builder().setHeader(headers).setSkipHeaderRecord(true).build().parse(in);
 | 
				
			||||||
 | 
									for (CSVRecord record : records) {
 | 
				
			||||||
 | 
									    String dec = record.get("Decimal value");
 | 
				
			||||||
 | 
									    String desc = record.get("Description");
 | 
				
			||||||
 | 
									    if(encoding == Integer.parseInt(dec)) {
 | 
				
			||||||
 | 
									    	System.out.print(desc);
 | 
				
			||||||
 | 
									    	found = true;
 | 
				
			||||||
 | 
									    	break;
 | 
				
			||||||
 | 
									    }
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!found)
 | 
				
			||||||
 | 
										System.out.print("Unknown (" + encoding + ")");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			System.out.println(" encoding");
 | 
								System.out.println(" encoding");
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			offset += fmtSize;
 | 
								if(encoding == 0x0165) {
 | 
				
			||||||
 | 
									LEBytes = new byte[2];
 | 
				
			||||||
 | 
									file.seek(offset + 0x10);
 | 
				
			||||||
 | 
									file.read(LEBytes);
 | 
				
			||||||
 | 
									int streams = littleEndianToInt(LEBytes);
 | 
				
			||||||
 | 
									System.out.println(formatAddress(offset + 0x10, file.length()) + ":\t" + streams + (streams == 1 ? " stream" : " streams"));
 | 
				
			||||||
 | 
									parseField(file, offset + 0x12, 1, " loop flag");
 | 
				
			||||||
 | 
									// unknown 5 bytes ?
 | 
				
			||||||
 | 
									parseField(file, offset + 0x18, 4, " Hz sampling rate");
 | 
				
			||||||
 | 
									parseField(file, offset + 0x1C, 4, " loop start");
 | 
				
			||||||
 | 
									parseField(file, offset + 0x20, 4, " loop end");
 | 
				
			||||||
 | 
									parseField(file, offset + 0x24, 1, " loop subframe");
 | 
				
			||||||
 | 
									// unknown 3 bytes ?
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
					//				int channels = 0;
 | 
				
			||||||
 | 
					//				for(int i = 0; i < streams; i++)
 | 
				
			||||||
 | 
					//					channels += parseField(file, offset + 0x08 + 0x0C + 0x14 * i + 0x11, 1, " channel");
 | 
				
			||||||
 | 
					//				System.out.println(channels + " channels");
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									parseField(file, offset + 0x0A, 2, " channels");
 | 
				
			||||||
 | 
									parseField(file, offset + 0x0C, 4, " Hz sampling rate");
 | 
				
			||||||
 | 
									parseField(file, offset + 0x10, 4, " average bytes per second");
 | 
				
			||||||
 | 
									parseField(file, offset + 0x14, 2, "-byte sample block size");
 | 
				
			||||||
 | 
									parseField(file, offset + 0x16, 2, " significant bits per sample");
 | 
				
			||||||
 | 
									LEBytes = new byte[2];
 | 
				
			||||||
 | 
									file.seek(offset + 0x18);
 | 
				
			||||||
 | 
									file.read(LEBytes);
 | 
				
			||||||
 | 
									int extra = littleEndianToInt(LEBytes);
 | 
				
			||||||
 | 
									if(extra != ASCII_smpl)
 | 
				
			||||||
 | 
										parseField(file, offset + 0x18, 2, " extra format bytes");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		System.out.println();
 | 
							System.out.println();
 | 
				
			||||||
 | 
							return offset + size;
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	private static void readx2stChunk(RandomAccessFile file, int i) {
 | 
						private static int readDataChunk(RandomAccessFile file, int offset) throws IOException {
 | 
				
			||||||
		// TODO Auto-generated method stub
 | 
							
 | 
				
			||||||
 | 
							System.out.println(formatAddress(offset, file.length()) + ":\tdata (Data) chunk");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							int size = 8;
 | 
				
			||||||
 | 
							if(offset + 8 < file.length()) {
 | 
				
			||||||
 | 
								size = readChunkSize(file, (int) offset);
 | 
				
			||||||
 | 
								System.out.println(formatAddress(offset + 0x04, file.length()) + ":\t" + size + " Bytes" + (size > 1024 ? " (" + convertBytes(size) + ")" : ""));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println();
 | 
				
			||||||
 | 
							return offset + size;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static void readAlignmentChunk(RandomAccessFile file, int i) {
 | 
						private static int readSampleChunk(RandomAccessFile file, int offset) throws IOException {
 | 
				
			||||||
		// TODO Auto-generated method stub
 | 
							
 | 
				
			||||||
 | 
							System.out.println(formatAddress(offset, file.length()) + ":\tsmpl (Sample) chunk");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							int size = 8;
 | 
				
			||||||
 | 
							if(offset + 8 < file.length()) {
 | 
				
			||||||
 | 
								size = readChunkSize(file, (int) offset);
 | 
				
			||||||
 | 
								System.out.println(formatAddress(offset + 0x04, file.length()) + ":\t" + size + " Bytes" + (size > 1024 ? " (" + convertBytes(size) + ")" : ""));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// 0x08 4B manufacturer code
 | 
				
			||||||
 | 
					//		parseField(file, offset + 0x08, 4, " manufacturer code");
 | 
				
			||||||
 | 
							byte[] bytes = new byte[4];
 | 
				
			||||||
 | 
							file.seek(offset + 0x08);
 | 
				
			||||||
 | 
							file.read(bytes);
 | 
				
			||||||
 | 
							int relevantBytes = bytes[0];
 | 
				
			||||||
 | 
							String code;
 | 
				
			||||||
 | 
							if(relevantBytes == 3)
 | 
				
			||||||
 | 
								code = String.format("%02XH %02XH %02XH", bytes[1], bytes[2], bytes[3]);
 | 
				
			||||||
 | 
							else code = String.format("%02XH", bytes[3]);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							System.out.print(formatAddress(offset + 0x08, file.length()) + ":\t");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							boolean found = false;
 | 
				
			||||||
 | 
							InputStream filestream = AudioExtractor.class.getResourceAsStream("/manufacturer.csv");
 | 
				
			||||||
 | 
							InputStreamReader streamReader = new InputStreamReader(filestream);
 | 
				
			||||||
 | 
							Reader in = streamReader;
 | 
				
			||||||
 | 
							String[] headers = { "SysEx ID Number", "Company Name" };
 | 
				
			||||||
 | 
							Iterable<CSVRecord> records = CSVFormat.EXCEL.builder().setHeader(headers).setSkipHeaderRecord(true).build().parse(in);
 | 
				
			||||||
 | 
							for (CSVRecord record : records) {
 | 
				
			||||||
 | 
							    String ID = record.get("SysEx ID Number");
 | 
				
			||||||
 | 
							    String manufacturer = record.get("Company Name");
 | 
				
			||||||
 | 
							    if(code.equalsIgnoreCase(ID)) {
 | 
				
			||||||
 | 
							    	System.out.print(manufacturer + " (" + code + ")");
 | 
				
			||||||
 | 
							    	found = true;
 | 
				
			||||||
 | 
							    	break;
 | 
				
			||||||
 | 
							    }
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if(!found)
 | 
				
			||||||
 | 
								System.out.print("Unknown (" + code + ")");
 | 
				
			||||||
 | 
							System.out.println(" manufacturer");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// 0x0C 4B product code
 | 
				
			||||||
 | 
							parseField(file, offset + 0x0C, 4, " product code");
 | 
				
			||||||
 | 
							parseField(file, offset + 0x10, 4, "-nanosecond sample period");
 | 
				
			||||||
 | 
							parseField(file, offset + 0x14, 4, " MIDI unity note");
 | 
				
			||||||
 | 
							parseField(file, offset + 0x18, 4, " MIDI pitch fraction");
 | 
				
			||||||
 | 
							parseField(file, offset + 0x1C, 4, " SMPTE format");
 | 
				
			||||||
 | 
							parseField(file, offset + 0x20, 4, " SMPTE offset");
 | 
				
			||||||
 | 
							int loops = parseField(file, offset + 0x24, 4, " sample loops");
 | 
				
			||||||
 | 
							parseField(file, offset + 0x28, 4, " sample data");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							for(int i = 0; i < loops; i++) {
 | 
				
			||||||
 | 
								int loopOffset = offset + 0x2C + i * 0x18;
 | 
				
			||||||
 | 
								parseField(file, loopOffset, 4, " loop ID");
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								bytes = new byte[4];
 | 
				
			||||||
 | 
								file.seek(loopOffset + 0x04);
 | 
				
			||||||
 | 
								file.read(bytes);
 | 
				
			||||||
 | 
								int loopType = littleEndianToInt(bytes);
 | 
				
			||||||
 | 
								System.out.print(formatAddress(loopOffset + 0x04, file.length()) + ":\t");
 | 
				
			||||||
 | 
								String type;
 | 
				
			||||||
 | 
								switch(loopType) {
 | 
				
			||||||
 | 
									case 0:
 | 
				
			||||||
 | 
										type = "Forward";
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									case 1:
 | 
				
			||||||
 | 
										type = "Alternating";
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									case 2:
 | 
				
			||||||
 | 
										type = "Backward";
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									default:
 | 
				
			||||||
 | 
										type = "Unknown (" + loopType + ")";
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								type += " loop type";
 | 
				
			||||||
 | 
								System.out.println(type);
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								file.seek(loopOffset + 0x08);
 | 
				
			||||||
 | 
								file.read(bytes);
 | 
				
			||||||
 | 
								int loopStart = littleEndianToInt(bytes);
 | 
				
			||||||
 | 
								System.out.println(formatAddress(loopOffset + 0x08, file.length()) + ":\tSample # " + loopStart + " loop start");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								file.seek(loopOffset + 0x0C);
 | 
				
			||||||
 | 
								file.read(bytes);
 | 
				
			||||||
 | 
								int loopEnd = littleEndianToInt(bytes);
 | 
				
			||||||
 | 
								System.out.println(formatAddress(loopOffset + 0x08, file.length()) + ":\tSample # " + loopEnd + " loop end");
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								parseField(file, loopOffset + 0x10, 4, " loop fraction");
 | 
				
			||||||
 | 
								parseField(file, loopOffset + 0x14, 4, " repeat count");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							System.out.println();
 | 
				
			||||||
 | 
							return offset + size;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	private static void readDataChunk(RandomAccessFile file, int i) {
 | 
						public static int readSeekChunk(RandomAccessFile file, int offset) throws IOException {
 | 
				
			||||||
		// TODO Auto-generated method stub
 | 
							
 | 
				
			||||||
 | 
							System.out.println(formatAddress(offset, file.length()) + ":\tseek (Seek) chunk");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							int size = 8;
 | 
				
			||||||
 | 
							if(offset + 8 < file.length()) {
 | 
				
			||||||
 | 
								size = readChunkSize(file, (int) offset);
 | 
				
			||||||
 | 
								System.out.println(formatAddress(offset + 0x04, file.length()) + ":\t" + size + " Bytes" + (size > 1024 ? " (" + convertBytes(size) + ")" : ""));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return offset + size;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	private static void readSampleChunk(RandomAccessFile file, int i) {
 | 
						/**
 | 
				
			||||||
		// TODO Auto-generated method stub
 | 
						 * Helper method to read a little-endian byte field and print its contents.
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param file
 | 
				
			||||||
 | 
						 * @param address
 | 
				
			||||||
 | 
						 * @param size
 | 
				
			||||||
 | 
						 * @param message
 | 
				
			||||||
 | 
						 * @return value
 | 
				
			||||||
 | 
						 * @throws IOException
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static int parseField(RandomAccessFile file, int address, int size, String message) throws IOException {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							byte[] bytes = new byte[size];
 | 
				
			||||||
 | 
							file.seek(address);
 | 
				
			||||||
 | 
							file.read(bytes);
 | 
				
			||||||
 | 
							int value = littleEndianToInt(bytes);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							System.out.println(formatAddress(address, file.length()) + ":\t" + value + message);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return value;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static int readx2stChunk(RandomAccessFile file, int offset) throws IOException {
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							System.out.println(formatAddress(offset, file.length()) + ":\tx2st chunk");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							int size = 8;
 | 
				
			||||||
 | 
							if(offset + 8 < file.length()) {
 | 
				
			||||||
 | 
								size = readChunkSize(file, (int) offset);
 | 
				
			||||||
 | 
								System.out.println(formatAddress(offset + 0x04, file.length()) + ":\t" + size + " Bytes" + (size > 1024 ? " (" + convertBytes(size) + ")" : ""));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							System.out.println();
 | 
				
			||||||
 | 
							return offset + size;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static int readAlignmentChunk(RandomAccessFile file, int offset) throws IOException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println(formatAddress(offset, file.length()) + ":\tALIG (Alignment) chunk");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							int size = 8;
 | 
				
			||||||
 | 
							if(offset + 8 < file.length()) {
 | 
				
			||||||
 | 
								size = readChunkSize(file, (int) offset);
 | 
				
			||||||
 | 
								System.out.println(formatAddress(offset + 0x04, file.length()) + ":\t" + size + " Bytes" + (size > 1024 ? " (" + convertBytes(size) + ")" : ""));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							System.out.println();
 | 
				
			||||||
 | 
							return offset + size;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static String formatAddress(long address, long size) {
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							int digits = (int) Math.ceil(Math.log(size) / Math.log(16));
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return String.format("%0" + digits + "X", address);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					//		if(size <= 0xFFFF)
 | 
				
			||||||
 | 
					//			return String.format("%04X", address);
 | 
				
			||||||
 | 
					//		else return String.format("%08X", address);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
| 
						 | 
					@ -489,9 +747,9 @@ public class AudioExtractor {
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	private static String formatAddress(long address) {
 | 
						private static String formatAddress(long address) {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if(address > 0xFFFF)
 | 
					//		if(address > 0xFFFF)
 | 
				
			||||||
			return String.format("%08X", address);
 | 
								return String.format("%08X", address);
 | 
				
			||||||
		else return String.format("%04X", address);
 | 
					//		else return String.format("%04X", address);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -834,6 +1092,8 @@ public class AudioExtractor {
 | 
				
			||||||
			System.out.print(prompt);
 | 
								System.out.print(prompt);
 | 
				
			||||||
			try {
 | 
								try {
 | 
				
			||||||
				input = reader.readLine();
 | 
									input = reader.readLine();
 | 
				
			||||||
 | 
									if(input == null)
 | 
				
			||||||
 | 
										throw new IOException("Invalid file.");
 | 
				
			||||||
				file = new File(input);
 | 
									file = new File(input);
 | 
				
			||||||
				if(file.exists()) {
 | 
									if(file.exists()) {
 | 
				
			||||||
					if(file.isFile()) {
 | 
										if(file.isFile()) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue