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

User Tag List

Страница 5 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 41 по 50 из 58

Тема: TapeRecover

  1. #41
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Сообщений
    1,775
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    58 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    https://transfiles.ru/m7og1
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  2. #42
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,264
    Спасибо Благодарностей отдано 
    1,619
    Спасибо Благодарностей получено 
    2,117
    Поблагодарили
    833 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    на слух чтото не так - пилот как-то подозрительно звенит, похоже какая-то проблема с фильтром.
    Зачем использовать такие низкие частоты семплрейта (6000Гц?). По 3-4 отсчета на период сигнала. Это извращение, конечно ничего не будет нормально читаться.

  3. #43
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Сообщений
    1,775
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    58 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Зачем использовать такие низкие частоты семплрейта (6000Гц?). По 3-4 отсчета на период сигнала. Это извращение, конечно ничего не будет нормально читаться.
    я исхожу из того, что в магнитофонном сигнале самая высокочастотная составляющая - это короткий полупериод синхроимпульса 667 тактов, что для тактовой 3.5 МГц составляет 2624 Гц. Т.е. по Котельникову-Найквисту двух точек достаточно, т.е. дискретизация 2624*2=5248 Гц. Правда нужно учитывать, что фаза может быть рандомной, поэтому нужно брать с запасом 3-4 точки на период. Но с другой стороны точность воспроизведения самой высокочастотной составляющей синхроимпульса не столь критична, если она будет соответствовать длинному полупериоду 735 T = 2381 Гц, это для загрузки не критично. Тем-более, что формат магнитофонной записи спектрума изначально сделан с запасом для возможных отклонений в скорости и искажения сигнала.

    Т.е. в теории всё должно стабильно работать с дискретизацией от 4762 Гц до 7143 Гц, в худшем случае дискретизация 9524 Гц покрывает самые неудачные случаи с несовпадением фазы. Если такой частоты дискретизации мало, значит чтото не так с фильтрами/интерполяцией. Поправьте, если ошибаюсь.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  4. #44
    Veteran Аватар для Serg6845
    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,125
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    293
    Поблагодарили
    266 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    я исхожу из того, что в магнитофонном сигнале самая высокочастотная составляющая - это короткий полупериод синхроимпульса 667 тактов, что для тактовой 3.5 МГц составляет 2624 Гц. Т.е. по Котельникову-Найквисту двух точек достаточно, т.е. дискретизация 2624*2=5248 Гц. Правда нужно учитывать, что фаза может быть рандомной, поэтому нужно брать с запасом 3-4 точки на период. Но с другой стороны точность воспроизведения самой высокочастотной составляющей синхроимпульса не столь критична, если она будет соответствовать длинному полупериоду 735 T = 2381 Гц, это для загрузки не критично. Тем-более, что формат магнитофонной записи спектрума изначально сделан с запасом для возможных отклонений в скорости и искажения сигнала.

    Т.е. в теории всё должно стабильно работать с дискретизацией от 4762 Гц до 7143 Гц, в худшем случае дискретизация 9524 Гц покрывает самые неудачные случаи с несовпадением фазы. Если такой частоты дискретизации мало, значит чтото не так с фильтрами/интерполяцией. Поправьте, если ошибаюсь.
    А нужно исходить из того что в реальном Спектруме на входе не DSP для оптимальной обработки сигнала (который вытянет информацию не напрягаясь), а тупой компаратор и за ним чуть менее тупая программа чтения. и после компаратора из этого wav получается нечто совершенно нечитаемое (в чем можно убедиться загрузив его например в PulseView и сконвертировав в логические уровни).
    Если уж очень хочется работать на низких дискретизациях - то надо в wav выводить меандр без всякой фильтрации и подбирать частоту дискретизации так чтобы оно все же читалось.

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

  5. #45
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,264
    Спасибо Благодарностей отдано 
    1,619
    Спасибо Благодарностей получено 
    2,117
    Поблагодарили
    833 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Т.е. в теории всё должно стабильно работать с дискретизацией от 4762 Гц до 7143 Гц, в худшем случае дискретизация 9524 Гц покрывает самые неудачные случаи с несовпадением фазы. Если такой частоты дискретизации мало, значит чтото не так с фильтрами/интерполяцией. Поправьте, если ошибаюсь.
    Сначала расскажи, зачем ты пытаешься запихнуть все в 6кГц, а не использовать стандартные 44 или 48кГц? В крайнем случае 22кГц?

  6. #46
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,880
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    307
    Спасибо Благодарностей получено 
    279
    Поблагодарили
    220 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    "горе от ума" (c)
    Прихожу без разрешения, сею смерть и разрушение...

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

  8. #47
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Сообщений
    1,775
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    58 сообщений
    Mentioned
    2 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

  9. #48
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,264
    Спасибо Благодарностей отдано 
    1,619
    Спасибо Благодарностей получено 
    2,117
    Поблагодарили
    833 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

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

  10. #49
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,880
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    307
    Спасибо Благодарностей получено 
    279
    Поблагодарили
    220 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    насколько помню оцифровки wav с реального ленточного мафона, нет там никакой прямой и никакой точности
    на переходе через ноль уровень неслабо колбасило, с одним и даже несколькими локальными пиками в обе стороны
    почему же спектрум это всё прекрасно читал? а потому что в неустойчивый отрезок мог попасть только ОДИН in(FE)
    а после всяких фильтров и передискретизаций вот совсем не факт, что где-то больше одного не поместится
    Прихожу без разрешения, сею смерть и разрушение...

  11. #50
    Veteran Аватар для Serg6845
    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,125
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    293
    Поблагодарили
    266 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    реальный компаратор нормальные уровни получит, если фильтры корректно были применены, т.к. при воспроизведении wav переходы через ноль будут интерполированы реконструируирующим фильтром ЦАП-а и окажутся именно в тех точках, где должны быть.
    да, поторопился я с выводами. в PulseView компаратор нечестный, работает только в моменты отсчетов.
    вобщем взял с полки пирожок реал (Ленинград, компаратор по оригинальной схеме с измененными номиналами) - он отлично грузит как самый первый файл (который 4400) так и 6000LPF.

    p.s. а вот тот что 4800linear - не читается никак...

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

    И при просмотре в редакторе точки сэмплов в такой записи будут напоминать случайный шум, а не меандр, т.к. информация о меандре в нем будет закодирована не в отдельных сэмплах, а в их комбинации.
    ну на самом деле все там вполне узнаваемо.
    Последний раз редактировалось Serg6845; 15.02.2025 в 11:07.

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

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

    ZXMAK (17.02.2025)

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

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

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

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

Ваши права

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