PDA

Просмотр полной версии : Воспроизведение 4-битных сэмплов через AY



ALKO
09.08.2022, 19:07
Какой тулзой можно запихать имеющийся wav файл в спек для дальнейшего его воспроизведения на AY? Есть что-то такое под Шиндовс ?(можно и под люникс и под Дос, но предпочтительнее венда)

reddie
09.08.2022, 22:17
Да можно прямо так 8-битный закинуть и выводить с преобразованием по таблице, качество вполне сносное, почти 8 бит.
Использует все три канала сопроцессора.

^m00h^
09.08.2022, 23:48
А размер - 8 bit vs 4 bit ?

ALKO
10.08.2022, 00:50
Да можно прямо так 8-битный закинуть и выводить с преобразованием по таблице, качество вполне сносное, почти 8 бит.
Использует все три канала сопроцессора.

Ну это всё теория. А на практике на уровне асма я не шарю, как там управлять АЮшкой. Какие команды в какой порт слать, чтоб уровнями громкости оно колыхало.
Интересуясь про софтину, я в том числе и подразумевал компиляцию вместе с ней и плеера.
К тому же 8 бит на квант слишком расточительно.
Всё-таки экономия на полубайтах в два раза - существенная.

reddie
10.08.2022, 15:07
Всё-таки экономия на полубайтах в два раза - существенная
Ну тут зависит от предполагаемого размера будущего проекта. Для 48/128 без дозагрузок - да, 4 бита все же лучше.
Но в качестве сильно проигрывают табличному "восьмибитному" выводу.

Reobne
11.08.2022, 13:18
Решил глянуть, как делали в Ламбаде (https://zxaaa.net/view_demo.php?id=4037). А там однобитный звук выводится в AY. :v2_conf2: Я всегда думал что четырёхбитный. Ну, раз в AY, значит четырёхбитный. Логично же.

А тама вот что
ORG 0FB0CH
LOOP1
LD C,10
LOOP2
DEC C
JR NZ,LOOP2
RLC (HL)
JR C,THEN1
PUSH BC
CALL OUT0
POP BC
JR NEXT1

THEN1
PUSH BC
CALL OUT1
POP BC
NEXT1
DJNZ LOOP1
INC HL
DEC DE
LD B,8
LD C,8
LD A,D
OR E
JR NZ,LOOP2
EI
RET

OUT0
LD BC,0FFFDH
LD A,7 ; Регистр миксера
OUT (C),A
LD BC,0BFFDH
LD A,0FDH ; Выключаем B
OUT (C),A
RET

OUT1
LD BC,0FFFDH
LD A,7
OUT (C),A
LD BC,0BFFDH
LD A,0FFH ; Включаем
OUT (C),A
RETВо всех регистрах AY нули, только в амплитуде канала B = $0F. И в регистр миксера пишется то $FF то $FD. То есть канал B то включается, то выключается.

- - - Добавлено - - -

Получается, во все регистры пишем 0, в миксер (седьмой) пишем FF. Меняем амплитуду B (одинадцатый регистр) - вот нам и цифровой четырёхбитный звук? Логично же?

- - - Добавлено - - -


Какие команды в какой порт слать
Это я на это отвечал.

ALKO
11.08.2022, 13:44
Да, в ламбаде на удивление чистый звук, как для однобитного. Высокая степень дискретизации значит, + сэмпл гармошки, ей шибко гладая синусоида и не нужна.

goodboy
11.08.2022, 14:42
экономия на полубайтах в два раза - существенная.
из демки MQM6

LD A,(HL)
AND #0F
OUT (C),A
................................
LD A,(HL)
RRA
RRA
RRA
RRA
AND #0F
OUT (C),A

ALKO
11.08.2022, 15:25
Только вот каким образом записать вавку, чтоб еë в текстовом редакторе открыть в представлении по два четырëхбитных состояния на байт...

reddie
11.08.2022, 15:47
ну можно не париться и отгрузить 8-битный сэмпл, а "сжатие" сделать уже на Спектруме:



LD DE,8BIT_DATA
LD HL,4BIT_DATA
LD BC,LEN ;8BIT/2

M1 LD A,(DE)
AND #F0
LD (HL),A
INC DE
LD A,(DE)
AND #F0
RRCA x4
OR (HL)
LD (HL),A
INC DE
CPI
JP PE,M1


BC указываем как длину 8-бит данных, поделенную пополам, т.к. в один байт выходного массива запихивается два исходного.

Sandro
11.08.2022, 17:45
А как же логарифм? У аигрека ведь громкость экспоненциальная. Нужна табличка, например.

reddie
11.08.2022, 17:52
Да я и толковал сразу про таблички, только для "восьмибитного" метода =)) хотя раньше не парились и просто обрезали четыре бита.

Reobne
11.08.2022, 18:02
восьмибитного" метода
А где про него почитать? В каких демках послушать?

reddie
11.08.2022, 20:01
А где про него почитать? В каких демках послушать?
Оххх было это давно... например, в демке с ЦЦ-2000, Tryptomine Dream https://demozoo.org/productions/13877/ перед эпилогом.
Примерно в то же время на другой пати, уже не вспомню, был конкурс 32К Game, там игрушка про вертолетик. Оцифровка "game activated" в самом начале.
Метод тогда называли MMC, но не уверен, кто помнит - подскажет =) В каком-то эл. журнале было подробное описание и даже асм с табличками.
Причем таблицы различались для AY и YМ, то есть явное расхождение в некоторых уровнях громкости между чипами. В свое время проверял, так и есть.
Соответственно, с таблицей "не под тот чип" качество будет хуже. И эмуляторы тут вряд ли показатель, нужно смотреть на реале.

- - - Добавлено - - -

Посмотрел демку на сайте (видео) - звук паршивый, но дело, скорее всего, именно в эмуляции. На реале звучало куда лучше.
И в той 32К игрушке сэмпл играл весьма качественно, намного лучше обычного 4-бит вывода.

ALKO
12.08.2022, 01:21
А как же логарифм? У аигрека ведь громкость экспоненциальная. Нужна табличка, например.

Час от часу не легче...

null_device
12.08.2022, 05:05
ALKO, https://zxpress.ru/article.php?id=15214
https://zxpress.ru/article.php?id=15104

ALKO
12.08.2022, 09:14
ALKO, https://zxpress.ru/article.php?id=15214
https://zxpress.ru/article.php?id=15104

На утилиту по второй ссылке натыкался.
Только не знаю, как вот на пекарне засунуть wav файл в образ для эмуля.

- - - Добавлено - - -

Странно почему до сих пор под это дело не существует никакой кросплатформенной тулзы.

null_device
12.08.2022, 17:55
как вот на пекарне засунуть wav файл в образ для эмуля.

Если склероз не изменяет файлы в образ можно кидать, "спектрум навигатором". Главное, чтобы он уместился в 255 секторов.

tiboh
12.08.2022, 18:41
Метод тогда называли MMC, но не уверен, кто помнит - подскажет =) В каком-то эл. журнале было подробное описание и даже асм с табличками.

MCC метод:
http://zxpress.ru/article.php?id=707
http://zxpress.ru/article.php?id=794
http://zxpress.ru/article.php?id=1383

- - - Добавлено - - -



Только не знаю, как вот на пекарне засунуть wav файл в образ для эмуля.


Total Commander с плагинами:
https://vtrd.in/pcutilz/INSCL645.zip
https://vtrd.in/pcutilz/INTRD645.zip

reddie
12.08.2022, 19:53
Да, именно оно. И сведение/баланс каналов по стерео играет важную роль.
Но результат того стоит. Это, думаю, лучшее, что можно выжать из муз. сопроцессора.