diff --git a/src/WavFile/WavChannel.cs b/src/WavFile/WavChannel.cs index 903daa8..fabb312 100644 --- a/src/WavFile/WavChannel.cs +++ b/src/WavFile/WavChannel.cs @@ -12,15 +12,32 @@ namespace WavFile private readonly string _shortName; private readonly WavChannelMask _mask; + /// + /// + /// + public string LongName { get { return _longName; } } + + /// + /// + /// + public string ShortName { get { return _shortName; } } + + /// + /// + /// + public WavChannelMask Mask { get { return _mask; } } + + /// + /// + /// + /// + /// + /// public WavChannel(string longName, string shortName, WavChannelMask mask) { _longName = longName; _shortName = shortName; _mask = mask; } - - public string LongName { get { return _longName; } } - public string ShortName { get { return _shortName; } } - public WavChannelMask Mask { get { return _mask; } } } } diff --git a/src/WavFile/WavChannelMask.cs b/src/WavFile/WavChannelMask.cs index 5ee7338..9753251 100644 --- a/src/WavFile/WavChannelMask.cs +++ b/src/WavFile/WavChannelMask.cs @@ -8,23 +8,94 @@ namespace WavFile /// public enum WavChannelMask { + /// + /// + /// SPEAKER_FRONT_LEFT = 0x1, + + /// + /// + /// SPEAKER_FRONT_RIGHT = 0x2, + + /// + /// + /// SPEAKER_FRONT_CENTER = 0x4, + + /// + /// + /// SPEAKER_LOW_FREQUENCY = 0x8, + + /// + /// + /// SPEAKER_BACK_LEFT = 0x10, + + /// + /// + /// SPEAKER_BACK_RIGHT = 0x20, + + /// + /// + /// SPEAKER_FRONT_LEFT_OF_CENTER = 0x40, + + /// + /// + /// SPEAKER_FRONT_RIGHT_OF_CENTER = 0x80, + + /// + /// + /// SPEAKER_BACK_CENTER = 0x100, + + /// + /// + /// SPEAKER_SIDE_LEFT = 0x200, + + /// + /// + /// SPEAKER_SIDE_RIGHT = 0x400, + + /// + /// + /// SPEAKER_TOP_CENTER = 0x800, + + /// + /// + /// SPEAKER_TOP_FRONT_LEFT = 0x1000, + + /// + /// + /// SPEAKER_TOP_FRONT_CENTER = 0x2000, + + /// + /// + /// SPEAKER_TOP_FRONT_RIGHT = 0x4000, + + /// + /// + /// SPEAKER_TOP_BACK_LEFT = 0x8000, + + /// + /// + /// SPEAKER_TOP_BACK_CENTER = 0x10000, + + /// + /// + /// SPEAKER_TOP_BACK_RIGHT = 0x20000 } } diff --git a/src/WavFile/WavFile.csproj b/src/WavFile/WavFile.csproj index dca55b3..e97c298 100644 --- a/src/WavFile/WavFile.csproj +++ b/src/WavFile/WavFile.csproj @@ -23,6 +23,7 @@ prompt 4 false + bin\Debug\WavFile.XML pdbonly @@ -32,6 +33,7 @@ prompt 4 false + bin\Release\WavFile.XML diff --git a/src/WavFile/WavFileHeader.cs b/src/WavFile/WavFileHeader.cs index dfb73db..a9f18d3 100644 --- a/src/WavFile/WavFileHeader.cs +++ b/src/WavFile/WavFileHeader.cs @@ -16,46 +16,139 @@ namespace WavFile // // WAVE bytes=12 // + + /// + /// + /// public UInt32 ChunkID; // bytes=4 + + /// + /// + /// public UInt32 ChunkSize; // bytes=4 + + /// + /// + /// public UInt32 Format; // bytes=4 // // fmt bytes=24 // + + /// + /// + /// public UInt32 Subchunk1ID; // bytes=4 + + /// + /// + /// public UInt32 Subchunk1Size; // bytes=4 + + /// + /// + /// public UInt16 AudioFormat; // bytes=2 + + /// + /// + /// public UInt16 NumChannels; // bytes=2 + + /// + /// + /// public UInt32 SampleRate; // bytes=4 + + /// + /// + /// public UInt32 ByteRate; // bytes=4 + + /// + /// + /// public UInt16 BlockAlign; // bytes=2 + + /// + /// + /// public UInt16 BitsPerSample; // bytes=2 + // // extra bytes=2 // if h.Subchunk1Size > 16 // + + /// + /// + /// public UInt16 ExtraParamSize; // bytes=2 + // // extensible bytes=22 // + + /// + /// + /// public UInt16 Samples; // bytes=2 + + /// + /// + /// public UInt32 ChannelMask; // bytes=4 + + /// + /// + /// public Guid GuidSubFormat; // bytes=16 + // // data bytes=8 // + + /// + /// + /// public UInt32 Subchunk2ID; // bytes=4 + + /// + /// + /// public UInt32 Subchunk2Size; // bytes=4 + // // info // + + /// + /// + /// public bool IsExtensible; + + /// + /// + /// public int HeaderSize; // normal WAV = 44 bytes, extensible WAV = 44 + 24 = 68 bytes (without extra chunks) + + /// + /// + /// public double Duration; // duration in seconds + + /// + /// + /// public long TotalSamples; + // // channel types // + + /// + /// + /// public static readonly IList WavChannelTypes = new ReadOnlyCollection( new[] { @@ -67,6 +160,10 @@ namespace WavFile // // multi-channel types // + + /// + /// + /// public static readonly IList WavMultiChannelTypes = new ReadOnlyCollection( new[] { @@ -91,9 +188,21 @@ namespace WavFile }); // WAVEFORMATEXTENSIBLE sub-formats + + /// + /// + /// public static readonly Guid subTypePCM = new Guid("00000001-0000-0010-8000-00aa00389b71"); + + /// + /// + /// public static readonly Guid subTypeIEEE_FLOAT = new Guid("00000003-0000-0010-8000-00aa00389b71"); + /// + /// + /// + /// public override string ToString() { return String.Format(