1 Vita Poly One

Первая версия синтезатора.

Аппаратная часть - текущая только 1 битные выходы 8 штук, просуммированные в один канал.

Поэтому все будет исключительно программно: переключаемая форма сигнала, ADSR, программный VCA. Возможно VCF (если заработает).

Полифония 8 голосов.

МИДИ карта

Note ON - задает ноту

Note OFF - снимает ноту

ADSR (назначен на контроллеры 1011nnnn, номера которых 1, 2, 3, 4 (general purpose controller)) - см таблицу - http://www.muzoborudovanie.ru/articles/midi/midi2.php

A - число 0..16383 MSB:LSB - 16:48

D - число 0..16383 MSB:LSB - 17:49

S - число 0..16383 MSB:LSB - 18:50

R - число 0..16383 MSB:LSB - 19:51

В качестве VSTi - http://ctrlr.org/

Пробросил, все работает, только изменение времени очень нелинейно, в ноле должна быть мгновенная атака и нужна изначальная инициализация значений (а иначе, пока контрол не передан - тишина).

http://youtu.be/EXuKOdI3V1g

2014-10-23 - 2014-10-24

У полика вст на максимальном значении - 6.5 секунд, в середине 0.25 секунды

Поэтому берем диапазон 0..64..127 и назначаем на Атаку. Дальше масштабируем значение контрола и берем от него экспоненту (e в степени). Смотрим результат при 127 и выбираем делитель, чтобы при 127 получалось 10 секунд.

Далее подбираем масштабирование контрола(делитель значения контрола) так, чтобы на положении 64 время получалось 0.25 секунды и при этом при 127 - десять секунд. Для подбора сделал xls файл.

Методом подбора, найден масштабирующий коэффициент для значения контрола /17, дальше вычисляем EXP, полученный результат делим на 175,5 - получаем время.

Чтобы получить частоту - делим 1/время. Чтобы получить значение DDS из частоты для дискретизации 50 МГц, делим на 50000000/2 и умножаем на разрядность DDS (32 - 4294967296). В итоге получаем слово и отправляем его в ПЛИС.

Вместо возведения экспоненты, можно брать EXP(1) смасштабированное и возводить ее в степень равную значению контрола. Результат будет тот же.

Формула в ctrlr:

(1/(pow(1.060588,modulatorValue)/175.6))/50000000/2*4294967296

Сравниваем с VSTi полика примерные положения и периоды нарастания. Стало похоже. И вообще удобнее.

Версия панели с експонентой: Vita Poly_1_0_Hell-O-Kitty_2014-10-24_03-19.panel

http://youtu.be/mNzUdiF9AZU

2014-10-24

Аппроксимация линиями. График поделен на 5 частей и на участках считается линейно. Подбор коэффициентов к excel файле.

2014-10-25

Решили, что делить будем на 8 частей. Но по таблице получается лучше 4.03 - EXP для ADSR. Теперь все регулировки идут одним 7 битным словом LSB контроллеры ADSR (48, 49, 50, 51).

Панель для управления - Vita Poly_1_0_Hell-O-Kitty_2014-10-25_18-12.panel

Теперь можно назначить эти контролы на стандартные FL'овские крутилки его MIDI вывода.

2014-11-11

Ведение документации размазалось на несколько страниц. Реализована обработка Pitch Wheel

2014-11-12

Перенес управление ADSR на MSB контроллеры 16, 17, 18, 19.

2015-04-17

Контроллер 48 - Q фильтра