/// <summary> /// Raw Wav Data に対してフィルタリングする。 /// モノラル版。 /// </summary> /// <param name="data">Raw Data</param> /// <param name="filter">フィルタ</param> /// <param name="is16bit">Raw Data の形式が16ビットか8ビットか。</param> public static void FilteringRawData(byte[] data, Monaural1SampleFilter filter, bool is16bit) { unsafe { fixed(byte *begin = data) { if (is16bit) { short *end = (short *)(begin + (data.Length & (~1))); for (short *p = (short *)begin; p != (short *)end; ++p) { filter(ref *p); } } else { byte *end = begin + data.Length; for (byte *p = begin; p != end; ++p) { short l = BiasedByteToShort(*p); filter(ref l); *p = ClipToByte(l); } } } } }
/// <summary> /// Raw Wav Data に対してフィルタリングする。 /// モノラル版。 /// </summary> /// <param name="data">Raw Data</param> /// <param name="filter">フィルタ</param> /// <param name="is16bit">Raw Data の形式が16ビットか8ビットか。</param> public static void FilteringRawData(byte[] data, Monaural1SampleFilter filter, bool is16bit) { unsafe { fixed(byte* begin = data) { if(is16bit) { short* end = (short*)(begin + (data.Length & (~1))); for(short* p = (short*)begin; p != (short*)end; ++p) { filter(ref *p); } } else { byte* end = begin + data.Length; for(byte* p = begin; p != end; ++p) { short l = BiasedByteToShort(*p); filter(ref l); *p = ClipToByte(l); } } } } }