Мне нужно объединить два волновых файла в ядре .net. Поэтому я выбрал OpenTK в качестве оболочки для OpenAL.
Я попытался объединить два волновых файла с одинаковыми битами на семпл и частотой кадров.
1) Для этого я получаю пример
2) Создайте 2-байтовые области:
var sound_data1 = LoadWave(path1, FileMode.Open), out channels, out bits_per_sample, out sample_rate);
var sound_data2 = LoadWave(path2, FileMode.Open), out channels, out bits_per_sample, out sample_rate);
3) Составьте сумму для каждого байта и разделите ее на 2
for (int i = 0; i < sound_data1; i++)
{
result_sound_data[i] = (byte)((sound_data1[i] + sound_data2[i]) / 2);
}
4) затем:
AL.BufferData(buffer, GetSoundFormat(channels, bits_per_sample), result_sound_data, result_sound_data.Length, sample_rate);
AL.Source(source, ALSourcei.Buffer, buffer);
AL.SourcePlay(source);
Наконец, я получил немного поврежденного звука вместо смешанного сигнала. Как мне это решить?