public void BcstmBuildAndParseEqualPcm8(int numChannels) { Pcm8SignedFormat audio = GenerateAudio.GeneratePcm8SignedSineWave(BuildParseTestOptions.Samples, numChannels, BuildParseTestOptions.SampleRate); var writer = new BCFstmWriter(NwTarget.Ctr) { Configuration = { Codec = NwCodec.Pcm8Bit } }; BuildParseTests.BuildParseCompareAudio(audio, writer, new BCFstmReader()); }
public byte[] Save() { var writer = new BCFstmWriter(NwTarget.Ctr); writer.Configuration = new BxstmConfiguration() { Endianness = VGAudio.Utilities.Endianness.LittleEndian, }; return(writer.GetFile(audioData, writer.Configuration)); }
public void Save(System.IO.Stream stream) { var audioWriter = new BCFstmWriter(NwTarget.Ctr); audioWriter.Configuration = new BxstmConfiguration() { Endianness = VGAudio.Utilities.Endianness.LittleEndian, }; using (var writer = new Toolbox.Library.IO.FileWriter(stream, true)) { writer.Write(audioWriter.GetFile(audioData, audioWriter.Configuration)); } }
public void BcstmLoopAlignmentIsSet() { GcAdpcmFormat audio = GenerateAudio.GenerateAdpcmSineWave(BuildParseTestOptions.Samples, 1, BuildParseTestOptions.SampleRate); audio = audio.WithLoop(true, 1288, 16288); var writer = new BCFstmWriter(NwTarget.Ctr) { Configuration = { LoopPointAlignment = 700 } }; byte[] builtFile = writer.GetFile(audio); IAudioFormat parsedAudio = new BCFstmReader().ReadFormat(builtFile); Assert.Equal(1400, parsedAudio.LoopStart); Assert.Equal(16400, parsedAudio.LoopEnd); }
public static void ConvertWAVtoBFWAV(string input, string output) { byte[] fileAudioData = File.ReadAllBytes(input); string fileAudioIdntr = ".wav"; STRG fileStrg = new STRG(); fileStrg.name = Path.GetFileNameWithoutExtension(input); if (fileAudioIdntr == ".wav") { FileStream f = File.Create(output); WaveReader reader = new WaveReader(); BCFstmWriter writer = new BCFstmWriter(NwTarget.Cafe); VGAudio.Formats.AudioData convertedWav = reader.Read(fileAudioData); writer.WriteToStream(convertedWav, f); f.Close(); } }
private static void ConvertSound(Sound sound) { if (!sound.HasStartFile && !sound.HasStartFile) { return; } FileInfo outFile = CurrentDirectory.GetDirectory("out").GetFile($"{sound.Name}.{Arguments.Format.ToString().ToLower()}"); if (!Arguments.Overwrite && outFile.Exists) { return; } FileInfo tempWave = new FileInfo(Path.GetTempFileName()); WaveReader reader = new WaveReader(); AudioData audio = null; Console.WriteLine($"Processing {sound.Name}..."); if (sound.HasStartFile && !sound.HasLoopFile) { using (VorbisWaveReader vorbisStart = new VorbisWaveReader(GameSounds.GetFile(sound.StartFileName).FullName)) { WaveFileWriter.CreateWaveFile(tempWave.FullName, vorbisStart.ToWaveProvider16()); } using (FileStream stream = tempWave.OpenRead()) { audio = reader.Read(stream); } } else if (sound.HasStartFile && sound.HasLoopFile) { VorbisWaveReader vorbisStart = new VorbisWaveReader(GameSounds.GetFile(sound.StartFileName).FullName); VorbisWaveReader vorbisLoop = new VorbisWaveReader(GameSounds.GetFile(sound.LoopFileName).FullName); if (vorbisStart.WaveFormat.SampleRate < vorbisLoop.WaveFormat.SampleRate) { MediaFoundationResampler sampeler = new MediaFoundationResampler(vorbisStart, vorbisLoop.WaveFormat.SampleRate); WaveFileWriter.CreateWaveFile(tempWave.FullName, sampeler.ToSampleProvider().FollowedBy(vorbisLoop).ToWaveProvider16()); } else if (vorbisStart.WaveFormat.SampleRate > vorbisLoop.WaveFormat.SampleRate) { MediaFoundationResampler sampeler = new MediaFoundationResampler(vorbisLoop, vorbisStart.WaveFormat.SampleRate); WaveFileWriter.CreateWaveFile(tempWave.FullName, vorbisStart.FollowedBy(sampeler.ToSampleProvider()).ToWaveProvider16()); } else { WaveFileWriter.CreateWaveFile(tempWave.FullName, vorbisStart.FollowedBy(vorbisLoop).ToWaveProvider16()); } VorbisReader dataStart = new VorbisReader(GameSounds.GetFile(sound.StartFileName).FullName); VorbisReader dataLoop = new VorbisReader(GameSounds.GetFile(sound.LoopFileName).FullName); int startLoop = (int)dataStart.TotalSamples; int endLoop = (int)dataStart.TotalSamples + (int)dataLoop.TotalSamples; vorbisStart.Dispose(); vorbisLoop.Dispose(); dataStart.Dispose(); dataLoop.Dispose(); using (FileStream stream = tempWave.OpenRead()) { audio = reader.Read(stream); } audio.SetLoop(true, startLoop, endLoop); } else if (!sound.HasStartFile && sound.HasLoopFile) { VorbisWaveReader vorbisLoop = new VorbisWaveReader(GameSounds.GetFile(sound.LoopFileName).FullName); WaveFileWriter.CreateWaveFile(tempWave.FullName, vorbisLoop.ToWaveProvider16()); VorbisReader dataLoop = new VorbisReader(GameSounds.GetFile(sound.LoopFileName).FullName); int totalSamples = (int)dataLoop.TotalSamples; vorbisLoop.Dispose(); dataLoop.Dispose(); audio = reader.Read(tempWave.OpenRead()); audio.SetLoop(true, 0, totalSamples); } if (audio != null) { BCFstmWriter writer = new BCFstmWriter(Arguments.Target); writer.Configuration.Codec = Arguments.Codec; writer.Configuration.Endianness = Arguments.Endianness; using (FileStream stream = outFile.OpenWrite()) { writer.WriteToStream(audio, stream); } } }