Cas2wav имеет свои глюки, частота дискретизации там странная, чуть меньше чем 44100 герц. И фаза не та: сначала вверх, потом вниз.
Wav2cas не распознаёт wav созданный OpenMSX из-за нормальной фазы (сначала вниз, потом вверх).
Я думаю OpenMSX самый аккуратный, но кто его знает, я не проверял.
Для преобразования из pcm в частоты надо делать fft (быстрое преобразование Фурье). Есть готовые библиотеки или можно свой вариант запилить. Я планирую в своем питон коде сделать.
Мне кажется надо делать так, чтобы синтезированный wav на осциллоскопе выглядел так же как и запись с реальной MSX (типа bsave"cas:test",&HC000,&HD0FF,&HC020).
А какой смысл уродовать красивый прямоугольный сигнал? Синусоида плохо сжиматься будет когда в MP3 перекодировать надо будет. Хранить мегабайтные WAV файлы смысла нет, а вот MP3шки можно с любой более-менее приличной электроники проиграть (плееры, телефоны).
Может я чего-то не понимаю.
Мне кажется надо делать так, чтобы синтезированный wav на осциллоскопе выглядел так же как и запись с реальной MSX
Смущает слово запись.
Выходной сигал для записи на магнитофон скорее всего будет напоминать прямоугольный сигнал по форме. Причем на разных MSX форма сигнала будет несколько отличаться.
То, что запишется на ленту это будет уже вторая форма, а то, что прочитается третья форма сигнала.
У всех трех форм сигнала будет общим частота следования сигнала (или как там, это правильней назвать).
в MP3 перекодировать надо будет.
C нюансами кодирования (сжатия) сигнала кодеком MP3 не знаком. Где-то читал, что он может исказить сигнал (что для уха не критично, критично для ввода в MSX или любой комп).
Еще что подумалось. С чего начинается сигнал (нуля, или единицы) при считывании реальному MSX видимо должно быть без разницы. Реакция идет на изменение (перепад) сигнала. Но это не точно, надо курить подпрограммы в биос-е.
Как это обрабатывается в эмуляторох х.з. Лет 10 назад копался в исходниках blueMSX. По моему, там была заплатка на биос. Эмулятор просто загружал последовательность байт из cas файла.
При выдачи сигнала эмулятором все просто. От эмулятора это не зависит. Что записала реальная программа в порт PPI, с того частотный сигнал и начнется. Декодируй последовательность нулей и единиц по изменению и пиши байты в cas файл.
Может уже не актуально. Вот тут можно исходники биос-а от машинки Sony HB-10 с подробными комментариями посмотреть.
Да, интересно подпрограммы ввода/вывода на ленту сделаны. Я так с первого наскока до конца и не понял, как оно работает.
Спасибо Алекс, я в ассемблере так себе разбираюсь. Не подскажете где вывод на кассету начинается?
Спасибо Алекс, я в ассемблере так себе разбираюсь. Не подскажете где вывод на кассету начинается?
Ну, как бы явного начала там нет.
Хотя, вот кусок кода, а дальше, наверное, в отладчике эмулятора надо будет раскручивать код.
; Following are used to access the cassette tape, ; data read/write, and motor on/off ; JP TAPION ;Turn on motor and read tape header JP TAPIN ;Read tape data JP TAPIOF ;Stops reading from tape JP TAPOON ;Turn on motor and write tape header JP TAPOUT ;Write data to tape JP TAPOFF ;Stops writing to tape JP STMOTR ;Start, stop cassette motor, or ;flip motor(on to off, off to on)