diff options
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | data/music/direct_sound_samples/8456330.aif (renamed from data/music/direct_sound_samples/8456330.pcm) | bin | 1683 -> 1797 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84569D4.aif (renamed from data/music/direct_sound_samples/84569D4.pcm) | bin | 2024 -> 2138 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84571CC.aif (renamed from data/music/direct_sound_samples/84571CC.pcm) | bin | 3001 -> 3115 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8457D98.aif (renamed from data/music/direct_sound_samples/8457D98.pcm) | bin | 3879 -> 3993 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8458CD0.aif (renamed from data/music/direct_sound_samples/8458CD0.pcm) | bin | 3170 -> 3284 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8459944.aif (renamed from data/music/direct_sound_samples/8459944.pcm) | bin | 5310 -> 5424 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845AE14.aif | bin | 0 -> 1281 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845AE14.pcm | bin | 1167 -> 0 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845B2B4.aif (renamed from data/music/direct_sound_samples/845B2B4.pcm) | bin | 1762 -> 1876 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845B9A8.aif (renamed from data/music/direct_sound_samples/845B9A8.pcm) | bin | 2176 -> 2290 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845C238.aif (renamed from data/music/direct_sound_samples/845C238.pcm) | bin | 2149 -> 2263 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845CAB0.aif (renamed from data/music/direct_sound_samples/845CAB0.pcm) | bin | 4142 -> 4256 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845DAF0.aif (renamed from data/music/direct_sound_samples/845DAF0.pcm) | bin | 1025 -> 1139 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845DF04.aif (renamed from data/music/direct_sound_samples/845DF04.pcm) | bin | 3614 -> 3728 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845ED34.aif (renamed from data/music/direct_sound_samples/845ED34.pcm) | bin | 3972 -> 4086 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/845FCC8.aif (renamed from data/music/direct_sound_samples/845FCC8.pcm) | bin | 2212 -> 2326 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/846057C.aif (renamed from data/music/direct_sound_samples/846057C.pcm) | bin | 2258 -> 2372 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8460E60.aif (renamed from data/music/direct_sound_samples/8460E60.pcm) | bin | 3865 -> 3979 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8461D8C.aif (renamed from data/music/direct_sound_samples/8461D8C.pcm) | bin | 1288 -> 1402 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84622A4.aif (renamed from data/music/direct_sound_samples/84622A4.pcm) | bin | 1464 -> 1578 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/846286C.aif (renamed from data/music/direct_sound_samples/846286C.pcm) | bin | 3917 -> 4031 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84637CC.aif (renamed from data/music/direct_sound_samples/84637CC.pcm) | bin | 5710 -> 5824 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8464E2C.aif (renamed from data/music/direct_sound_samples/8464E2C.pcm) | bin | 5450 -> 5564 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8466388.aif (renamed from data/music/direct_sound_samples/8466388.pcm) | bin | 2938 -> 3052 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8466F14.aif (renamed from data/music/direct_sound_samples/8466F14.pcm) | bin | 13716 -> 13830 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/846A4B8.aif (renamed from data/music/direct_sound_samples/846A4B8.pcm) | bin | 8971 -> 9085 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/846C7D4.aif (renamed from data/music/direct_sound_samples/846C7D4.pcm) | bin | 14009 -> 14123 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/846FEA0.aif (renamed from data/music/direct_sound_samples/846FEA0.pcm) | bin | 4926 -> 5040 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84711F0.aif (renamed from data/music/direct_sound_samples/84711F0.pcm) | bin | 5375 -> 5489 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8472700.aif (renamed from data/music/direct_sound_samples/8472700.pcm) | bin | 5133 -> 5247 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8473B20.aif (renamed from data/music/direct_sound_samples/8473B20.pcm) | bin | 4233 -> 4347 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8474BBC.aif (renamed from data/music/direct_sound_samples/8474BBC.pcm) | bin | 4169 -> 4283 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8475C18.aif (renamed from data/music/direct_sound_samples/8475C18.pcm) | bin | 28548 -> 28662 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/847CBAC.aif (renamed from data/music/direct_sound_samples/847CBAC.pcm) | bin | 17778 -> 17892 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8481130.aif (renamed from data/music/direct_sound_samples/8481130.pcm) | bin | 8030 -> 8144 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84830A0.aif (renamed from data/music/direct_sound_samples/84830A0.pcm) | bin | 1875 -> 1989 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8483804.aif (renamed from data/music/direct_sound_samples/8483804.pcm) | bin | 7230 -> 7344 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8485454.aif (renamed from data/music/direct_sound_samples/8485454.pcm) | bin | 5310 -> 5424 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8486924.aif (renamed from data/music/direct_sound_samples/8486924.pcm) | bin | 2555 -> 2669 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8487330.aif (renamed from data/music/direct_sound_samples/8487330.pcm) | bin | 7172 -> 7286 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8488F44.aif (renamed from data/music/direct_sound_samples/8488F44.pcm) | bin | 6479 -> 6593 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/848A8A4.aif (renamed from data/music/direct_sound_samples/848A8A4.pcm) | bin | 5300 -> 5414 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/848BD68.aif (renamed from data/music/direct_sound_samples/848BD68.pcm) | bin | 1833 -> 1947 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/848C4A4.aif (renamed from data/music/direct_sound_samples/848C4A4.pcm) | bin | 7136 -> 7250 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/848E094.aif (renamed from data/music/direct_sound_samples/848E094.pcm) | bin | 5027 -> 5141 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/848F448.aif (renamed from data/music/direct_sound_samples/848F448.pcm) | bin | 9841 -> 9955 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8491ACC.aif (renamed from data/music/direct_sound_samples/8491ACC.pcm) | bin | 4658 -> 4772 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8492D10.aif (renamed from data/music/direct_sound_samples/8492D10.pcm) | bin | 4096 -> 4210 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8493D20.aif (renamed from data/music/direct_sound_samples/8493D20.pcm) | bin | 4853 -> 4967 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8495028.aif (renamed from data/music/direct_sound_samples/8495028.pcm) | bin | 8441 -> 8555 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8497134.aif (renamed from data/music/direct_sound_samples/8497134.pcm) | bin | 8139 -> 8253 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8499110.aif (renamed from data/music/direct_sound_samples/8499110.pcm) | bin | 8704 -> 8818 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/849B320.aif (renamed from data/music/direct_sound_samples/849B320.pcm) | bin | 1979 -> 2093 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/849BAEC.aif (renamed from data/music/direct_sound_samples/849BAEC.pcm) | bin | 6496 -> 6610 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/849D45C.aif (renamed from data/music/direct_sound_samples/849D45C.pcm) | bin | 8093 -> 8207 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/849F40C.aif (renamed from data/music/direct_sound_samples/849F40C.pcm) | bin | 13007 -> 13121 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A26EC.aif (renamed from data/music/direct_sound_samples/84A26EC.pcm) | bin | 2592 -> 2706 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A311C.aif (renamed from data/music/direct_sound_samples/84A311C.pcm) | bin | 2595 -> 2709 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A3B50.aif (renamed from data/music/direct_sound_samples/84A3B50.pcm) | bin | 6957 -> 7071 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A5690.aif (renamed from data/music/direct_sound_samples/84A5690.pcm) | bin | 2232 -> 2346 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A5F58.aif (renamed from data/music/direct_sound_samples/8654C20.pcm) | bin | 5055 -> 5169 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A7328.aif (renamed from data/music/direct_sound_samples/84A7328.pcm) | bin | 3072 -> 3186 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A7F38.aif (renamed from data/music/direct_sound_samples/84A7F38.pcm) | bin | 2943 -> 3057 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A8AC8.aif (renamed from data/music/direct_sound_samples/84A8AC8.pcm) | bin | 2700 -> 2814 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A9564.aif (renamed from data/music/direct_sound_samples/84A9564.pcm) | bin | 2360 -> 2474 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84A9EAC.aif (renamed from data/music/direct_sound_samples/84A9EAC.pcm) | bin | 2615 -> 2729 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/84AA8F4.aif (renamed from data/music/direct_sound_samples/84AA8F4.pcm) | bin | 3191 -> 3305 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8639898.aif (renamed from data/music/direct_sound_samples/8639898.pcm) | bin | 1615 -> 1729 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8639EF8.aif (renamed from data/music/direct_sound_samples/8639EF8.pcm) | bin | 1236 -> 1350 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863A3DC.aif (renamed from data/music/direct_sound_samples/863A3DC.pcm) | bin | 2365 -> 2479 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863AD2C.aif | bin | 0 -> 2770 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863AD2C.pcm | bin | 2656 -> 0 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863B79C.aif (renamed from data/music/direct_sound_samples/863B79C.pcm) | bin | 783 -> 897 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863BABC.aif (renamed from data/music/direct_sound_samples/863BABC.pcm) | bin | 3191 -> 3305 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863C744.aif (renamed from data/music/direct_sound_samples/863C744.pcm) | bin | 1552 -> 1666 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863CD64.aif (renamed from data/music/direct_sound_samples/863CD64.pcm) | bin | 885 -> 999 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863D0EC.aif (renamed from data/music/direct_sound_samples/863D0EC.pcm) | bin | 3537 -> 3651 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863DED0.aif (renamed from data/music/direct_sound_samples/863DED0.pcm) | bin | 2399 -> 2513 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863E840.aif (renamed from data/music/direct_sound_samples/863E840.pcm) | bin | 907 -> 1021 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863EBDC.aif (renamed from data/music/direct_sound_samples/863EBDC.pcm) | bin | 1953 -> 2067 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/863F390.aif (renamed from data/music/direct_sound_samples/863F390.pcm) | bin | 3401 -> 3515 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/86400EC.aif (renamed from data/music/direct_sound_samples/86400EC.pcm) | bin | 564 -> 678 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8640330.aif (renamed from data/music/direct_sound_samples/8640330.pcm) | bin | 3629 -> 3743 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8641170.aif (renamed from data/music/direct_sound_samples/8641170.pcm) | bin | 2369 -> 2483 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8641AC4.aif (renamed from data/music/direct_sound_samples/8641AC4.pcm) | bin | 834 -> 948 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8641E18.aif (renamed from data/music/direct_sound_samples/8641E18.pcm) | bin | 1569 -> 1683 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864244C.aif (renamed from data/music/direct_sound_samples/864244C.pcm) | bin | 3161 -> 3275 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/86430B8.aif (renamed from data/music/direct_sound_samples/86430B8.pcm) | bin | 1415 -> 1529 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8643650.aif (renamed from data/music/direct_sound_samples/8643650.pcm) | bin | 2801 -> 2915 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8644154.aif (renamed from data/music/direct_sound_samples/8644154.pcm) | bin | 1523 -> 1637 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8644758.aif (renamed from data/music/direct_sound_samples/8644758.pcm) | bin | 485 -> 599 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8644950.aif (renamed from data/music/direct_sound_samples/8644950.pcm) | bin | 2385 -> 2499 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/86452B4.aif (renamed from data/music/direct_sound_samples/86452B4.pcm) | bin | 3961 -> 4075 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8646240.aif (renamed from data/music/direct_sound_samples/8646240.pcm) | bin | 1573 -> 1687 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8646878.aif (renamed from data/music/direct_sound_samples/8646878.pcm) | bin | 2753 -> 2867 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864734C.aif (renamed from data/music/direct_sound_samples/864734C.pcm) | bin | 3892 -> 4006 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8648290.aif (renamed from data/music/direct_sound_samples/8648290.pcm) | bin | 1384 -> 1498 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8648808.aif (renamed from data/music/direct_sound_samples/8648808.pcm) | bin | 3641 -> 3755 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8649654.aif (renamed from data/music/direct_sound_samples/8649654.pcm) | bin | 3829 -> 3943 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864A55C.aif | bin | 0 -> 2870 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864A55C.pcm | bin | 2756 -> 0 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864B030.aif (renamed from data/music/direct_sound_samples/864B030.pcm) | bin | 2945 -> 3059 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864BBC4.aif (renamed from data/music/direct_sound_samples/864BBC4.pcm) | bin | 2501 -> 2615 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864C59C.aif (renamed from data/music/direct_sound_samples/864C59C.pcm) | bin | 1582 -> 1696 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864CBDC.aif (renamed from data/music/direct_sound_samples/864CBDC.pcm) | bin | 2765 -> 2879 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864D6BC.aif (renamed from data/music/direct_sound_samples/864D6BC.pcm) | bin | 1578 -> 1692 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864DCF8.aif (renamed from data/music/direct_sound_samples/864DCF8.pcm) | bin | 1798 -> 1912 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864E410.aif (renamed from data/music/direct_sound_samples/864E410.pcm) | bin | 2345 -> 2459 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864ED4C.aif (renamed from data/music/direct_sound_samples/864ED4C.pcm) | bin | 1961 -> 2075 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864F508.aif (renamed from data/music/direct_sound_samples/864F508.pcm) | bin | 1364 -> 1478 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/864FA6C.aif (renamed from data/music/direct_sound_samples/864FA6C.pcm) | bin | 3425 -> 3539 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/86507E0.aif (renamed from data/music/direct_sound_samples/86507E0.pcm) | bin | 1131 -> 1245 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8650C5C.aif (renamed from data/music/direct_sound_samples/8650C5C.pcm) | bin | 1244 -> 1358 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8651148.aif (renamed from data/music/direct_sound_samples/8651148.pcm) | bin | 1973 -> 2087 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8651910.aif (renamed from data/music/direct_sound_samples/8651910.pcm) | bin | 3051 -> 3165 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/865250C.aif (renamed from data/music/direct_sound_samples/865250C.pcm) | bin | 870 -> 984 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8652884.aif (renamed from data/music/direct_sound_samples/8652884.pcm) | bin | 1961 -> 2075 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8653040.aif (renamed from data/music/direct_sound_samples/8653040.pcm) | bin | 3153 -> 3267 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8653CA4.aif (renamed from data/music/direct_sound_samples/8653CA4.pcm) | bin | 1212 -> 1326 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8654170.aif (renamed from data/music/direct_sound_samples/8654170.pcm) | bin | 2717 -> 2831 bytes | |||
-rw-r--r-- | data/music/direct_sound_samples/8654C20.aif (renamed from data/music/direct_sound_samples/84A5F58.pcm) | bin | 5055 -> 5169 bytes | |||
-rw-r--r-- | tools/aif2pcm/LICENSE | 19 | ||||
-rw-r--r-- | tools/aif2pcm/Makefile | 15 | ||||
-rw-r--r-- | tools/aif2pcm/extended.c | 171 | ||||
-rw-r--r-- | tools/aif2pcm/main.c | 554 |
126 files changed, 764 insertions, 1 deletions
@@ -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 Binary files differindex efdbf64d3..199ead811 100644 --- a/data/music/direct_sound_samples/8456330.pcm +++ b/data/music/direct_sound_samples/8456330.aif diff --git a/data/music/direct_sound_samples/84569D4.pcm b/data/music/direct_sound_samples/84569D4.aif Binary files differindex e3c74e283..6372bbc32 100644 --- a/data/music/direct_sound_samples/84569D4.pcm +++ b/data/music/direct_sound_samples/84569D4.aif diff --git a/data/music/direct_sound_samples/84571CC.pcm b/data/music/direct_sound_samples/84571CC.aif Binary files differindex e9b436939..f3aa47d91 100644 --- a/data/music/direct_sound_samples/84571CC.pcm +++ b/data/music/direct_sound_samples/84571CC.aif diff --git a/data/music/direct_sound_samples/8457D98.pcm b/data/music/direct_sound_samples/8457D98.aif Binary files differindex 0c996b39a..9175b63c5 100644 --- a/data/music/direct_sound_samples/8457D98.pcm +++ b/data/music/direct_sound_samples/8457D98.aif diff --git a/data/music/direct_sound_samples/8458CD0.pcm b/data/music/direct_sound_samples/8458CD0.aif Binary files differindex cc4a23f8d..f39931a7e 100644 --- a/data/music/direct_sound_samples/8458CD0.pcm +++ b/data/music/direct_sound_samples/8458CD0.aif diff --git a/data/music/direct_sound_samples/8459944.pcm b/data/music/direct_sound_samples/8459944.aif Binary files differindex f8474e8d6..dfdfd702e 100644 --- a/data/music/direct_sound_samples/8459944.pcm +++ b/data/music/direct_sound_samples/8459944.aif diff --git a/data/music/direct_sound_samples/845AE14.aif b/data/music/direct_sound_samples/845AE14.aif Binary files differnew file mode 100644 index 000000000..976210050 --- /dev/null +++ b/data/music/direct_sound_samples/845AE14.aif diff --git a/data/music/direct_sound_samples/845AE14.pcm b/data/music/direct_sound_samples/845AE14.pcm Binary files differdeleted file mode 100644 index 561e95c26..000000000 --- a/data/music/direct_sound_samples/845AE14.pcm +++ /dev/null diff --git a/data/music/direct_sound_samples/845B2B4.pcm b/data/music/direct_sound_samples/845B2B4.aif Binary files differindex 15590d4ed..277ff96fc 100644 --- a/data/music/direct_sound_samples/845B2B4.pcm +++ b/data/music/direct_sound_samples/845B2B4.aif diff --git a/data/music/direct_sound_samples/845B9A8.pcm b/data/music/direct_sound_samples/845B9A8.aif Binary files differindex eb2bf338f..0c7116151 100644 --- a/data/music/direct_sound_samples/845B9A8.pcm +++ b/data/music/direct_sound_samples/845B9A8.aif diff --git a/data/music/direct_sound_samples/845C238.pcm b/data/music/direct_sound_samples/845C238.aif Binary files differindex f9caf4b81..6066e2b4e 100644 --- a/data/music/direct_sound_samples/845C238.pcm +++ b/data/music/direct_sound_samples/845C238.aif diff --git a/data/music/direct_sound_samples/845CAB0.pcm b/data/music/direct_sound_samples/845CAB0.aif Binary files differindex a610823db..b3b6e0b97 100644 --- a/data/music/direct_sound_samples/845CAB0.pcm +++ b/data/music/direct_sound_samples/845CAB0.aif diff --git a/data/music/direct_sound_samples/845DAF0.pcm b/data/music/direct_sound_samples/845DAF0.aif Binary files differindex b35dfbe67..3acfdabee 100644 --- a/data/music/direct_sound_samples/845DAF0.pcm +++ b/data/music/direct_sound_samples/845DAF0.aif diff --git a/data/music/direct_sound_samples/845DF04.pcm b/data/music/direct_sound_samples/845DF04.aif Binary files differindex a5c7d0dde..5ad9410d0 100644 --- a/data/music/direct_sound_samples/845DF04.pcm +++ b/data/music/direct_sound_samples/845DF04.aif diff --git a/data/music/direct_sound_samples/845ED34.pcm b/data/music/direct_sound_samples/845ED34.aif Binary files differindex 2a04a3373..e5c1cd54a 100644 --- a/data/music/direct_sound_samples/845ED34.pcm +++ b/data/music/direct_sound_samples/845ED34.aif diff --git a/data/music/direct_sound_samples/845FCC8.pcm b/data/music/direct_sound_samples/845FCC8.aif Binary files differindex cb14e3f92..6cc8a968e 100644 --- a/data/music/direct_sound_samples/845FCC8.pcm +++ b/data/music/direct_sound_samples/845FCC8.aif diff --git a/data/music/direct_sound_samples/846057C.pcm b/data/music/direct_sound_samples/846057C.aif Binary files differindex bfae780f5..4aec6882f 100644 --- a/data/music/direct_sound_samples/846057C.pcm +++ b/data/music/direct_sound_samples/846057C.aif diff --git a/data/music/direct_sound_samples/8460E60.pcm b/data/music/direct_sound_samples/8460E60.aif Binary files differindex bd0fed0c3..c6827ddee 100644 --- a/data/music/direct_sound_samples/8460E60.pcm +++ b/data/music/direct_sound_samples/8460E60.aif diff --git a/data/music/direct_sound_samples/8461D8C.pcm b/data/music/direct_sound_samples/8461D8C.aif Binary files differindex 5890d84c1..a83f3b0df 100644 --- a/data/music/direct_sound_samples/8461D8C.pcm +++ b/data/music/direct_sound_samples/8461D8C.aif diff --git a/data/music/direct_sound_samples/84622A4.pcm b/data/music/direct_sound_samples/84622A4.aif Binary files differindex a51964b80..dfc2746de 100644 --- a/data/music/direct_sound_samples/84622A4.pcm +++ b/data/music/direct_sound_samples/84622A4.aif diff --git a/data/music/direct_sound_samples/846286C.pcm b/data/music/direct_sound_samples/846286C.aif Binary files differindex d91c4fffc..c2b3757b0 100644 --- a/data/music/direct_sound_samples/846286C.pcm +++ b/data/music/direct_sound_samples/846286C.aif diff --git a/data/music/direct_sound_samples/84637CC.pcm b/data/music/direct_sound_samples/84637CC.aif Binary files differindex 60e997027..7de586c9b 100644 --- a/data/music/direct_sound_samples/84637CC.pcm +++ b/data/music/direct_sound_samples/84637CC.aif diff --git a/data/music/direct_sound_samples/8464E2C.pcm b/data/music/direct_sound_samples/8464E2C.aif Binary files differindex 83005c461..5236141ba 100644 --- a/data/music/direct_sound_samples/8464E2C.pcm +++ b/data/music/direct_sound_samples/8464E2C.aif diff --git a/data/music/direct_sound_samples/8466388.pcm b/data/music/direct_sound_samples/8466388.aif Binary files differindex a134afaf5..a7c4e94f8 100644 --- a/data/music/direct_sound_samples/8466388.pcm +++ b/data/music/direct_sound_samples/8466388.aif diff --git a/data/music/direct_sound_samples/8466F14.pcm b/data/music/direct_sound_samples/8466F14.aif Binary files differindex 357b65e8b..bfaa5c196 100644 --- a/data/music/direct_sound_samples/8466F14.pcm +++ b/data/music/direct_sound_samples/8466F14.aif diff --git a/data/music/direct_sound_samples/846A4B8.pcm b/data/music/direct_sound_samples/846A4B8.aif Binary files differindex a28fe5511..3e76cacdd 100644 --- a/data/music/direct_sound_samples/846A4B8.pcm +++ b/data/music/direct_sound_samples/846A4B8.aif diff --git a/data/music/direct_sound_samples/846C7D4.pcm b/data/music/direct_sound_samples/846C7D4.aif Binary files differindex 9b770848e..2647c78ec 100644 --- a/data/music/direct_sound_samples/846C7D4.pcm +++ b/data/music/direct_sound_samples/846C7D4.aif diff --git a/data/music/direct_sound_samples/846FEA0.pcm b/data/music/direct_sound_samples/846FEA0.aif Binary files differindex fe0ca6e78..e56df7f60 100644 --- a/data/music/direct_sound_samples/846FEA0.pcm +++ b/data/music/direct_sound_samples/846FEA0.aif diff --git a/data/music/direct_sound_samples/84711F0.pcm b/data/music/direct_sound_samples/84711F0.aif Binary files differindex e3adc06da..8c68a83b3 100644 --- a/data/music/direct_sound_samples/84711F0.pcm +++ b/data/music/direct_sound_samples/84711F0.aif diff --git a/data/music/direct_sound_samples/8472700.pcm b/data/music/direct_sound_samples/8472700.aif Binary files differindex 19e57e7af..a03bafc97 100644 --- a/data/music/direct_sound_samples/8472700.pcm +++ b/data/music/direct_sound_samples/8472700.aif diff --git a/data/music/direct_sound_samples/8473B20.pcm b/data/music/direct_sound_samples/8473B20.aif Binary files differindex d1dad2a0b..d4077b481 100644 --- a/data/music/direct_sound_samples/8473B20.pcm +++ b/data/music/direct_sound_samples/8473B20.aif diff --git a/data/music/direct_sound_samples/8474BBC.pcm b/data/music/direct_sound_samples/8474BBC.aif Binary files differindex 2e4a2cc3a..2ad86876b 100644 --- a/data/music/direct_sound_samples/8474BBC.pcm +++ b/data/music/direct_sound_samples/8474BBC.aif diff --git a/data/music/direct_sound_samples/8475C18.pcm b/data/music/direct_sound_samples/8475C18.aif Binary files differindex ee3a7b031..742c4385e 100644 --- a/data/music/direct_sound_samples/8475C18.pcm +++ b/data/music/direct_sound_samples/8475C18.aif diff --git a/data/music/direct_sound_samples/847CBAC.pcm b/data/music/direct_sound_samples/847CBAC.aif Binary files differindex 76da530f0..004fda6a1 100644 --- a/data/music/direct_sound_samples/847CBAC.pcm +++ b/data/music/direct_sound_samples/847CBAC.aif diff --git a/data/music/direct_sound_samples/8481130.pcm b/data/music/direct_sound_samples/8481130.aif Binary files differindex 1e04458cd..dea429a25 100644 --- a/data/music/direct_sound_samples/8481130.pcm +++ b/data/music/direct_sound_samples/8481130.aif diff --git a/data/music/direct_sound_samples/84830A0.pcm b/data/music/direct_sound_samples/84830A0.aif Binary files differindex d128b194f..703f3adbd 100644 --- a/data/music/direct_sound_samples/84830A0.pcm +++ b/data/music/direct_sound_samples/84830A0.aif diff --git a/data/music/direct_sound_samples/8483804.pcm b/data/music/direct_sound_samples/8483804.aif Binary files differindex d0d3f8a7b..f244a9982 100644 --- a/data/music/direct_sound_samples/8483804.pcm +++ b/data/music/direct_sound_samples/8483804.aif diff --git a/data/music/direct_sound_samples/8485454.pcm b/data/music/direct_sound_samples/8485454.aif Binary files differindex 1b53975a1..7270872d6 100644 --- a/data/music/direct_sound_samples/8485454.pcm +++ b/data/music/direct_sound_samples/8485454.aif diff --git a/data/music/direct_sound_samples/8486924.pcm b/data/music/direct_sound_samples/8486924.aif Binary files differindex 427fd9760..b3122457d 100644 --- a/data/music/direct_sound_samples/8486924.pcm +++ b/data/music/direct_sound_samples/8486924.aif diff --git a/data/music/direct_sound_samples/8487330.pcm b/data/music/direct_sound_samples/8487330.aif Binary files differindex bf32dbcf2..09e17f0ca 100644 --- a/data/music/direct_sound_samples/8487330.pcm +++ b/data/music/direct_sound_samples/8487330.aif diff --git a/data/music/direct_sound_samples/8488F44.pcm b/data/music/direct_sound_samples/8488F44.aif Binary files differindex 8d4ad8289..9a39e4653 100644 --- a/data/music/direct_sound_samples/8488F44.pcm +++ b/data/music/direct_sound_samples/8488F44.aif diff --git a/data/music/direct_sound_samples/848A8A4.pcm b/data/music/direct_sound_samples/848A8A4.aif Binary files differindex 2078953ae..4902f212f 100644 --- a/data/music/direct_sound_samples/848A8A4.pcm +++ b/data/music/direct_sound_samples/848A8A4.aif diff --git a/data/music/direct_sound_samples/848BD68.pcm b/data/music/direct_sound_samples/848BD68.aif Binary files differindex f4680986d..1c0a027f7 100644 --- a/data/music/direct_sound_samples/848BD68.pcm +++ b/data/music/direct_sound_samples/848BD68.aif diff --git a/data/music/direct_sound_samples/848C4A4.pcm b/data/music/direct_sound_samples/848C4A4.aif Binary files differindex 87dcae2f4..2e09d0822 100644 --- a/data/music/direct_sound_samples/848C4A4.pcm +++ b/data/music/direct_sound_samples/848C4A4.aif diff --git a/data/music/direct_sound_samples/848E094.pcm b/data/music/direct_sound_samples/848E094.aif Binary files differindex 1fbc1aa80..49f24936f 100644 --- a/data/music/direct_sound_samples/848E094.pcm +++ b/data/music/direct_sound_samples/848E094.aif diff --git a/data/music/direct_sound_samples/848F448.pcm b/data/music/direct_sound_samples/848F448.aif Binary files differindex 2122942bd..5c55d91ed 100644 --- a/data/music/direct_sound_samples/848F448.pcm +++ b/data/music/direct_sound_samples/848F448.aif diff --git a/data/music/direct_sound_samples/8491ACC.pcm b/data/music/direct_sound_samples/8491ACC.aif Binary files differindex 057f945a3..ece919ea5 100644 --- a/data/music/direct_sound_samples/8491ACC.pcm +++ b/data/music/direct_sound_samples/8491ACC.aif diff --git a/data/music/direct_sound_samples/8492D10.pcm b/data/music/direct_sound_samples/8492D10.aif Binary files differindex 7a34cedb0..9b4669696 100644 --- a/data/music/direct_sound_samples/8492D10.pcm +++ b/data/music/direct_sound_samples/8492D10.aif diff --git a/data/music/direct_sound_samples/8493D20.pcm b/data/music/direct_sound_samples/8493D20.aif Binary files differindex c64e6c3ce..515818a4d 100644 --- a/data/music/direct_sound_samples/8493D20.pcm +++ b/data/music/direct_sound_samples/8493D20.aif diff --git a/data/music/direct_sound_samples/8495028.pcm b/data/music/direct_sound_samples/8495028.aif Binary files differindex bc66bdd77..102830efa 100644 --- a/data/music/direct_sound_samples/8495028.pcm +++ b/data/music/direct_sound_samples/8495028.aif diff --git a/data/music/direct_sound_samples/8497134.pcm b/data/music/direct_sound_samples/8497134.aif Binary files differindex f29c9e89a..09fe6f12e 100644 --- a/data/music/direct_sound_samples/8497134.pcm +++ b/data/music/direct_sound_samples/8497134.aif diff --git a/data/music/direct_sound_samples/8499110.pcm b/data/music/direct_sound_samples/8499110.aif Binary files differindex b83b96989..556be0238 100644 --- a/data/music/direct_sound_samples/8499110.pcm +++ b/data/music/direct_sound_samples/8499110.aif diff --git a/data/music/direct_sound_samples/849B320.pcm b/data/music/direct_sound_samples/849B320.aif Binary files differindex 660be072f..dd80b1185 100644 --- a/data/music/direct_sound_samples/849B320.pcm +++ b/data/music/direct_sound_samples/849B320.aif diff --git a/data/music/direct_sound_samples/849BAEC.pcm b/data/music/direct_sound_samples/849BAEC.aif Binary files differindex ca72d5772..9d00ecae6 100644 --- a/data/music/direct_sound_samples/849BAEC.pcm +++ b/data/music/direct_sound_samples/849BAEC.aif diff --git a/data/music/direct_sound_samples/849D45C.pcm b/data/music/direct_sound_samples/849D45C.aif Binary files differindex f2eb22fad..ebd46eeaa 100644 --- a/data/music/direct_sound_samples/849D45C.pcm +++ b/data/music/direct_sound_samples/849D45C.aif diff --git a/data/music/direct_sound_samples/849F40C.pcm b/data/music/direct_sound_samples/849F40C.aif Binary files differindex 0ec34c584..455ced13e 100644 --- a/data/music/direct_sound_samples/849F40C.pcm +++ b/data/music/direct_sound_samples/849F40C.aif diff --git a/data/music/direct_sound_samples/84A26EC.pcm b/data/music/direct_sound_samples/84A26EC.aif Binary files differindex c8fe4e879..083c45e3d 100644 --- a/data/music/direct_sound_samples/84A26EC.pcm +++ b/data/music/direct_sound_samples/84A26EC.aif diff --git a/data/music/direct_sound_samples/84A311C.pcm b/data/music/direct_sound_samples/84A311C.aif Binary files differindex e1e748b62..1bd43ca92 100644 --- a/data/music/direct_sound_samples/84A311C.pcm +++ b/data/music/direct_sound_samples/84A311C.aif diff --git a/data/music/direct_sound_samples/84A3B50.pcm b/data/music/direct_sound_samples/84A3B50.aif Binary files differindex c4df672ca..6a11945c5 100644 --- a/data/music/direct_sound_samples/84A3B50.pcm +++ b/data/music/direct_sound_samples/84A3B50.aif diff --git a/data/music/direct_sound_samples/84A5690.pcm b/data/music/direct_sound_samples/84A5690.aif Binary files differindex 586bd9c85..a0fb49f89 100644 --- a/data/music/direct_sound_samples/84A5690.pcm +++ b/data/music/direct_sound_samples/84A5690.aif diff --git a/data/music/direct_sound_samples/8654C20.pcm b/data/music/direct_sound_samples/84A5F58.aif Binary files differindex 6a59aed57..6d6c2e998 100644 --- a/data/music/direct_sound_samples/8654C20.pcm +++ b/data/music/direct_sound_samples/84A5F58.aif diff --git a/data/music/direct_sound_samples/84A7328.pcm b/data/music/direct_sound_samples/84A7328.aif Binary files differindex b5aac0223..9521d0b6e 100644 --- a/data/music/direct_sound_samples/84A7328.pcm +++ b/data/music/direct_sound_samples/84A7328.aif diff --git a/data/music/direct_sound_samples/84A7F38.pcm b/data/music/direct_sound_samples/84A7F38.aif Binary files differindex 398d8ee40..2519572e2 100644 --- a/data/music/direct_sound_samples/84A7F38.pcm +++ b/data/music/direct_sound_samples/84A7F38.aif diff --git a/data/music/direct_sound_samples/84A8AC8.pcm b/data/music/direct_sound_samples/84A8AC8.aif Binary files differindex 3947e5b43..d411e6612 100644 --- a/data/music/direct_sound_samples/84A8AC8.pcm +++ b/data/music/direct_sound_samples/84A8AC8.aif diff --git a/data/music/direct_sound_samples/84A9564.pcm b/data/music/direct_sound_samples/84A9564.aif Binary files differindex fd520a806..3bc1aa839 100644 --- a/data/music/direct_sound_samples/84A9564.pcm +++ b/data/music/direct_sound_samples/84A9564.aif diff --git a/data/music/direct_sound_samples/84A9EAC.pcm b/data/music/direct_sound_samples/84A9EAC.aif Binary files differindex d15e3a655..3bacf3676 100644 --- a/data/music/direct_sound_samples/84A9EAC.pcm +++ b/data/music/direct_sound_samples/84A9EAC.aif diff --git a/data/music/direct_sound_samples/84AA8F4.pcm b/data/music/direct_sound_samples/84AA8F4.aif Binary files differindex 51c902d37..5ddaa153d 100644 --- a/data/music/direct_sound_samples/84AA8F4.pcm +++ b/data/music/direct_sound_samples/84AA8F4.aif diff --git a/data/music/direct_sound_samples/8639898.pcm b/data/music/direct_sound_samples/8639898.aif Binary files differindex 04f69f9ef..f0d38e75a 100644 --- a/data/music/direct_sound_samples/8639898.pcm +++ b/data/music/direct_sound_samples/8639898.aif diff --git a/data/music/direct_sound_samples/8639EF8.pcm b/data/music/direct_sound_samples/8639EF8.aif Binary files differindex 2292e6bee..74c129073 100644 --- a/data/music/direct_sound_samples/8639EF8.pcm +++ b/data/music/direct_sound_samples/8639EF8.aif diff --git a/data/music/direct_sound_samples/863A3DC.pcm b/data/music/direct_sound_samples/863A3DC.aif Binary files differindex 3d0d88aca..9eb517c2c 100644 --- a/data/music/direct_sound_samples/863A3DC.pcm +++ b/data/music/direct_sound_samples/863A3DC.aif diff --git a/data/music/direct_sound_samples/863AD2C.aif b/data/music/direct_sound_samples/863AD2C.aif Binary files differnew file mode 100644 index 000000000..01cf6d960 --- /dev/null +++ b/data/music/direct_sound_samples/863AD2C.aif diff --git a/data/music/direct_sound_samples/863AD2C.pcm b/data/music/direct_sound_samples/863AD2C.pcm Binary files differdeleted file mode 100644 index 0517f957e..000000000 --- a/data/music/direct_sound_samples/863AD2C.pcm +++ /dev/null diff --git a/data/music/direct_sound_samples/863B79C.pcm b/data/music/direct_sound_samples/863B79C.aif Binary files differindex 85ee88b95..fd72512cf 100644 --- a/data/music/direct_sound_samples/863B79C.pcm +++ b/data/music/direct_sound_samples/863B79C.aif diff --git a/data/music/direct_sound_samples/863BABC.pcm b/data/music/direct_sound_samples/863BABC.aif Binary files differindex 0002b4212..30b226eed 100644 --- a/data/music/direct_sound_samples/863BABC.pcm +++ b/data/music/direct_sound_samples/863BABC.aif diff --git a/data/music/direct_sound_samples/863C744.pcm b/data/music/direct_sound_samples/863C744.aif Binary files differindex 5213e938f..9304e6d3d 100644 --- a/data/music/direct_sound_samples/863C744.pcm +++ b/data/music/direct_sound_samples/863C744.aif diff --git a/data/music/direct_sound_samples/863CD64.pcm b/data/music/direct_sound_samples/863CD64.aif Binary files differindex 21c510746..1d99a3a93 100644 --- a/data/music/direct_sound_samples/863CD64.pcm +++ b/data/music/direct_sound_samples/863CD64.aif diff --git a/data/music/direct_sound_samples/863D0EC.pcm b/data/music/direct_sound_samples/863D0EC.aif Binary files differindex 23242d02d..6414161a2 100644 --- a/data/music/direct_sound_samples/863D0EC.pcm +++ b/data/music/direct_sound_samples/863D0EC.aif diff --git a/data/music/direct_sound_samples/863DED0.pcm b/data/music/direct_sound_samples/863DED0.aif Binary files differindex b22b99cc3..334d79558 100644 --- a/data/music/direct_sound_samples/863DED0.pcm +++ b/data/music/direct_sound_samples/863DED0.aif diff --git a/data/music/direct_sound_samples/863E840.pcm b/data/music/direct_sound_samples/863E840.aif Binary files differindex ef2c8d9fd..545bd1292 100644 --- a/data/music/direct_sound_samples/863E840.pcm +++ b/data/music/direct_sound_samples/863E840.aif diff --git a/data/music/direct_sound_samples/863EBDC.pcm b/data/music/direct_sound_samples/863EBDC.aif Binary files differindex 0079314fc..f417ef4f5 100644 --- a/data/music/direct_sound_samples/863EBDC.pcm +++ b/data/music/direct_sound_samples/863EBDC.aif diff --git a/data/music/direct_sound_samples/863F390.pcm b/data/music/direct_sound_samples/863F390.aif Binary files differindex 81e568a9e..e242b6864 100644 --- a/data/music/direct_sound_samples/863F390.pcm +++ b/data/music/direct_sound_samples/863F390.aif diff --git a/data/music/direct_sound_samples/86400EC.pcm b/data/music/direct_sound_samples/86400EC.aif Binary files differindex 3eb466d05..2b51201a4 100644 --- a/data/music/direct_sound_samples/86400EC.pcm +++ b/data/music/direct_sound_samples/86400EC.aif diff --git a/data/music/direct_sound_samples/8640330.pcm b/data/music/direct_sound_samples/8640330.aif Binary files differindex be9526e6d..1d3ff6e89 100644 --- a/data/music/direct_sound_samples/8640330.pcm +++ b/data/music/direct_sound_samples/8640330.aif diff --git a/data/music/direct_sound_samples/8641170.pcm b/data/music/direct_sound_samples/8641170.aif Binary files differindex 9af693e42..0ca3c2f05 100644 --- a/data/music/direct_sound_samples/8641170.pcm +++ b/data/music/direct_sound_samples/8641170.aif diff --git a/data/music/direct_sound_samples/8641AC4.pcm b/data/music/direct_sound_samples/8641AC4.aif Binary files differindex cf65f02e3..71d4987d6 100644 --- a/data/music/direct_sound_samples/8641AC4.pcm +++ b/data/music/direct_sound_samples/8641AC4.aif diff --git a/data/music/direct_sound_samples/8641E18.pcm b/data/music/direct_sound_samples/8641E18.aif Binary files differindex 91e905c4b..17db9c813 100644 --- a/data/music/direct_sound_samples/8641E18.pcm +++ b/data/music/direct_sound_samples/8641E18.aif diff --git a/data/music/direct_sound_samples/864244C.pcm b/data/music/direct_sound_samples/864244C.aif Binary files differindex 4026a26e0..a6c492d2a 100644 --- a/data/music/direct_sound_samples/864244C.pcm +++ b/data/music/direct_sound_samples/864244C.aif diff --git a/data/music/direct_sound_samples/86430B8.pcm b/data/music/direct_sound_samples/86430B8.aif Binary files differindex a8512581e..f44101b23 100644 --- a/data/music/direct_sound_samples/86430B8.pcm +++ b/data/music/direct_sound_samples/86430B8.aif diff --git a/data/music/direct_sound_samples/8643650.pcm b/data/music/direct_sound_samples/8643650.aif Binary files differindex 7034ef4b6..f6f7993d9 100644 --- a/data/music/direct_sound_samples/8643650.pcm +++ b/data/music/direct_sound_samples/8643650.aif diff --git a/data/music/direct_sound_samples/8644154.pcm b/data/music/direct_sound_samples/8644154.aif Binary files differindex 1a22423a3..effcd7fc0 100644 --- a/data/music/direct_sound_samples/8644154.pcm +++ b/data/music/direct_sound_samples/8644154.aif diff --git a/data/music/direct_sound_samples/8644758.pcm b/data/music/direct_sound_samples/8644758.aif Binary files differindex d658afb9d..62f9493fd 100644 --- a/data/music/direct_sound_samples/8644758.pcm +++ b/data/music/direct_sound_samples/8644758.aif diff --git a/data/music/direct_sound_samples/8644950.pcm b/data/music/direct_sound_samples/8644950.aif Binary files differindex 42f745867..cacf6eca4 100644 --- a/data/music/direct_sound_samples/8644950.pcm +++ b/data/music/direct_sound_samples/8644950.aif diff --git a/data/music/direct_sound_samples/86452B4.pcm b/data/music/direct_sound_samples/86452B4.aif Binary files differindex 4ac308ea1..eccd9467f 100644 --- a/data/music/direct_sound_samples/86452B4.pcm +++ b/data/music/direct_sound_samples/86452B4.aif diff --git a/data/music/direct_sound_samples/8646240.pcm b/data/music/direct_sound_samples/8646240.aif Binary files differindex dd82ac427..548e740c8 100644 --- a/data/music/direct_sound_samples/8646240.pcm +++ b/data/music/direct_sound_samples/8646240.aif diff --git a/data/music/direct_sound_samples/8646878.pcm b/data/music/direct_sound_samples/8646878.aif Binary files differindex 67a93df77..fdd27e00b 100644 --- a/data/music/direct_sound_samples/8646878.pcm +++ b/data/music/direct_sound_samples/8646878.aif diff --git a/data/music/direct_sound_samples/864734C.pcm b/data/music/direct_sound_samples/864734C.aif Binary files differindex 5766cf85e..1119bd5a8 100644 --- a/data/music/direct_sound_samples/864734C.pcm +++ b/data/music/direct_sound_samples/864734C.aif diff --git a/data/music/direct_sound_samples/8648290.pcm b/data/music/direct_sound_samples/8648290.aif Binary files differindex 75e1339a7..f96f8853b 100644 --- a/data/music/direct_sound_samples/8648290.pcm +++ b/data/music/direct_sound_samples/8648290.aif diff --git a/data/music/direct_sound_samples/8648808.pcm b/data/music/direct_sound_samples/8648808.aif Binary files differindex 8aa252f19..6c5cb14b1 100644 --- a/data/music/direct_sound_samples/8648808.pcm +++ b/data/music/direct_sound_samples/8648808.aif diff --git a/data/music/direct_sound_samples/8649654.pcm b/data/music/direct_sound_samples/8649654.aif Binary files differindex 4b04e6f2d..8cbe59d3e 100644 --- a/data/music/direct_sound_samples/8649654.pcm +++ b/data/music/direct_sound_samples/8649654.aif diff --git a/data/music/direct_sound_samples/864A55C.aif b/data/music/direct_sound_samples/864A55C.aif Binary files differnew file mode 100644 index 000000000..c037ed4af --- /dev/null +++ b/data/music/direct_sound_samples/864A55C.aif diff --git a/data/music/direct_sound_samples/864A55C.pcm b/data/music/direct_sound_samples/864A55C.pcm Binary files differdeleted file mode 100644 index 01f1111a2..000000000 --- a/data/music/direct_sound_samples/864A55C.pcm +++ /dev/null diff --git a/data/music/direct_sound_samples/864B030.pcm b/data/music/direct_sound_samples/864B030.aif Binary files differindex 4b9b39249..56eec193f 100644 --- a/data/music/direct_sound_samples/864B030.pcm +++ b/data/music/direct_sound_samples/864B030.aif diff --git a/data/music/direct_sound_samples/864BBC4.pcm b/data/music/direct_sound_samples/864BBC4.aif Binary files differindex 280e12d97..d14f83ba7 100644 --- a/data/music/direct_sound_samples/864BBC4.pcm +++ b/data/music/direct_sound_samples/864BBC4.aif diff --git a/data/music/direct_sound_samples/864C59C.pcm b/data/music/direct_sound_samples/864C59C.aif Binary files differindex 218134fb3..5d6ae2282 100644 --- a/data/music/direct_sound_samples/864C59C.pcm +++ b/data/music/direct_sound_samples/864C59C.aif diff --git a/data/music/direct_sound_samples/864CBDC.pcm b/data/music/direct_sound_samples/864CBDC.aif Binary files differindex aebbf4c85..e69605825 100644 --- a/data/music/direct_sound_samples/864CBDC.pcm +++ b/data/music/direct_sound_samples/864CBDC.aif diff --git a/data/music/direct_sound_samples/864D6BC.pcm b/data/music/direct_sound_samples/864D6BC.aif Binary files differindex 1ec2c5ff0..a584d9dc3 100644 --- a/data/music/direct_sound_samples/864D6BC.pcm +++ b/data/music/direct_sound_samples/864D6BC.aif diff --git a/data/music/direct_sound_samples/864DCF8.pcm b/data/music/direct_sound_samples/864DCF8.aif Binary files differindex c2237e5f9..37f1be4b1 100644 --- a/data/music/direct_sound_samples/864DCF8.pcm +++ b/data/music/direct_sound_samples/864DCF8.aif diff --git a/data/music/direct_sound_samples/864E410.pcm b/data/music/direct_sound_samples/864E410.aif Binary files differindex 774ee0b96..d27b41508 100644 --- a/data/music/direct_sound_samples/864E410.pcm +++ b/data/music/direct_sound_samples/864E410.aif diff --git a/data/music/direct_sound_samples/864ED4C.pcm b/data/music/direct_sound_samples/864ED4C.aif Binary files differindex 8de80523e..28de72385 100644 --- a/data/music/direct_sound_samples/864ED4C.pcm +++ b/data/music/direct_sound_samples/864ED4C.aif diff --git a/data/music/direct_sound_samples/864F508.pcm b/data/music/direct_sound_samples/864F508.aif Binary files differindex d0280ac40..db5bae244 100644 --- a/data/music/direct_sound_samples/864F508.pcm +++ b/data/music/direct_sound_samples/864F508.aif diff --git a/data/music/direct_sound_samples/864FA6C.pcm b/data/music/direct_sound_samples/864FA6C.aif Binary files differindex 2d41c5a92..01a7ceed2 100644 --- a/data/music/direct_sound_samples/864FA6C.pcm +++ b/data/music/direct_sound_samples/864FA6C.aif diff --git a/data/music/direct_sound_samples/86507E0.pcm b/data/music/direct_sound_samples/86507E0.aif Binary files differindex 64e93a9cb..5ad2c43ee 100644 --- a/data/music/direct_sound_samples/86507E0.pcm +++ b/data/music/direct_sound_samples/86507E0.aif diff --git a/data/music/direct_sound_samples/8650C5C.pcm b/data/music/direct_sound_samples/8650C5C.aif Binary files differindex 7bcc2858a..95670cf0a 100644 --- a/data/music/direct_sound_samples/8650C5C.pcm +++ b/data/music/direct_sound_samples/8650C5C.aif diff --git a/data/music/direct_sound_samples/8651148.pcm b/data/music/direct_sound_samples/8651148.aif Binary files differindex 77179de01..5c48c39f5 100644 --- a/data/music/direct_sound_samples/8651148.pcm +++ b/data/music/direct_sound_samples/8651148.aif diff --git a/data/music/direct_sound_samples/8651910.pcm b/data/music/direct_sound_samples/8651910.aif Binary files differindex ffcc91010..800835073 100644 --- a/data/music/direct_sound_samples/8651910.pcm +++ b/data/music/direct_sound_samples/8651910.aif diff --git a/data/music/direct_sound_samples/865250C.pcm b/data/music/direct_sound_samples/865250C.aif Binary files differindex fa106dd16..2327b6d65 100644 --- a/data/music/direct_sound_samples/865250C.pcm +++ b/data/music/direct_sound_samples/865250C.aif diff --git a/data/music/direct_sound_samples/8652884.pcm b/data/music/direct_sound_samples/8652884.aif Binary files differindex b783dc1d3..eb49b5de7 100644 --- a/data/music/direct_sound_samples/8652884.pcm +++ b/data/music/direct_sound_samples/8652884.aif diff --git a/data/music/direct_sound_samples/8653040.pcm b/data/music/direct_sound_samples/8653040.aif Binary files differindex f352ca05f..ed129e539 100644 --- a/data/music/direct_sound_samples/8653040.pcm +++ b/data/music/direct_sound_samples/8653040.aif diff --git a/data/music/direct_sound_samples/8653CA4.pcm b/data/music/direct_sound_samples/8653CA4.aif Binary files differindex 166a2a7ef..74d4bcf4a 100644 --- a/data/music/direct_sound_samples/8653CA4.pcm +++ b/data/music/direct_sound_samples/8653CA4.aif diff --git a/data/music/direct_sound_samples/8654170.pcm b/data/music/direct_sound_samples/8654170.aif Binary files differindex 885a6923c..0fc92a67c 100644 --- a/data/music/direct_sound_samples/8654170.pcm +++ b/data/music/direct_sound_samples/8654170.aif diff --git a/data/music/direct_sound_samples/84A5F58.pcm b/data/music/direct_sound_samples/8654C20.aif Binary files differindex 6a59aed57..6d6c2e998 100644 --- a/data/music/direct_sound_samples/84A5F58.pcm +++ b/data/music/direct_sound_samples/8654C20.aif 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; +} |