The Legend VST FX Special Controller
У музыкантов диайвайщиков, появилось новое направление реализации своего таланта в устройствостроении, а именно: делать миди контроллеры под определённый виртуальный инструмент. Стоп! Это уже где - то было?....
Да, это было здесь: [The Legend VST Synth Special Controller](The Legend VST Synth Special Controller)
Ситуация в том, что я не остановился, только на этом - реализуя в корпусе свой любимый VST. У программной версии The Legend - есть ещё и переключение на заднюю панель, где расположены тонкие подстройки и эффекты.
Эффекты - это в частности: дилей и ревербератор.
Подстройки, признаться честно, вообще ерундовые - почти, не на что не влияющие, а вот эффекты... Эффектов во время кручения и верчения - явно не хватает, да и откровенно говоря - немного ревера или дилея , способны самый плоский звук сделать красивым и приятным.
Принял решение, сделать ещё один контроллер - для задней панели виртуального синтезатора.
Но откровенно говоря, для полноценного и большого контроллера: как изначальная версия, крутилок и параметров маловато. Немного пофантазировав, решил добавить вниз обычные нотные клавиши, так скажем, на октаву или октаву с небольшим. Наличие данных клавиш, явно не помешает, так как крутя звук, нужно быстро дать команду и на его запуск ))))
Кнопочки будут круглыми - это и экономически проще, и технически, и выглядит неплохо. Заказал всё на Алике (как всегда): леонардо, два мультиплексера, кнопки, крутилки, диод (а он тут один), колпаки и собственно - всё... Ах да! - корпус?! Корпус - вторая половина от располовиненного в прошлый раз Gainta G 756.
Библиотека, как и в прошлые разы: Control Surface, которая превращает написание кода в сущую банальность. Код ниже по тексту...
Пайка, как бог на душу пошлёт, ну в смысле- последовательность особо не имеет значения, главное, потом промапить соответственно в вашей DAW.
Теперь , любимый VST управляется полностью с двух контроллеров. Я засел крутить себе неземные патчи, при этом не забывая их записывать в отдельную папку с пресетами. Придёт время, может куда то и выложу сей труд.
КОД:
#include <Control_Surface.h>
#include "MIDIUSB.h"
USBMIDI_Interface midi;
using namespace MIDI_Notes;
CD74HC4067 muxPots = { A0, {2, 3, 4, 5},};
CD74HC4067 muxPots1 = { 6, {2, 3, 4, 5},};
CCPotentiometer potentiometer[] = {
{A1,{25, CHANNEL_7}},
{muxPots.pin(0),{26, CHANNEL_7}},
{muxPots.pin(1),{27, CHANNEL_7}},
{muxPots.pin(2),{28, CHANNEL_7}},
{muxPots.pin(3),{29, CHANNEL_7}},
{muxPots.pin(4),{30, CHANNEL_7}},
{muxPots.pin(5),{31, CHANNEL_7}},
{muxPots.pin(6),{32, CHANNEL_7}},
{muxPots.pin(7),{33, CHANNEL_7}},
{muxPots.pin(8),{34, CHANNEL_7}},
{muxPots.pin(9),{35, CHANNEL_7}},
{muxPots.pin(10),{36, CHANNEL_7}},
{muxPots.pin(11),{37, CHANNEL_7}},
{muxPots.pin(12),{38, CHANNEL_7}},
{muxPots.pin(13),{39, CHANNEL_7}},
{muxPots.pin(14),{40, CHANNEL_7}},
{muxPots.pin(15),{41, CHANNEL_7}},
};
NoteButton buttons[] = {
{muxPots1.pin(0),{note(C, 4), CHANNEL_1}},
{muxPots1.pin(1),{note(Db, 4), CHANNEL_1}},
{muxPots1.pin(2),{note(D, 4), CHANNEL_1}},
{muxPots1.pin(3),{note(Eb, 4), CHANNEL_1}},
{muxPots1.pin(4),{note(E, 4), CHANNEL_1}},
{muxPots1.pin(5),{note(F, 4), CHANNEL_1}},
{muxPots1.pin(6),{note(Gb, 4), CHANNEL_1}},
{muxPots1.pin(7),{note(G, 4), CHANNEL_1}},
{muxPots1.pin(8),{note(Ab, 4), CHANNEL_1}},
{muxPots1.pin(9),{note(A, 4), CHANNEL_1}},
{muxPots1.pin(10),{note(Bb, 4), CHANNEL_1}},
{muxPots1.pin(11),{note(B, 4), CHANNEL_1}},
{muxPots1.pin(12),{note(C, 5), CHANNEL_1}},
{muxPots1.pin(13),{note(Db, 5), CHANNEL_1}},
{muxPots1.pin(14),{note(D, 5), CHANNEL_1}},
{muxPots1.pin(15),{note(Eb, 4), CHANNEL_1}},
};
void setup() {
Control_Surface.begin(); // Initialize Control Surface
muxPots.begin();
muxPots1.begin();
}
void loop() {
Control_Surface.loop(); // Update the Control Surface
}
The Legend VST Synth Special Controller
У музыкантов диайвайщиков, появилось новое направление реализации своего таланта в устройствостроении, а именно: делать миди контроллеры под определённый виртуальный инструмент. Мой друг довольно успешно реализовал контроллер для Артуриевского Минимуга или просто Mini V. Знакомый испанец с канала Nerd Musician, также делал контроллер под MiniV . Но всё это делалось из фанеры и выглядит довольно громоздко.
Для себя, я находил в интернете магазин, где один интузиаст делал контроллеры под разные виртуальные инструменты.
Итак, Максим, заразил меня этой интересной идеей. Ну что-же? Будем делать свой МУГ!
Из многочисленных реализаций Муга в виде вст, мне лично, очень понравился виртуальный синтезатор : The Legend от Synapse Audio. Скажу даже больше: я влюбился в него. Для заядлого берлинщика, он буквально идеален, правда секвенсора в нём нет!
Взяв за основу оригинальный дизайн веэстешки, я перерисовал его под свои размеры в "иллюстраторе". Распечатал на лазернике и заламинировал.
Ещё со старой работы, у меня есть корпуса Gainta G 756, но они очень высокие. Поэтому я его располовинил, дно вырезал из старого оргстекла.
За основу проекта, конечно же берём Ардуино Леонардо и четыре штуки мультиплексора CD4067. Пользуемся библиотекой Control Surface, которая позволяет запрограммировать это всё очень быстро и просто. По началу я даже думал и не выкладывать код, но всё таки в конце - вы его найдёте. )))
Хитрость, разве что в подключении светодиодов, которые я расположил на корпусе. На самом деле ничего хитрого - паралельно контактам сигнал и минус на переключателе, последовательно, через килоомное сопротивлению (чтоб не сжечь). Да, кстати переключатели - подключены аналогично, обычным потенциометрам, и в коде ничем от потенциометров не отличаются: то есть плюс и минус на крайние ножки и с центральной - сигнал.
Заказал детальки на Алике и в конце концов собрал сие чудо! Деталек, я должен сказать, много: 38 потенциометров с колпачками ручек, 12 свитчей (на 2 положения), 9 светодиодов с держателями, леонардо, 4 мультиплексора.
Можно было заморочиться и сделать вместо некоторых потенциометров переключатели ( как на советских телевизорах), по аналогии с оригиналом. Но нога у этого переключателя - огромная, а тут и так 59 элементов на площади меньше чем лист формата А4.
Замапил все элементы управления как глобальные, что бы в любом проекте, контроллер вёл себя адекватно. Кстати можно замапить и на ту же Артурию Мини.
У оригинального, виртуального The Legend, есть ещё и "задняя" панель на которой расположены ручки управления эффектами и ещё какой то ерундой, которая ни на что не влияет. Хочу сделать, в будущем, контроллер и для задней панели. Ручек там, конечно, немного, но есть идея сделать внизу обычные нотные клавиши, реализовав это на кнопках.
Ну вот такой вот. замечательный зверь у меня получился...
Терпение и упорство, реализуют любую идею, чего и Вам желаю.
Код:
#include <Control_Surface.h>
USBMIDI_Interface midi;
CD74HC4067 muxPots = { A0, {2, 3, 4, 5},};
CD74HC4067 muxPots1 = { A1, {2, 3, 4, 5},};
CD74HC4067 muxPots2 = { A2, {2, 3, 4, 5},};
CD74HC4067 muxPots3 = { A3, {2, 3, 4, 5},};
CCPotentiometer potentiometer[] = {
{muxPots.pin(0),{10, CHANNEL_6}},
{muxPots.pin(1),{11, CHANNEL_6}},
{muxPots.pin(2),{12, CHANNEL_6}},
{muxPots.pin(3),{13, CHANNEL_6}},
{muxPots.pin(4),{14, CHANNEL_6}},
{muxPots.pin(5),{15, CHANNEL_6}},
{muxPots.pin(6),{16, CHANNEL_6}},
{muxPots.pin(7),{17, CHANNEL_6}},
{muxPots.pin(8),{18, CHANNEL_6}},
{muxPots.pin(9),{19, CHANNEL_6}},
{muxPots.pin(10),{20, CHANNEL_6}},
{muxPots.pin(11),{21, CHANNEL_6}},
{muxPots.pin(12),{22, CHANNEL_6}},
{muxPots.pin(13),{23, CHANNEL_6}},
{muxPots.pin(14),{24, CHANNEL_6}},
{muxPots.pin(15),{25, CHANNEL_6}},
{muxPots1.pin(0),{26, CHANNEL_6}},
{muxPots1.pin(1),{27, CHANNEL_6}},
{muxPots1.pin(2),{28, CHANNEL_6}},
{muxPots1.pin(3),{29, CHANNEL_6}},
{muxPots1.pin(4),{30, CHANNEL_6}},
{muxPots1.pin(5),{31, CHANNEL_6}},
{muxPots1.pin(6),{32, CHANNEL_6}},
{muxPots1.pin(7),{33, CHANNEL_6}},
{muxPots1.pin(8),{34, CHANNEL_6}},
{muxPots1.pin(9),{35, CHANNEL_6}},
{muxPots1.pin(10),{36, CHANNEL_6}},
{muxPots1.pin(11),{37, CHANNEL_6}},
{muxPots1.pin(12),{38, CHANNEL_6}},
{muxPots1.pin(13),{39, CHANNEL_6}},
{muxPots1.pin(14),{40, CHANNEL_6}},
{muxPots1.pin(15),{41, CHANNEL_6}},
{muxPots2.pin(0),{42, CHANNEL_6}},
{muxPots2.pin(1),{43, CHANNEL_6}},
{muxPots2.pin(2),{44, CHANNEL_6}},
{muxPots2.pin(3),{45, CHANNEL_6}},
{muxPots2.pin(4),{46, CHANNEL_6}},
{muxPots2.pin(5),{47, CHANNEL_6}},
{muxPots2.pin(6),{48, CHANNEL_6}},
{muxPots2.pin(7),{49, CHANNEL_6}},
{muxPots2.pin(8),{50, CHANNEL_6}},
{muxPots2.pin(9),{51, CHANNEL_6}},
{muxPots2.pin(10),{52, CHANNEL_6}},
{muxPots2.pin(11),{53, CHANNEL_6}},
{muxPots2.pin(12),{54, CHANNEL_6}},
{muxPots2.pin(13),{55, CHANNEL_6}},
{muxPots2.pin(14),{56, CHANNEL_6}},
{muxPots2.pin(15),{57, CHANNEL_6}},
{muxPots3.pin(0),{58, CHANNEL_6}},
{muxPots3.pin(1),{59, CHANNEL_6}},
{muxPots3.pin(2),{60, CHANNEL_6}},
{muxPots3.pin(3),{61, CHANNEL_6}},
{muxPots3.pin(4),{62, CHANNEL_6}},
{muxPots3.pin(5),{63, CHANNEL_6}},
{muxPots3.pin(6),{74, CHANNEL_6}},
{muxPots3.pin(7),{65, CHANNEL_6}},
{muxPots3.pin(8),{75, CHANNEL_6}},
{muxPots3.pin(9),{67, CHANNEL_6}},
{muxPots3.pin(10),{68, CHANNEL_6}},
{muxPots3.pin(11),{69, CHANNEL_6}},
{muxPots3.pin(12),{70, CHANNEL_6}},
{muxPots3.pin(13),{71, CHANNEL_6}},
{muxPots3.pin(14),{72, CHANNEL_6}},
{muxPots3.pin(15),{73, CHANNEL_6}},
};
void setup() {
muxPots.begin();
muxPots1.begin();
muxPots2.begin();
muxPots3.begin();
Control_Surface.begin(); // Initialize Control Surface
}
void loop() {
Control_Surface.loop(); // Update the Control Surface
}
#arduino #controller #MIDI #moog #The_Legend #musicmaker #diy