Задать вопрос
@mr_blond97

Как смержить два wav файла в один с помощью OpenTK?

Нужно смикшировать два wav файла в один в .net core. Для этого я использую OpenTK обертку OpenAl для C#.

1) Загружаю wav как в этом примере

2) Создаю два массива byte[]:

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) Записываю усредненную сумму байтов в массив result_sound_data:

for (int i = 0; i < sound_data1; i++)
{
result_sound_data[i] = (byte)((sound_data1[i] + sound_data2[i]) / 2);
}


4) Затем проигрываю result_sound_data
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);


На выходе получается "шипящий" "поломанный" сигнал. Как правильно мержить два wav файла?
  • Вопрос задан
  • 125 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
MrMureno
@MrMureno
VR for all
https://www.codeproject.com/Articles/29676/CWave-A...
ну как я понимаю, нельзя просто взять два фаила и средние данные в другой массив отправить..
заголовки. число каналов , частота дискретизации.
то есть ваш вариант "банального" склеивания сработает по сути только для "однотипных" фаилов. да еще и небось одинаковой длины.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы