AYX-32 - звуковая карта в слоте АУ

Железо для спектрум-совместимых машин

Postby nimdasys_inbox_ru » Fri, 06.12.2019 16:59:06

TS-Labs wrote:Ну во-1х, меня бесит затычка под наванием НГС, которая не контачит в слоте. Вместо нее хочу маленький девайс в панельке АУ.
Во-2х, возможностей у АУХ поболее, чем у ГС. Полная поддержка в Vortex я надеюсь будет.
И да, сакрального смысла в самом ГС тоже не густо. Тех пару софтов, что его используют, это почти ниачем.


1) НГС - это NeoGS от NedoPC ?!

2) AYX-32 - проверялся на совместимость с одновременной эксплуатацией ZXM-SoundCard ?!
User avatar
nimdasys_inbox_ru
 
Posts: 76
Joined: Sun, 15.09.2019 13:37:08
Location: Черкесск

Postby TS-Labs » Fri, 06.12.2019 22:57:58

1. Да
2. Не проверялся, но поведение будет идентичным, как если вместо АУХ-32 будет стоять АУ/УМ.
User avatar
TS-Labs
 
Posts: 5194
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Tue, 10.12.2019 09:24:28

Программная модель вейв-синтеза.

Вейв-синтез - это воспроизведение цифровых сэмплов, загруженных в память предварительно. Производится 32 независимыми каналами. Каждый канал имеет набор параметров:
- номер сэмпла (из списка загруженных),
- нота воспроизведения,
- громкость в левом/правом стерео-канале (панорама),
- етс.

Для удобства программирования каналов вейв-синтеза предлагается реализовать оный в виде списка команд, загружаемого в особое ФИФО.
Для загрузки нужно выбрать АУХ регистр WS_FIFO и последовательно записать в него массив, содержащий список команд с параметрами (в один рег АУХ, байт за байтом). После этого нужно выполнить команду WS_UPDATE (запись в АУХ регистр CMD). В этот момент произойдет обработка списка и все изменения атомарно применятся к каналам вейв-синтеза. Изменения коснутся только каналов, указанных в загруженном списке, и только тех параметров, которые в нем указаны.
Первый вариант модели предусматривал набор регистров по типу АУ (громкость канала, номер сэмпла и т.д.) После размышлений такая модель показалась автору нерациональной, ибо подобных регистров намного больше, чем у АУ, и загружать их муторно. Проще подготовить требуемый массив в памяти и закинуть одним OTIR-ом в #BFFD.

Пример списка команд:
- выбрать канал,
- установить ему ноту,
- установить панораму (громкость в левом/правом ухе),
- ретриггернуть сэмпл (чтоб проиграть эффект сначала).

Выполнили WS_UPDATE - тут же услышали эффект.

Списки можно загружать по нескольку штук за раз. Каждый список обязан заканчиваться командой END_OF_LIST. При выполнении WS_UPDATE выполнится список до END_OF_LIST. Следующая WS_UPDATE выполнит следующий список. Размер ФИФО - 4кБ (предварительно). В случае реализации собственного плеера модулей, такая система позволяет буферизовать управление каналами.
User avatar
TS-Labs
 
Posts: 5194
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Sun, 15.12.2019 13:18:26

А как это синхронизируется по времени? По подаче команды WS_UPDATE? Или по заданному какому-то из событий - таймер или концу семпла например?
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby TS-Labs » Mon, 16.12.2019 08:11:33

Никак. Можно придумать дополнительный таймер срабатывания.

Чучуть теории.
Генерация звука в АУХ отложена на 2мс - длина звукового буфера.
Записи в АУХ делятся на синхронные и асинхронные. Асинхронные записи обычно не связаны напрямую со звуковым потоком и выполняются сразу по факту записи. Синхронные - привязаны ко времени воспроизведения звукового потока.
В шинном драйвере есть ФИФО событий. Запись со стороны з80 сохраняется в ФИФО в виде: порт, значение, отметка времени. При генерации очередной порции звука (500 выборок, 2мс) это ФИФО обрабатывается, а изменения учитываются в тот момент звукового потока, когда они произошли бы в системе, где задержки 2мс нету. Любая запись со стороны з80 воспроизводится с точностью до 4.5мкс (218кГц). Это например позволяет корректно воспроизводить классическую дигу.
WS_UPDATE - синхронная.
User avatar
TS-Labs
 
Posts: 5194
Joined: Thu, 26.07.2012 01:29:56

Previous

Return to Hardware

Who is online

Users browsing this forum: No registered users and 1 guest

x