Проекты GitHub SourceForge |
MT32 /
LA32МодулиНиже собран список модулей, которые входят в состав одного partial и параметры, с помощью которых ими можно управлять. WG (Wave Generator) Common0E00h WG_SETUP - Wave Generator Setup WG Synth0C80h WG_PULSE_WIDTH - PWM Pulse Width WG PCM0C82h WG_PCM_POS - PCM Generator Sample Address TVF - Time Variable FilterTVF ENV TIME TVA - Time Variable Amplifier0C00h TVA_TVF_ENV_TIME - TVA Envelope Time (PCM)
РегистрыЗдесь я попытался собрать и систематизировать всю доступную мне информацию о регистрах микросхемы-синтезатора Roland LA32. Адресация используется относительно базового адреса 0С00h с шагом 2, как это сделано в синтезаторе MT-32. Соответственно, адрес относительно самой микросхему можно получить по формуле: ToDo: перевести адресацию регистров на относительную от микросхемы.
0C00h INT_STATUS - Interrupt status
ОписаниеЕдинственный регистр во всей микросхеме, который доступен на чтение. Более того, это единственный регистр, который не индексируется partial (номером генератора).
0С00h TVA_TVF_ENV_TIME - TVA/TVF Envelope Time
Описание:Назначение этого регистра зависит WG_SETUP[7] - режима работы генератора. Поскольку, LA32 не имеет цифрового цильтра как такового, то в режиме семплирования (PCM) этот регистр отвечает за TVA Envelope Time - время перехода коэффицента усиления для VCA от текущего значения до TVA_TVF_ENV_LEVEL.
0C02h TVA_TVF_ENV_LEVEL - TVA/TVF Envelope Level
Описание### seg001_5A73
0C80h WG_PULSE_WIDTH - Wave Generator PWM Pulse Width
ОписаниеШирина (коэффициент заполнения) ШИМ импульса. Влияет на громкость и спектр сигнала.
0C82h WG_PCM_POS - PCM Generator Sample Address
ОписаниеМаксимальное адресное пространство ПЗУ с сэмплами: 2^20. Регистр может адресовать 256 блоков. Таким образом, длина одного блока: 2^12 = 4096
0C82 TVF_FREQ - TVF Cutoff Frequency
ОписаниеПримечание: группа С00h и D00h отвечают за одно и то же. По всей видимости, они относятся в Wave и PCM генераторам
0D00 TVA_ENV_TIME - TVA Envelope Time
Описание### seg001_5A73 - ??? [7:0] 0xff (seg001_5A73) ### seg001_5AAD, WG SYnth [7:0] TVA ENV Time5 ### seg001_6569 - WG Synth [7:0] 0xff
0D02 TVA_ENV_LEVEL - TVA Envelope Level
Описание### seg001_5A73 [7:0] volume_level (seg001_5A73) ### seg001_5AAD, WG SYnth [7:0] 0 ### seg001_6569 - WG Synth [7:0] partial volume
0D80h WG_PITCH_LO - Partial Pitch LSB
0D82h WG_PITCH_HI - Partial Pitch MSB
0E00h WG_SETUP - Wave Generator Setup
ОписаниеВ LA32 вывод звука происходит в тайм-слотах 1, 2 и 5, 6. Бит [3:3] указывает, какую пару этих тай-слотов использовать: 0 - 1 и 5, 1 - 2 и 6. ToDo: по какой-то причинеЮ если partial2 использует Ring Modilation, то режим PCM включается значением 0b10. Разобраться с этим эксперементально. Предположение: WG одновременно производит основной тон и смодулированный тон с парным partial. Битом [5:5] определяется, какой именно тон будет подан на выход генератора. Таким образом, один из partials будет выводит свой тон (обычно это partial1), а другой - результат модуляции. Необходимо проверить это на эксперементе.
0E02h WG_PCM_LEN - PCM Generator Sample Length
Описание
0E02h TVF_RES - TVF Resonance
Описание
Регистры, которые используются только во время инициализацииНазначение следующих регистров абсолютно непонятно. Они используются только во время инициализации. Предположение: Поскольку LA32 не имеет схемы сброса, то, вполне вероятно, эти регистры отвечают за внутреннее состояние синтезатора и сбрасываются программно. ToDo: потыкать в них палочкой во время генерации тона.
0E80h UNK_140
ОписаниеВо время инициализации и сброса в этот регистр записывается значение 0.
0E82h UNK_141
ОписаниеВо время инициализации и сброса в этот регистр записывается значение 0.
0E84h UNK_142
ОписаниеВо время инициализации и сброса в этот регистр записывается значение 0.
0E86h UNK_143
ОписаниеВо время инициализации и сброса в этот регистр записывается значение 80h.
0E88h UNK_144
ОписаниеВо время инициализации и сброса в этот регистр записывается значение FFh.
0E8Ah UNK_145
ОписаниеВо время инициализации и сброса в этот регистр записывается значение 80h.
0F80h UNK_1C0
ОписаниеВо время инициализации и сброса в этот регистр записывается значение 0.
0F82h UNK_1C1
ОписаниеВо время инициализации в регистр записывается значение C1h, а во время сброса - С0h.
0F84h UNK_1C2
ОписаниеВо время инициализации и сброса в этот регистр записывается значение 0.
0F86h UNK_1C3
ОписаниеВо время инициализации и сброса в этот регистр записывается значение 0. |