Ножной контроллер Ableton
Я люблю делать небольшие живые джемы в Ableton, часто переключаясь с гитары на бас, на ударные и на фортепиано. Давно мне нужен был какой-нибудь ножной контроллер, который мог бы запускать циклическую запись, чтобы я мог создавать петли во время игры, когда мои руки заняты. Итак, обладая серьёзными познаниями в моделировании и электронике на начальном уровне, я попытался сделать это сам! Ну, на самом деле два, так что теперь я могу иметь один возле гитарного педалборда и один во��ле ударной установки :).
Я подумывал о том, чтобы Arduino Micros внутри отправляла MIDI-вызовы, но в итоге вместо этого я стал использовать команды с клавиатуры. Это делает его гораздо более универсальным — теперь я могу загрузить несколько программ, поэтому я могу использовать LC-5 или LC-2 для зацикливания во время воспроизведения музыки, ярлыков при редактировании или запуска макросов во время ежедневного использования компьютера. Он ст��л моим любимым маленьким инструментом повышения производительности. Дизайн на передней панели предназначен для музыки, но его можно использовать для чего угодно.
Маленькие значки на передней панели обозначают, что делает каждый переключатель — на LC-5 он имеет дорожку влево и вправо, запись, отмену и выбор темпа. В LC-2 есть только запись и отмена. Я использовал простые ножные переключатели мгновенного действия и припаял соединительные кабели непосредственно от Arduino к переключателям.
Если кому-то нужен код, вставлю ниже LC-5 (LC-2 тот же, только минус три переключателя). В основном я копировал это из того, что другие люди делали в подобных проектах, поскольку я не разбираюсь в коде Arduino, поэтому комментарии и тому подобное не мои. Я просто модифицировал его под свою конкретную настройку. Затем в Ableton я установил кнопку «Запись сеанса», которая будет запускаться по "]", а для «Tap Tempo» — "[". Дорожка влево и вправо — это просто клавиши со стрелками влево и вправо, а отмена — CMD-Z (это было сделано специально для использования на Mac).
#include
#include «Keyboard.h»
#define BUTTON_DEBOUNCE 50 // 50 = время устранения дребезга 50 мс
Кнопка Bounce2 = Bounce(2, BUTTON_DEBOUNCE);
Кнопка Bounce3 = Bounce(3, BUTTON_DEBOUNCE);
Кнопка Bounce4 = Bounce(4, BUTTON_DEBOUNCE);
Кнопка Bounce5 = Bounce(5, BUTTON_DEBOUNCE);
Кнопка Bounce6 = Bounce(6, BUTTON_DEBOUNCE);
недействительная настройка() {
// Настройте контакты для кнопок ножного переключателя как режим ввода = подтягивающие резисторы.
// Кнопки подключаются к каждому контакту на землю. Когда
// кнопка нажата, на выводе написано LOW, потому что кнопка
// замыкает его на землю. При отпускании на штыре отображается ВЫСОКИЙ уровень.
// потому что подтягивающий резистор подключается к +5 В внутри
// чип.
pinMode (2, INPUT_PULLUP);
pinMode (3, INPUT_PULLUP);
pinMode (4, INPUT_PULLUP);
pinMode (5, INPUT_PULLUP);
pinMode (6, INPUT_PULLUP);
}
недействительный цикл() {
// Получаем показания с кнопки
кнопка2.обновление();
кнопка3.обновление();
кнопка4.обновление();
��нопка5.обновление();
кнопка6.обновление();
// Включаем заметки, если кнопка подключена к земле
если (button2.fallingEdge()) {
Keyboard.press('[');
задержка(50);
Keyboard.releaseAll();
задержка(100);
}
если (button3.fallingEdge()) {
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('z');
задержка(50);
Keyboard.releaseAll();
задержка(100);
}
если (button4.fallingEdge()) {
Keyboard.press(']');
задержка(50);
Keyboard.releaseAll();
задержка(100);
}
если (button5.fallingEdge()) {
Клавиатура.нажмите(216);
задержка(50);
Keyboard.releaseAll();
задержка(100);
}
если (button6.fallingEdge()) {
Клавиатура.нажмите(215);
за��ержка(50);
Keyboard.releaseAll();
задержка(100);
}
}





























