Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要C#.wav文件处理建议_C#_Naudio - Fatal编程技术网

需要C#.wav文件处理建议

需要C#.wav文件处理建议,c#,naudio,C#,Naudio,我正在做的是一个小的音频编辑器,它加载一个.wav文件并在时域中显示它。用户可以选择其中的一部分并放大或DFT块,该块在频域中显示一个小窗口。(稍后将添加额外功能) 我认为将字节数组拆分为两个浮点数组是一个错误。 我使用NAudio将样本放入字节数组。 然后,我使用在堆栈溢出上找到的循环将数组拆分为左通道和右通道 private void readToArrays(WaveFileReader pcm) { wf = pcm.WaveFormat; int s

我正在做的是一个小的音频编辑器,它加载一个.wav文件并在时域中显示它。用户可以选择其中的一部分并放大或DFT块,该块在频域中显示一个小窗口。(稍后将添加额外功能)

我认为将字节数组拆分为两个浮点数组是一个错误。

我使用NAudio将样本放入字节数组。 然后,我使用在堆栈溢出上找到的循环将数组拆分为左通道和右通道

private void readToArrays(WaveFileReader pcm) {

        wf = pcm.WaveFormat;

        int samplesDesired = (int)pcm.Length;

        buffer = new byte[samplesDesired * 4];
        left = new float[samplesDesired];
        right = new float[samplesDesired];

        int bytesRead = pcm.Read(buffer, 0, samplesDesired);

        if (wf.BitsPerSample == 16) {

            if (wf.Channels == 1) {
                for (int i = 0; i < buffer.Length / 4; i++)
                    //handle
            }
            else if (wf.Channels == 2) {
                int index = 0;
                for (int sample = 0; sample < bytesRead / 4; sample++) {
                    left[sample] = BitConverter.ToInt16(buffer, index);
                    index += 2;
                    right[sample] = BitConverter.ToInt16(buffer, index);
                    index += 2;
                }                     
            }
        }else if (wf.BitsPerSample == 8) {
            if (wf.Channels == 1) {
               //handle
            }
            else if (wf.Channels == 2) {
               //handle
            }
        }
    }
private void readtoarray(波形文件读取器pcm){
wf=pcm.WaveFormat;
int sampleseeded=(int)pcm.Length;
缓冲区=新字节[所需样本*4];
左=新浮动[所需样本];
右=新浮动[所需样本];
int bytesRead=pcm.Read(缓冲区,0,所需样本);
if(wf.BitsPerSample==16){
如果(wf.Channels==1){
for(int i=0;i
TL:DR:我从单个文件的播放中得到很多噪音。我需要的是一些建议,告诉我如何仍然能够修改样本/DFT,并能够在没有噪声的情况下输出它们。请注意,我只是计算机专业的二年级学生,没有多年的工作经验

额外信息:位深度=16;抽样率=22050