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 фильтра