• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

Миди контроллер для гитары (Guitorgan)
на базе Arduino


 

Мне пришло в голову, что всякий раз, когда вы нажимаете струну на ладу вы делаете электрическую связь между ними. В сочетании с кодом для отправки MIDI-сообщений которые направляются в синтезатор, создается воспроизведение музыки. Это альтернатива hexaphonic звукоснимателя гитары-синтезатора, который определяет фактический физический контакт вместо обработки сигналов.

 

Проект реализуется с Arduino Mega и  любой гитарой с металлическими струнами. Загвоздка в том, что мы можем достичь только частичную полифонию (когда вы играете более чем одну ноту сразу). Кроме того, также понимаю, что моя текущая установка генерирует много электрических помех, когда прибор подключен к усилителю. Я работаю над другой версии, которые не должны иметь эту проблему.

 

Для построения этой конструкции вы будете нуждаться:

Любая гитара (или бас) с металлическими струнами. Я рекомендую дешевую электрическую модель, так как они очень прочные.

 

Изменение вашей гитары: электрическая изоляция струн

 

 

Поскольку сами струны  являются частью электрических цепей в этой сборке, нам нужно, чтобы убедиться, что нет проводимости между ними, чтобы микроконтроллер знал, какая струна разъединена. На акустической гитаре это не является проблемой, однако электрические инструменты, как правило, имеют заземление для того, чтобы попытаться снизить уровень шума. Это полная противоположность того, что мы хотим! Вы можете проверить проводимость между струнами с помощью мультиметра, сопротивление должно быть бесконечным.  Место, где это происходит, как правило, подставка (бридж). Проверьте место где струна вступает в контакт с металлом.  Любая металлическая поверхность, которая затрагивает струны должна быть покрыта непроводящей клеем, как эпоксидная смола или суперклей.  Растачиваем эти отверстия и заполняем их эпоксидной смолой. После того, как она высохла проделываем отверстия для установки струн. После установки, подставка и струны не должны иметь проводимость.

 

 

Припаиваем провода к порожкам лада, которые подключаются к микроконтроллеру. Вам понадобятся две отдельные секции (или более) кабеля Ethernet, в идеале 6 футов или больше. Один кабель будет подключен к ладам, а другой к струнам. Я только сделал 8 ладов для этой установки, но вы можете добавить еще с большим кабелем Ethernet. Пайка к струнам довольно проста, производится в обработанной ранее подставке. Порожки на ладах припаиваются с торца этилированным припоем.

Создание цепи

 

Сборка цепи

 

Цепь такая же, что и в сенсорных клавиатурах, но здесь переключение между порожками и подставкой. Микроконтроллер избирательно подает питание на одну ось сетки, а затем считывает напряжение каждого провода на другой оси, чтобы определить, какие соединения выполнены. Вместо кнопок, мы используем лады и струны  в качестве переключателя. Струны в подставке, через диоды идут к вашему Arduino Mega Pins 4-9 (4-7 для меня, так как я использовал бас). Порожки  ладов прикрепите проводами к выводам 22-29 (или выше, если у вас есть больше ладов), через резистор 10K Ом также подключая каждый провод к земле. Контроллер не будет работать без них.

 

Arduino код

Вот код, который вы будете загружать на Arduino Mega. Она доступна на Github. Обратите внимание на то, что наш Arduino посылает MIDI-сообщения через последовательный порт, и у меня нет фактической установки MIDI-порта. Это обрабатывается с помощью Serial-Midi конвертера в программном обеспечении.

 

//Midi_Guitar, Guitorgan Style

//Michael Niemi, <a href="https://github.com/mvniemi/midi_guitar"> https://github.com/mvniemi/midi_guitar

</a>

#define NUM_STRINGS 4

#define NUM_FRETS 8

#define VELOCITY 100

#define noteON 145

#define noteOFF 129

 

//This is where you pick what note you want your lowest string to start at

#define BASENOTE 28

 

//Set up for standard tuning of fourths

int stringOffsets[] = {0,5,10,15,19,25};

//This is for my bass, add more pins for a 6 string

int stringPins[] = {4,5,6,7};

int fretPins[] = {22,23,24,25,26,27,28,29};

int currentNote[NUM_STRINGS];

 

//

void setup() {

   //Serial to send midi commands over

  Serial.begin(115200);

 

//Initialize read pins

  for (int i=0; i< NUM_FRETS; i++){

    pinMode(fretPins[i], INPUT);

  }

// Initialize write pins?

  for (int i=0; i< NUM_STRINGS; i++){

    pinMode(stringPins[i], OUTPUT);

    digitalWrite(stringPins[i], LOW);

    currentNote[i]=0;

  }

}

 

void loop() {

  //Scan Strings: We will scan down the neck string my string and set

  // the note as the highest detected fret

  // Currently setting the note after each string instead of after all strings

  for (int i=0; i < NUM_STRINGS; i++){

   

    //Turn String High

    digitalWrite(stringPins[i], HIGH);

    //Set current note to zero

    int newNote=0;

   

    for (int k=0; k < NUM_FRETS; k++){

      if (digitalRead(fretPins[k]) == HIGH){

        newNote=k+1;

        }

    }

 

   //Turn String Low

   digitalWrite(stringPins[i], LOW);

   if (newNote != currentNote[i]){

      MIDImessage(noteOFF, (currentNote[i]+stringOffsets[i]+BASENOTE), VELOCITY);

 

    if (newNote != 0){

        MIDImessage(noteON, (newNote+stringOffsets[i]+BASENOTE), VELOCITY);

    }

    currentNote[i] = newNote;

   }

 // delay();

  }

}

 

void MIDImessage(int command, int MIDInote, int MIDIvelocity) {

  Serial.write(command);//send note on or note off command

  Serial.write(MIDInote);//send pitch data

  Serial.write(MIDIvelocity);//send velocity data

}

 

 

Программное обеспечение

Мега Arduino, при подключении к компьютеру через USB, будет посылать необработанные MIDI сообщения через COM-порт. Нам нужно некоторое программное обеспечение , чтобы прочитать этот последовательный сигнал и представлять его в качестве MIDI - устройства на компьютере, который выполняется  MID-Serial Bridge Кроме того, если вы используете Windows, вам нужна другая программа , чтобы создать "виртуальный MIDI - кабель замыкания на себя", называется loopMID . После того как вы создали порт MIDI в loopMIDI, а затем подключили его к вашему последовательному порту Arduino , можете приступать к музицированию/

 




Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 377



          

Радио для всех© 2024