Проекты Брошенные проекты SourceForge |
MT32 /
PatchКак описание Patch'а переводится в значения регистров LA32Wave GeneratorStructure of PartialСогласно www.polynominal.com у MT-32 имеется 13 возможных вариантов использования partials. В firmware v1.0.7 описание Partial Structure находится в массиве uint16_t, находящимся по адресу 669Eh. Вот так он выглядит в двоичном представлении.
Каждый байт отвечает за один partial: LSB - за partial1, MSB - за partial2. Назначение полей в этих байтах совпадают. [7:6] - WG mode extension: 00 - SYN, 10 - PCM with Ring Modulation, 11 - PCM; Partial Structure отвечает за:
Биты [7:6] в PCM режиме напрямую копируются в регистр WG_SETUP синтезатора LA32. По какой-то причине, для partial2 при включенном Ring Modulation их значения должны быть 0b10 вместо 0b11. PCMЧто используется
На что влияют
SynthЧто используется
На что влияют
WG_PULSE_WIDTH = USAT8( ((VELOCITY - 64) * (WG_PW_VELO_SENS - 7)) + MAP_PULSE_WIDTH[WG_PULSE_WIDTH] ) USAT8(a, b) - насыщение в uint8_t. PitchЧто используется
pitch_note = (NOTE + 12) / 12 pitch_octave = (NOTE + 12) % 12 epitch_base = (MAP_PITCH[pitch_note] + (pitch_octave * 0x1'000) - 0x6'000) * MAP_KEYFOLLOW[WG_PITCH_KEYFOLLOW] / 0x2000; epitch_base += MAP_COARSE[WG_PITCH_COARSE] epitch_base += MAP_FINE[WG_PITCH_FINE] epitch_base += MAP_COARSE[KEY_SHIFT] epitch_base += MAP_FINE[FINE_TUNE] Значение параметров по умолчанию:WG_PITCH_KEYFOLLOW = 1; MAP_KEYFOLLOW[WG_PITCH_KEYFOLLOW] = 0x2000 PCM
epitch_base += MAP_PCM_TUNE[WG_PCM_WAVE] SYNTH
SYNTH SQUAREepitch_base += 0x9'10d SYNTH SAWepitch_base += 0x9'10d - 0x0'010 На что влияют
Следует отметить, что частота задается в виде дробного десятичного числа с фиксированной запятой в формате 0xI'FFF, где I - целая часть, а FFF - дробная. Само значение является показателем степени 2 (экпонентой) частоты генератора в килогерцах. Например, базовой частотой для большинства PCM сэмплов является 0x5'000, что равняется 2^5.000 = 32.000КГц. Для синтеза синусоиды (режим SYNTH SQUARE) расчет значения epitch_base выглядит так: epitch_base = LOG2(FREQ * 2 * 1.024) * 4096 То есть, частота генератора в два раза выше частоты звука. Более того, в килогерце считается не 1000Гц, а 1024Гц, то есть 2^10Гц. Возможно, это связано с тем, что LA32 тактируется генератором с частотой 16384КГц (2^14КГц). TVAЧто используетсяНа что влияютTVFЧто используется
TVF_RES = tvf_resonance + ((INT(tvf_resonance) / 4) * 32) На что влияют
|