User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 35

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

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

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

    Регистрация
    20.10.2007
    Адрес
    Челябинск
    Сообщений
    751
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    10 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Нужны звуковые эффекты из Batty побитно

    Привет, подскажите пожалуйста как из бетти можно вытянуть звуковые эффекты? Хочу их использовать в ардуинке в своём проекте.
    Изготовление Картриджей для Денди 1-8 игровки с меню. (0,1,2,3,4,7,71 мапперы), для Сеги 1-8
    https://vk.com/retronicaru

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

  3. #2

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,643
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Исходники Batty доступны. Используя их можно перенаправить вывод звука куда угодно.
    С уважением, Станислав.

  4. #3

    Регистрация
    20.10.2007
    Адрес
    Челябинск
    Сообщений
    751
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    10 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо! Я то по наивности думал что там побитная таблица в игре просто. Щас вижу что там целая процедура. Тогда получается мне вместо бипера записывать данные в память? ; Used by the routines at play_sound_LC122, play_sound_choose_ctrl and play_sound_choose_letter.
    sound_beep2:
    LD A,$10
    OUT ($FE),A
    sound_beep2_0:
    DJNZ sound_beep2_0
    XOR A
    OUT ($FE),A
    LD B,D
    sound_beep2_1:
    DJNZ sound_beep2_1
    RET
    Изготовление Картриджей для Денди 1-8 игровки с меню. (0,1,2,3,4,7,71 мапперы), для Сеги 1-8
    https://vk.com/retronicaru

  5. #4

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,643
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Руслан Посмотреть сообщение
    Тогда получается мне вместо бипера записывать данные в память?
    Ну я бы начал именно с этого.
    С уважением, Станислав.

  6. #5

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

    По умолчанию

    Цитата Сообщение от Руслан Посмотреть сообщение
    Спасибо! Я то по наивности думал что там побитная таблица в игре просто. Щас вижу что там целая процедура. Тогда получается мне вместо бипера записывать данные в память?
    Не все так просто. Там надо для каждой команды, которая исполняется в процедуре, посчитать количество тактов. Если это команда условного перехода или DJNZ - то надо рассмотреть оба варианта по тактам, когда переход исполняется и когда он не исполняется. Тактовая частота процессора известна - 3,5МГц. Анализ процедуры генерации звука позволит выяснить задержки между переключениями сигнала на бипере. Если требуется повторить такой звук на Ардуино без ЦАП - то нужно более или менее точно выдержать эти задержки и сгенерировать такой же сигнал на выходе звука. Если же имеется аудио-ЦАП - то есть вариант 2. Сгенерировать в памяти компьютера такой же сигнал, как это делает процедура на Спектруме. Потом подвергнуть этот сигнал ФНЧ-фильтру, ограничив полосу пропускания до 20кГц или ниже (по желанию). После фильтрации частоту дискретизации сигнала (исходно 3,5МГц) можно будет снизить до примерно 44кГц путем выбрасывания лишних данных - это не приведет к потере качества благодаря теореме Котельникова. Отфильтрованный сигнал после передискретизации записать в память и воспроизводить. Но тут, скорее всего, потребуется много памяти.

    В общем, задача непростая, но интересная!

  7. #6

    Регистрация
    16.05.2021
    Адрес
    г. Харьков, Украина
    Сообщений
    133
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно просто в эмулятор добавить лог записи в порт fe + текущий эмулируемый такт и потом уже что душе угодно делать, к примеру скриптом создать битовый массив, ну либо сохранить wave, в каком то музыкальном редакторе передескритезировать на нужную частоту

    Этот пользователь поблагодарил Кря Кря за это полезное сообщение:

    Barmaley_m(21.09.2024)

  8. #7

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

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    А просто записать с эмулятора wav и его скармливать ардуине не спортивно?
    Зависит от качества обработки сигнала эмулятором. Есть ли там для бипера правильный ФНЧ или нет.

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

  9. #8

    Регистрация
    09.09.2024
    Адрес
    г. Рига, Латвия
    Сообщений
    51
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Зависит от качества обработки сигнала эмулятором. Есть ли там для бипера правильный ФНЧ или нет.
    Почему думаете, что ФНЧ обязан быть? Мой эмулятор сейчас работает вообще без ФНЧ. И почти от всех программ звук получается нормальный.

  10. #9

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

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Зависит от качества обработки сигнала эмулятором. Есть ли там для бипера правильный ФНЧ или нет.
    А звуковом редакторе нельзя обработать звуки? и сделать их более приятными и мягкими?
    Вообще это из раздела "овчинка выделки не стоит", и вот все эти сломанные копья не нужны.

  11. #10

    Регистрация
    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.

Страница 1 из 3 123 ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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