SpecDrum/ЦАП
Spectrum Next имеет 4 8-битных порта ЦАП, которые можно использовать для воспроизведения звука. Управление ЦАП осуществляется путем вывода байта аудиоданных на один из портов, указанных ниже. Next также поддерживает небольшие улучшения по сравнению с оригинальным SpecDrum, у которого был только один выход. SoundDrive - это термин, обозначающий 4 8-битных канала ЦАП, 2 x Левый и 2 x Правый, и некоторое российское программное обеспечение поддерживает этот режим.
Данные могут быть отправлены на ЦАП либо через NextRegs, либо через вывод (OUTTING) на порт.
Панорамирование | Порт | ЦАП |
---|---|---|
Левый | 0x1f | ЦАП A |
Левый | 0xf1 | ЦАП A |
Левый | 0x3f | ЦАП A |
Левый | 0x0f | ЦАП B |
Левый | 0xf3 | ЦАП B |
Центр | 0xdf | ЦАП A,D |
Центр | 0xfb | ЦАП A,D |
Центр | 0xb3 | ЦАП B,C |
Правый | 0x4f | ЦАП C |
Правый | 0xf9 | ЦАП C |
Правый | 0x5f | ЦАП D |
Номер | Читаемый | Записываемый | Описание | |
---|---|---|---|---|
Регистр старшего адреса Keymap | $28 | Да | Да | MSB адреса PS/2 Keymap , первое прочитанное (ожидаемое) значение - байт цвета палитры |
Регистр младшего адреса Keymap | $29 | Нет | Да | LSB адреса PS/2 Keymap. |
Регистр старших данных Keymap | $2A | Нет | Да | Старшие данные для PS/2 Keymap (MSB данных в бите 0) |
… дальнейшие результаты |
Частота, с которой ЦАП может воспроизводить звук, зависит от скорости, с которой аудиоданные отправляются на порт. В большинстве случаев вам, вероятно, захочется запускать другой код вместе с управлением звуком, поэтому разгрузка подачи данных на ЦАП может быть выполнена с помощью DMA, COPPER или прерываний CTC. В зависимости от вашего базового кода необходимо будет проанализировать наиболее подходящий метод.
DMA воспроизведение, возможно, самый простой метод, но он также требует исключительного использования DMA и раздела памяти для воспроизведения DMA.
- Пример воспроизведения звука DMA https://github.com/em00k/zxnext-simple-dma
COPPER имеет наименьшие требования к процессору, но более сложную настройку. COPPER необходимо подавать данные для каждого кадра.
- Пример воспроизведения звука COPPER TBC (будет добавлено позже)
Таймеры CTC - это хорошее сочетание простоты настройки и управления, оставляющее DMA и COPPER свободными для других целей.
- Пример настройки таймеров CTC для воспроизведения звука https://github.com/em00k/playwav32
Кодирование wav-файлов с помощью ffmpeg
Next способен воспроизводить 8-битные моно или стерео wav-файлы с частотой дискретизации до 32 кГц.
Следующая команда ffmpeg может быть использована для преобразования аудиофайла любого формата, который может декодировать ffmpeg, в стерео wav-файл, воспроизводимый на Next. Измените ac (Audio Channels) на 1, чтобы закодировать моно файл.
ffmpeg -i input.wav -f wav -acodec pcm_u8 -ac 2 -ar 32000 output.wav