Добрый день! Не могли бы Вы мне помочь с одним вопросом. Я в этом деле новичок, и в моей голове не укладываются несколько вопросов. Возможно ли посылать midi-команды arduino uno не с компьютера? Есть программа-секвенсор, в котором прописывается midi-трек. В моем случае такой метод удобен, т.к. я управляю светом, а работа в музыкальной программе позволяет точно написать timeline когда и что должно включиться. На всякий случай, следует добавить, что используется всего 16 команд. Если рассматривать из примеров код работы с midi, то все работает отлично. Код (Text): void setup() { // Set MIDI baud rate: Serial.begin(31250); } void loop() { // play notes from F#-0 (0x1E) to F#-5 (0x5A): for (int note = 0x1E; note < 0x5A; note ++) { //Note on channel 1 (0x90), some note value (note), middle velocity (0x45): noteOn(0x90, note, 0x45); delay(100); //Note on channel 1 (0x90), some note value (note), silent velocity (0x00): noteOn(0x90, note, 0x00); delay(100); } } // plays a MIDI note. Doesn't check to see that // cmd is greater than 127, or that data values are less than 127: void noteOn(int cmd, int pitch, int velocity) { Serial.write(cmd); Serial.write(pitch); Serial.write(velocity); } Команды приходит и он ее отлично распознает. Но это не удобно - всегда таскать с собой компьютер, хочется сделать автономную систему. В магазине наткнулся вот на такой Шилд http://amperka.ru/collection/arduino-shield/product/arduino-music-shield , который распознает midi-файлы. Скажите - возможно ли сделать так, чтобы контролер не просто воспроизводил файл(звуком), но также реагировал на midi-сообщения, как будто он подключен к компьютеру. Заранее спасибо!
Я бы хотел, чтобы этот MusicShield и посылал. Тоесть он воспроизводит midi-файл, а этот файл уже направляет сообщения контроллеру Скажите это возможно?
Просто я думал, что, т.к. MIDI-файл - это ведь не оцифрованный звук, а набор команд для воспроизведения нот, то Music Shield должен также как-то реагировать на каждую из команд, это меня навело на мысль, что можно как-то эти команды направить на обработку контроллеру.
Music shield - это "черый ящик" - на входе файл, на выходе аналоговый сигнал. Отдельные ноты для света не вытащить. Единственный вариант - самому файл разбирать
Тоесть можно ограничиться просто кард-ридером неким? Но тогда можете навести на мысль, каким образом можно прочитать такой файл на прямую с флешки? Видимо, нужен будет какой-то модуль или что-то наподобии? Заранее спасибо)
С Ардуино чаще всего используются sd-карты, тк имеют хорошо документированный интерфейс и работают по spi Вот отдельно шилд: http://amperka.ru/collection/arduino-shield/product/arduino-sd-card-shield Частенько разьем для sd-карты есть "бонусом" на других шилдах.
Переходник SD-microSD + 6 резисторов + провода + паяльник = самодельный SD Card Shield для Arduino. Проверял, работает.
Хм, интересно, можно попробовать сэкономить. Спасибо! Но может кто-нибудь натыкался на информацию, как сделать некий "плеер" на ардуино, чтобы "доставать" midi-команды. Я искал на англоязычных форумах, но пока только нашел ответы типа: "В теории читать midi-файлы с карточки и распознавать коды команд возможно", но никто не знает как(
Надо найти, прочитать и изучить описание структуры MIDI файла. Надо просто прочитать блок (chunk) заголовка, вытянуть из него параметры, потом читать блоки с треками и вычленять из них последовательные события, которые интерпретировать и выполнять тем или иным образом. Готовых библиотек не знаю, возможно, что-то можно выделить из библиотеки, которая воспринимает события MIDI по последовательному порту. В теории на анализ простых случаев ресурсов микропроцессора должно хватить.