Accordion Mega story ru - accordion-mega/AccordionMega GitHub Wiki

У меня есть собака и я люблю играть на аккордеоне. Некоторые считают, что собаки "поют" под гармошку и это смешно. Мне не смешно, я знаю, что песик слышит гораздо лучше меня и страдает от высоких обертонов. Не играю дома, чтобы его не тревожить. Это раздражает уже меня. Я-то люблю играть на аккордеоне. Явный цикл, программеры меня поймут. Давайте попробуем из него выйти.

ВОТ ОН.

Он играет в наушники, выдает MIDI наружу, и т.д., и т.д. Стоит $6,699.00 на и-бэе на 17 ноября 2010. В США я мог бы купить Peugeot Partner за те же деньги. В Украине где я живу оба предмета стоят вполовину дороже. За эти деньги я получу прекрасный инструмент для игры дома и ближайший сервисный центр за 400 километров от дома. Обидно.

Опять бесконечный цикл. Выходим прямо сейчас.

Давайте построим MIDI аккордеон. Нам нужно:

  1. старый аккордеон для переделки
  • опросить 41 клавишу правой руки
  • опросить 120 кнопок левой
  • померять давление внутри меха
  • послать MIDI команду более умной железке, на которой я и пишу этот текст

Немного погуглив, микроконтроллеры, роботы, оп-па, пункты 2,3,5 воплощает MIDI Chromatic Button Accordion (CBA) и стоит 75 евро. Неплохо, Том, но слегка дороговато для готовой прошивки. Я, конечно, припаяю 120 герконов для левой руки и 41 для правой и научусь их паять как радиозавод - но на выходе у меня будет туповатый ящик. Он будет выдавать ноты без дыхания и я не смогу его доработать. Спасибо, нет. А вот действительно спасибо - за информативный сайт!

Еще один самодельщик, Mike Szczys с внушающим ютюбовским видео. У него-то работает. А нам ни исходников - ни чертежей, повторить игрушку нереально. Все равно спасибо, Майк, ты доказал нам, что идея не провальная.

Итак, aрдуино. На 2010 год это слегка устаревший проект, но, нам пофиг. У него умные внутренности (по сравнению с синклером, который у меня был в детстве), некоторый IDE, куча библиотек и работающих проектов.

Давайте попробуем выполнить спецификацию по пунктам.

  1. у вас есть в кладовке старый аккордеон, если статья дочитана досюда. Готово
  2. клавиатура

она должна быть

  • быстрой
  • дешевой
  • аккордной (позволять нажимать любую комбинацию кнопок)
  • помещаться внутрь старого аккордеона

кандидаты:

  • матричная клавиатура: возможно (с диодами)
  • 1-wire клавиатура: никак, не может быть аккордной
  • клавиши от PC: дешево, уж никак не аккордная
  • датчика Холла: не так уж и дешево
  • оптопрерыватели: да, читаем дальше

Так, как оптопрерыватель это пара диод/фототранзистор нам надо зажечь каждый диод по одному и считать ноль/единицу с входа arduino. Мне кажется логичным обьеднять диоды не в октавы по 12, а в байты (по 8) и читать целый байт за команду. Кстати, такие клавиши не звенят совсем, ну ведь мечта, правда?

Schematics

По-хорошему выходной транзистор надо подпереть на +5в внешним резистором, но мы умеем это делать внутренними резисторами Atmega и не паяем лишнего.

Как вы видите по схеме я не собираюсь считывать каждую кнопку левой руки. Старый аккордеон этого не делал сам никогда, у него внутри железный, патентованный кодер - он уже поднимает нужные клапаны, уже пружинит под пальцем как надо. И клапанов этих всего 24 а не 120. Вот теперь мы можем предполагать, что успеем опросить все клапаны и не повесимся на километре проводов.

Немного конструируем, пилим, травим, паяем. Обе руки с оптопрерывателями:

Left hand photo Right hand photo

3.клавиатура Готова

4.давление.

BMP085 – цифровой датчик атмосферного давления все сделает сам. Тут разжевано все, что для этого нужно.

4.Готово

5.шлем MIDI команды

3 байта MIDI команды с виду просты как три байта

 Serial.print(midi_cmd, BYTE);
 Serial.print(notes_number, BYTE);
 Serial.print(midi_vel, BYTE);

но их не так просто получить. Надо как-то обьяснить компьютеру, что именно эти три байта это MIDI и именно их надо скормить синтезатору или сэмплеру. Конечно, можно выключить всю отладку, оставить на последовательном порту только MIDI и пытаться загнуть это в синтезатор. MIDI tutorial весьма полезен, но я не хочу покупать еще одну MIDI-USB dongle железку. Да и вообще у меня всего два USB порта и жалко их использовать. Поэтому предлагаю подключить что-то вроде BTM-112 к свободному последовательному порту arduino и слать MIDI по нему. Это еще и сделает инструмент беспроводным (не, ну bluetooth есть у каждого гопника в кармане, почему его нет на роланде-аккордеоне? я отвлекся).
Тот модуль, что попал мне в руки, заработал просто при подключении четырех проводов, но заставил меня поискать его родной набор AT команд, чтоб разогнать его слегка. 115Kb/cек вполне хватит для нашей задачи.
Теперь шаманство. Именно этот последовательный порт содержит MIDI, но никто внутри нашего компьютера об этом не знает. Cчастливые пользователи Windows могут попробовать пресловутый Roland Serial Midi driver - он должен работать. Я же, скромный пользователь MacOS, не нашел ничего готового, чтобы загнуть готовую последовательность байт с последовательного порта в IAC от CoreMIDI подсистемы. Нельзя же всерьез рассматривать Serial_MIDI_Converter который запускает Java только для того, чтобы транслировать три байта на команду.
В конце-концов пришлось написать 4кб кода для этого, он лежит вот тут, использует rtmidi и скорее всего соберется под любую операционку.

5.Готово

Ну теперь заливаем firmware в arduino и имеем 41/120 беспроводной MIDI аккордеон в хозяйстве.

материалы:

  • старый аккордеон на шару
  • ArduinoMega с и-бэя. 30$
  • BMP085 13$
  • оптопрерыватели BPI-470-T51 65x0.2$ = 13$
  • WH0802A-NGG-CT 3.75$
  • 5x1.2v NI-MH cells 22.50$
  • провода и коннекторы ~15$

всего: 97.25$

Похоже, что на разницу в цене вы можете купить любой компьютер под MacOS, полный Logic и пару дисков фирменных сэмплов. Удачи!

Посмотреть

Почитать

ПРОЕКТ ЖИВ! 25.May.2017:

[Jason Bugeja] (https://github.com/JasonBugeja)

[Brendan Vavra] (https://github.com/bvavra/MIDI_Accordion)