На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование звука"
0) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с записью, обработкой, воспроизведением звука. Перед созданием темы подумайте, не будет ли она уместнее в разделах Разработка и тестирование программ, Наши исходники, а особенно Разовые заказы и подработки
1) На Раздел распространяются все Правила форума.Огромная просьба с ними внимательно ознакомиться.
2) Запрещается давать бессмысленные ответы вроде: "Снеси Мастдай", "ХП рулит", "Поставь Линукс" и т.д.
3) Запрещается создавать темы, в которых Вы намереваетесь получить ссылку на кряки, серийники и т.п. Также запрещено любое обсуждение p2p (peer-to-peer) сетей (BitTorrent, eDonkey и т.д.).
4) Реклама всякого рода пресекается беспощадно.
5) Используйте тэг [CODE] для выделения кода программы (непременно с указанием языка программирования - выбрать из списка. В противном случае бессмысленно!). Уважайте тех, кто будет читать ваш код!
6) Если решение вашей проблемы найдено, то не забываем помечать тему специальной функцией "Вопрос решён". Вам всего лишь требуется при написании последнего ответа поставить одну единственную галочку прямо над формой ответа.
7) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе

8) Если не прикрепляются/не скачиваются файлы, читаем Не прикрепляется / не скачивается файл. Любые обсуждения в данном разделе проблем с приложением файлов считаются оффтопиком! Со всеми вытекающими.

9) NEW! Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно. Попытки накрутки количества тематических сообщений за счёт поднятия древних неактуальных тем ("некрофилия") будут наказываться по велению левой пятки модераторского состава (см. пп.12, 13 Правил)



Нарушение Правил может повлечь наказание со стороны модераторов.



user posted imageFAQ Раздела user posted imageПоиск в Разделе user posted imageMSDN Library Online | Ваше мнение о модераторах: user posted imageBarazuk user posted imageRikkie
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Микширование каналов , без потери громкости
    Уважаемые форумчане!

    Подскажите, пожалуйста, как правильно микшировать каналы?
    Я делаю так

    ExpandedWrap disabled
         Result=(amplitudeCh1+amplitudeCh2+amplitudeCh3)/3


    В итоге получаю значительную потерю громкости на выходе. Например
    (255+1+1)/3=85.6 - то есть громкость результирующего звука упала в 3 раза по сравнению с громкостью канала 1.
    А как это происходит в природе? Ведь если одновременно звучит громкий инструмент и тихий, то громкий от этого не становиться тише. :D
      Цитата Виктор @
      (255+1+1)/3=85.6 - то есть громкость результирующего звука упала в 3 раза по сравнению с громкостью канала 1.
      ну разумеется, упадет, у нас же деление на 3 (в данном случае) происходит.
      для двух-трех каналов достаточно, я думаю, простого сложения с насыщением (т.е. с ограничением по динамическому диапазону).
      большее число каналов уже требует дополнительных мер.
        Rikkie, спасибо за ответ.
        Вообще-то у меня в моем синтезаторе 8 каналов, поэтому это как-заз, как Вы сказали "уже требует дополнительных мер". А каких мер?

        Сложение с насыщением это так?
        252+5=257 отбразываем 2 получаем 255
        Тогда у второго звука (у которого амплитуда на данный момент равна 3) будут обрезаться верхушки. Это приведет к искажению. Ведь так? Ну и опять же, у меня каналов больше 3-х. Так что этот метод мне не подходит.
        Сообщение отредактировано: Виктор -
          Цитата Виктор @
          252+5=257 отбразываем 2 получаем 255
          :yes:
          Цитата Виктор @
          Тогда у второго звука (у которого амплитуда на данный момент равна 3) будут обрезаться верхушки. Это приведет к искажению. Ведь так?
          :yes: В общем-то ничего страшного. если амплитуда сигнала n-го канала не размахивается на весь динамический диапазон, искажения не будут особо заметны.
          Цитата Виктор @
          Ну и опять же, у меня каналов больше 3-х. Так что этот метод мне не подходит.
          Ну, если число каналов постоянно, никто не мешает нам сузить динамический диапазон отдельного канала, т.е. скажем максимальное значение амплитуды в отдельном канале сделать на некоторый фиксированный коэффициент меньше максимального значения. Проблемы начинаются когда количество каналов может существенно изменяться.
            Виктор, Вы можете делать простое суммирование. Неважно, сколько каналов в вашем микшере. Значение семпла каждого канала вы умножаете на коэффициент, который зависит от положения регулятора gain этого канала. После, суммируете значения всех каналов, и результат умножаете ещё на один коэффициент, связанный с регулятором master volumе. Естественно, если на вход всех каналов подать по 0 дБ, и все регуляторы вывести на максимум, возникнет клипирование сигнала. Но это не ваша забота, а того, кто крутит регуляторы. В аналоговой технике все происходит аналогично. Вы даете возможность сбалансировать каналы, и выставить необходимый общий уровень звука, остальное - задача звукооператора. Если он перегрузит тракт звукопередачи по уровню, кто ж ему виноват.
              Насколько я помню просто складывать нельзя. По крайней мере при 3 каналов и более. Амплитуда там растет не лиинейно.

              Но правильной формулы я не знаю. Но вроде как надо сделать разложение фурье, а после сложить в частотной области.

              Вот нашел что-то.
              http://www.acoustics.hut.fi/dafx08/papers/dafx08_62.pdf
                Спасибо за ответы. Но ведь при суммировании будет еще один подводный камень. Аккорд из трех нот будет звучать ровно в 3 раза громче, чем одна нота из этого аккорда. Только что специально пошел и взял аккорд на пианино. Ну не звучит он в 3 раза громче, чем одна нота. :-?

                Добавлено
                Pavia, спасибо. Ты написал одновременно со мной. Через Фурье довольно сложно, не хотелось бы привлекать столь сложный алгоритм.

                Добавлено
                Цитата Pavia @
                Амплитуда там растет не лиинейно.

                Вот-вот.
                  Цитата 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 раза громче, чем одна нота из этого аккорда.
                  С чего это вдруг? Мы же не просто амплитуды складываем, у нас еще участвуют фазовые сдвиги. Это тоже надо учитывать.
                    Цитата
                    Но ведь при суммировании будет еще один подводный камень. Аккорд из трех нот будет звучать ровно в 3 раза громче, чем одна нота из этого аккорда. Только что специально пошел и взял аккорд на пианино. Ну не звучит он в 3 раза громче, чем одна нота.

                    Оркестр звучит громче одинокой скрипки. Субъективно вы не можете оценить уровень звука количественно. Он таки звучит громче, акорд, чем одна нота. Но ноты разнесены по частоте. Плюс два ваших уха, извлекающих пространственную информацию, да плюс широчайший динамичекий диапазон человеческого слуха позволяют вам вам слышать каждую ноту четко и ясно, даже на фоне стоящего невдалеке реактивного лайнера, если шум от реактивного двигателя не слишком "засирает" спектральный участок ноты и при этом общий уровень звука не превышает максимально допустимый уровень для вашего слуха.

                    Какое фурье, вы чего? :blink: Складываете, делаете регуляторы на каждый канал, и общий. Все.
                    Сообщение отредактировано: Prince -
                      Цитата Rikkie @
                      у нас еще участвуют фазовые сдвиги. Это тоже надо учитывать.

                      да, это правда, спасибо
                        Еще нарыл несколько агоритмов.
                        http://www.zju.edu.cn/jzus/2005/A0506/A050606.pdf
                          Pavia, я плохо понимать английский, но мне кажется, эти алгоритмы вообще из другой оперы. Адаптивное микширование для голосовых конференций необходимо. Потому что невозможно предсказать, кто какой уровень сигнала выдаст в конференцию участник, и отрегулировать его оперативно на стороне приема невозможно, нереально. Вот и приходится орать в "эфир": да сбавь ты уровень микрофона, я же кроме тебя никого не слышу!! Или использовать подобные алгоритмы.
                          У Виктора другая задача, как я понимаю. Обычный микшер состряпать.
                            Prince
                            Я мельком пробежал. Во общем там вначале как-раз говориться про суммирования каналов с некоторыми коэфициентами. Потом говориться что из-за дискретности(в тексте квантование) представления сигнала есть ограничения. Дальше они пробуют несколько методов выравнивания сигнала.

                            Так что да опера немного другая.

                            Добавлено
                            Как мы знаем процесс аудио смешивания есть линейная комбинация
                            каждой волны от источника давления (Гонсалес
                            и Абдель-Вахаб, 1998). Однако, цифровые аудио
                            сигналы имеют ограниченное число уровней квантования, поэтому мы можем наблюдать такие эффекты как
                            переполнение, после выполнения суммирования. Как правило,
                            мы проверяем переполнение, и наступает насыщение.
                            То есть, если результат будет больше, чем верхняя граница,
                            она будет установлена верхняя граница, если оно меньше, чем
                            Нижняя граница, она будет установлена на нижней границе.
                            Однако такая операция влияет на характеристики
                            аудио потока во временной области, как следствие добовляются новые шумы
                            . Это причина, почему возникает шум.
                            Более того, как только количество участников увеличивается,
                            шум увеличивается. Опыты показали, что при
                            наличии более 4 участников в одной конференции,
                            результат смешивания является неприемлемым.
                            Для решения этой проблемы существует пять схем которые работают в режиме реального времени и являются адаптивными
                            Вводятся микширования звука схем. Эти схемы:
                            Выравнивание по средневзвешенному (AAW),
                            Выравнивание по наибольшему весу (AGW),
                            Выравнивание по наименьшему весу (AWW),
                            Выровнять Self весу (ASW) и
                            Выравнивание по коэффициенту энергии (AEW).
                            Сообщение отредактировано: Pavia -
                              Pavia, спасибо, но мне бы алгоритмы
                                Алгориты чего?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0413 ]   [ 15 queries used ]   [ Generated: 25.04.24, 09:09 GMT ]