Важная информация

User Tag List

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 21 по 30 из 46

Тема: Микширование звука

  1. #21
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,057
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus Посмотреть сообщение
    Формулы (как получить эти коэффициенты зная частоту среза и частоту дискретизации) в студию
    Вот тебе формула, как получить АЧХ и ФЧХ приведенного выше фильтра, зная его коэффициенты:

    H(z) = (b0 + b1*z) / (1 + a1*z)

    H(z) называется передаточной функцией фильтра. Это функция комплексного переменного z, принимающая также комплексные значения. Чтобы получить АЧХ по мощности, нужно найти квадрат модуля H(z), а чтобы получить ФЧХ - нужно найти аргумент H(z).

    Переменная z зависит от интересующей частоты следующим образом:

    z = exp(j*w*T),

    где j - мнимая единица,
    w = 2*pi*f - циклическая частота, которая равна обычной частоте f, умноженной на 2*pi,
    T = 1/fs - период дискретизации, который равен обратной величине от частоты дискретизации.

    Имея приведенные выше формулы и требуемые частоты среза, можно составить систему из двух уравнений, решив которую, найти искомые коэффициенты. Это прямой путь, хотя он практически никогда не используется для синтеза фильтров ввиду своей сложности.

    Обычно цифровые фильтры синтезируются на основе аналоговых прототипов, которые имеют передаточную функцию вида:

    H(s) = (b0 + b1*s) / (1 + a1*s)

    Где s = j*w - произведение циклической частоты на мнимую единицу.

    Как видно, эта формула намного проще, в ней нет комплексных экспонент, и уравнения на ее основе решаются напрямую (в случае фильтра первого порядка) или рядом точных методов (в случае фильтров высоких порядков).

    Когда известны коэффициенты аналогового фильтра-прототипа, применяют билинейное преобразование и получают коэффициенты цифрового фильтра.

    Реализовывать методы синтеза фильтров в каждой программе, использующей фильтры, нецелесообразно. Особенно если менять параметры этих фильтров по ходу работы программы не требуется. Есть пакеты для синтеза фильтров, например к Matlab идет Signal Processing Toolbox, которая содержит мощное приложение fdatool, которым я, собственно, и рассчитал приведенный в предыдущем посте фильтр.

    Программа, которая может сама рассчитать необходимые для своей работы фильтры, более гибка. Но следует учитывать, что это срабатывает только в ряде простых случаев. Иногда расчет фильтров для конкретных применений является итеративным процессом, требующим присутствие человека для принятия компромиссных решений. Кроме того, некоторые методы расчета фильтров не сходятся гарантированно или требуют слишком много ресурсов для своей работы. В этих случаях также гораздо надежнее иметь заранее рассчитанный фильтр (или их набор), чем нести риск наткнуться на отказ алгоритма.

    Цитата Сообщение от Sinus Посмотреть сообщение
    Ещё хочу почитать чего-нибудь по этим фильтрам, лучше если есть в инете где-нибудь, но и название книжки пойдёт.
    Рекомендую книгу на английском языке: D. Schlichthaerle "Digital filters: basics and design". Очень доходчиво написано, по сравнению с другими источниками.
    Последний раз редактировалось Barmaley_m; 18.08.2009 в 22:40.

  2. #22
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Расчитывать готовые фильтры в сторонних прогах- неблагодарное дело.
    ну уж конечно лучше самому написать кусок матлаба)) если уметь пользоваться последним, то синтез и проверка любых фильтров станет простым делом.

  3. #23
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    лучше самому написать кусок матлаба
    Расчет FIR-фильтра на С++ занимает сотню строк

    Цитата Сообщение от psb Посмотреть сообщение
    если уметь пользоваться последним, то синтез и проверка любых фильтров станет простым делом.
    Да кто спорит, что матлаб это круто? Вопрос в том, что надо будет генерить фильтры под все возможные сочетания частот и порядков. Остается решить, что будет менее накладным)

  4. #24
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,057
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Расчет FIR-фильтра на С++ занимает сотню строк
    Вот именно в этом случае самый большой риск того, что алгоритм не сойдется, либо будет работать слишком долго, либо потребует слишком много памяти, либо, по результатам пробных расчетов фильтра, человек захочет изменить начальные параметры.

    Я имею в виду алгоритм Ремеза (Parks-McClellan), который выдает на выходе оптимальные фильтры. Во многих программах применяются более простые методы расчета, такие как окно Кайзера. Но при использовании таких методов фильтр получается на 20-30% длиннее, что пропорционально увеличивает нагрузку на процессор при обработке фильтром данных.
    Цитата Сообщение от Vitamin Посмотреть сообщение
    Вопрос в том, что надо будет генерить фильтры под все возможные сочетания частот и порядков.
    Если речь идет об эмуляторе AY, то достаточно иметь одну-две частоты дискретизации: 44100Гц и 48000Гц. Другие частоты использовать нет никакого смысла, потому что это приведет только к ухудшению качества звука.

    То же самое относится к "сочетанию порядков". Во многих случаях фильтр решает вполне определенную задачу, такую, как подавление постоянной составляющей. Его порядок известен заранее - первый порядок. Аналогично и частота среза. Нет смысла ее менять по ходу работы или давать пользователю возможность настройки. Потому что любая такая настройка приведет лишь к ухудшению качества звука.

  5. #25
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Вот именно в этом случае самый большой риск того, что алгоритм не сойдется, либо будет работать слишком долго, либо потребует слишком много памяти, либо, по результатам пробных расчетов фильтра, человек захочет изменить начальные параметры.

    Я имею в виду алгоритм Ремеза (Parks-McClellan), который выдает на выходе оптимальные фильтры. Во многих программах применяются более простые методы расчета, такие как окно Кайзера. Но при использовании таких методов фильтр получается на 20-30% длиннее, что пропорционально увеличивает нагрузку на процессор при обработке фильтром данных.
    Заюзал КИХ с окном Кайзера. Именно при его расчете возможно несхождение (сужу по алгоритму). Насколько я понял, окно - это просто постобработка коэффициентов. Без нее результат тоже получается достаточно приемлимым.

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    То же самое относится к "сочетанию порядков". Во многих случаях фильтр решает вполне определенную задачу, такую, как подавление постоянной составляющей.
    А еще- срезание верхушки спектра.

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Если речь идет об эмуляторе AY, то достаточно иметь одну-две частоты дискретизации: 44100Гц и 48000Гц.
    По-хорошему надо поддерживать те частоты, которые поддерживаются оборудованием (от 8 до 192кГц). Плюс владельцы крутых компов (и наушников) могут выставить порядок фильтра побольше дабы отрезать все ненужное.
    Сужу по настройкам того же эмулятора АУ- там это все регулируется.

  6. #26
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    D. Schlichthaerle "Digital filters: basics and design"
    жесть, она $70 стоит.

    ---------- Post added at 13:43 ---------- Previous post was at 13:39 ----------

    По-хорошему надо поддерживать те частоты, которые поддерживаются оборудованием (от 8 до 192кГц).
    для AY, бипера и ковокса бессмысленно делать частоты превышающие рабочую частоту микросхемы, ибо будет идти ресэмплинг звука.
    это как увеличивать текстуру 64x64 до 1024x1024 с битричетырепятилинейнокуб ической фильтрацией - вроде и качество должно стать лучше, а всё равно мыло получается
    Последний раз редактировалось Sinus; 19.08.2009 в 14:47.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  7. #27
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus Посмотреть сообщение
    для AY, бипера и ковокса бессмысленно делать частоты превышающие рабочую частоту микросхемы, ибо будет идти ресэмплинг звука.
    Для AY частота генерируемых сигналов равна несущей, деленной на 8. Что на практике получается 1750/8 ~ 218кГц. Для ковокса- сэмплы 8кГц максимум идут. Давайте урежем весь звук до 8кГц- один хрен выше не передается! А для бипера максимальные частоты тоже лежат в диапазоне сотен кГц (спросите GriV'a )

  8. #28
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну-ну-ну, разогнались
    особенно про ковокс, ага на бипере сотни кГц, а ковокс такой тормоз... ))

  9. #29
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    особенно про ковокс, ага на бипере сотни кГц, а ковокс такой тормоз... ))
    Покажи мне программы или наработки, использующие ковокс на полную. Если найдешь- я тем более буду прав по поводу верхней границы частоты

  10. #30
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в каком-то ZX-Format, где была схема про ковокс, была и прога для теста, которая играла на частоте около 22кГц. это раз. а два - это куча разного софта, которому ничего не мешает играть одиночные сэмплы хоть на 44 кгц. а три - это мой нерелиженный плеер аудио с винта, играющий 8бит 44100кГц стерео.

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Нужна запись звука с реала
    от Vladimir Kladov в разделе Эмуляторы
    Ответов: 6
    Последнее: 10.04.2008, 21:10
  2. Анализаторы звука в ZX DEMO
    от AAA в разделе Демо
    Ответов: 18
    Последнее: 07.02.2008, 11:40
  3. Эмуляция звука
    от tenebris в разделе Зарубежные компьютеры
    Ответов: 19
    Последнее: 24.01.2008, 17:26

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •