User Tag List

Показано с 1 по 10 из 35

Тема: Нужны звуковые эффекты из Batty побитно

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    А звуковом редакторе нельзя обработать звуки? и сделать их более приятными и мягкими?
    Если эмулятор неправильный (без ФНЧ) - то нельзя. При отсутствии в эмуляторе ФНЧ его выходной аудиосигнал имеет специфические нелинейные искажения, известные под названием "Aliasing". Эти искажения необратимые, их устранить в звуковом редакторе или другим способом, в общем случае, невозможно.

    - - - Добавлено - - -

    Цитата Сообщение от rst Посмотреть сообщение
    Какое отношение имеет ЦОС к вопросу нужности ФНЧ в эмуляторе - вообще не понял...
    Самое прямое. ЦОС отвечает на вопросы, что такое фильтр, зачем он нужен, и что происходит, если его не использовать, либо его параметры неподходящие.

    Эмулятор, генерируя звук, занимается цифровой обработкой сигналов, хочешь ты этого или нет. Даже если эта обработка с виду простая, и кажется, что ее вообще нет. Если знаешь теорию - то знаешь достоинства и недостатки применяемого метода обработки, и можешь при необходимости применить другой метод, свободный от нежелательных недостатков. Ну, а если не знаешь - то и получаются эмуляторы, которым медведь на генерацию звука наступил.
    Цитата Сообщение от rst Посмотреть сообщение
    Вопрос был про ФНЧ именно в самом эмуляторе.
    Да, именно в эмуляторе. Я и Ivagor говорили об одном и том же. В эмуляторе. Нужен. Фильтр. Обязательно.
    Цитата Сообщение от rst Посмотреть сообщение
    Так как ФНЧ в звуковом тракте хозяйской системы (Win) естественно и так имеется. Зачем ещё?
    Затем, что частота дискретизации исходного сигнала (состояния порта #FE) - 3,5МГц. Это во много раз выше частоты дискретизации выходного сигнала (44100 или 48000Гц на звуковой карте).

    Что будет, если при таком уменьшении частоты дискретизации не применять ФНЧ? Варианта 2.
    1) Если в исходном сигнале были частоты выше 22050 или 24000Гц - то будет алиасинг.
    2) Если в исходном сигнале высоких частот не было - то ничего не будет.

    Есть ли в сигнале бипера частоты выше 22050 или 24000Гц? Конечно есть. Простой пример - вычисли преобразование Фурье от прямоугольного сигнала на какой-нибудь звуковой частоте типа 440Гц. Количество гармоник будет бесконечным, так что и частоты выше 22050Гц будут. В дискретном случае, с дискретизацией на 3,5МГц, гармоники будут вплоть до 1,75 МГц.

    Что нужно сделать, чтобы в сигнале таких частот не было? Правильно, ФНЧ.

    ФНЧ надо применять до того, как звук будет преобразован к частоте дискретизации операционной системы. После - уже поздно. Поэтому то, что в ОС и где-то там еще есть фильтры - это не значит, что тебе свой фильтр делать не надо.
    Цитата Сообщение от rst Посмотреть сообщение
    Пример я слышу в своём эмуляторе - качество звука (субъективно) аналогично тому, что было в железном "Вектор-06Ц". Там ФНЧ можно считать, что тоже практически нет.
    Ключевые слова - "Субъективно" и "практически". Ты наверняка не измерял уровень искажений, а на слух не научился еще, к чему надо прислушиваться. А измерения провести просто.
    1) Выполняешь команду "BEEP" в бейсике, генерируя какой-нибудь музыкальный звук. Эта команда должна генерировать чистые прямоугольные сигналы нужной частоты.
    2) Сохраняешь звуковой файл из эмулятора
    3) Открываешь его в звуковом редакторе
    4) Смотришь спектральный анализ. Видишь спектральные пики не только на базовой частоте звука и ее гармониках, а еще и кучу лишних пиков где попало. Это и есть алиасинг.

    Если сделать в эмуляторе нормальный ФНЧ и повторить эксперимент - то спектральные пики будут только на базовой частоте звука и ее гармониках. На слух звук будет при этом чистым и звонким. Но я понимаю, для неопытного уха может быть непонятно, на какие аспекты звука надо обращать внимание.

    На железном же компьютере выходной сигнал аналоговый. В нем присутствуют, в том числе, ультразвуковые частоты вплоть до нескольких мегагерц. Но ты их не слышишь. А те, что слышишь (аудиочастоты) - они чистые и не содержат посторонних спектральных линий. Если, конечно, усилитель и колонки не совсем ужасные.
    Цитата Сообщение от rst Посмотреть сообщение
    Вот про это было бы интересно узнать - реализуют ли ФВЧ в своих эмуляторах авторы? Такое ощущение, что реализуют.
    Реализуют. ФВЧ тоже нужен. Но не так критично. Он нужен для удаления из сигнала постоянной составляющей и оптимального использования динамического диапазона выходного сигнала. ФВЧ первого порядка вполне достаточно. И этот ФВЧ может работать на последнем этапе обработки сигнала, уже на частоте дискретизации звуковой карты.

    - - - Добавлено - - -

    Цитата Сообщение от rst Посмотреть сообщение
    Децимация тут не нужна. Достаточно сделать передискретизацию (ресэмплинг) на частоту аудио-потока хозяйской ОС. Что и делает мой эмулятор.
    Децимация - это частный случай передискретизации. Я думаю, автор имел здесь в виду то, что децимация также подразумевает использование соответствующего ФНЧ. Для высококачественной передискретизации (более общий случай) ФНЧ тоже, конечно, нужен.
    Цитата Сообщение от rst Посмотреть сообщение
    Передискретизацию можно делать разными алгоритмами. Мой эмулятор использует простейшую - кусочно-линейной интерполяцией.
    Кусочно-линейная интерполяция, если ее рассмотреть с точки зрения ЦОС, неявно применяет ФНЧ. Но это плохой ФНЧ, который недостаточно подавляет высокие частоты. Как следствие - алиасигнга становится меньше, чем если совсем без фильтра. Но все же он остается, и достаточно много. Качество звука все равно плохое.
    Цитата Сообщение от rst Посмотреть сообщение
    Думаю - этого вполне достаточно для эмулятора.
    Нет, недостаточно. С хорошим фильтром можно получить значительно лучшее качество звука, и разница будет явно ощутима на слух.
    Цитата Сообщение от rst Посмотреть сообщение
    А вставка сэмплов->ФНЧ->децимация - это тупое в лоб ("классическое") решение передискретизации. Которое практически применимо только если исходная частота и целевая частота - имеют примерно похожее разложение на простые сомножители. Что на практике редко бывает.
    Передискретизация и ФНЧ бывают разные. В том числе есть решения, комбинирующие ФНЧ и более сложную, чем кусочно-линейную, интерполяцию. Таким образом можно с высоким качеством передискретизировать сигналы с произвольным (в том числе иррациональным) соотношением исходной и целевой частот дискретизации. Рекомендую почитать следующую статью: Polynomial Interpolators for High-Quality Resampling of Oversampled Audio. Без соответствующей теоретической подготовки, может, и не все поймешь, но попробуй хотя бы реализовать оттуда пару-тройку алгоритмов.

    - - - Добавлено - - -

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

    Есть множество способов оптимизировать реализацию фильтра и всего процесса после того, как выполнены теоретические расчеты. Применяются неявные фильтры (как в случае кусочно-линейной или полиномиальной интерполяции), интерполяция коэффициентов фильтра (структуры фильтров Фарроу), полифазное разложение. Можно воспользоваться кусочным постоянством фильтруемого сигнала (я это впервые в эмуляторном мире реализовал в 2002г). Можно рассматривать фильтрацию в непрерывном времени (хотя расчеты ведутся, казалось бы, для дискретного времени). После оптимизации алгоритмы перестают быть внешне похожими на какую-либо фильтрацию, особенно для несведущего. Но делают они именно ее. И делают эффективно.
    Последний раз редактировалось Barmaley_m; 08.12.2024 в 03:39.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,095
    Спасибо Благодарностей отдано 
    103
    Спасибо Благодарностей получено 
    152
    Поблагодарили
    100 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Barmaley_m,
    > При отсутствии в эмуляторе ФНЧ его выходной аудиосигнал имеет специфические нелинейные искажения, известные под названием "Aliasing".

    Это разве что в плохом эмуляторе не будет никакого ФНЧ. В том же старом добром Unreal он вполне приличный (свертка по х64 оверсемплинга)

  4. #3

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    Это разве что в плохом эмуляторе не будет никакого ФНЧ. В том же старом добром Unreal он вполне приличный (свертка по х64 оверсемплинга)
    Тогда к чему твой вопрос? Если эмулятор хороший - то его аудиосигнал будет чистым и не будет нуждаться в обработке звуковым редактором. Если эмулятор плохой - то аудиосигнал будет необратимо искаженным, и обрабатывать его в звуковом редакторе будет бесполезно.

    В обоих случаях звуковой редактор не нужен.

    Звуковой редактор может пригодиться для монтажа звука или наложения спецэффектов. А улучшить с его помощью исходно плохое качество звука невозможно.

    - - - Добавлено - - -

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

    Нет таких секретных волшебных методов обработки сигнала, которые можно было бы реализовать в звуковом редакторе и нельзя - в эмуляторе.

  5. #4

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Если в звуковом редакторе можно сделать лучше, чем делает эмулятор - то это значит, что эмулятор нуждается в улучшении обработки сигнала.

    Нет таких секретных волшебных методов обработки сигнала, которые можно было бы реализовать в звуковом редакторе и нельзя - в эмуляторе.
    Конечно можно, только с высококачественным фильтром эмулятор будет так тормозить, что в лучшем случае 1-2 фпс будет. А в аудиоредакторе такой-же высококачественный фильтр наложить не проблема, т.к. там не нужна скорость эмуляции.


    Чтобы было понятней, можно сравнить процесс с сохранением видеофайла. Если программа сохраняет файл со сжатием с потерями, то такое сжатие добавляет артефакты в изображение. Поэтому восстановить исходное изображение и перекодировтаь более качественно уже не получится - информация потеряна. Однако если программа сохраняет видео в формате без потерь, то вы всегда можете перепаковать в видеоредакторе видео гораздо более качественее, чем это можно сделать при записи видеофайла из программы в реальном времени.

    Также точно и со звуком. Децимация - это по сути сжатие с потерями.
    Последний раз редактировалось ZXMAK; 15.12.2024 в 15:48.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  6. #5

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    ...гораздо более качественные фильтры и более сложную обработку, чем это возможно в эмуляторе, где важна скорость эмуляции.
    В эмуляторе не может быть высококачественного фильтра, т.к. эмуляторы заточены на скоростную обработку в реальном времени. Применять тяжеловесные высококачественные фильтры в эмуляторе нет возможности.
    Думаю, что есть. Я делал в 2002г эмулятор звука Atari800 - проект "mzpokeysnd". Не знаю, что осталось от моего кода в текущей версии эмулятора, но на тот момент это был прорыв, т.к. ранее использовалась лишь линейная интерполяция.

    Переходная полоса ФНЧ была от 17000 до 22050 Гц, отклонение в полосе пропускания не более 1% (0.07дБ), подавление в полосе подавления сейчас точно уже не помню, но не менее 80дБ. И это все работало на том Pentium III, где я это все налаживал, без большого напряжения вычислительных ресурсов. Работало у многих людей и на вторых пентиумах. На первом пентиуме 133МГц тормозило, но 8кГц моно еще вытягивало. При этом общая частота дискретизации была в районе 1,7 МГц, 4 AY-подобных канала.

    С тех пор я узнал о еще более мощных методах оптимизации фильтров и вообще все прошедшие годы профессионально занимался цифровой обработкой сигналов.

    Думаю, что для современных компьютеров не представляет проблемы такая эмуляция бипера и AY в реальном времени, чтобы выходной сигнал на частоте дискретизации 44100 или 48000Гц был полностью свободен от заметных (объективными измерениями, а не только на слух) искажений Aliasing. Могу конкретно помочь с твоим эмулятором. Исходники вроде есть в открытом доступе. Могу посмотреть на новогодних каникулах и (если увижу возможность улучшения) помочь.
    Последний раз редактировалось Barmaley_m; 15.12.2024 в 17:28.

  7. #6

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Думаю, что есть. Я делал в 2002г эмулятор звука Atari800 - проект "mzpokeysnd". Не знаю, что осталось от моего кода в текущей версии эмулятора, но на тот момент это был прорыв, т.к. ранее использовалась лишь линейная интерполяция.

    Переходная полоса ФНЧ была от 17000 до 22050 Гц, отклонение в полосе пропускания не более 1% (0.07дБ), подавление в полосе подавления сейчас точно уже не помню, но не менее 80дБ. И это все работало на том Pentium III
    Это зависит от того, что вы понимаете под "качественным фильтром".

    Для сравнения вот хороший FIR ФНЧ фильтр с указанными вами параметрами (17000-22050, 80 дБ), длина фильтра 3476 тапов:


    А вот более качественный на (20000-21000, 200 дБ), длина фильтра 46807 тапов:


    Первый и так тяжеловесный для эмулятора, но второй требует в десять раз большую производительность. А добавить сюда еще ФВЧ... Для обработки в аудиоредакторе это не имеет значения, а вот для эмулятора критично, т.к. он не может отдавать всю мощность процессора только на фильтр для звука, нужно еще выполнять основную задачу...
    Последний раз редактировалось ZXMAK; 15.12.2024 в 18:26.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  8. #7

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Первый и так тяжеловесный для эмулятора, но второй требует в десять раз большую производительность. А добавить сюда еще ФВЧ...
    Такие фильтры "в лоб", прямым методом считать, к счастью, не нужно. Даже порядок фильтра имеет мало значения, если реализация использует соответствующие трюки. Я выше упоминал "использование кусочного постоянства входного сигнала", который применил для Atari. Есть и другие. Можно даже без умножения сделать фильтр с весьма впечатляющими характеристиками. В общем, погоди немного, я гляну в твой эмулятор, что там можно сделать, и приду с конкретными предложениями.

    С ФВЧ вообще легко, он работает на выходной частоте (44100Гц), рекурсивный фильтр первого порядка. Можно реализовать без умножения, только с битовыми сдвигами.

    И еще, я считаю, что 200дБ подавление и переходная полоса 20000-21000Гц - это перебор. -200дБ лежит гораздо ниже разрешающей способности 16-битного сигнала - поэтому искажения Aliasing будут много меньше погрешности квантования. Также и подавление с 21000Гц вместо 22050 - это излишне. До 22050 мы имеем полное право оставить сигналы, тем более, что они там частично подавлены. 20000 полосу пропускания можно оставить, хотя это только для юных слушателей. В 18 лет я такое слышал, а сейчас - уши уже не те.

    Для практической разработки, думаю, надо задаться разумными требованиями, а не такими, которые и проверить-то не на чем будет, ибо нету таких усилителей, наушников или колонок, доступных для простого смертного. И ушей таких тоже почти ни у кого нет. А вот разумные требования стандартов Hi-Fi или даже Hi-End в эмуляторе реализовать без чрезмерной нагрузки на проц будет вполне возможно.
    Последний раз редактировалось Barmaley_m; 16.12.2024 в 22:41.

  9. #8

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Это зависит от того, что вы понимаете под "качественным фильтром"
    Привет. Я тебе в личку написал по звуку для эмулятора. Можешь ответить?

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

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

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

Похожие темы

  1. Звуковые эффекты AY в играх
    от goblinish в разделе Игры
    Ответов: 31
    Последнее: 21.07.2015, 04:43
  2. Ответов: 24
    Последнее: 18.02.2015, 08:11
  3. Куплю звуковые чипы: YM2612, SN76489
    от evgs в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 25.08.2010, 14:33
  4. Batty
    от CityAceE в разделе Игры
    Ответов: 1
    Последнее: 14.03.2005, 05:55

Ваши права

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