WavAudioFile
is a C# Wav parser. can be used in game engines (eg. unity) to load audio at runtime. useful for faster iteration times.
- Parses WAV file headers and data.
- Supports PCM and WaveFormatExtensible formats.
- Converts audio data to floating-point format for easier processing.
- Integration with Unity for easy audio playback.
public partial struct WavAudioFile
{
public string ChunkID;
public uint ChunkSize;
public string Format;
public string Subchunk1ID;
public uint Subchunk1Size;
public ushort AudioFormat;
public string AudioFormatName => FormatCode(AudioFormat);
public ushort NumChannels;
public uint SampleRate;
public uint ByteRate;
public ushort BlockAlign;
public ushort BitsPerSample;
public string Subchunk2ID;
public uint Subchunk2Size;
public byte[] Data;
public float[] DataAsFloat => getDataAsFloat();
// Method to parse the WAV file from a stream
public static WavAudioFile Parse(Stream stream);
// Method to parse the WAV file from byte array
public static WavAudioFile Parse(byte[] data);
public override string ToString();
}
using System.IO;
// Load WAV file from disk
using (var fileStream = File.OpenRead("path/to/your/file.wav"))
// or byte[] wavData = File.ReadAllBytes("path/to/your/file.wav");
{
WavAudioFile wavFile = WavAudioFile.Parse(fileStream);
Console.WriteLine(wavFile.ToString());
}
Unity:
void FootstepSoundEmitter(string footstepSoundFile)
{
var wav = WavAudioFile.Parse(System.IO.File.ReadAllBytes(footstepSoundFile));
var clip = wav.ToAudioClip();
AudioSource src = Camera.main.gameObject.AddComponent<AudioSource>();
src.clip = clip;
src.Play();
}
Currently only PCM. 8, 16, 24, 32 bits per sample
Ensure that your WAV file is in the correct format (PCM) for proper parsing.
You can use ffmpeg to convert other audio formats to PCM WAV:
ffmpeg -i input.mp3 -acodec pcm_s16le -ar 44100 -ac 2 output.wav