Просмотр полной версии : TapeRecover
Титов Андрей дал добро на-распространение.
программа анализирует wav файл 48kГц,16 бит,моно
....................
актуальные версии от 05.11.2022
https://zx-pk.ru/attachment.php?attachmentid=78045&d=1667653877
https://zx-pk.ru/attachment.php?attachmentid=78046&d=1667653892
"99.9% записей корректно считаются стандартной читалкой.
Если же запись мелко-мелко плывет (дрожит) может помочь одна из экспериментальных читалок"
Титов Андрей дал добро на-распространение.
после запуска программы надо нажать `2` для обработки.
нужный файл 48000КГц,16 бит,моно должен называться untitled.wav и находиться в той-же папке что и программа.
А есть у тебя версия, которая подходит к пакету ньюарта AutoTitus?
А у меня программа сразу закрывается почему-то... :( Или она требует сразу звук загрузки? Я даже 2 не успеваю нажать, как винда её закрывает.
да, untitled.wav нужен сразу
А вот подкрутить там чего, чтобы было нормальное меню и т.д., совесть сделать что-ли не позволила? Всё вот через задницу какую-то делается. Что-то надо успеть подсунуть, подпихнуть... мммммм. Дальше мат. :(
---------- Post added at 16:55 ---------- Previous post was at 16:53 ----------
Сейчас вам Ральф скажет, что вы мне дали, оно не работает. И он будет прав.
Приделаю выбор файла, выложу.
Приделаю выбор файла, выложу.
и если не-трудно добавь проверку формата.
(на 8ми битных wav выводи надпись only16b)
Чтобы не плодить глючные версии, сделал версию 2.0 с интерфейсом выбора файла. Протестируйте. Гудбой, замени в первом посту.
http://sderni.ru/269497
---------- Post added at 18:23 ---------- Previous post was at 18:21 ----------
и если не-трудно добавь проверку формата.
(на 8ми битных wav выводи надпись only16b)
Этого пока не будет, т.к. у меня вообще не анализируется заголовок вав-файла. Если формат не тот, то у пользователя просто ничего не распознается.
Гудбой, в первом посте убери то, что надо нажать '2', и то, что надо, чтобы файл назывался 'Untitled'.
Оставь только 48000Hz, stereo, 16 bit.
Для комплекта автотитуса у меня версия дома валяется, еще надо кому-то?
Да, давай сюда. Я хоть соберу всё вместе в один пост - этот (http://zx-pk.ru/showpost.php?p=309205&postcount=2).
Короче, вот тут (https://drive.google.com/folderview?id=0B03g75QWJHogfm9SSkV6Ym4yb1lMVVBVWmd wYjZsZTZGa2dLVEJqdHQxdVJmYmkzYWVNZVE&usp=sharing) лежит все что у меня есть.
AutoTitus уже не актуальна. Не надо рекламировать этот конструктор запутывая людей. Актуальная версия в первом сообщении в теме.
Вообщем сделал пост вот так (http://zx-pk.ru/showthread.php?p=309205#post309205). Всё нормально вроде?
Shadow Maker
10.04.2015, 10:45
Titus, а можно прикрутить еще чтобы оно из командной строки параметр файла брало? Ну чтобы не лазить выбирать, а просто запустил типа TapeRecover 1.wav и он сразу пофигачил. Это вроде несложно.
Titus, а можно прикрутить еще чтобы оно из командной строки параметр файла брало? Ну чтобы не лазить выбирать, а просто запустил типа TapeRecover 1.wav и он сразу пофигачил. Это вроде несложно.
Окей, попробую сделать на днях)
Я понимаешь ли гоняю одну кассету уже 5й раз чтоб древний wav2tzx распознал все блоки ( он часто тупит разделяя нормальный блок на два нормальный+турбозагрузка)
а тут такой подарок, прога все вытащила с первого раза!!! спасибо за софтинку;)
cardimax
25.05.2015, 12:55
Отличная программа. Вытаскивает данные из пепла (как Феникс ;)).
Единственное пожелание, если есть возможность, не мог бы Автор добавить распознавание wav файла с турбо загрузкой?
Осталось много кассет в турбо, хотелось бы восстановить данные...
cardimax, Вообще-то для превращение турбо (не Аш, Хэ, Эйч или как его там, а именно Т) формата в обычный и наоборот нужно всего лишь уменьшить/увеличить скорость проигрывания вдвое. На катушечных (да и ксссетных с пониженной скоростью) магнитофонах прокатывало, должно прокатить и в аудиоредакторе.
Отличная программа. Вытаскивает данные из пепла (как Феникс ;)).
Единственное пожелание, если есть возможность, не мог бы Автор добавить распознавание wav файла с турбо загрузкой?
Осталось много кассет в турбо, хотелось бы восстановить данные...
Универсальной поддержки турбо пока не планируется. Когда ко мне попадают такие кассеты, я подстраиваю под них свою распознавалку и распознаю. Так что если есть какие уникальные турбо-записи, милости прошу wav 48000 stereo в студию.
cardimax
30.05.2015, 19:22
Ок.
Спасибо за предложение, но разобрался сам.
Аудишн рулит как всегда. После оцифровки переводим wav на скорость в 2 раза медленнее и скармливаем TapeRecover. (если интересно могу рассказать как, есть маленькие подводные камни.) Удивительное рядом, (к вопросу о сохранении магнитного носителя), с кассет которым 28 лет (все записаны в турбо) удалось без проблем считать данные.
Попалось 3 кассеты на которых не было вообще не единой ошибки! С остальных тоже удалось снять все (подбором режима моно и разных каналов).
2 Cardimax: выложи плиз то что считал и добавь на http://spectrum4ever.org/
cardimax, А мне спасибо сказать, нажамши кнопочку, не судьба? См. мой пост выше, кто про скорость первый написал.
cardimax
03.06.2015, 13:14
cardimax, А мне спасибо сказать, нажамши кнопочку, не судьба? См. мой пост выше, кто про скорость первый написал.
Пардон, конечно.:)
Версия сделанная по просьбе Калантая с уменьшенным размером окна для маааленьких ноутбуков.
SoftLight
24.02.2020, 01:12
Спасибо, но лучше бы ты вместо этого в конфиг ini вывел все временные константы, чтобы можно было натравливать читалку на всякие нестандартные записи и подстраивать характеристики сигнала.
Спасибо, но лучше бы ты вместо этого в конфиг ini вывел все временные константы, чтобы можно было натравливать читалку на всякие нестандартные записи и подстраивать характеристики сигнала.
Ну, этим надо заниматься. А тут раз-раз, и подправил)
Тем более, она с универсальными настройками кушает почти все, что надо.
tiretrak
20.03.2020, 16:24
прога супер.спасибо автору
tiretrak
21.03.2020, 16:11
а возможно ли ее доработать ,что бы заливать стерео файл,обрабатывать сразу два канала , а в результат брать тот канал который прочитался без ошибок?
или как точередовать каналы ,для поиска читаемого
а возможно ли ее доработать ,что бы заливать стерео файл,обрабатывать сразу два канала , а в результат брать тот канал который прочитался без ошибок?
или как точередовать каналы ,для поиска читаемого
В планах такого пока нет.
Совершенно случайно заметил, что последняя выложенная мною версия с уменьшенным размером окна (для ноутбука Калантая) имеет небольшой баг, из-за которого некоторые заголовки сдвигаются на один бит. Это поправимо в любом редакторе tap-ов, но все равно это баг. Хуже всего, что эту версию скачали 157 человек:v2_dizzy_facepalm:
Кроме того, в первом посте от Гудбоя почему-то пропали все версии читалки.
Поэтому выкладываю два архива.
1. В первом архиве обычная корректная версия 2.01, и эта же версия, но с уменьшенным размером окна для маленьких ноутбуков.
2. Во втором архиве две старых экспериментальных версии 2.0, которые описаны в первом посте Гудбоя.
Пользоваться все так же.
99.9% записей корректно считаются стандартной читалкой.
Если же запись мелко-мелко плывет (дрожит) может помочь одна из экспериментальных читалок.
а что за способ используется для обработки, какие-то фильтры?
а что за способ используется для обработки, какие-то фильтры?
Свертка с вейвлетами.
Сейчас бы я сделал иначе, но тогда в 2008 году было самое то.
можно поподробнее? Если правильно понял анализируется наличие одной из частот соответствующих полу-периоду в z80 тактах?
- пилот-тон = 2168 T = 807 Гц,
- синхро = 667 / 735 T = 2624 / 2381 / 2496 Гц,
- 0 = 855 T = 2047 Гц,
- 1 = 1710 T = 1023 Гц
А как быть с фазой?
Есть ли исходники в открытом доступе?
Исходников нет.
А что с фазой? Для вейвлета фаза значения не имеет. Где максимум свертки, там и фаза.
фаза важна для чтения данных. Использование вейвлета для детекции частоты не дает информации о фазе. Плюс к этому нет четких фронтов, а скорость может сильно плавать, т.е. фазы плавают и плавает время битов. Как синхронизироваться?
на linux не могу запустить, интересно - нормально распознает этот (https://zx-pk.ru/attachment.php?attachmentid=81927&d=1739144754) файл?
также буду признателен, если сохранился какой-то тестовый wav, который с трудом распознавался, но в итоге распознался. Экспериментирую с фильтрами, нужны тестовые файлы которые заведомо возможно прочитать но в ужасном качестве
на linux не могу запустить, интересно - нормально распознает этот файл?
Я не занимаюсь извращениями, и не распознаю файлы с частотой 4400Гц (в 10 раз ниже требуемой).
Моя читалка направлена исключительно на то, чтобы помочь людям оцифровать и распознать спектрумовские кассеты. 48кГц, 16 бит, стерео.
Для любых других целей есть другие читалки)
Думаю, что моей читалкой распознано >90% всех записей за последние годы, выложенных на наших сайтах.
- - - Добавлено - - -
фаза важна для чтения данных. Использование вейвлета для детекции частоты не дает информации о фазе. Плюс к этому нет четких фронтов, а скорость может сильно плавать, т.е. фазы плавают и плавает время битов. Как синхронизироваться?
Ты лучше скажи, зачем тебе это? Какая цель? Если нужна распознавалка, то она есть.
И вообще, не мучай себя, купи к линуксу нормальный ноут с виндой, и пользуйся всем великим многообразием софта, написанным под него)
Ты лучше скажи, зачем тебе это? Какая цель? Если нужна распознавалка, то она есть.
цель - играюсь с фильтрами, изучаю возможные пределы и возможности, пишу и отлаживаю блоки DSP, для обработки.
Магнитофонные записи имеют свою специфику - тут важна длительность периодов колебаний, а не их форма. Мне эта сторона сигнальной обработки не знакома. Недавно ради прикола сделал конвертер tzx2wav, без фильтра работает хорошо, но на слух звучит не очень. Пробовал в нем классический ФНЧ использовать, сигнал после фильтра звучит чисто и красиво, но почему-то вообще перестает читаться. Меня это заинтересовало, разбираюсь в чем причины... :)
До этого когда эмуль отлаживал нужно было перегнать wav в tap, можно было конечно найти какой-то тул, но я ради прикола свой конвертер сделал, чисто чтобы понять хорошо ли понимаю детали кассетных записей. В нем нет фильтров, чисто в коде написан разбор сигнала на длительности импульсов и последующий анализ. Ну и в процессе стало интересно насколько хорошо он может распознавать файлы и попробовать прикрутить DSP для улучшения, если получится. На синтетических искажениях все вроде и так работает, а реально искаженных магнитофоном файлов у меня нет.
И вообще, не мучай себя, купи к линуксу нормальный ноут с виндой, и пользуйся всем великим многообразием софта, написанным под него)
я бы с удовольствием, но у меня нет такой возможности, мне даже наушники с микрофоном проблема достать
Пробовал в нем классический ФНЧ использовать
Если фильтр БИХ (с бесконечной импульсной характеристикой), то такой не подходит, он двигает фазу на разных частотах по разному.
Поэтому только КИХ-фильтр может подойти.
- - - Добавлено - - -
я бы с удовольствием, но у меня нет такой возможности, мне даже наушники с микрофоном проблема достать
Даже боюсь спросить, почему.
Если фильтр БИХ (с бесконечной импульсной характеристикой), то такой не подходит, он двигает фазу на разных частотах по разному.
Поэтому только КИХ-фильтр может подойти.
я использовал FIR (КИХ) фильтр на 569 коэффициентов и оверсэмплинг 8x. Вот такая АЧХ:
https://i.imgur.com/4Dx2V5G.png
Возможно чтото с реализацией фильтра не так, но на вид форма выходного сигнала красивая и звучит чисто и красиво, но почему-то вообще не читается.
Пробовал больше частоту дискретизации делать и оверсэмплинг до 16x увеличивать, начинает читаться, но читается с ошибками.
Serg6845
12.02.2025, 18:48
я использовал FIR (КИХ) фильтр на 569 коэффициентов и оверсэмплинг 8x. Вот такая АЧХ:
а зачем такая немерянная полоса? возможно отсюда и проблемы.
Возможно чтото с реализацией фильтра не так, но на вид форма выходного сигнала красивая и звучит чисто и красиво, но почему-то вообще не читается.
а посмотеть эту самую форму - есть где? до и после фильтра.
Возможно чтото с реализацией фильтра не так, но на вид форма выходного сигнала красивая и звучит чисто и красиво, но почему-то вообще не читается.
Да, кинь сюда файлик который не читается после твоего фильтра.
похоже где-то ошибки в коде фильтра. Одну ошибку нашел, с выравниванием буфера - поправил, стало лучше - на высоких сэмплрейтах грузится. Но с низким не хочет грузиться, хотя без фильтра грузится. Попробовал 32x оверсэмплинг и фильтр на 2271 точки, на слух чтото не так - пилот как-то подозрительно звенит, похоже какая-то проблема с фильтром.
https://transfiles.ru/m7og1
на слух чтото не так - пилот как-то подозрительно звенит, похоже какая-то проблема с фильтром.
Зачем использовать такие низкие частоты семплрейта (6000Гц?). По 3-4 отсчета на период сигнала. Это извращение, конечно ничего не будет нормально читаться.
Зачем использовать такие низкие частоты семплрейта (6000Гц?). По 3-4 отсчета на период сигнала. Это извращение, конечно ничего не будет нормально читаться.
я исхожу из того, что в магнитофонном сигнале самая высокочастотная составляющая - это короткий полупериод синхроимпульса 667 тактов, что для тактовой 3.5 МГц составляет 2624 Гц. Т.е. по Котельникову-Найквисту двух точек достаточно, т.е. дискретизация 2624*2=5248 Гц. Правда нужно учитывать, что фаза может быть рандомной, поэтому нужно брать с запасом 3-4 точки на период. Но с другой стороны точность воспроизведения самой высокочастотной составляющей синхроимпульса не столь критична, если она будет соответствовать длинному полупериоду 735 T = 2381 Гц, это для загрузки не критично. Тем-более, что формат магнитофонной записи спектрума изначально сделан с запасом для возможных отклонений в скорости и искажения сигнала.
Т.е. в теории всё должно стабильно работать с дискретизацией от 4762 Гц до 7143 Гц, в худшем случае дискретизация 9524 Гц покрывает самые неудачные случаи с несовпадением фазы. Если такой частоты дискретизации мало, значит чтото не так с фильтрами/интерполяцией. Поправьте, если ошибаюсь.
Serg6845
13.02.2025, 09:33
я исхожу из того, что в магнитофонном сигнале самая высокочастотная составляющая - это короткий полупериод синхроимпульса 667 тактов, что для тактовой 3.5 МГц составляет 2624 Гц. Т.е. по Котельникову-Найквисту двух точек достаточно, т.е. дискретизация 2624*2=5248 Гц. Правда нужно учитывать, что фаза может быть рандомной, поэтому нужно брать с запасом 3-4 точки на период. Но с другой стороны точность воспроизведения самой высокочастотной составляющей синхроимпульса не столь критична, если она будет соответствовать длинному полупериоду 735 T = 2381 Гц, это для загрузки не критично. Тем-более, что формат магнитофонной записи спектрума изначально сделан с запасом для возможных отклонений в скорости и искажения сигнала.
Т.е. в теории всё должно стабильно работать с дискретизацией от 4762 Гц до 7143 Гц, в худшем случае дискретизация 9524 Гц покрывает самые неудачные случаи с несовпадением фазы. Если такой частоты дискретизации мало, значит чтото не так с фильтрами/интерполяцией. Поправьте, если ошибаюсь.
А нужно исходить из того что в реальном Спектруме на входе не DSP для оптимальной обработки сигнала (который вытянет информацию не напрягаясь), а тупой компаратор и за ним чуть менее тупая программа чтения. и после компаратора из этого wav получается нечто совершенно нечитаемое (в чем можно убедиться загрузив его например в PulseView и сконвертировав в логические уровни).
Если уж очень хочется работать на низких дискретизациях - то надо в wav выводить меандр без всякой фильтрации и подбирать частоту дискретизации так чтобы оно все же читалось.
Т.е. в теории всё должно стабильно работать с дискретизацией от 4762 Гц до 7143 Гц, в худшем случае дискретизация 9524 Гц покрывает самые неудачные случаи с несовпадением фазы. Если такой частоты дискретизации мало, значит чтото не так с фильтрами/интерполяцией. Поправьте, если ошибаюсь.
Сначала расскажи, зачем ты пытаешься запихнуть все в 6кГц, а не использовать стандартные 44 или 48кГц? В крайнем случае 22кГц?
Lethargeek
13.02.2025, 13:01
"горе от ума" (c)
Сначала расскажи, зачем ты пытаешься запихнуть все в 6кГц, а не использовать стандартные 44 или 48кГц? В крайнем случае 22кГц?
чтобы проверить, что обработка корректно работает. На 44 или 48 кГц и без фильтров все неплохо звучит. И кстати записи вполне неплохо читаются и без фильтров с sampleRate 4800 Гц. Мне интересно получить читаемую запись с минимально возможным sampleRate, за счет корректной интерполяции.
Вот например запись с SR 4800 Гц с линейным округлением nearest neighbor: https://transfiles.ru/pu49j
Прекрасно читается, хотя на слух слышны биения.
У меня-же интерес корректно используя фильтры получить читаемый файл с еще более низким SR. В теории он и звучать должен лучше - без биений.
и после компаратора из этого wav получается нечто совершенно нечитаемое (в чем можно убедиться загрузив его например в PulseView и сконвертировав в логические уровни
реальный компаратор нормальные уровни получит, если фильтры корректно были применены, т.к. при воспроизведении wav переходы через ноль будут интерполированы реконструируирующим фильтром ЦАП-а и окажутся именно в тех точках, где должны быть. И при просмотре в редакторе точки сэмплов в такой записи будут напоминать случайный шум, а не меандр, т.к. информация о меандре в нем будет закодирована не в отдельных сэмплах, а в их комбинации.
Грубо говоря как это работает - можно подобрать амплитуду двух соседних сэмплов таким образом, чтобы прямая между ними пересекла ноль в требуемой точке времени, несмотря на то, что эту точку невозможно задать сеткой дискретной шкалы времени для заданного SR.
Если использовать sinc интерполяцию, то получится еще более точно чем используя прямые. При этом амплитуда сэмплов будет плавать, но точки перехода через ноль (то что видит аналоговый компаратор) будут задаваться с гораздо большей точностью чем позволяет дискретная шкала времени wav файла с заданым SR.
Чтобы было нагляднее, вот картинка:
https://i.imgur.com/MbBMgjW.png
Синие точки - это сэмплы. Красная линия это линейная интерполяция как сигнал меняется между сэмплами. Как видим, переход через ноль находится посредине между сэмплами и сэмпл в этой точке задать нельзя, т.к. разрешение частоты дискретизации не позволяет. Но зато можно меняя амплитуду соседних точек менять положение где красная линия будет пересекать ноль с достаточно высокой точностью, несмотря на то, что для двоичного сигнала разрешение частоты дискретизации не позволяет так точно задавать место, где сигнал будет пересекать ноль. В данном случае высокое разрешение по оси Y (амплитуды) позволяет более точно задать точку пересечения нуля на оси X (времени).
Мне как-раз и интересна обработка на грани, где без фильтров чтение просто не будет работать. А когда дискретность по времени позволяет точно задать точку перехода через ноль с большим запасом точности - это уже не интересно :)
Ну и как результат хочу прикрутить к эмулятору интерполяцию для более точной загрузки wav файлов, чтобы загрузка из wav файла работала как на реальном железе, сейчас у меня в эмуляторе в загрузчике wav файлов вместо sinc интерполяции используется просто поиск сэмплов где сигнал пересекает ноль и персчет номера сэмпла в частоту z80 с округлением. Это тот-же nearest neighbor, т.е. при таком способе довольно большие ошибки длительностей импульсов получаются при загрузке реальных записей, которые по сути отфильтрованы аналоговым фильтром АЦП и АЧХ магнитофонного тракта. Как мне видится их правильнее с интерполяцией загружать.
чтобы проверить, что обработка корректно работает. На 44 или 48 кГц и без фильтров все неплохо звучит. И кстати записи вполне неплохо читаются и без фильтров с sampleRate 4800 Гц. Мне интересно получить читаемую запись с минимально возможным sampleRate, за счет корректной интерполяции.
Понятно, просто развлекаешься так) Это можно)
Lethargeek
13.02.2025, 19:00
насколько помню оцифровки wav с реального ленточного мафона, нет там никакой прямой и никакой точности
на переходе через ноль уровень неслабо колбасило, с одним и даже несколькими локальными пиками в обе стороны
почему же спектрум это всё прекрасно читал? а потому что в неустойчивый отрезок мог попасть только ОДИН in(FE)
а после всяких фильтров и передискретизаций вот совсем не факт, что где-то больше одного не поместится
Serg6845
15.02.2025, 11:00
реальный компаратор нормальные уровни получит, если фильтры корректно были применены, т.к. при воспроизведении wav переходы через ноль будут интерполированы реконструируирующим фильтром ЦАП-а и окажутся именно в тех точках, где должны быть.
да, поторопился я с выводами. в PulseView компаратор нечестный, работает только в моменты отсчетов.
вобщем взял с полки пирожок реал (Ленинград, компаратор по оригинальной схеме с измененными номиналами) - он отлично грузит как самый первый файл (который 4400) так и 6000LPF.
p.s. а вот тот что 4800linear - не читается никак...
это все без участия магнитофона, с ним возможны свои весьма неочевидные приколы... в прошлом году цифровал записи 30+ летней давности - пришлось поковыряться. правда это был не Спектрум. и обошелся без высшей математики от слова совсем.
И при просмотре в редакторе точки сэмплов в такой записи будут напоминать случайный шум, а не меандр, т.к. информация о меандре в нем будет закодирована не в отдельных сэмплах, а в их комбинации.
ну на самом деле все там вполне узнаваемо.
вобщем взял с полки пирожок реал (Ленинград, компаратор по оригинальной схеме с измененными номиналами) - он отлично грузит как самый первый файл (который 4400) так и 6000LPF.
p.s. а вот тот что 4800linear - не читается никак...
спасибо, это любопытно. Если не затруднит, попробуйте еще вот этот вариант: https://transfiles.ru/49m9a
Загружается-ли на реальном железе?
Serg6845
17.02.2025, 21:28
спасибо, это любопытно. Если не затруднит, попробуйте еще вот этот вариант: https://transfiles.ru/49m9a
Загружается-ли на реальном железе?
грузится, но только на максимальной громкости. у нормальных узлов чтения есть гистерезис, и похоже амплитуды в определенные моменты перестает хватать.
грузится, но только на максимальной громкости. у нормальных узлов чтения есть гистерезис, и похоже амплитуды в определенные моменты перестает хватать.
Спасибо, а вот этот вариант лучше грузится, чем предыдущий? https://transfiles.ru/tgoqm
Получился неплохой фильтр, немного допилить и будет конвертер tap/csw/tzx в wav с высоким качеством. :)
Вот что получается на выходе конвертера с нормальным сэмплрейтом: https://transfiles.ru/kh3e6
Serg6845
18.02.2025, 09:15
Спасибо, а вот этот вариант лучше грузится, чем предыдущий? https://transfiles.ru/tgoqm
не, то же самое. на -6дБ (по регулятору Nero wave editor) - уже не грузится. но это все на моем конкретном железе, на другом результаты могут быть иные.
Получился неплохой фильтр, немного допилить и будет конвертер tap/csw/tzx в wav с высоким качеством. :)
Вот что получается на выходе конвертера с нормальным сэмплрейтом: https://transfiles.ru/kh3e6
а этот грузится и на -40дБ по тому же регулятору. правда я не понял зачем его вообще пропускать через фильтр - проще просто собрать из кусков синусоид нужной частоты... или еще проще меандр оставить.
правда я не понял зачем его вообще пропускать через фильтр - проще просто собрать из кусков синусоид нужной частоты... или еще проще меандр оставить.
ни то, ни другое не получится, т.к. частота дискретизации WAV файла не привязана к частотам сигнала, поэтому фаза будет постоянно меняться и синусоида будет начинаться где-то в случайных точках между сэмплами. Поэтому копировать сэмплы синусоиды или меандра не выйдет. Нужно интерполировать, для этого и нужна фильтрация.
Serg6845
18.02.2025, 14:49
ни то, ни другое не получится, т.к. частота дискретизации WAV файла не привязана к частотам сигнала, поэтому фаза будет постоянно меняться и синусоида будет начинаться где-то в случайных точках между сэмплами. Поэтому копировать сэмплы синусоиды или меандра не выйдет. Нужно интерполировать, для этого и нужна фильтрация.
да не нужно там ничего интерполировать. просто частоты сдвинуть до ближайшего целого числа отсчетов - на дискретизации 48000 никто и не заметит. разве что какие-нибудь извращения на тему "защиты от копирования", и то не факт.
вот кстати пример есть - спокойно грузится
https://github.com/patrikpersson/speccyboot/blob/master/wavloader/src/bin2wav.c
да не нужно там ничего интерполировать. просто частоты сдвинуть до ближайшего целого числа отсчетов - на дискретизации 48000 никто и не заметит. разве что какие-нибудь извращения на тему "защиты от копирования", и то не факт.
вот кстати пример есть - спокойно грузится
интерполировать нужно, иначе будут дичайшие фазовые ошибки и чем ниже sample rate,тем ошибки будут выше. На высоких sample rate оно конечно может грузиться, за счет того дискретность по времени высокая, но как только снизишь sample rate к адекватному уровню начнут сыпаться ошибки.
Serg6845
18.02.2025, 21:34
интерполировать нужно, иначе будут дичайшие фазовые ошибки и чем ниже sample rate,тем ошибки будут выше. На высоких sample rate оно конечно может грузиться, за счет того дискретность по времени высокая, но как только снизишь sample rate к адекватному уровню начнут сыпаться ошибки.
я имел в виду именно 48000. там вполне можно без фильтра.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot