@tyner

Народ, может мне внятно кто то сказать, как сложить несколько звуковых потоков в один??

Уже неделю перекапываю по тем же сайтам эту тему, ничего конкретного, только обобщения, описания и прочее. Помогите, только если можно не ссылкой, а прямо здесь напишите по шагам алгоритм сего чуда. Конкретнее. У меня есть n звуковых потоков, представленных массивом байт. Мне нужно написать функцию которая имплементирует алгоритм наложения этих потоков, и возвращает массив байт, сопсно с сложенными потоками. Ну пример.. Например как в скайпе говорят 3 человека одновременно а четвертый слышит их всех, и сильно матерится что не поймет их, и просит говорить по очереди.
Вот такой эффект нужен. Заранее огромное спасибо!!
  • Вопрос задан
  • 2549 просмотров
Пригласить эксперта
Ответы на вопрос 3
1. Представить все потоки в виде массивов чисел определенного типа, использованного при записи (обычно short или float )
Другими словами, представить потоки не в виде массива байт, а в виде массива 16-ти битных (short) или 32-х битных (float) чисел (выборок). После этого можно делать обычное сложение по выборкам.
Примечание: если в потоке стерео сигнал, то он должен быть преобразован в 2 массива, по принципу: все нечетные выборки 1-й канал, а все четные - 2-й канал.
Ответ написан
Комментировать
TimeCoder
@TimeCoder
Если сигналы одного типа (число каналов, бит на канал, частота дискретизации - это важно!) то все очень просто: нужно складывать отчеты (не байты, если там по 2 байта на отчет, что скорее всего). Ну и понятно, что выход за диапазон запросто может быть, поэтому как говорили выше предварительно каждое слагаемое делить на 3. И все, сложение в данном случае отражает ФИЗИЧЕСКУЮ суть процесса восприятия нескольких звуковых волн.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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