Recent Changes - Search:

Главная страница

Проекты

Статьи

Домашний WiFi роутер

Архив проектов

Загрузки

GitHub

SourceForge

edit SideBar

LA32

Модули

Ниже собран список модулей, которые входят в состав одного partial и параметры, с помощью которых ими можно управлять.

WG (Wave Generator) Common

0E00h WG_SETUP - Wave Generator Setup
0D80h WG_PITCH_LO - Partial Pitch LSB
0D82h WG_PITCH_HI - Partial Pitch MSB

WG Synth

0C80h WG_PULSE_WIDTH - PWM Pulse Width

WG PCM

0C82h WG_PCM_POS - PCM Generator Sample Address
0E02h WG_PCM_LEN - PCM Generator Sample Length

TVF - Time Variable Filter

TVF ENV TIME
TVF ENV LEVEL
TVF Cutoff Freq
0E02h TVF_RES - TVF Resonance

TVA - Time Variable Amplifier

0C00h TVA_TVF_ENV_TIME - TVA Envelope Time (PCM)
0C02h TVA_TVF_ENV_LEVEL - TVA Envelope Level (PCM)

0D00h TVA_ENV_TIME - TVA Envelope Time (SYNTH)
0D02h TVA_ENV_LEVEL - TVA Envelope Level (SYNTH)



Регистры

Здесь я попытался собрать и систематизировать всю доступную мне информацию о регистрах микросхемы-синтезатора Roland LA32.

Адресация используется относительно базового адреса 0С00h с шагом 2, как это сделано в синтезаторе MT-32. Соответственно, адрес относительно самой микросхему можно получить по формуле: (ADDR - 0x0C000) / 2.

ToDo: перевести адресацию регистров на относительную от микросхемы.


0C00h INT_STATUS - Interrupt status

0C00INT_STATUSRD0C00
7:70 - stop partial, 1 - process partial
6:6 
5:50 - TVF, 1 - TVA
4:0Partial Number

Описание

Единственный регистр во всей микросхеме, который доступен на чтение. Более того, это единственный регистр, который не индексируется partial (номером генератора).


0С00h TVA_TVF_ENV_TIME - TVA/TVF Envelope Time

0C00TVA_TVF_ENV_TIME[32]WR0C00[4 * i], i = 0..31
WG PCM Mode
7:0TVA Envelope Time
WG Synth Mode
7:0TVF Envelope Time

Описание:

Назначение этого регистра зависит WG_SETUP[7] - режима работы генератора. Поскольку, LA32 не имеет цифрового цильтра как такового, то в режиме семплирования (PCM) этот регистр отвечает за TVA Envelope Time - время перехода коэффицента усиления для VCA от текущего значения до TVA_TVF_ENV_LEVEL.
Примечание: - найти, как соотносится значение регистра с реальным временем.


0C02h TVA_TVF_ENV_LEVEL - TVA/TVF Envelope Level

0C02TVA_TVF_ENV_LEVELWR0C02[4 * i], i = 0..31
WG PCM Mode
7:0TVA Envelope Level
WG Synth Mode
7:0TVF Envelope Level

Описание

 ### seg001_5A73 
[2:2] - volume_level
### seg001_5A99, WG PCM
[7:0] - 0
### seg001:60BD patial_start(), WG SYNTH
[7:0] - TVF ENV level
Предположение: - конечный TVF ENV level зя время 0С00h
### seg001_655D - WG PCM
[7:0] - partial volume level


0C80h WG_PULSE_WIDTH - Wave Generator PWM Pulse Width

0C80WG_PULSE_WIDTHWR0C80[4 * i], i = 0..31
[7:0]0 - min, 255 - max

Описание

Ширина (коэффициент заполнения) ШИМ импульса. Влияет на громкость и спектр сигнала.

  • Используется как регулятор громкости для velocity
  • which parameter included: INTMEM_46(?), wg_pg_velo_sens, wg_pulse_width


0C82h WG_PCM_POS - PCM Generator Sample Address

0C82WG_PCM_SAMPLEWR0C82[4 * i], i = 0..31
[7:0]PCM Sample Addres: pos * 4096

Описание

Максимальное адресное пространство ПЗУ с сэмплами: 2^20. Регистр может адресовать 256 блоков. Таким образом, длина одного блока: 2^12 = 4096


0C82 TVF_FREQ - TVF Cutoff Frequency

0C82TVF_FREQWR0C82[4 * i], i = 0..31
[7:0]Synth mode: TVF cutoff freq

Описание

Примечание: группа С00h и D00h отвечают за одно и то же. По всей видимости, они относятся в Wave и PCM генераторам
Примечание2: в разных режимах генератора эти регистры отвечают за разное.


0D00 TVA_ENV_TIME - TVA Envelope Time

0D00TVA_ENV_TIME(?)WR0D00[4 * i], i = 0..31
WG Synth Mode
7:0TVA 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

0D02TVA_ENV_LEVEL(?)WR0D02[4 * i], i = 0..31
WG Synth Mode
7:0TVA 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

0D80PITCH_LOWR0D80[4 * i], i = 0..31
[7:0]pitch low byte


0D82h WG_PITCH_HI - Partial Pitch MSB

0D82PITCH_HIWR0D82[4 * i], i = 0..31
[7:0]pitch high byte


0E00h WG_SETUP - Wave Generator Setup

0E00WG_SETUPWR0E00[4 * i], i = 0..31
[7:7]mode: 0 - synth, 1 = PCM(?)
[6:6]wave form: 0 - square, 1 - saw
[5:5]ring modulation
[4:4]0 - disable, 1 - enable(?)
[3:3]reverb enable, 0 - enable, 1 - disable
[2:0]pan-pot (stereo balance) 0..7, 0 - right max, 7 - left max

Описание

В 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), а другой - результат модуляции. Необходимо проверить это на эксперементе.

Предположение: [3:0] отвечает за номер цифрового канала, на который выводится звук. Всего каналов 8

PANPOT
R 0 .. 7 .. 15 L
0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 - partial1 mix
0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 - partial2 mix
0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 - partial1 left
0 1 2 3 4 5 6 7 7 7 7 7 7 7 7 - partial2 right


0E02h WG_PCM_LEN - PCM Generator Sample Length

0E02WG_PCM_LEN[32]WR0E02[4 * i], i = 0..31
PCM Mode
[7:7]PCM Wave Loop: 0 - no, 1 - yes
[6:4]PCM Wave Length: 800h * (2 ^ len)
[3:1]reserved
[0:0]reserved

Описание

  • Длина указывается в показателе степени по основанию 2 умноженную на размер блока 800h. Размер блока указан в байтах.
    val = log2(size/800h)
  • Влияние WG_PCM_LEN[0:0] установить не удалось


0E02h TVF_RES - TVF Resonance

0E02TVF_RES[32]WR0E03[4 * i], i = 0..31

Описание

  • Похоже, что бит 0 имеет какое-то специальное значение.



Регистры, которые используются только во время инициализации

Назначение следующих регистров абсолютно непонятно. Они используются только во время инициализации.
При этом, регистры UNK_140-UNK_145 - инициализирцются для кажкого генератора, а регитры UNK_1C0 - UNK_1C3 существуют только в единственном экземпляре для всего LA32.

Предположение: Поскольку LA32 не имеет схемы сброса, то, вполне вероятно, эти регистры отвечают за внутреннее состояние синтезатора и сбрасываются программно.

ToDo: потыкать в них палочкой во время генерации тона.


0E80h UNK_140

0E80UNK_140WR0E80[4 * i], i = 0..31
[7:0]0

Описание

Во время инициализации и сброса в этот регистр записывается значение 0.


0E82h UNK_141

0E82UNK_141WR0E82[4 * i], i = 0..31
[7:0]0

Описание

Во время инициализации и сброса в этот регистр записывается значение 0.


0E84h UNK_142

0E84UNK_142WR0E84[4 * i], i = 0..31
[7:0]0

Описание

Во время инициализации и сброса в этот регистр записывается значение 0.


0E86h UNK_143

0E86U NK_143WR0E86[4 * i], i = 0..31
[7:0]80h

Описание

Во время инициализации и сброса в этот регистр записывается значение 80h.


0E88h UNK_144

0E88U NK_144WR0E88[4 * i], i = 0..31
[7:0]FFh

Описание

Во время инициализации и сброса в этот регистр записывается значение FFh.


0E8Ah UNK_145

0E8AUNK_145WR0E8A[4 * i], i = 0..31
[7:0]80h

Описание

Во время инициализации и сброса в этот регистр записывается значение 80h.


0F80h UNK_1C0

0F80UNK_1C0WR0F80
[7:0]0

Описание

Во время инициализации и сброса в этот регистр записывается значение 0.


0F82h UNK_1C1

0F82UNK_1C1WR0F82
Init
[7:0]C1h
Reset
[7:0]C0h

Описание

Во время инициализации в регистр записывается значение C1h, а во время сброса - С0h.


0F84h UNK_1C2

0F84UNK_1C2WR0F84
[7:0]0

Описание

Во время инициализации и сброса в этот регистр записывается значение 0.


0F86h UNK_1C3

0F86UNK_1C3WR0F86
[7:0]0

Описание

Во время инициализации и сброса в этот регистр записывается значение 0.

Edit - History - Print - Recent Changes - Search
Page last modified on August 22, 2023, at 09:48 pm