MIDI без компьютера

Тема в разделе "Arduino & Shields", создана пользователем DKo, 7 июн 2014.

  1. DKo

    DKo Нерд

    Добрый день!
    Не могли бы Вы мне помочь с одним вопросом. Я в этом деле новичок, и в моей голове не укладываются несколько вопросов.
    Возможно ли посылать 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-сообщения, как будто он подключен к компьютеру.
    Заранее спасибо!
     
  2. Unixon

    Unixon Оракул Модератор

    Кто будет посылать ардуине эти MIDI-сообщения?
     
  3. DKo

    DKo Нерд

    Я бы хотел, чтобы этот MusicShield и посылал. Тоесть он воспроизводит midi-файл, а этот файл уже направляет сообщения контроллеру
    Скажите это возможно?
     
  4. DKo

    DKo Нерд

    Просто я думал, что, т.к. MIDI-файл - это ведь не оцифрованный звук, а набор команд для воспроизведения нот, то Music Shield должен также как-то реагировать на каждую из команд, это меня навело на мысль, что можно как-то эти команды направить на обработку контроллеру.
     
  5. ANV

    ANV Гуру

    Music shield - это "черый ящик" - на входе файл, на выходе аналоговый сигнал. Отдельные ноты для света не вытащить. Единственный вариант - самому файл разбирать
     
  6. DKo

    DKo Нерд

    Тоесть можно ограничиться просто кард-ридером неким?
    Но тогда можете навести на мысль, каким образом можно прочитать такой файл на прямую с флешки? Видимо, нужен будет какой-то модуль или что-то наподобии? Заранее спасибо)
     
  7. ANV

    ANV Гуру

    С Ардуино чаще всего используются sd-карты, тк имеют хорошо документированный интерфейс и работают по spi
    Вот отдельно шилд: http://amperka.ru/collection/arduino-shield/product/arduino-sd-card-shield
    Частенько разьем для sd-карты есть "бонусом" на других шилдах.
     
    DKo нравится это.
  8. Megakoteyka

    Megakoteyka Оракул Модератор

    DKo нравится это.
  9. DKo

    DKo Нерд

    Хм, интересно, можно попробовать сэкономить. Спасибо!
    Но может кто-нибудь натыкался на информацию, как сделать некий "плеер" на ардуино, чтобы "доставать" midi-команды. Я искал на англоязычных форумах, но пока только нашел ответы типа: "В теории читать midi-файлы с карточки и распознавать коды команд возможно", но никто не знает как(
     
  10. geher

    geher Гуру

    Надо найти, прочитать и изучить описание структуры MIDI файла.
    Надо просто прочитать блок (chunk) заголовка, вытянуть из него параметры, потом читать блоки с треками и вычленять из них последовательные события, которые интерпретировать и выполнять тем или иным образом.
    Готовых библиотек не знаю, возможно, что-то можно выделить из библиотеки, которая воспринимает события MIDI по последовательному порту.
    В теории на анализ простых случаев ресурсов микропроцессора должно хватить.
     
    DKo нравится это.
  11. Megakoteyka

    Megakoteyka Оракул Модератор

    DKo нравится это.
  12. DKo

    DKo Нерд

    Хорошо, пошел изучать!
    Спасибо!:)