Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.236.86.184] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Уважаемые форумчане!
Подскажите, пожалуйста, как правильно микшировать каналы? Я делаю так Result=(amplitudeCh1+amplitudeCh2+amplitudeCh3)/3 В итоге получаю значительную потерю громкости на выходе. Например (255+1+1)/3=85.6 - то есть громкость результирующего звука упала в 3 раза по сравнению с громкостью канала 1. А как это происходит в природе? Ведь если одновременно звучит громкий инструмент и тихий, то громкий от этого не становиться тише. |
Сообщ.
#2
,
|
|
|
Цитата Виктор @ ну разумеется, упадет, у нас же деление на 3 (в данном случае) происходит. (255+1+1)/3=85.6 - то есть громкость результирующего звука упала в 3 раза по сравнению с громкостью канала 1. для двух-трех каналов достаточно, я думаю, простого сложения с насыщением (т.е. с ограничением по динамическому диапазону). большее число каналов уже требует дополнительных мер. |
Сообщ.
#3
,
|
|
|
Rikkie, спасибо за ответ.
Вообще-то у меня в моем синтезаторе 8 каналов, поэтому это как-заз, как Вы сказали "уже требует дополнительных мер". А каких мер? Сложение с насыщением это так? 252+5=257 отбразываем 2 получаем 255 Тогда у второго звука (у которого амплитуда на данный момент равна 3) будут обрезаться верхушки. Это приведет к искажению. Ведь так? Ну и опять же, у меня каналов больше 3-х. Так что этот метод мне не подходит. |
Сообщ.
#4
,
|
|
|
Цитата Виктор @ 252+5=257 отбразываем 2 получаем 255 Цитата Виктор @ В общем-то ничего страшного. если амплитуда сигнала n-го канала не размахивается на весь динамический диапазон, искажения не будут особо заметны.Тогда у второго звука (у которого амплитуда на данный момент равна 3) будут обрезаться верхушки. Это приведет к искажению. Ведь так? Цитата Виктор @ Ну, если число каналов постоянно, никто не мешает нам сузить динамический диапазон отдельного канала, т.е. скажем максимальное значение амплитуды в отдельном канале сделать на некоторый фиксированный коэффициент меньше максимального значения. Проблемы начинаются когда количество каналов может существенно изменяться. Ну и опять же, у меня каналов больше 3-х. Так что этот метод мне не подходит. |
Сообщ.
#5
,
|
|
|
Виктор, Вы можете делать простое суммирование. Неважно, сколько каналов в вашем микшере. Значение семпла каждого канала вы умножаете на коэффициент, который зависит от положения регулятора gain этого канала. После, суммируете значения всех каналов, и результат умножаете ещё на один коэффициент, связанный с регулятором master volumе. Естественно, если на вход всех каналов подать по 0 дБ, и все регуляторы вывести на максимум, возникнет клипирование сигнала. Но это не ваша забота, а того, кто крутит регуляторы. В аналоговой технике все происходит аналогично. Вы даете возможность сбалансировать каналы, и выставить необходимый общий уровень звука, остальное - задача звукооператора. Если он перегрузит тракт звукопередачи по уровню, кто ж ему виноват.
|
Сообщ.
#6
,
|
|
|
Насколько я помню просто складывать нельзя. По крайней мере при 3 каналов и более. Амплитуда там растет не лиинейно.
Но правильной формулы я не знаю. Но вроде как надо сделать разложение фурье, а после сложить в частотной области. Вот нашел что-то. http://www.acoustics.hut.fi/dafx08/papers/dafx08_62.pdf |
Сообщ.
#7
,
|
|
|
Спасибо за ответы. Но ведь при суммировании будет еще один подводный камень. Аккорд из трех нот будет звучать ровно в 3 раза громче, чем одна нота из этого аккорда. Только что специально пошел и взял аккорд на пианино. Ну не звучит он в 3 раза громче, чем одна нота.
Добавлено Pavia, спасибо. Ты написал одновременно со мной. Через Фурье довольно сложно, не хотелось бы привлекать столь сложный алгоритм. Добавлено Цитата Pavia @ Амплитуда там растет не лиинейно. Вот-вот. |
Сообщ.
#8
,
|
|
|
Цитата Pavia @ Ну есть у нас для простоты два сигнала:Амплитуда там растет не лиинейно. x1[n] = A10*sin(w10*n/fd + fi10) + A11*sin(w11*n/fd + fi11) + A12*sin(w12*n/fd + fi12) x2[n] = A20*sin(w20*n/fd + fi20) + A21*sin(w21*n/fd + fi21) + A22*sin(w22*n/fd + fi22) сумма y[n] = x1[n] + x[2] = A10*sin(w10*n/fd + fi10) + A11*sin(w11*n/fd + fi11) + A12*sin(w12*n/fd + fi12) + A20*sin(w20*n/fd + fi20) + A21*sin(w21*n/fd + fi21) + A22*sin(w22*n/fd + fi22) В общем случае y[n] = sum j (sum i ( Aij*sin(w ij * n/fd + fi ij) ) Где тут нелинейность пробегала? Цитата Виктор @ С чего это вдруг? Мы же не просто амплитуды складываем, у нас еще участвуют фазовые сдвиги. Это тоже надо учитывать. Аккорд из трех нот будет звучать ровно в 3 раза громче, чем одна нота из этого аккорда. |
Сообщ.
#9
,
|
|
|
Цитата Но ведь при суммировании будет еще один подводный камень. Аккорд из трех нот будет звучать ровно в 3 раза громче, чем одна нота из этого аккорда. Только что специально пошел и взял аккорд на пианино. Ну не звучит он в 3 раза громче, чем одна нота. Оркестр звучит громче одинокой скрипки. Субъективно вы не можете оценить уровень звука количественно. Он таки звучит громче, акорд, чем одна нота. Но ноты разнесены по частоте. Плюс два ваших уха, извлекающих пространственную информацию, да плюс широчайший динамичекий диапазон человеческого слуха позволяют вам вам слышать каждую ноту четко и ясно, даже на фоне стоящего невдалеке реактивного лайнера, если шум от реактивного двигателя не слишком "засирает" спектральный участок ноты и при этом общий уровень звука не превышает максимально допустимый уровень для вашего слуха. Какое фурье, вы чего? Складываете, делаете регуляторы на каждый канал, и общий. Все. |
Сообщ.
#10
,
|
|
|
Цитата Rikkie @ у нас еще участвуют фазовые сдвиги. Это тоже надо учитывать. да, это правда, спасибо |
Сообщ.
#11
,
|
|
|
Еще нарыл несколько агоритмов.
http://www.zju.edu.cn/jzus/2005/A0506/A050606.pdf |
Сообщ.
#12
,
|
|
|
Pavia, я плохо понимать английский, но мне кажется, эти алгоритмы вообще из другой оперы. Адаптивное микширование для голосовых конференций необходимо. Потому что невозможно предсказать, кто какой уровень сигнала выдаст в конференцию участник, и отрегулировать его оперативно на стороне приема невозможно, нереально. Вот и приходится орать в "эфир": да сбавь ты уровень микрофона, я же кроме тебя никого не слышу!! Или использовать подобные алгоритмы.
У Виктора другая задача, как я понимаю. Обычный микшер состряпать. |
Сообщ.
#13
,
|
|
|
Prince
Я мельком пробежал. Во общем там вначале как-раз говориться про суммирования каналов с некоторыми коэфициентами. Потом говориться что из-за дискретности(в тексте квантование) представления сигнала есть ограничения. Дальше они пробуют несколько методов выравнивания сигнала. Так что да опера немного другая. Добавлено Как мы знаем процесс аудио смешивания есть линейная комбинация каждой волны от источника давления (Гонсалес и Абдель-Вахаб, 1998). Однако, цифровые аудио сигналы имеют ограниченное число уровней квантования, поэтому мы можем наблюдать такие эффекты как переполнение, после выполнения суммирования. Как правило, мы проверяем переполнение, и наступает насыщение. То есть, если результат будет больше, чем верхняя граница, она будет установлена верхняя граница, если оно меньше, чем Нижняя граница, она будет установлена на нижней границе. Однако такая операция влияет на характеристики аудио потока во временной области, как следствие добовляются новые шумы . Это причина, почему возникает шум. Более того, как только количество участников увеличивается, шум увеличивается. Опыты показали, что при наличии более 4 участников в одной конференции, результат смешивания является неприемлемым. Для решения этой проблемы существует пять схем которые работают в режиме реального времени и являются адаптивными Вводятся микширования звука схем. Эти схемы: Выравнивание по средневзвешенному (AAW), Выравнивание по наибольшему весу (AGW), Выравнивание по наименьшему весу (AWW), Выровнять Self весу (ASW) и Выравнивание по коэффициенту энергии (AEW). |
Сообщ.
#14
,
|
|
|
Pavia, спасибо, но мне бы алгоритмы
|
Сообщ.
#15
,
|
|
|
Алгориты чего?
|