User Tag List

Показано с 41 по 50 из 58

Тема: TapeRecover

Древовидный режим

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

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Сначала расскажи, зачем ты пытаешься запихнуть все в 6кГц, а не использовать стандартные 44 или 48кГц? В крайнем случае 22кГц?
    чтобы проверить, что обработка корректно работает. На 44 или 48 кГц и без фильтров все неплохо звучит. И кстати записи вполне неплохо читаются и без фильтров с sampleRate 4800 Гц. Мне интересно получить читаемую запись с минимально возможным sampleRate, за счет корректной интерполяции.

    Вот например запись с SR 4800 Гц с линейным округлением nearest neighbor: https://transfiles.ru/pu49j
    Прекрасно читается, хотя на слух слышны биения.

    У меня-же интерес корректно используя фильтры получить читаемый файл с еще более низким SR. В теории он и звучать должен лучше - без биений.

    Цитата Сообщение от Serg6845 Посмотреть сообщение
    и после компаратора из этого wav получается нечто совершенно нечитаемое (в чем можно убедиться загрузив его например в PulseView и сконвертировав в логические уровни
    реальный компаратор нормальные уровни получит, если фильтры корректно были применены, т.к. при воспроизведении wav переходы через ноль будут интерполированы реконструируирующим фильтром ЦАП-а и окажутся именно в тех точках, где должны быть. И при просмотре в редакторе точки сэмплов в такой записи будут напоминать случайный шум, а не меандр, т.к. информация о меандре в нем будет закодирована не в отдельных сэмплах, а в их комбинации.

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

    Если использовать sinc интерполяцию, то получится еще более точно чем используя прямые. При этом амплитуда сэмплов будет плавать, но точки перехода через ноль (то что видит аналоговый компаратор) будут задаваться с гораздо большей точностью чем позволяет дискретная шкала времени wav файла с заданым SR.

    Чтобы было нагляднее, вот картинка:


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

    Мне как-раз и интересна обработка на грани, где без фильтров чтение просто не будет работать. А когда дискретность по времени позволяет точно задать точку перехода через ноль с большим запасом точности - это уже не интересно

    Ну и как результат хочу прикрутить к эмулятору интерполяцию для более точной загрузки wav файлов, чтобы загрузка из wav файла работала как на реальном железе, сейчас у меня в эмуляторе в загрузчике wav файлов вместо sinc интерполяции используется просто поиск сэмплов где сигнал пересекает ноль и персчет номера сэмпла в частоту z80 с округлением. Это тот-же nearest neighbor, т.е. при таком способе довольно большие ошибки длительностей импульсов получаются при загрузке реальных записей, которые по сути отфильтрованы аналоговым фильтром АЦП и АЧХ магнитофонного тракта. Как мне видится их правильнее с интерполяцией загружать.
    Последний раз редактировалось ZXMAK; 13.02.2025 в 16:37.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

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

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

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

Ваши права

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