Naudio - 将音频流放入值[-1,1]

时间:2012-03-21 10:52:36

标签: c# arrays audio bytearray naudio

大家好我需要把我的音频流放到[-1,1]的值中。

有人可以告诉我一个好的方法。我正在从流中读取字节数组和浮点数组,但我不知道下一步该做什么。

这是我的代码:

float[] bytes=new float[stream.Length];
            float biggest= 0;
            for (int i = 0; i < stream.Length; i++)
            {
                bytes[i] = (byte)stream.ReadByte();
                if (bytes[i] > biggest)
                {
                    biggest=bytes[i];
                }
            }

并且我不知道如何将值放入流中。因为byte只是正值。我需要从[-1,1]

获得
        for (int i = 0; i < bytes.Count(); i++)
        {
            bytes[i] = (byte)(bytes[i] * (1 / biggest));
        }

1 个答案:

答案 0 :(得分:0)

在您的第二个代码段中,您正在缩放值,但使用整数来执行此操作。您是否尝试过直接使用浮点值:

    for (int i = 0; i < bytes.Length; i++)
    {
        bytes[i] /= biggest;      // scale bytes to 0..1
        bytes[i] *= 2;            // scale bytes to 0..2
        bytes[i]--;               // scale bytes to -1..1 
    }

顺便说一下,bytes是一个浮点数组的变量名称,而且稍微有些混乱。