Ога. Ну а поскольку мутить преобразователь с передаточной функцией конденсатора достаточно большой емкости (чтоб звуковые частоты не зарезал) геморрно, можно просто заюзать интегратор для генерации "земли" (выше я предлагал этот интегратор юзать как передаточный коэффициент микшера)- выходной сигнал с источника брать как разницу между входным сигналом и выходом интегратора.
Если надо, могу подкинуть расчет полосового фильтра
Единственно верный способ смешивания звука по нескольким каналам - это сложение.
Out = In1 + In2 + ... + InN
Где Out - выходной сигнал, In1, In2 ... InN - входные сигналы соответственно.
При таком сложении результат может выйти за пределы допустимого диапазона. Чтобы этого не произошло, необходимо соответствующим образом ослабить выходной сигнал. Чтобы гарантированно избежать переполнения, нужно предусмотреть такую ситуацию, что все входные сигналы одновременно принимают свои максимальные значения. Но на практике такой консервативный подход является чрезмерным, ведет к недостаточному использованию выходного динамического диапазона. Потому что вероятность того, что все входные сигналы примут свое максимальное значение, мала.
Более реалистичные коэффициенты ослабления выбирают исходя из статистических свойств входных сигналов. Для решаемой задачи я считаю целесообразным подобрать коэффициент экспериментально. Нужно запустить на эмуляторе несколько типичных музыкальных композиций и измерить наблюдаемый пиковый уровень звукового сигнала на выходе микшера. Коэффициент ослабления подобрать так, чтобы этот измеренный уровень использовал весь динамический диапазон, с некоторым запасом (5-10%).
Предложенные варианты с АРУ использовать не рекомендую, потому что это приведет к неприятным изменениям выходной громкости в процессе работы... Ну как на магнитофонах высшей группы сложности нет автоматической регулировки уровня записи - потому что работа схемы АРУЗ вносит в звук неприятные артефакты.
Тем более считаю неправильным вариант АРУ, в котором сигналы смешиваются в разных пропорциях. Подобная реализация приведет к тому, что каналы AY будут иметь переменную громкость друг относительно друга, что приведет к значительным искажениям в оригинальном звучании музыки.
Что касается подавления постоянной составляющей на выходе, то эта задача решается очень просто - рекурсивный фильтр высоких частот 1го порядка. Между прочим, он работает совершенно аналогично "конденсатору большой емкости". Формула его такая:
y[n] = b0*x[n] + b1*x[n-1] - a1*y[n-1]
Где y[i] - сигнал на выходе фильтра, x[i] - сигнал на его входе.
Вот значения коэффициентов для частоты среза фильтра 15Гц:
b0 = 0.99893257128508961
b1 = -0.99893257128508961
a1 = -0.99786514257017933
Постоянную составляющую этот фильтр подавляет полностью. На частоте 15Гц имеет ослабление -3дБ. На 30Гц - -1дБ, а все, что выше - проходит фильтр практически без изменений.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
это же жестокая математика... если что-то такое и надо делать, то лучше брать матлаб (или подобную прогу) и вычислять там (там есть конструктор любых фильтров). а учебник любой по цифровой обработке сигналов. если надо прям совсем азы цос, могу порекомендовать книжку Сато "Обработка сигналов. Первое знакомство". там в основном про фурье и подобное. про расчет фильтров там нет.
Расчитывать готовые фильтры в сторонних прогах- неблагодарное дело. Их нужно считать для всех комбинаций частот и порядков. Лучше уж в рантайме считать при применении параметров. Делается очень быстро.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)