Хочу понять как модуляция при записи на кассету работает

Страница 2/2
1 |

By dhau

Paragon (1556)

Аватар пользователя dhau

29-03-2019, 18:02

Cas2wav имеет свои глюки, частота дискретизации там странная, чуть меньше чем 44100 герц. И фаза не та: сначала вверх, потом вниз.

Wav2cas не распознаёт wav созданный OpenMSX из-за нормальной фазы (сначала вниз, потом вверх).

Я думаю OpenMSX самый аккуратный, но кто его знает, я не проверял.

Для преобразования из pcm в частоты надо делать fft (быстрое преобразование Фурье). Есть готовые библиотеки или можно свой вариант запилить. Я планирую в своем питон коде сделать.

Мне кажется надо делать так, чтобы синтезированный wav на осциллоскопе выглядел так же как и запись с реальной MSX (типа bsave"cas:test",&HC000,&HD0FF,&HC020).

By Alexey

Guardian (2175)

Аватар пользователя Alexey

29-03-2019, 21:37

А какой смысл уродовать красивый прямоугольный сигнал? Синусоида плохо сжиматься будет когда в MP3 перекодировать надо будет. Хранить мегабайтные WAV файлы смысла нет, а вот MP3шки можно с любой более-менее приличной электроники проиграть (плееры, телефоны).

By АIеks

Champion (408)

Аватар пользователя АIеks

29-03-2019, 22:46

Может я чего-то не понимаю.

dhau wrote:

Мне кажется надо делать так, чтобы синтезированный wav на осциллоскопе выглядел так же как и запись с реальной MSX

Смущает слово запись.

Выходной сигал для записи на магнитофон скорее всего будет напоминать прямоугольный сигнал по форме. Причем на разных MSX форма сигнала будет несколько отличаться.

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

У всех трех форм сигнала будет общим частота следования сигнала (или как там, это правильней назвать).

Alexey wrote:

в MP3 перекодировать надо будет.

C нюансами кодирования (сжатия) сигнала кодеком MP3 не знаком. Где-то читал, что он может исказить сигнал (что для уха не критично, критично для ввода в MSX или любой комп).

By АIеks

Champion (408)

Аватар пользователя АIеks

29-03-2019, 23:37

Еще что подумалось. С чего начинается сигнал (нуля, или единицы) при считывании реальному MSX видимо должно быть без разницы. Реакция идет на изменение (перепад) сигнала. Но это не точно, надо курить подпрограммы в биос-е.

Как это обрабатывается в эмуляторох х.з. Лет 10 назад копался в исходниках blueMSX. По моему, там была заплатка на биос. Эмулятор просто загружал последовательность байт из cas файла.

При выдачи сигнала эмулятором все просто. От эмулятора это не зависит. Что записала реальная программа в порт PPI, с того частотный сигнал и начнется. Декодируй последовательность нулей и единиц по изменению и пиши байты в cas файл.

By Pencioner

Paladin (903)

Аватар пользователя Pencioner

30-03-2019, 00:07

Alexey wrote:

А какой смысл уродовать красивый прямоугольный сигнал? Синусоида плохо сжиматься будет когда в MP3 перекодировать надо будет.

Насчет синусоиды должно быть наоборот. МР3 кодирование - сигнал раскладывается на спектр (сумма синусоид) и потом упрощается хитрым алгоритмом для того чтобы обмануть человеческие уши. А прямоугольный сигнал имеет более широкий спектр, соответственно искажения сигнала (при любом битрейте) будут больше и сжатие при VBR будет хуже (размер файла больше). Идеальная синусоида должна вообще очень хорошо сжиматься МР3

By АIеks

Champion (408)

Аватар пользователя АIеks

31-03-2019, 10:36

Может уже не актуально. Вот тут можно исходники биос-а от машинки Sony HB-10 с подробными комментариями посмотреть.

Да, интересно подпрограммы ввода/вывода на ленту сделаны. Я так с первого наскока до конца и не понял, как оно работает.

By dhau

Paragon (1556)

Аватар пользователя dhau

02-04-2019, 03:27

Спасибо Алекс, я в ассемблере так себе разбираюсь. Не подскажете где вывод на кассету начинается?

By АIеks

Champion (408)

Аватар пользователя АIеks

02-04-2019, 07:40

dhau wrote:

Спасибо Алекс, я в ассемблере так себе разбираюсь. Не подскажете где вывод на кассету начинается?

Ну, как бы явного начала там нет.

Хотя, вот кусок кода, а дальше, наверное, в отладчике эмулятора надо будет раскручивать код.

;  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)
Страница 2/2
1 |