summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2016-09-08 14:05:20 -0700
committerMarcus Huderle <huderlem@gmail.com>2016-09-08 14:06:35 -0700
commitccdc106333cb669ffa09779a94cc0646ccaea08e (patch)
tree2f1daf00eaab1d06293e303b185b117ec58bbae6
parent949bc718359b40553c5bbf7e04974dc43283a883 (diff)
Convert .aif files to .pcm samples, and update Makefile to use aif2pcm tool.
-rw-r--r--Makefile6
-rw-r--r--data/music/direct_sound_samples/8456330.aif (renamed from data/music/direct_sound_samples/8456330.pcm)bin1683 -> 1797 bytes
-rw-r--r--data/music/direct_sound_samples/84569D4.aif (renamed from data/music/direct_sound_samples/84569D4.pcm)bin2024 -> 2138 bytes
-rw-r--r--data/music/direct_sound_samples/84571CC.aif (renamed from data/music/direct_sound_samples/84571CC.pcm)bin3001 -> 3115 bytes
-rw-r--r--data/music/direct_sound_samples/8457D98.aif (renamed from data/music/direct_sound_samples/8457D98.pcm)bin3879 -> 3993 bytes
-rw-r--r--data/music/direct_sound_samples/8458CD0.aif (renamed from data/music/direct_sound_samples/8458CD0.pcm)bin3170 -> 3284 bytes
-rw-r--r--data/music/direct_sound_samples/8459944.aif (renamed from data/music/direct_sound_samples/8459944.pcm)bin5310 -> 5424 bytes
-rw-r--r--data/music/direct_sound_samples/845AE14.aifbin0 -> 1281 bytes
-rw-r--r--data/music/direct_sound_samples/845AE14.pcmbin1167 -> 0 bytes
-rw-r--r--data/music/direct_sound_samples/845B2B4.aif (renamed from data/music/direct_sound_samples/845B2B4.pcm)bin1762 -> 1876 bytes
-rw-r--r--data/music/direct_sound_samples/845B9A8.aif (renamed from data/music/direct_sound_samples/845B9A8.pcm)bin2176 -> 2290 bytes
-rw-r--r--data/music/direct_sound_samples/845C238.aif (renamed from data/music/direct_sound_samples/845C238.pcm)bin2149 -> 2263 bytes
-rw-r--r--data/music/direct_sound_samples/845CAB0.aif (renamed from data/music/direct_sound_samples/845CAB0.pcm)bin4142 -> 4256 bytes
-rw-r--r--data/music/direct_sound_samples/845DAF0.aif (renamed from data/music/direct_sound_samples/845DAF0.pcm)bin1025 -> 1139 bytes
-rw-r--r--data/music/direct_sound_samples/845DF04.aif (renamed from data/music/direct_sound_samples/845DF04.pcm)bin3614 -> 3728 bytes
-rw-r--r--data/music/direct_sound_samples/845ED34.aif (renamed from data/music/direct_sound_samples/845ED34.pcm)bin3972 -> 4086 bytes
-rw-r--r--data/music/direct_sound_samples/845FCC8.aif (renamed from data/music/direct_sound_samples/845FCC8.pcm)bin2212 -> 2326 bytes
-rw-r--r--data/music/direct_sound_samples/846057C.aif (renamed from data/music/direct_sound_samples/846057C.pcm)bin2258 -> 2372 bytes
-rw-r--r--data/music/direct_sound_samples/8460E60.aif (renamed from data/music/direct_sound_samples/8460E60.pcm)bin3865 -> 3979 bytes
-rw-r--r--data/music/direct_sound_samples/8461D8C.aif (renamed from data/music/direct_sound_samples/8461D8C.pcm)bin1288 -> 1402 bytes
-rw-r--r--data/music/direct_sound_samples/84622A4.aif (renamed from data/music/direct_sound_samples/84622A4.pcm)bin1464 -> 1578 bytes
-rw-r--r--data/music/direct_sound_samples/846286C.aif (renamed from data/music/direct_sound_samples/846286C.pcm)bin3917 -> 4031 bytes
-rw-r--r--data/music/direct_sound_samples/84637CC.aif (renamed from data/music/direct_sound_samples/84637CC.pcm)bin5710 -> 5824 bytes
-rw-r--r--data/music/direct_sound_samples/8464E2C.aif (renamed from data/music/direct_sound_samples/8464E2C.pcm)bin5450 -> 5564 bytes
-rw-r--r--data/music/direct_sound_samples/8466388.aif (renamed from data/music/direct_sound_samples/8466388.pcm)bin2938 -> 3052 bytes
-rw-r--r--data/music/direct_sound_samples/8466F14.aif (renamed from data/music/direct_sound_samples/8466F14.pcm)bin13716 -> 13830 bytes
-rw-r--r--data/music/direct_sound_samples/846A4B8.aif (renamed from data/music/direct_sound_samples/846A4B8.pcm)bin8971 -> 9085 bytes
-rw-r--r--data/music/direct_sound_samples/846C7D4.aif (renamed from data/music/direct_sound_samples/846C7D4.pcm)bin14009 -> 14123 bytes
-rw-r--r--data/music/direct_sound_samples/846FEA0.aif (renamed from data/music/direct_sound_samples/846FEA0.pcm)bin4926 -> 5040 bytes
-rw-r--r--data/music/direct_sound_samples/84711F0.aif (renamed from data/music/direct_sound_samples/84711F0.pcm)bin5375 -> 5489 bytes
-rw-r--r--data/music/direct_sound_samples/8472700.aif (renamed from data/music/direct_sound_samples/8472700.pcm)bin5133 -> 5247 bytes
-rw-r--r--data/music/direct_sound_samples/8473B20.aif (renamed from data/music/direct_sound_samples/8473B20.pcm)bin4233 -> 4347 bytes
-rw-r--r--data/music/direct_sound_samples/8474BBC.aif (renamed from data/music/direct_sound_samples/8474BBC.pcm)bin4169 -> 4283 bytes
-rw-r--r--data/music/direct_sound_samples/8475C18.aif (renamed from data/music/direct_sound_samples/8475C18.pcm)bin28548 -> 28662 bytes
-rw-r--r--data/music/direct_sound_samples/847CBAC.aif (renamed from data/music/direct_sound_samples/847CBAC.pcm)bin17778 -> 17892 bytes
-rw-r--r--data/music/direct_sound_samples/8481130.aif (renamed from data/music/direct_sound_samples/8481130.pcm)bin8030 -> 8144 bytes
-rw-r--r--data/music/direct_sound_samples/84830A0.aif (renamed from data/music/direct_sound_samples/84830A0.pcm)bin1875 -> 1989 bytes
-rw-r--r--data/music/direct_sound_samples/8483804.aif (renamed from data/music/direct_sound_samples/8483804.pcm)bin7230 -> 7344 bytes
-rw-r--r--data/music/direct_sound_samples/8485454.aif (renamed from data/music/direct_sound_samples/8485454.pcm)bin5310 -> 5424 bytes
-rw-r--r--data/music/direct_sound_samples/8486924.aif (renamed from data/music/direct_sound_samples/8486924.pcm)bin2555 -> 2669 bytes
-rw-r--r--data/music/direct_sound_samples/8487330.aif (renamed from data/music/direct_sound_samples/8487330.pcm)bin7172 -> 7286 bytes
-rw-r--r--data/music/direct_sound_samples/8488F44.aif (renamed from data/music/direct_sound_samples/8488F44.pcm)bin6479 -> 6593 bytes
-rw-r--r--data/music/direct_sound_samples/848A8A4.aif (renamed from data/music/direct_sound_samples/848A8A4.pcm)bin5300 -> 5414 bytes
-rw-r--r--data/music/direct_sound_samples/848BD68.aif (renamed from data/music/direct_sound_samples/848BD68.pcm)bin1833 -> 1947 bytes
-rw-r--r--data/music/direct_sound_samples/848C4A4.aif (renamed from data/music/direct_sound_samples/848C4A4.pcm)bin7136 -> 7250 bytes
-rw-r--r--data/music/direct_sound_samples/848E094.aif (renamed from data/music/direct_sound_samples/848E094.pcm)bin5027 -> 5141 bytes
-rw-r--r--data/music/direct_sound_samples/848F448.aif (renamed from data/music/direct_sound_samples/848F448.pcm)bin9841 -> 9955 bytes
-rw-r--r--data/music/direct_sound_samples/8491ACC.aif (renamed from data/music/direct_sound_samples/8491ACC.pcm)bin4658 -> 4772 bytes
-rw-r--r--data/music/direct_sound_samples/8492D10.aif (renamed from data/music/direct_sound_samples/8492D10.pcm)bin4096 -> 4210 bytes
-rw-r--r--data/music/direct_sound_samples/8493D20.aif (renamed from data/music/direct_sound_samples/8493D20.pcm)bin4853 -> 4967 bytes
-rw-r--r--data/music/direct_sound_samples/8495028.aif (renamed from data/music/direct_sound_samples/8495028.pcm)bin8441 -> 8555 bytes
-rw-r--r--data/music/direct_sound_samples/8497134.aif (renamed from data/music/direct_sound_samples/8497134.pcm)bin8139 -> 8253 bytes
-rw-r--r--data/music/direct_sound_samples/8499110.aif (renamed from data/music/direct_sound_samples/8499110.pcm)bin8704 -> 8818 bytes
-rw-r--r--data/music/direct_sound_samples/849B320.aif (renamed from data/music/direct_sound_samples/849B320.pcm)bin1979 -> 2093 bytes
-rw-r--r--data/music/direct_sound_samples/849BAEC.aif (renamed from data/music/direct_sound_samples/849BAEC.pcm)bin6496 -> 6610 bytes
-rw-r--r--data/music/direct_sound_samples/849D45C.aif (renamed from data/music/direct_sound_samples/849D45C.pcm)bin8093 -> 8207 bytes
-rw-r--r--data/music/direct_sound_samples/849F40C.aif (renamed from data/music/direct_sound_samples/849F40C.pcm)bin13007 -> 13121 bytes
-rw-r--r--data/music/direct_sound_samples/84A26EC.aif (renamed from data/music/direct_sound_samples/84A26EC.pcm)bin2592 -> 2706 bytes
-rw-r--r--data/music/direct_sound_samples/84A311C.aif (renamed from data/music/direct_sound_samples/84A311C.pcm)bin2595 -> 2709 bytes
-rw-r--r--data/music/direct_sound_samples/84A3B50.aif (renamed from data/music/direct_sound_samples/84A3B50.pcm)bin6957 -> 7071 bytes
-rw-r--r--data/music/direct_sound_samples/84A5690.aif (renamed from data/music/direct_sound_samples/84A5690.pcm)bin2232 -> 2346 bytes
-rw-r--r--data/music/direct_sound_samples/84A5F58.aif (renamed from data/music/direct_sound_samples/8654C20.pcm)bin5055 -> 5169 bytes
-rw-r--r--data/music/direct_sound_samples/84A7328.aif (renamed from data/music/direct_sound_samples/84A7328.pcm)bin3072 -> 3186 bytes
-rw-r--r--data/music/direct_sound_samples/84A7F38.aif (renamed from data/music/direct_sound_samples/84A7F38.pcm)bin2943 -> 3057 bytes
-rw-r--r--data/music/direct_sound_samples/84A8AC8.aif (renamed from data/music/direct_sound_samples/84A8AC8.pcm)bin2700 -> 2814 bytes
-rw-r--r--data/music/direct_sound_samples/84A9564.aif (renamed from data/music/direct_sound_samples/84A9564.pcm)bin2360 -> 2474 bytes
-rw-r--r--data/music/direct_sound_samples/84A9EAC.aif (renamed from data/music/direct_sound_samples/84A9EAC.pcm)bin2615 -> 2729 bytes
-rw-r--r--data/music/direct_sound_samples/84AA8F4.aif (renamed from data/music/direct_sound_samples/84AA8F4.pcm)bin3191 -> 3305 bytes
-rw-r--r--data/music/direct_sound_samples/8639898.aif (renamed from data/music/direct_sound_samples/8639898.pcm)bin1615 -> 1729 bytes
-rw-r--r--data/music/direct_sound_samples/8639EF8.aif (renamed from data/music/direct_sound_samples/8639EF8.pcm)bin1236 -> 1350 bytes
-rw-r--r--data/music/direct_sound_samples/863A3DC.aif (renamed from data/music/direct_sound_samples/863A3DC.pcm)bin2365 -> 2479 bytes
-rw-r--r--data/music/direct_sound_samples/863AD2C.aifbin0 -> 2770 bytes
-rw-r--r--data/music/direct_sound_samples/863AD2C.pcmbin2656 -> 0 bytes
-rw-r--r--data/music/direct_sound_samples/863B79C.aif (renamed from data/music/direct_sound_samples/863B79C.pcm)bin783 -> 897 bytes
-rw-r--r--data/music/direct_sound_samples/863BABC.aif (renamed from data/music/direct_sound_samples/863BABC.pcm)bin3191 -> 3305 bytes
-rw-r--r--data/music/direct_sound_samples/863C744.aif (renamed from data/music/direct_sound_samples/863C744.pcm)bin1552 -> 1666 bytes
-rw-r--r--data/music/direct_sound_samples/863CD64.aif (renamed from data/music/direct_sound_samples/863CD64.pcm)bin885 -> 999 bytes
-rw-r--r--data/music/direct_sound_samples/863D0EC.aif (renamed from data/music/direct_sound_samples/863D0EC.pcm)bin3537 -> 3651 bytes
-rw-r--r--data/music/direct_sound_samples/863DED0.aif (renamed from data/music/direct_sound_samples/863DED0.pcm)bin2399 -> 2513 bytes
-rw-r--r--data/music/direct_sound_samples/863E840.aif (renamed from data/music/direct_sound_samples/863E840.pcm)bin907 -> 1021 bytes
-rw-r--r--data/music/direct_sound_samples/863EBDC.aif (renamed from data/music/direct_sound_samples/863EBDC.pcm)bin1953 -> 2067 bytes
-rw-r--r--data/music/direct_sound_samples/863F390.aif (renamed from data/music/direct_sound_samples/863F390.pcm)bin3401 -> 3515 bytes
-rw-r--r--data/music/direct_sound_samples/86400EC.aif (renamed from data/music/direct_sound_samples/86400EC.pcm)bin564 -> 678 bytes
-rw-r--r--data/music/direct_sound_samples/8640330.aif (renamed from data/music/direct_sound_samples/8640330.pcm)bin3629 -> 3743 bytes
-rw-r--r--data/music/direct_sound_samples/8641170.aif (renamed from data/music/direct_sound_samples/8641170.pcm)bin2369 -> 2483 bytes
-rw-r--r--data/music/direct_sound_samples/8641AC4.aif (renamed from data/music/direct_sound_samples/8641AC4.pcm)bin834 -> 948 bytes
-rw-r--r--data/music/direct_sound_samples/8641E18.aif (renamed from data/music/direct_sound_samples/8641E18.pcm)bin1569 -> 1683 bytes
-rw-r--r--data/music/direct_sound_samples/864244C.aif (renamed from data/music/direct_sound_samples/864244C.pcm)bin3161 -> 3275 bytes
-rw-r--r--data/music/direct_sound_samples/86430B8.aif (renamed from data/music/direct_sound_samples/86430B8.pcm)bin1415 -> 1529 bytes
-rw-r--r--data/music/direct_sound_samples/8643650.aif (renamed from data/music/direct_sound_samples/8643650.pcm)bin2801 -> 2915 bytes
-rw-r--r--data/music/direct_sound_samples/8644154.aif (renamed from data/music/direct_sound_samples/8644154.pcm)bin1523 -> 1637 bytes
-rw-r--r--data/music/direct_sound_samples/8644758.aif (renamed from data/music/direct_sound_samples/8644758.pcm)bin485 -> 599 bytes
-rw-r--r--data/music/direct_sound_samples/8644950.aif (renamed from data/music/direct_sound_samples/8644950.pcm)bin2385 -> 2499 bytes
-rw-r--r--data/music/direct_sound_samples/86452B4.aif (renamed from data/music/direct_sound_samples/86452B4.pcm)bin3961 -> 4075 bytes
-rw-r--r--data/music/direct_sound_samples/8646240.aif (renamed from data/music/direct_sound_samples/8646240.pcm)bin1573 -> 1687 bytes
-rw-r--r--data/music/direct_sound_samples/8646878.aif (renamed from data/music/direct_sound_samples/8646878.pcm)bin2753 -> 2867 bytes
-rw-r--r--data/music/direct_sound_samples/864734C.aif (renamed from data/music/direct_sound_samples/864734C.pcm)bin3892 -> 4006 bytes
-rw-r--r--data/music/direct_sound_samples/8648290.aif (renamed from data/music/direct_sound_samples/8648290.pcm)bin1384 -> 1498 bytes
-rw-r--r--data/music/direct_sound_samples/8648808.aif (renamed from data/music/direct_sound_samples/8648808.pcm)bin3641 -> 3755 bytes
-rw-r--r--data/music/direct_sound_samples/8649654.aif (renamed from data/music/direct_sound_samples/8649654.pcm)bin3829 -> 3943 bytes
-rw-r--r--data/music/direct_sound_samples/864A55C.aifbin0 -> 2870 bytes
-rw-r--r--data/music/direct_sound_samples/864A55C.pcmbin2756 -> 0 bytes
-rw-r--r--data/music/direct_sound_samples/864B030.aif (renamed from data/music/direct_sound_samples/864B030.pcm)bin2945 -> 3059 bytes
-rw-r--r--data/music/direct_sound_samples/864BBC4.aif (renamed from data/music/direct_sound_samples/864BBC4.pcm)bin2501 -> 2615 bytes
-rw-r--r--data/music/direct_sound_samples/864C59C.aif (renamed from data/music/direct_sound_samples/864C59C.pcm)bin1582 -> 1696 bytes
-rw-r--r--data/music/direct_sound_samples/864CBDC.aif (renamed from data/music/direct_sound_samples/864CBDC.pcm)bin2765 -> 2879 bytes
-rw-r--r--data/music/direct_sound_samples/864D6BC.aif (renamed from data/music/direct_sound_samples/864D6BC.pcm)bin1578 -> 1692 bytes
-rw-r--r--data/music/direct_sound_samples/864DCF8.aif (renamed from data/music/direct_sound_samples/864DCF8.pcm)bin1798 -> 1912 bytes
-rw-r--r--data/music/direct_sound_samples/864E410.aif (renamed from data/music/direct_sound_samples/864E410.pcm)bin2345 -> 2459 bytes
-rw-r--r--data/music/direct_sound_samples/864ED4C.aif (renamed from data/music/direct_sound_samples/864ED4C.pcm)bin1961 -> 2075 bytes
-rw-r--r--data/music/direct_sound_samples/864F508.aif (renamed from data/music/direct_sound_samples/864F508.pcm)bin1364 -> 1478 bytes
-rw-r--r--data/music/direct_sound_samples/864FA6C.aif (renamed from data/music/direct_sound_samples/864FA6C.pcm)bin3425 -> 3539 bytes
-rw-r--r--data/music/direct_sound_samples/86507E0.aif (renamed from data/music/direct_sound_samples/86507E0.pcm)bin1131 -> 1245 bytes
-rw-r--r--data/music/direct_sound_samples/8650C5C.aif (renamed from data/music/direct_sound_samples/8650C5C.pcm)bin1244 -> 1358 bytes
-rw-r--r--data/music/direct_sound_samples/8651148.aif (renamed from data/music/direct_sound_samples/8651148.pcm)bin1973 -> 2087 bytes
-rw-r--r--data/music/direct_sound_samples/8651910.aif (renamed from data/music/direct_sound_samples/8651910.pcm)bin3051 -> 3165 bytes
-rw-r--r--data/music/direct_sound_samples/865250C.aif (renamed from data/music/direct_sound_samples/865250C.pcm)bin870 -> 984 bytes
-rw-r--r--data/music/direct_sound_samples/8652884.aif (renamed from data/music/direct_sound_samples/8652884.pcm)bin1961 -> 2075 bytes
-rw-r--r--data/music/direct_sound_samples/8653040.aif (renamed from data/music/direct_sound_samples/8653040.pcm)bin3153 -> 3267 bytes
-rw-r--r--data/music/direct_sound_samples/8653CA4.aif (renamed from data/music/direct_sound_samples/8653CA4.pcm)bin1212 -> 1326 bytes
-rw-r--r--data/music/direct_sound_samples/8654170.aif (renamed from data/music/direct_sound_samples/8654170.pcm)bin2717 -> 2831 bytes
-rw-r--r--data/music/direct_sound_samples/8654C20.aif (renamed from data/music/direct_sound_samples/84A5F58.pcm)bin5055 -> 5169 bytes
-rw-r--r--tools/aif2pcm/LICENSE19
-rw-r--r--tools/aif2pcm/Makefile15
-rw-r--r--tools/aif2pcm/extended.c171
-rw-r--r--tools/aif2pcm/main.c554
126 files changed, 764 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index e190356c9..d838fcbe2 100644
--- a/Makefile
+++ b/Makefile
@@ -19,6 +19,8 @@ SHA1 := sha1sum -c
GFX := @tools/gbagfx/gbagfx
+AIF := @tools/aif2pcm/aif2pcm
+
SCANINC := tools/scaninc/scaninc
PREPROC := tools/preproc/preproc
@@ -29,7 +31,7 @@ PREPROC := tools/preproc/preproc
# Secondary expansion is required for dependency variables in object rules.
.SECONDEXPANSION:
-.PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz %.rl
+.PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz %.rl %.pcm
.PHONY: all clean compare ruby sapphire
@@ -81,12 +83,14 @@ include misc.mk
%.bin: ;
%.png: ;
%.pal: ;
+%.aif: ;
%.1bpp: %.png ; $(GFX) $< $@
%.4bpp: %.png ; $(GFX) $< $@
%.8bpp: %.png ; $(GFX) $< $@
%.gbapal: %.pal ; $(GFX) $< $@
%.lz: % ; $(GFX) $< $@
%.rl: % ; $(GFX) $< $@
+%.pcm: %.aif ; $(AIF) $< $@
src/libc_ruby.o src/libc_sapphire.o: CC1 := tools/agbcc/bin/old_agbcc
src/libc_ruby.o src/libc_sapphire.o: CFLAGS := -O2
diff --git a/data/music/direct_sound_samples/8456330.pcm b/data/music/direct_sound_samples/8456330.aif
index efdbf64d3..199ead811 100644
--- a/data/music/direct_sound_samples/8456330.pcm
+++ b/data/music/direct_sound_samples/8456330.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84569D4.pcm b/data/music/direct_sound_samples/84569D4.aif
index e3c74e283..6372bbc32 100644
--- a/data/music/direct_sound_samples/84569D4.pcm
+++ b/data/music/direct_sound_samples/84569D4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84571CC.pcm b/data/music/direct_sound_samples/84571CC.aif
index e9b436939..f3aa47d91 100644
--- a/data/music/direct_sound_samples/84571CC.pcm
+++ b/data/music/direct_sound_samples/84571CC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8457D98.pcm b/data/music/direct_sound_samples/8457D98.aif
index 0c996b39a..9175b63c5 100644
--- a/data/music/direct_sound_samples/8457D98.pcm
+++ b/data/music/direct_sound_samples/8457D98.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8458CD0.pcm b/data/music/direct_sound_samples/8458CD0.aif
index cc4a23f8d..f39931a7e 100644
--- a/data/music/direct_sound_samples/8458CD0.pcm
+++ b/data/music/direct_sound_samples/8458CD0.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8459944.pcm b/data/music/direct_sound_samples/8459944.aif
index f8474e8d6..dfdfd702e 100644
--- a/data/music/direct_sound_samples/8459944.pcm
+++ b/data/music/direct_sound_samples/8459944.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/845AE14.aif b/data/music/direct_sound_samples/845AE14.aif
new file mode 100644
index 000000000..976210050
--- /dev/null
+++ b/data/music/direct_sound_samples/845AE14.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/845AE14.pcm b/data/music/direct_sound_samples/845AE14.pcm
deleted file mode 100644
index 561e95c26..000000000
--- a/data/music/direct_sound_samples/845AE14.pcm
+++ /dev/null
Binary files differ
diff --git a/data/music/direct_sound_samples/845B2B4.pcm b/data/music/direct_sound_samples/845B2B4.aif
index 15590d4ed..277ff96fc 100644
--- a/data/music/direct_sound_samples/845B2B4.pcm
+++ b/data/music/direct_sound_samples/845B2B4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/845B9A8.pcm b/data/music/direct_sound_samples/845B9A8.aif
index eb2bf338f..0c7116151 100644
--- a/data/music/direct_sound_samples/845B9A8.pcm
+++ b/data/music/direct_sound_samples/845B9A8.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/845C238.pcm b/data/music/direct_sound_samples/845C238.aif
index f9caf4b81..6066e2b4e 100644
--- a/data/music/direct_sound_samples/845C238.pcm
+++ b/data/music/direct_sound_samples/845C238.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/845CAB0.pcm b/data/music/direct_sound_samples/845CAB0.aif
index a610823db..b3b6e0b97 100644
--- a/data/music/direct_sound_samples/845CAB0.pcm
+++ b/data/music/direct_sound_samples/845CAB0.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/845DAF0.pcm b/data/music/direct_sound_samples/845DAF0.aif
index b35dfbe67..3acfdabee 100644
--- a/data/music/direct_sound_samples/845DAF0.pcm
+++ b/data/music/direct_sound_samples/845DAF0.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/845DF04.pcm b/data/music/direct_sound_samples/845DF04.aif
index a5c7d0dde..5ad9410d0 100644
--- a/data/music/direct_sound_samples/845DF04.pcm
+++ b/data/music/direct_sound_samples/845DF04.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/845ED34.pcm b/data/music/direct_sound_samples/845ED34.aif
index 2a04a3373..e5c1cd54a 100644
--- a/data/music/direct_sound_samples/845ED34.pcm
+++ b/data/music/direct_sound_samples/845ED34.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/845FCC8.pcm b/data/music/direct_sound_samples/845FCC8.aif
index cb14e3f92..6cc8a968e 100644
--- a/data/music/direct_sound_samples/845FCC8.pcm
+++ b/data/music/direct_sound_samples/845FCC8.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/846057C.pcm b/data/music/direct_sound_samples/846057C.aif
index bfae780f5..4aec6882f 100644
--- a/data/music/direct_sound_samples/846057C.pcm
+++ b/data/music/direct_sound_samples/846057C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8460E60.pcm b/data/music/direct_sound_samples/8460E60.aif
index bd0fed0c3..c6827ddee 100644
--- a/data/music/direct_sound_samples/8460E60.pcm
+++ b/data/music/direct_sound_samples/8460E60.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8461D8C.pcm b/data/music/direct_sound_samples/8461D8C.aif
index 5890d84c1..a83f3b0df 100644
--- a/data/music/direct_sound_samples/8461D8C.pcm
+++ b/data/music/direct_sound_samples/8461D8C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84622A4.pcm b/data/music/direct_sound_samples/84622A4.aif
index a51964b80..dfc2746de 100644
--- a/data/music/direct_sound_samples/84622A4.pcm
+++ b/data/music/direct_sound_samples/84622A4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/846286C.pcm b/data/music/direct_sound_samples/846286C.aif
index d91c4fffc..c2b3757b0 100644
--- a/data/music/direct_sound_samples/846286C.pcm
+++ b/data/music/direct_sound_samples/846286C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84637CC.pcm b/data/music/direct_sound_samples/84637CC.aif
index 60e997027..7de586c9b 100644
--- a/data/music/direct_sound_samples/84637CC.pcm
+++ b/data/music/direct_sound_samples/84637CC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8464E2C.pcm b/data/music/direct_sound_samples/8464E2C.aif
index 83005c461..5236141ba 100644
--- a/data/music/direct_sound_samples/8464E2C.pcm
+++ b/data/music/direct_sound_samples/8464E2C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8466388.pcm b/data/music/direct_sound_samples/8466388.aif
index a134afaf5..a7c4e94f8 100644
--- a/data/music/direct_sound_samples/8466388.pcm
+++ b/data/music/direct_sound_samples/8466388.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8466F14.pcm b/data/music/direct_sound_samples/8466F14.aif
index 357b65e8b..bfaa5c196 100644
--- a/data/music/direct_sound_samples/8466F14.pcm
+++ b/data/music/direct_sound_samples/8466F14.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/846A4B8.pcm b/data/music/direct_sound_samples/846A4B8.aif
index a28fe5511..3e76cacdd 100644
--- a/data/music/direct_sound_samples/846A4B8.pcm
+++ b/data/music/direct_sound_samples/846A4B8.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/846C7D4.pcm b/data/music/direct_sound_samples/846C7D4.aif
index 9b770848e..2647c78ec 100644
--- a/data/music/direct_sound_samples/846C7D4.pcm
+++ b/data/music/direct_sound_samples/846C7D4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/846FEA0.pcm b/data/music/direct_sound_samples/846FEA0.aif
index fe0ca6e78..e56df7f60 100644
--- a/data/music/direct_sound_samples/846FEA0.pcm
+++ b/data/music/direct_sound_samples/846FEA0.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84711F0.pcm b/data/music/direct_sound_samples/84711F0.aif
index e3adc06da..8c68a83b3 100644
--- a/data/music/direct_sound_samples/84711F0.pcm
+++ b/data/music/direct_sound_samples/84711F0.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8472700.pcm b/data/music/direct_sound_samples/8472700.aif
index 19e57e7af..a03bafc97 100644
--- a/data/music/direct_sound_samples/8472700.pcm
+++ b/data/music/direct_sound_samples/8472700.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8473B20.pcm b/data/music/direct_sound_samples/8473B20.aif
index d1dad2a0b..d4077b481 100644
--- a/data/music/direct_sound_samples/8473B20.pcm
+++ b/data/music/direct_sound_samples/8473B20.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8474BBC.pcm b/data/music/direct_sound_samples/8474BBC.aif
index 2e4a2cc3a..2ad86876b 100644
--- a/data/music/direct_sound_samples/8474BBC.pcm
+++ b/data/music/direct_sound_samples/8474BBC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8475C18.pcm b/data/music/direct_sound_samples/8475C18.aif
index ee3a7b031..742c4385e 100644
--- a/data/music/direct_sound_samples/8475C18.pcm
+++ b/data/music/direct_sound_samples/8475C18.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/847CBAC.pcm b/data/music/direct_sound_samples/847CBAC.aif
index 76da530f0..004fda6a1 100644
--- a/data/music/direct_sound_samples/847CBAC.pcm
+++ b/data/music/direct_sound_samples/847CBAC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8481130.pcm b/data/music/direct_sound_samples/8481130.aif
index 1e04458cd..dea429a25 100644
--- a/data/music/direct_sound_samples/8481130.pcm
+++ b/data/music/direct_sound_samples/8481130.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84830A0.pcm b/data/music/direct_sound_samples/84830A0.aif
index d128b194f..703f3adbd 100644
--- a/data/music/direct_sound_samples/84830A0.pcm
+++ b/data/music/direct_sound_samples/84830A0.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8483804.pcm b/data/music/direct_sound_samples/8483804.aif
index d0d3f8a7b..f244a9982 100644
--- a/data/music/direct_sound_samples/8483804.pcm
+++ b/data/music/direct_sound_samples/8483804.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8485454.pcm b/data/music/direct_sound_samples/8485454.aif
index 1b53975a1..7270872d6 100644
--- a/data/music/direct_sound_samples/8485454.pcm
+++ b/data/music/direct_sound_samples/8485454.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8486924.pcm b/data/music/direct_sound_samples/8486924.aif
index 427fd9760..b3122457d 100644
--- a/data/music/direct_sound_samples/8486924.pcm
+++ b/data/music/direct_sound_samples/8486924.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8487330.pcm b/data/music/direct_sound_samples/8487330.aif
index bf32dbcf2..09e17f0ca 100644
--- a/data/music/direct_sound_samples/8487330.pcm
+++ b/data/music/direct_sound_samples/8487330.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8488F44.pcm b/data/music/direct_sound_samples/8488F44.aif
index 8d4ad8289..9a39e4653 100644
--- a/data/music/direct_sound_samples/8488F44.pcm
+++ b/data/music/direct_sound_samples/8488F44.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/848A8A4.pcm b/data/music/direct_sound_samples/848A8A4.aif
index 2078953ae..4902f212f 100644
--- a/data/music/direct_sound_samples/848A8A4.pcm
+++ b/data/music/direct_sound_samples/848A8A4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/848BD68.pcm b/data/music/direct_sound_samples/848BD68.aif
index f4680986d..1c0a027f7 100644
--- a/data/music/direct_sound_samples/848BD68.pcm
+++ b/data/music/direct_sound_samples/848BD68.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/848C4A4.pcm b/data/music/direct_sound_samples/848C4A4.aif
index 87dcae2f4..2e09d0822 100644
--- a/data/music/direct_sound_samples/848C4A4.pcm
+++ b/data/music/direct_sound_samples/848C4A4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/848E094.pcm b/data/music/direct_sound_samples/848E094.aif
index 1fbc1aa80..49f24936f 100644
--- a/data/music/direct_sound_samples/848E094.pcm
+++ b/data/music/direct_sound_samples/848E094.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/848F448.pcm b/data/music/direct_sound_samples/848F448.aif
index 2122942bd..5c55d91ed 100644
--- a/data/music/direct_sound_samples/848F448.pcm
+++ b/data/music/direct_sound_samples/848F448.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8491ACC.pcm b/data/music/direct_sound_samples/8491ACC.aif
index 057f945a3..ece919ea5 100644
--- a/data/music/direct_sound_samples/8491ACC.pcm
+++ b/data/music/direct_sound_samples/8491ACC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8492D10.pcm b/data/music/direct_sound_samples/8492D10.aif
index 7a34cedb0..9b4669696 100644
--- a/data/music/direct_sound_samples/8492D10.pcm
+++ b/data/music/direct_sound_samples/8492D10.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8493D20.pcm b/data/music/direct_sound_samples/8493D20.aif
index c64e6c3ce..515818a4d 100644
--- a/data/music/direct_sound_samples/8493D20.pcm
+++ b/data/music/direct_sound_samples/8493D20.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8495028.pcm b/data/music/direct_sound_samples/8495028.aif
index bc66bdd77..102830efa 100644
--- a/data/music/direct_sound_samples/8495028.pcm
+++ b/data/music/direct_sound_samples/8495028.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8497134.pcm b/data/music/direct_sound_samples/8497134.aif
index f29c9e89a..09fe6f12e 100644
--- a/data/music/direct_sound_samples/8497134.pcm
+++ b/data/music/direct_sound_samples/8497134.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8499110.pcm b/data/music/direct_sound_samples/8499110.aif
index b83b96989..556be0238 100644
--- a/data/music/direct_sound_samples/8499110.pcm
+++ b/data/music/direct_sound_samples/8499110.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/849B320.pcm b/data/music/direct_sound_samples/849B320.aif
index 660be072f..dd80b1185 100644
--- a/data/music/direct_sound_samples/849B320.pcm
+++ b/data/music/direct_sound_samples/849B320.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/849BAEC.pcm b/data/music/direct_sound_samples/849BAEC.aif
index ca72d5772..9d00ecae6 100644
--- a/data/music/direct_sound_samples/849BAEC.pcm
+++ b/data/music/direct_sound_samples/849BAEC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/849D45C.pcm b/data/music/direct_sound_samples/849D45C.aif
index f2eb22fad..ebd46eeaa 100644
--- a/data/music/direct_sound_samples/849D45C.pcm
+++ b/data/music/direct_sound_samples/849D45C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/849F40C.pcm b/data/music/direct_sound_samples/849F40C.aif
index 0ec34c584..455ced13e 100644
--- a/data/music/direct_sound_samples/849F40C.pcm
+++ b/data/music/direct_sound_samples/849F40C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A26EC.pcm b/data/music/direct_sound_samples/84A26EC.aif
index c8fe4e879..083c45e3d 100644
--- a/data/music/direct_sound_samples/84A26EC.pcm
+++ b/data/music/direct_sound_samples/84A26EC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A311C.pcm b/data/music/direct_sound_samples/84A311C.aif
index e1e748b62..1bd43ca92 100644
--- a/data/music/direct_sound_samples/84A311C.pcm
+++ b/data/music/direct_sound_samples/84A311C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A3B50.pcm b/data/music/direct_sound_samples/84A3B50.aif
index c4df672ca..6a11945c5 100644
--- a/data/music/direct_sound_samples/84A3B50.pcm
+++ b/data/music/direct_sound_samples/84A3B50.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A5690.pcm b/data/music/direct_sound_samples/84A5690.aif
index 586bd9c85..a0fb49f89 100644
--- a/data/music/direct_sound_samples/84A5690.pcm
+++ b/data/music/direct_sound_samples/84A5690.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8654C20.pcm b/data/music/direct_sound_samples/84A5F58.aif
index 6a59aed57..6d6c2e998 100644
--- a/data/music/direct_sound_samples/8654C20.pcm
+++ b/data/music/direct_sound_samples/84A5F58.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A7328.pcm b/data/music/direct_sound_samples/84A7328.aif
index b5aac0223..9521d0b6e 100644
--- a/data/music/direct_sound_samples/84A7328.pcm
+++ b/data/music/direct_sound_samples/84A7328.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A7F38.pcm b/data/music/direct_sound_samples/84A7F38.aif
index 398d8ee40..2519572e2 100644
--- a/data/music/direct_sound_samples/84A7F38.pcm
+++ b/data/music/direct_sound_samples/84A7F38.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A8AC8.pcm b/data/music/direct_sound_samples/84A8AC8.aif
index 3947e5b43..d411e6612 100644
--- a/data/music/direct_sound_samples/84A8AC8.pcm
+++ b/data/music/direct_sound_samples/84A8AC8.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A9564.pcm b/data/music/direct_sound_samples/84A9564.aif
index fd520a806..3bc1aa839 100644
--- a/data/music/direct_sound_samples/84A9564.pcm
+++ b/data/music/direct_sound_samples/84A9564.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A9EAC.pcm b/data/music/direct_sound_samples/84A9EAC.aif
index d15e3a655..3bacf3676 100644
--- a/data/music/direct_sound_samples/84A9EAC.pcm
+++ b/data/music/direct_sound_samples/84A9EAC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84AA8F4.pcm b/data/music/direct_sound_samples/84AA8F4.aif
index 51c902d37..5ddaa153d 100644
--- a/data/music/direct_sound_samples/84AA8F4.pcm
+++ b/data/music/direct_sound_samples/84AA8F4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8639898.pcm b/data/music/direct_sound_samples/8639898.aif
index 04f69f9ef..f0d38e75a 100644
--- a/data/music/direct_sound_samples/8639898.pcm
+++ b/data/music/direct_sound_samples/8639898.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8639EF8.pcm b/data/music/direct_sound_samples/8639EF8.aif
index 2292e6bee..74c129073 100644
--- a/data/music/direct_sound_samples/8639EF8.pcm
+++ b/data/music/direct_sound_samples/8639EF8.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863A3DC.pcm b/data/music/direct_sound_samples/863A3DC.aif
index 3d0d88aca..9eb517c2c 100644
--- a/data/music/direct_sound_samples/863A3DC.pcm
+++ b/data/music/direct_sound_samples/863A3DC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863AD2C.aif b/data/music/direct_sound_samples/863AD2C.aif
new file mode 100644
index 000000000..01cf6d960
--- /dev/null
+++ b/data/music/direct_sound_samples/863AD2C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863AD2C.pcm b/data/music/direct_sound_samples/863AD2C.pcm
deleted file mode 100644
index 0517f957e..000000000
--- a/data/music/direct_sound_samples/863AD2C.pcm
+++ /dev/null
Binary files differ
diff --git a/data/music/direct_sound_samples/863B79C.pcm b/data/music/direct_sound_samples/863B79C.aif
index 85ee88b95..fd72512cf 100644
--- a/data/music/direct_sound_samples/863B79C.pcm
+++ b/data/music/direct_sound_samples/863B79C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863BABC.pcm b/data/music/direct_sound_samples/863BABC.aif
index 0002b4212..30b226eed 100644
--- a/data/music/direct_sound_samples/863BABC.pcm
+++ b/data/music/direct_sound_samples/863BABC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863C744.pcm b/data/music/direct_sound_samples/863C744.aif
index 5213e938f..9304e6d3d 100644
--- a/data/music/direct_sound_samples/863C744.pcm
+++ b/data/music/direct_sound_samples/863C744.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863CD64.pcm b/data/music/direct_sound_samples/863CD64.aif
index 21c510746..1d99a3a93 100644
--- a/data/music/direct_sound_samples/863CD64.pcm
+++ b/data/music/direct_sound_samples/863CD64.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863D0EC.pcm b/data/music/direct_sound_samples/863D0EC.aif
index 23242d02d..6414161a2 100644
--- a/data/music/direct_sound_samples/863D0EC.pcm
+++ b/data/music/direct_sound_samples/863D0EC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863DED0.pcm b/data/music/direct_sound_samples/863DED0.aif
index b22b99cc3..334d79558 100644
--- a/data/music/direct_sound_samples/863DED0.pcm
+++ b/data/music/direct_sound_samples/863DED0.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863E840.pcm b/data/music/direct_sound_samples/863E840.aif
index ef2c8d9fd..545bd1292 100644
--- a/data/music/direct_sound_samples/863E840.pcm
+++ b/data/music/direct_sound_samples/863E840.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863EBDC.pcm b/data/music/direct_sound_samples/863EBDC.aif
index 0079314fc..f417ef4f5 100644
--- a/data/music/direct_sound_samples/863EBDC.pcm
+++ b/data/music/direct_sound_samples/863EBDC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/863F390.pcm b/data/music/direct_sound_samples/863F390.aif
index 81e568a9e..e242b6864 100644
--- a/data/music/direct_sound_samples/863F390.pcm
+++ b/data/music/direct_sound_samples/863F390.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/86400EC.pcm b/data/music/direct_sound_samples/86400EC.aif
index 3eb466d05..2b51201a4 100644
--- a/data/music/direct_sound_samples/86400EC.pcm
+++ b/data/music/direct_sound_samples/86400EC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8640330.pcm b/data/music/direct_sound_samples/8640330.aif
index be9526e6d..1d3ff6e89 100644
--- a/data/music/direct_sound_samples/8640330.pcm
+++ b/data/music/direct_sound_samples/8640330.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8641170.pcm b/data/music/direct_sound_samples/8641170.aif
index 9af693e42..0ca3c2f05 100644
--- a/data/music/direct_sound_samples/8641170.pcm
+++ b/data/music/direct_sound_samples/8641170.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8641AC4.pcm b/data/music/direct_sound_samples/8641AC4.aif
index cf65f02e3..71d4987d6 100644
--- a/data/music/direct_sound_samples/8641AC4.pcm
+++ b/data/music/direct_sound_samples/8641AC4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8641E18.pcm b/data/music/direct_sound_samples/8641E18.aif
index 91e905c4b..17db9c813 100644
--- a/data/music/direct_sound_samples/8641E18.pcm
+++ b/data/music/direct_sound_samples/8641E18.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864244C.pcm b/data/music/direct_sound_samples/864244C.aif
index 4026a26e0..a6c492d2a 100644
--- a/data/music/direct_sound_samples/864244C.pcm
+++ b/data/music/direct_sound_samples/864244C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/86430B8.pcm b/data/music/direct_sound_samples/86430B8.aif
index a8512581e..f44101b23 100644
--- a/data/music/direct_sound_samples/86430B8.pcm
+++ b/data/music/direct_sound_samples/86430B8.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8643650.pcm b/data/music/direct_sound_samples/8643650.aif
index 7034ef4b6..f6f7993d9 100644
--- a/data/music/direct_sound_samples/8643650.pcm
+++ b/data/music/direct_sound_samples/8643650.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8644154.pcm b/data/music/direct_sound_samples/8644154.aif
index 1a22423a3..effcd7fc0 100644
--- a/data/music/direct_sound_samples/8644154.pcm
+++ b/data/music/direct_sound_samples/8644154.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8644758.pcm b/data/music/direct_sound_samples/8644758.aif
index d658afb9d..62f9493fd 100644
--- a/data/music/direct_sound_samples/8644758.pcm
+++ b/data/music/direct_sound_samples/8644758.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8644950.pcm b/data/music/direct_sound_samples/8644950.aif
index 42f745867..cacf6eca4 100644
--- a/data/music/direct_sound_samples/8644950.pcm
+++ b/data/music/direct_sound_samples/8644950.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/86452B4.pcm b/data/music/direct_sound_samples/86452B4.aif
index 4ac308ea1..eccd9467f 100644
--- a/data/music/direct_sound_samples/86452B4.pcm
+++ b/data/music/direct_sound_samples/86452B4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8646240.pcm b/data/music/direct_sound_samples/8646240.aif
index dd82ac427..548e740c8 100644
--- a/data/music/direct_sound_samples/8646240.pcm
+++ b/data/music/direct_sound_samples/8646240.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8646878.pcm b/data/music/direct_sound_samples/8646878.aif
index 67a93df77..fdd27e00b 100644
--- a/data/music/direct_sound_samples/8646878.pcm
+++ b/data/music/direct_sound_samples/8646878.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864734C.pcm b/data/music/direct_sound_samples/864734C.aif
index 5766cf85e..1119bd5a8 100644
--- a/data/music/direct_sound_samples/864734C.pcm
+++ b/data/music/direct_sound_samples/864734C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8648290.pcm b/data/music/direct_sound_samples/8648290.aif
index 75e1339a7..f96f8853b 100644
--- a/data/music/direct_sound_samples/8648290.pcm
+++ b/data/music/direct_sound_samples/8648290.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8648808.pcm b/data/music/direct_sound_samples/8648808.aif
index 8aa252f19..6c5cb14b1 100644
--- a/data/music/direct_sound_samples/8648808.pcm
+++ b/data/music/direct_sound_samples/8648808.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8649654.pcm b/data/music/direct_sound_samples/8649654.aif
index 4b04e6f2d..8cbe59d3e 100644
--- a/data/music/direct_sound_samples/8649654.pcm
+++ b/data/music/direct_sound_samples/8649654.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864A55C.aif b/data/music/direct_sound_samples/864A55C.aif
new file mode 100644
index 000000000..c037ed4af
--- /dev/null
+++ b/data/music/direct_sound_samples/864A55C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864A55C.pcm b/data/music/direct_sound_samples/864A55C.pcm
deleted file mode 100644
index 01f1111a2..000000000
--- a/data/music/direct_sound_samples/864A55C.pcm
+++ /dev/null
Binary files differ
diff --git a/data/music/direct_sound_samples/864B030.pcm b/data/music/direct_sound_samples/864B030.aif
index 4b9b39249..56eec193f 100644
--- a/data/music/direct_sound_samples/864B030.pcm
+++ b/data/music/direct_sound_samples/864B030.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864BBC4.pcm b/data/music/direct_sound_samples/864BBC4.aif
index 280e12d97..d14f83ba7 100644
--- a/data/music/direct_sound_samples/864BBC4.pcm
+++ b/data/music/direct_sound_samples/864BBC4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864C59C.pcm b/data/music/direct_sound_samples/864C59C.aif
index 218134fb3..5d6ae2282 100644
--- a/data/music/direct_sound_samples/864C59C.pcm
+++ b/data/music/direct_sound_samples/864C59C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864CBDC.pcm b/data/music/direct_sound_samples/864CBDC.aif
index aebbf4c85..e69605825 100644
--- a/data/music/direct_sound_samples/864CBDC.pcm
+++ b/data/music/direct_sound_samples/864CBDC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864D6BC.pcm b/data/music/direct_sound_samples/864D6BC.aif
index 1ec2c5ff0..a584d9dc3 100644
--- a/data/music/direct_sound_samples/864D6BC.pcm
+++ b/data/music/direct_sound_samples/864D6BC.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864DCF8.pcm b/data/music/direct_sound_samples/864DCF8.aif
index c2237e5f9..37f1be4b1 100644
--- a/data/music/direct_sound_samples/864DCF8.pcm
+++ b/data/music/direct_sound_samples/864DCF8.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864E410.pcm b/data/music/direct_sound_samples/864E410.aif
index 774ee0b96..d27b41508 100644
--- a/data/music/direct_sound_samples/864E410.pcm
+++ b/data/music/direct_sound_samples/864E410.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864ED4C.pcm b/data/music/direct_sound_samples/864ED4C.aif
index 8de80523e..28de72385 100644
--- a/data/music/direct_sound_samples/864ED4C.pcm
+++ b/data/music/direct_sound_samples/864ED4C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864F508.pcm b/data/music/direct_sound_samples/864F508.aif
index d0280ac40..db5bae244 100644
--- a/data/music/direct_sound_samples/864F508.pcm
+++ b/data/music/direct_sound_samples/864F508.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/864FA6C.pcm b/data/music/direct_sound_samples/864FA6C.aif
index 2d41c5a92..01a7ceed2 100644
--- a/data/music/direct_sound_samples/864FA6C.pcm
+++ b/data/music/direct_sound_samples/864FA6C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/86507E0.pcm b/data/music/direct_sound_samples/86507E0.aif
index 64e93a9cb..5ad2c43ee 100644
--- a/data/music/direct_sound_samples/86507E0.pcm
+++ b/data/music/direct_sound_samples/86507E0.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8650C5C.pcm b/data/music/direct_sound_samples/8650C5C.aif
index 7bcc2858a..95670cf0a 100644
--- a/data/music/direct_sound_samples/8650C5C.pcm
+++ b/data/music/direct_sound_samples/8650C5C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8651148.pcm b/data/music/direct_sound_samples/8651148.aif
index 77179de01..5c48c39f5 100644
--- a/data/music/direct_sound_samples/8651148.pcm
+++ b/data/music/direct_sound_samples/8651148.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8651910.pcm b/data/music/direct_sound_samples/8651910.aif
index ffcc91010..800835073 100644
--- a/data/music/direct_sound_samples/8651910.pcm
+++ b/data/music/direct_sound_samples/8651910.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/865250C.pcm b/data/music/direct_sound_samples/865250C.aif
index fa106dd16..2327b6d65 100644
--- a/data/music/direct_sound_samples/865250C.pcm
+++ b/data/music/direct_sound_samples/865250C.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8652884.pcm b/data/music/direct_sound_samples/8652884.aif
index b783dc1d3..eb49b5de7 100644
--- a/data/music/direct_sound_samples/8652884.pcm
+++ b/data/music/direct_sound_samples/8652884.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8653040.pcm b/data/music/direct_sound_samples/8653040.aif
index f352ca05f..ed129e539 100644
--- a/data/music/direct_sound_samples/8653040.pcm
+++ b/data/music/direct_sound_samples/8653040.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8653CA4.pcm b/data/music/direct_sound_samples/8653CA4.aif
index 166a2a7ef..74d4bcf4a 100644
--- a/data/music/direct_sound_samples/8653CA4.pcm
+++ b/data/music/direct_sound_samples/8653CA4.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/8654170.pcm b/data/music/direct_sound_samples/8654170.aif
index 885a6923c..0fc92a67c 100644
--- a/data/music/direct_sound_samples/8654170.pcm
+++ b/data/music/direct_sound_samples/8654170.aif
Binary files differ
diff --git a/data/music/direct_sound_samples/84A5F58.pcm b/data/music/direct_sound_samples/8654C20.aif
index 6a59aed57..6d6c2e998 100644
--- a/data/music/direct_sound_samples/84A5F58.pcm
+++ b/data/music/direct_sound_samples/8654C20.aif
Binary files differ
diff --git a/tools/aif2pcm/LICENSE b/tools/aif2pcm/LICENSE
new file mode 100644
index 000000000..60c9e63c4
--- /dev/null
+++ b/tools/aif2pcm/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2016 huderlem
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/aif2pcm/Makefile b/tools/aif2pcm/Makefile
new file mode 100644
index 000000000..ec6343b12
--- /dev/null
+++ b/tools/aif2pcm/Makefile
@@ -0,0 +1,15 @@
+CC = gcc
+
+CFLAGS = -Wall -Wextra -Wno-switch -std=c11 -O2
+
+LIBS = -lm
+
+SRCS = main.c extended.c
+
+.PHONY: clean
+
+aif2pcm: $(SRCS)
+ $(CC) $(CFLAGS) $(SRCS) -o $@ $(LIBS)
+
+clean:
+ $(RM) aif2pcm aif2pcm.exe
diff --git a/tools/aif2pcm/extended.c b/tools/aif2pcm/extended.c
new file mode 100644
index 000000000..067019661
--- /dev/null
+++ b/tools/aif2pcm/extended.c
@@ -0,0 +1,171 @@
+/* $Id: extended.c,v 1.8 2006/12/23 11:17:49 toad32767 Exp $ */
+/*-
+ * Copyright (c) 2005, 2006 by Marco Trillo <marcotrillo@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any
+ * person obtaining a copy of this software and associated
+ * documentation files (the "Software"), to deal in the
+ * Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the
+ * Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice
+ * shall be included in all copies or substantial portions of
+ * the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+ * OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <math.h>
+#include <string.h>
+
+/*
+ * Infinite & NAN values
+ * for non-IEEE systems
+ */
+#ifndef HUGE_VAL
+#ifdef HUGE
+#define INFINITE_VALUE HUGE
+#define NAN_VALUE HUGE
+#endif
+#else
+#define INFINITE_VALUE HUGE_VAL
+#define NAN_VALUE HUGE_VAL
+#endif
+
+/*
+ * IEEE 754 Extended Precision
+ *
+ * Implementation here is the 80-bit extended precision
+ * format of Motorola 68881, Motorola 68882 and Motorola
+ * 68040 FPUs, as well as Intel 80x87 FPUs.
+ *
+ * See:
+ * http://www.freescale.com/files/32bit/doc/fact_sheet/BR509.pdf
+ */
+/*
+ * Exponent range: [-16383,16383]
+ * Precision for mantissa: 64 bits with no hidden bit
+ * Bias: 16383
+ */
+
+/*
+ * Write IEEE Extended Precision Numbers
+ */
+void
+ieee754_write_extended(double in, unsigned char* out)
+{
+ int sgn, exp, shift;
+ double fraction, t;
+ unsigned int lexp, hexp;
+ unsigned long low, high;
+
+ if (in == 0.0) {
+ memset(out, 0, 10);
+ return;
+ }
+ if (in < 0.0) {
+ in = fabs(in);
+ sgn = 1;
+ } else
+ sgn = 0;
+
+ fraction = frexp(in, &exp);
+
+ if (exp == 0 || exp > 16384) {
+ if (exp > 16384) /* infinite value */
+ low = high = 0;
+ else {
+ low = 0x80000000;
+ high = 0;
+ }
+ exp = 32767;
+ goto done;
+ }
+ fraction = ldexp(fraction, 32);
+ t = floor(fraction);
+ low = (unsigned long) t;
+ fraction -= t;
+ t = floor(ldexp(fraction, 32));
+ high = (unsigned long) t;
+
+ /* Convert exponents < -16382 to -16382 (then they will be
+ * stored as -16383) */
+ if (exp < -16382) {
+ shift = 0 - exp - 16382;
+ high >>= shift;
+ high |= (low << (32 - shift));
+ low >>= shift;
+ exp = -16382;
+ }
+ exp += 16383 - 1; /* bias */
+
+done:
+ lexp = ((unsigned int) exp) >> 8;
+ hexp = ((unsigned int) exp) & 0xFF;
+
+ /* big endian */
+ out[0] = ((unsigned char) sgn) << 7;
+ out[0] |= (unsigned char) lexp;
+ out[1] = (unsigned char) hexp;
+ out[2] = (unsigned char) (low >> 24);
+ out[3] = (unsigned char) ((low >> 16) & 0xFF);
+ out[4] = (unsigned char) ((low >> 8) & 0xFF);
+ out[5] = (unsigned char) (low & 0xFF);
+ out[6] = (unsigned char) (high >> 24);
+ out[7] = (unsigned char) ((high >> 16) & 0xFF);
+ out[8] = (unsigned char) ((high >> 8) & 0xFF);
+ out[9] = (unsigned char) (high & 0xFF);
+
+ return;
+}
+
+
+/*
+ * Read IEEE Extended Precision Numbers
+ */
+double
+ieee754_read_extended(unsigned char* in)
+{
+ int sgn, exp;
+ unsigned long low, high;
+ double out;
+
+ /* Extract the components from the big endian buffer */
+ sgn = (int) (in[0] >> 7);
+ exp = ((int) (in[0] & 0x7F) << 8) | ((int) in[1]);
+ low = (((unsigned long) in[2]) << 24)
+ | (((unsigned long) in[3]) << 16)
+ | (((unsigned long) in[4]) << 8) | (unsigned long) in[5];
+ high = (((unsigned long) in[6]) << 24)
+ | (((unsigned long) in[7]) << 16)
+ | (((unsigned long) in[8]) << 8) | (unsigned long) in[9];
+
+ if (exp == 0 && low == 0 && high == 0)
+ return (sgn ? -0.0 : 0.0);
+
+ switch (exp) {
+ case 32767:
+ if (low == 0 && high == 0)
+ return (sgn ? -INFINITE_VALUE : INFINITE_VALUE);
+ else
+ return (sgn ? -NAN_VALUE : NAN_VALUE);
+ default:
+ exp -= 16383; /* unbias exponent */
+
+ }
+
+ out = ldexp((double) low, -31 + exp);
+ out += ldexp((double) high, -63 + exp);
+
+ return (sgn ? -out : out);
+}
diff --git a/tools/aif2pcm/main.c b/tools/aif2pcm/main.c
new file mode 100644
index 000000000..31842ff8e
--- /dev/null
+++ b/tools/aif2pcm/main.c
@@ -0,0 +1,554 @@
+// Copyright(c) 2016 huderlem
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+/* extended.c */
+void ieee754_write_extended (double, unsigned char*);
+double ieee754_read_extended (unsigned char*);
+
+#ifdef _MSC_VER
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, __VA_ARGS__,); \
+ exit(1); \
+} while (0)
+
+#else
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#endif // _MSC_VER
+
+typedef struct {
+ unsigned long num_samples;
+ char *samples;
+ unsigned char midi_note;
+ unsigned long loop_offset;
+ double sample_rate;
+} AifData;
+
+
+char * get_file_extension(char *filename)
+{
+ char *dot = strrchr(filename, '.');
+ if (!dot || dot == filename)
+ {
+ FATAL_ERROR("Input file has no file extension.\n");
+ }
+
+ return dot + 1;
+}
+
+void change_file_extension(char *filename, const char *new_extension)
+{
+ char *dot = strrchr(filename, '.');
+ if (!dot || dot == filename)
+ {
+ FATAL_ERROR("Input file has no file extension.\n");
+ }
+
+ memcpy(dot + 1, new_extension, 3);
+}
+
+AifData *read_aif(char * aif_file_data, unsigned long aif_file_data_size)
+{
+ AifData *aif_data = (AifData *)malloc(sizeof(AifData));
+
+ unsigned long pos = 0;
+ char chunk_name[5]; chunk_name[4] = '\0';
+ char chunk_type[5]; chunk_type[4] = '\0';
+
+ // Check for FORM Chunk
+ memcpy(chunk_name, aif_file_data + pos, 4);
+ pos += 4;
+ if (strcmp(chunk_name, "FORM") != 0)
+ {
+ FATAL_ERROR("Input .aif file has invalid header Chunk '%s'!\n", chunk_name);
+ }
+
+ // Read size of whole file.
+ unsigned long whole_chunk_size = aif_file_data[pos++] << 24;
+ whole_chunk_size |= (aif_file_data[pos++] << 16);
+ whole_chunk_size |= (aif_file_data[pos++] << 8);
+ whole_chunk_size |= (unsigned char)aif_file_data[pos++];
+
+ unsigned long expected_whole_chunk_size = aif_file_data_size - 8;
+ if (whole_chunk_size != expected_whole_chunk_size)
+ {
+ FATAL_ERROR("FORM Chunk ckSize '%lu' doesn't match actual size '%lu'!\n", whole_chunk_size, expected_whole_chunk_size);
+ }
+
+ // Check for AIFF Form Type
+ memcpy(chunk_type, aif_file_data + pos, 4);
+ pos += 4;
+ if (strcmp(chunk_type, "AIFF") != 0)
+ {
+ FATAL_ERROR("FORM Type is '%s', but it must be AIFF!", chunk_type);
+ }
+
+ unsigned long num_sample_frames = 0;
+
+ // Read all the Chunks to populate the AifData struct.
+ while (pos < aif_file_data_size)
+ {
+ // Read Chunk id
+ memcpy(chunk_name, aif_file_data + pos, 4);
+ pos += 4;
+
+ unsigned long chunk_size = (aif_file_data[pos++] << 24);
+ chunk_size |= (aif_file_data[pos++] << 16);
+ chunk_size |= (aif_file_data[pos++] << 8);
+ chunk_size |= aif_file_data[pos++];
+
+ if (strcmp(chunk_name, "COMM") == 0)
+ {
+ short num_channels = (aif_file_data[pos++] << 8);
+ num_channels |= (unsigned char)aif_file_data[pos++];
+ if (num_channels != 1)
+ {
+ FATAL_ERROR("numChannels (%d) in the COMM Chunk must be 1!\n", num_channels);
+ }
+
+ num_sample_frames = (aif_file_data[pos++] << 24);
+ num_sample_frames |= (aif_file_data[pos++] << 16);
+ num_sample_frames |= (aif_file_data[pos++] << 8);
+ num_sample_frames |= (unsigned char)aif_file_data[pos++];
+
+ short sample_size = (aif_file_data[pos++] << 8);
+ sample_size |= (unsigned char)aif_file_data[pos++];
+ if (sample_size != 8)
+ {
+ FATAL_ERROR("sampleSize (%d) in the COMM Chunk must be 8!\n", sample_size);
+ }
+
+ double sample_rate = ieee754_read_extended((unsigned char*)(aif_file_data + pos));
+ pos += 10;
+
+ aif_data->num_samples = num_sample_frames;
+ aif_data->sample_rate = sample_rate;
+ }
+ else if (strcmp(chunk_name, "MARK") == 0)
+ {
+ unsigned short num_markers = (aif_file_data[pos++] << 8);
+ num_markers |= (unsigned char)aif_file_data[pos++];
+
+ unsigned long loop_start = 0;
+
+ // Read each marker and look for the "START" marker.
+ for (int i = 0; i < num_markers; i++)
+ {
+ unsigned short marker_id = (aif_file_data[pos++] << 8);
+ marker_id |= (unsigned char)aif_file_data[pos++];
+
+ unsigned long marker_position = (aif_file_data[pos++] << 24);
+ marker_position |= (aif_file_data[pos++] << 16);
+ marker_position |= (aif_file_data[pos++] << 8);
+ marker_position |= (unsigned char)aif_file_data[pos++];
+
+ // Marker id is a pascal-style string.
+ unsigned char marker_name_size = aif_file_data[pos++];
+ char *marker_name = (char *)malloc((marker_name_size + 1) * sizeof(char));
+ memcpy(marker_name, aif_file_data + pos, marker_name_size);
+ marker_name[marker_name_size] = '\0';
+ pos += marker_name_size;
+
+ if (strcmp(marker_name, "START") == 0)
+ {
+ loop_start = marker_position;
+ }
+
+ free(marker_name);
+ }
+
+ aif_data->loop_offset = loop_start;
+ }
+ else if (strcmp(chunk_name, "INST") == 0)
+ {
+ unsigned char midi_note = (unsigned char)aif_file_data[pos++];
+
+ aif_data->midi_note = midi_note;
+
+ // Skip over data we don't need.
+ pos += 19;
+ }
+ else if (strcmp(chunk_name, "SSND") == 0)
+ {
+ // SKip offset and blockSize
+ pos += 8;
+
+ char *sample_data = (char *)malloc(num_sample_frames * sizeof(char));
+ memcpy(sample_data, aif_file_data + pos, num_sample_frames);
+
+ aif_data->samples = sample_data;
+ pos += num_sample_frames;
+ }
+ else
+ {
+ // Skip over stuff we unsupported chunks.
+ pos += chunk_size;
+ }
+ }
+
+ return aif_data;
+}
+
+// Reads an .aif file and produces a .pcm file containing an array of 8-bit samples.
+void aif2pcm(const char *aif_filename)
+{
+ // Get .pcm filename.
+ char pcm_filename[strlen(aif_filename)];
+ strcpy(pcm_filename, aif_filename);
+ change_file_extension(pcm_filename, "pcm");
+
+ // Open the given .aif file so we can read its contents.
+ FILE *aif_file;
+ aif_file = fopen(aif_filename, "rb");
+ if (!aif_file)
+ {
+ FATAL_ERROR("Failed to open '%s' for reading!\n", aif_filename);
+ }
+
+ // Get file length.
+ fseek(aif_file, 0, SEEK_END);
+ unsigned long aif_file_length = ftell(aif_file);
+ fseek(aif_file, 0, SEEK_SET);
+
+ // Create buffer for samples.
+ char *aif_file_data = (char *)malloc(aif_file_length * sizeof(char));
+ if (!aif_file_data)
+ {
+ FATAL_ERROR("Failed to allocate buffer for aif file data!\n");
+ }
+
+ // Populate buffer from file.
+ unsigned long read = fread(aif_file_data, aif_file_length, 1, aif_file);
+ fclose(aif_file);
+ if (read <= 0)
+ {
+ FATAL_ERROR("Failed to read data from '%s'!\n", aif_filename);
+ }
+
+ AifData *aif_data = read_aif(aif_file_data, aif_file_length);
+
+ // Write the output .pcm file
+ FILE *pcm_file;
+ pcm_file = fopen(pcm_filename, "wb");
+ fwrite(aif_data->samples, aif_data->num_samples, 1, pcm_file);
+ fclose(pcm_file);
+
+ free(aif_data->samples);
+ free(aif_data);
+ free(aif_file_data);
+}
+
+// Reads a .pcm file containing an array of 8-bit samples and produces an .aif file.
+// See http://www-mmsp.ece.mcgill.ca/documents/audioformats/aiff/Docs/AIFF-1.3.pdf for .aif file specification.
+void pcm2aif(const char *pcm_filename, char base_note, long pitch_adjust, long loop_start)
+{
+ // Get .aif filename.
+ char aif_filename[strlen(pcm_filename)];
+ strcpy(aif_filename, pcm_filename);
+ change_file_extension(aif_filename, "aif");
+
+ // Open the given .pcm file so we can read its 8-bit samples.
+ FILE *pcm_file;
+ pcm_file = fopen(pcm_filename, "rb");
+ if (!pcm_file)
+ {
+ FATAL_ERROR("Failed to open '%s' for reading!\n", pcm_filename);
+ }
+
+ // Get file length.
+ fseek(pcm_file, 0, SEEK_END);
+ unsigned long num_samples = ftell(pcm_file);
+ fseek(pcm_file, 0, SEEK_SET);
+
+ unsigned long num_samples_extended = num_samples * 1;
+
+ // Create buffer for samples.
+ signed char *pcm_samples = (signed char *)malloc(num_samples_extended * sizeof(signed char));
+ if (!pcm_samples)
+ {
+ FATAL_ERROR("Failed to allocate buffer for pcm samples!\n");
+ }
+
+ // Populate buffer from file.
+ unsigned long read = fread(pcm_samples, num_samples, 1, pcm_file);
+ fclose(pcm_file);
+ if (read <= 0)
+ {
+ FATAL_ERROR("Failed to read data from '%s'!\n", pcm_filename);
+ }
+
+ // Allocate buffer for output .aif file.
+ unsigned long aif_file_size = 54 + 60 + num_samples_extended;
+ char *aif_buffer = (char *)malloc(aif_file_size * sizeof(char));
+ if (!aif_buffer)
+ {
+ FATAL_ERROR("Failed to allocate buffer for aif file!\n");
+ }
+
+ long pos = 0;
+
+ // First, write the FORM header chunk.
+ // FORM Chunk ckID
+ aif_buffer[pos++] = 'F';
+ aif_buffer[pos++] = 'O';
+ aif_buffer[pos++] = 'R';
+ aif_buffer[pos++] = 'M';
+
+ // FORM Chunk ckSize
+ unsigned long data_size = aif_file_size - 8;
+ aif_buffer[pos++] = ((data_size >> 24) & 0xFF);
+ aif_buffer[pos++] = ((data_size >> 16) & 0xFF);
+ aif_buffer[pos++] = ((data_size >> 8) & 0xFF);
+ aif_buffer[pos++] = (data_size & 0xFF);
+
+ // FORM Chunk formType
+ aif_buffer[pos++] = 'A';
+ aif_buffer[pos++] = 'I';
+ aif_buffer[pos++] = 'F';
+ aif_buffer[pos++] = 'F';
+
+ // Next, write the Common Chunk
+ // Common Chunk ckID
+ aif_buffer[pos++] = 'C';
+ aif_buffer[pos++] = 'O';
+ aif_buffer[pos++] = 'M';
+ aif_buffer[pos++] = 'M';
+
+ // Common Chunk ckSize
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 18;
+
+ // Common Chunk numChannels
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 1; // 1 channel
+
+ // Common Chunk numSampleFrames
+ aif_buffer[pos++] = ((num_samples_extended >> 24) & 0xFF);
+ aif_buffer[pos++] = ((num_samples_extended >> 16) & 0xFF);
+ aif_buffer[pos++] = ((num_samples_extended >> 8) & 0xFF);
+ aif_buffer[pos++] = (num_samples_extended & 0xFF);
+
+ // Common Chunk sampleSize
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 8; // 8 bits per sample
+
+ // Common Chunk sampleRate
+ double sample_rate = pitch_adjust / 1024.0;
+ unsigned char sample_rate_buffer[10];
+ ieee754_write_extended(sample_rate, sample_rate_buffer);
+ for (int i = 0; i < 10; i++)
+ {
+ aif_buffer[pos++] = sample_rate_buffer[i];
+ }
+
+ // Marker Chunk ckID
+ aif_buffer[pos++] = 'M';
+ aif_buffer[pos++] = 'A';
+ aif_buffer[pos++] = 'R';
+ aif_buffer[pos++] = 'K';
+
+ // Marker Chunk ckSize
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 24;
+
+ // Marker Chunk numMarkers
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 2;
+
+ // Marker loop start
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 1; // id = 1
+
+ aif_buffer[pos++] = ((loop_start >> 24) & 0xFF);
+ aif_buffer[pos++] = ((loop_start >> 16) & 0xFF);
+ aif_buffer[pos++] = ((loop_start >> 8) & 0xFF);
+ aif_buffer[pos++] = (loop_start & 0xFF); // position
+
+ aif_buffer[pos++] = 5; // pascal-style string length
+ aif_buffer[pos++] = 'S';
+ aif_buffer[pos++] = 'T';
+ aif_buffer[pos++] = 'A';
+ aif_buffer[pos++] = 'R';
+ aif_buffer[pos++] = 'T'; // markerName
+
+ // Marker loop end
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 2; // id = 2
+
+ long loop_end = num_samples;
+ aif_buffer[pos++] = ((loop_end >> 24) & 0xFF);
+ aif_buffer[pos++] = ((loop_end >> 16) & 0xFF);
+ aif_buffer[pos++] = ((loop_end >> 8) & 0xFF);
+ aif_buffer[pos++] = (loop_end & 0xFF); // position
+
+ aif_buffer[pos++] = 3; // pascal-style string length
+ aif_buffer[pos++] = 'E';
+ aif_buffer[pos++] = 'N';
+ aif_buffer[pos++] = 'D';
+
+
+ // Instrument Chunk ckID
+ aif_buffer[pos++] = 'I';
+ aif_buffer[pos++] = 'N';
+ aif_buffer[pos++] = 'S';
+ aif_buffer[pos++] = 'T';
+
+ // Instrument Chunk ckSize
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 20;
+
+ aif_buffer[pos++] = base_note; // baseNote
+ aif_buffer[pos++] = 0; // detune
+ aif_buffer[pos++] = 0; // lowNote
+ aif_buffer[pos++] = 127; // highNote
+ aif_buffer[pos++] = 1; // lowVelocity
+ aif_buffer[pos++] = 127; // highVelocity
+ aif_buffer[pos++] = 0; // gain (hi)
+ aif_buffer[pos++] = 0; // gain (lo)
+
+ // Instrument Chunk sustainLoop
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 1; // playMode = ForwardLooping
+
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 1; // beginLoop marker id
+
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 2; // endLoop marker id
+
+ // Instrument Chunk releaseLoop
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 1; // playMode = ForwardLooping
+
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 1; // beginLoop marker id
+
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 2; // endLoop marker id
+
+ // Finally, write the Sound Data Chunk
+ // Sound Data Chunk ckID
+ aif_buffer[pos++] = 'S';
+ aif_buffer[pos++] = 'S';
+ aif_buffer[pos++] = 'N';
+ aif_buffer[pos++] = 'D';
+
+ // Sound Data Chunk ckSize
+ unsigned long sound_data_size = num_samples_extended + 8;
+ aif_buffer[pos++] = ((sound_data_size >> 24) & 0xFF);
+ aif_buffer[pos++] = ((sound_data_size >> 16) & 0xFF);
+ aif_buffer[pos++] = ((sound_data_size >> 8) & 0xFF);
+ aif_buffer[pos++] = (sound_data_size & 0xFF);
+
+ // Sound Data Chunk offset
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+
+ // Sound Data Chunk blockSize
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+ aif_buffer[pos++] = 0;
+
+ // Sound Data Chunk soundData
+ for (unsigned int i = 0; i < loop_start; i++)
+ {
+ aif_buffer[pos++] = pcm_samples[i];
+ }
+
+ int j = 0;
+ for (unsigned int i = loop_start; i < num_samples_extended; i++)
+ {
+ int pcm_index = loop_start + (j++ % (num_samples - loop_start - 1));
+ aif_buffer[pos++] = pcm_samples[pcm_index];
+ }
+
+ // Write the .aif file contents.
+ FILE *aif_file;
+ aif_file = fopen(aif_filename, "wb");
+ if (!aif_file)
+ {
+ FATAL_ERROR("Failed to open '%s' for writing!\n", aif_filename);
+ }
+
+ fwrite(aif_buffer, 1, aif_file_size, aif_file);
+ fclose(aif_file);
+
+ free(aif_buffer);
+ free(pcm_samples);
+
+ printf("Wrote %s\n", aif_filename);
+}
+
+int main(int argc, char **argv)
+{
+ if (argc < 2)
+ {
+ FATAL_ERROR("Usage: aif2pcm <aif_file>\n");
+ }
+
+ char *input_filename = argv[1];
+ char *extension = get_file_extension(input_filename);
+
+ if (strcmp(extension, "aif") == 0)
+ {
+ aif2pcm(input_filename);
+ }
+ else if (strcmp(extension, "pcm") == 0)
+ {
+ if (argc < 5)
+ {
+ FATAL_ERROR("Usage: aif2pcm <pcm_file> <midi_note> <pitch_adjust> <loop_start>\n");
+ }
+
+ char base_note = atoi(argv[2]);
+ long pitch_adjust = atol(argv[3]);
+ long loop_start = atol(argv[4]);
+ pcm2aif(input_filename, base_note, pitch_adjust, loop_start);
+ }
+ else
+ {
+ FATAL_ERROR("Input file must be .aif or .pcm: '%s'\n", input_filename);
+ }
+
+ return 0;
+}