Отредактируйте образцы файлов Wav для увеличения амплитуды с помощью C#

У меня есть следующий код C#, который читает волновой файл в байтовый массив, а затем записывает его в другой массив, создавая новый волновой файл. Я нашел это онлайн и не очень много об этом знаю.

Я хочу изменить значения, записываемые в новый массив, чтобы моя амплитуда была увеличена, скажем, значением 'x' для создаваемого нового волнового файла. Где и что должны быть сделаны изменения?

    private void ReadWavfiles(string fileName)
    {
        byte[] fa = File.ReadAllBytes(fileName);

        int startByte = 0;

        // look for data header
        for (var x = 0; x < fa.Length; x++)
            if (fa[x] == 'd' && fa[x + 1] == 'a' && fa[x + 2] == 't' && fa[x + 3] == 'a')
            {
                    startByte = x + 8;
                    break;
            }


        var buff = new byte[fa.Length / 2];
        var y = 0;
        var length = fa.Length;

        for (int s = startByte; s < length; s = s + 2)
            buff[y++] = (byte)(fa[s + 1] * 0x100 + fa[s]);

        write(buff, "D:\\as1.wav", "D:\\us1.wav");

        WaveOut obj = new WaveOut();
        obj.Init(new WaveFileReader("D:\\as1.wav"));
        obj.Play();
    }

    private void write(byte[] buffer, string fileOut, string fileIn)
    {
        WaveFileReader reader = new WaveFileReader(fileIn);
        int numChannels = reader.WaveFormat.Channels, sampleRate = reader.WaveFormat.SampleRate;
        int BUFFER_SIZE = 1024 * 16;

        using (WaveFileWriter writer = new WaveFileWriter(fileOut, new WaveFormat(sampleRate, 16, numChannels)))
        {
            int bytesRead;

            while (true)
            {
                bytesRead = reader.Read(buffer, 0, BUFFER_SIZE);
                if (bytesRead != 0)
                    writer.Write(buffer, 0, bytesRead);
                else break;
            }

            writer.Close();
        }
    }

0 ответов

Другие вопросы по тегам