Самодельная MIDI система для баяна или гармони

Больше
5 года 5 мес. назад #44181 от Костя
Кстати, да! Питч бэнд интересен очень!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 5 мес. назад #44182 от Александр
Искандерыч, я делал эту функцию на датчике давления.
Но у нас на ардуино остался один аналоговый вход, поэтому можно сделать внешнюю педаль.
Для этого собираем простую схему из двух резисторов: 1к постоянный для защиты входа, а 30к переменный для управления питчем. Подключаем к ним +5В и GND по схеме, а выход подключаем ко входу A7 ардуино.

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

// Прочитать значение.
pedal_raw_value = analogRead(7) - pedal_center_value;
pedal_center_value нужно записать вручную. Это центральное значение выхода педали.
// Отфильтровать значение
pedal_out_value_signed = PEDAL_FILTER*((float)(pedal_raw_value)) + ((float)1.0-PEDAL_FILTER)*(float)pedal_out_value;
// Ограничить значение
if (press_out_value_signed > PRESS_MAX_VALUE) press_out_value_signed = PRESS_MAX_VALUE;
if (press_out_value_signed <-PRESS_MAX_VALUE) press_out_value_signed =-PRESS_MAX_VALUE;
// Если значение поменялось, то подать команду
if (pedal_out_value != pedal_prev_value)
{
// Для всех каналов
for (int channel=0; channel<MD_MAX_CHANNEL; channel++)
{
// В зависимости от значения педали тон звука будет изменяться от середины плюс/минус значение.
int pitch = 0x2000 + ((long int)0x1FFF * pedal_out_value_signed) / (PEDAL_MAX_VALUE);
// 0xE0 MIDI_PITCH_WHEEL
Command3(0xE0 | channel, (pitch & 127),((pitch>>7)& 127));
}

Этот кусок положить около аналогичных переменных датчика давления:
// Определения педали
#define PEDAL_MAX_VALUE 25 // Значение с педали выше которого будет выдаваться максимальная громкость.
#define PEDAL_MIN_VALUE 0 // Значение с педали ниже которого команды MIDI не отправляются. Чтобы не отправлять команды при около-нулевой громкости.
#define PEDAL_MAX_VOLUME 127 // Максимальное значение громкости, отправляемое в MIDI команде. 1..127
#define PEDAL_CENTER 64 // Центральное значение при использовании знака
#define PEDAL_FILTER 0.25 // Значение фильтра педали. От 0 до 1. Ближе к 1 - слабая фильтрация. Ближе к 0 - сильная фильтрация.
// Глобальные переменные педали
int pedal_raw_value; // Выход с педали необработанный
int pedal_out_value_signed; // Выход с педали после обработки и ограничения, обе стороны, положительные и отрицательные значения
int pedal_prev_value; // Предыдущее значение выхода педали
int pedal_center_value; // Среднее значение выхода педали, необходимо для нахождения абсолютного значения.

Этот кусок программы я не проверял. Взял питч из датчика давления и переписал его.
Вложения:
Спасибо сказали: Саня

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 4 мес. назад #44231 от Костя
Продам миди баян. Этюд. Мех и все потроха отсутствуют, соответственно без датчика давления. Внутри все выглядит ужасно но работает хорошо. Причина - у меня их два и два живых а я переезжаю. Кстати, живой "мечта" с уменьшенным аккордом в левой тоже отдам.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 3 мес. назад #44330 от Костя

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 3 мес. назад #44332 от Геннадий
Браво Константин! Кстати, тема из Narcos под ваш баян мне тоже очень зашла :).
Насколько я понял, эту миди клаву вы сделали из компьютерной механической? И как она в эксплуатации, не тугая, не шумная? Я вот сейчас ради эксперимента на своем Razer-е имитирую аккорды, так мне и нажимать туго и щелкает громко. Понимаю, конечно все зависит от того, какого типа свичи стоят. В идеале бы линейные поставить типа Cherry MX Red, но где-ж их найти...
Итальянцы кстати уже давно выпускают что-то похожее - накладку прямо на синтезатор в виде хроматической клавиатуры. Даже три модели есть:
www.musictech-midi.it/eng/midi-systems/chromatic-keyboards
Куртуазная вещица, но где Италия а где мы :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 3 мес. назад #44333 от Костя
Свичи mx black не щелкают, мягкие. Купил сломанную клавиатуру за тыщу и выпаял. Но надо вакуумный паяльник. Сами кнопки обгрыз по размеру, они ещё разные по высоте и наклону, блин, и сверху приклеил термопистолетом пуговицы. Как подключать мех.свичи смотрите выше инструкции от Александра, он мне все разжевал. Работы там много, я делал долго, если бы у меня была хорошо оплачиваемая работа то проще заработать денег и купить ту итальянскую.....

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.321 секунд
Работает на Kunena форум