public ISound Decode(BeatmaniaPcAudioEntry entry) { using (var wavDataMem = new ReadOnlyMemoryStream(entry.Data)) { var result = _wavDecoder.Decode(wavDataMem); var panning = entry.Panning; if (panning > 0x7F || panning < 0x01) { panning = 0x40; } var volume = entry.Volume; if (volume < 0x01) { volume = 0x01; } else if (volume > 0xFF) { volume = 0xFF; } result[NumericData.Panning] = (panning - 1.0d) / 126.0d; result[NumericData.Volume] = BeatmaniaPcConstants.VolumeTable[volume]; result[NumericData.Channel] = entry.Channel; result[NumericData.SourceVolume] = entry.Volume; result[NumericData.SourcePanning] = entry.Panning; return(result); } }
public void Write(Stream target, BeatmaniaPcAudioEntry entry) { var writer = new BinaryWriter(target); writer.Write(0x39584432); // 2DX9 writer.Write(0x14 + entry.ExtraInfo.Length); writer.Write(entry.Data.Length); writer.Write((short)0); writer.Write((short)entry.Channel); writer.Write((short)entry.Panning); writer.Write((short)entry.Volume); writer.Write(entry.ExtraInfo); writer.Write(entry.Data); }
private static Stream CreateData(BeatmaniaPcAudioEntry entry) { var mem = new MemoryStream(); var writer = new BinaryWriter(mem); writer.Write(0x39584432); // 2DX9 writer.Write(0x14 + entry.ExtraInfo.Length); // header length writer.Write(entry.Data.Length); writer.Write((short)entry.Reserved); writer.Write((short)entry.Channel); writer.Write((short)entry.Panning); writer.Write((short)entry.Volume); writer.Write(entry.ExtraInfo); writer.Write(entry.Data); mem.Position = 0; return(mem); }