Edit: I've just noticed that 3DS-Explorer can open these files but support is incomplete.
Hopefully the ability to extract the wave file will be added.
I'm using the 'Example.bcwav' file included in 'CiTRUS'
('CiTRUS' Download Link -> http://3dbrew.org/wiki/CiTRUS)
To get the RAW PCM Left channel, Extract Offset 0xC0 to 0x00632DBF with a hex editor to a new file.
To get the RAW PCM Right channel, Extract Offset 0x00632DC0 to 0x00C65ABF with a hex editor to a new file.
The RAW PCM files are Mono 22050hz 16 bit [Intel PCM / Big Endian]
You can open them with an audio editing program to playback the file.
(You will need to mix the separate Left / Right Channels to get a Stereo File)
Hopefully the ability to extract the wave file will be added.
I'm using the 'Example.bcwav' file included in 'CiTRUS'
('CiTRUS' Download Link -> http://3dbrew.org/wiki/CiTRUS)
To get the RAW PCM Left channel, Extract Offset 0xC0 to 0x00632DBF with a hex editor to a new file.
To get the RAW PCM Right channel, Extract Offset 0x00632DC0 to 0x00C65ABF with a hex editor to a new file.
The RAW PCM files are Mono 22050hz 16 bit [Intel PCM / Big Endian]
You can open them with an audio editing program to playback the file.
(You will need to mix the separate Left / Right Channels to get a Stereo File)
Code:
Offset:
00 (43 57 41 56) Magic -> "CWAV"
04 (FF FE) Endian Byte Order Mark (like UTF-16) [FFFE = Little / FEFF = Big]
06 (40 00) Size of Header (64 bytes)
08 (00 00)
0A (01) Compression Code? (01 = PCM Uncompressed)
0B (02) Number of Channels? (02 = Stereo)
0C (C0 5A C6 00) Size of ENTIRE File in bytes (12,999,360 bytes)
10 (02 00 00 00) Number of Chunks In File
14 (00 70 00 00) Chunk Type -> INFO?
18 (40 00 00 00) Start Offset of Chunk (64 bytes)
1C (60 00 00 00) Length of Chunk (96 bytes)
20 (01 70 00 00) Chunk Type -> DATA?
24 (A0 00 00 00) Start Offset of Chunk (160 bytes)
28 (20 5A C6 00) Length of Chunk (12,999,200 bytes)
2A (00 00 00 00) \
30 (00 00 00 00) |
34 (00 00 00 00) -= Padding to align to 32 bytes
38 (00 00 00 00) |
3C (00 00 00 00) /
---
40 (49 4E 46 4F) Chunk Type -> "Info"
44 (60 00 00 00) Entire Chunk Length = 96 bytes
48 (01 00 00 00) Bits per Sample? (01 = 16 bit, 00 = 8 bit?)
4C (22 56) Sample Rate (56 22 = 22050 hz)
50 (00 00 00 00) ?
54 (80 96 31 00) Number of Samples (3,249,792 samples) -- (Length in bytes = Number of Samples * (Bits Per Sample/8))
58 (00 00 00 00) ?
5C (02 00 00 00) Number of Sub-Chunks?
60 (00 71 00 00) Sub-Chunk Type = ChannelInfo?
64 (14 00 00 00) Offset of Chunk? (5C + 14 = 70)
68 (00 71 00 00) Sub-Chunk Type = ChannelInfo?
6C (28 00 00 00) Offset of Chunk? (5C + 28 = 84)
70 (00 1F 00 00) Data Type = Offset?
74 (18 00 00 00) Start offset of Left Channel (18 + A8 = C0 / 192 bytes)
78 (00 00 00 00) ?
7C (FF FF FF FF) End of Chunk Mark?
80 (00 00 00 00) Padding?
84 (00 1F 00 00) Data Type = Offset?
88 (18 2D 63 00) Start offset of Right Channel (00632D18 + A8 = 00632DC0 / 6,499,776 bytes)
8C (00 00 00 00) ?
90 (FF FF FF FF) End of Chunk Mark?
94 (00 00 00 00) Padding?
98 (00 00 00 00) Padding?
9C (00 00 00 00) Padding?
---
A0 (44 41 54 41) Chunk Type -> "DATA"
A4 (20 5A C6 00) Length of Chunk (12,999,200 bytes)