İçindekiler:

Temel Arduino MIDI Denetleyicisi: 5 Adım
Temel Arduino MIDI Denetleyicisi: 5 Adım

Video: Temel Arduino MIDI Denetleyicisi: 5 Adım

Video: Temel Arduino MIDI Denetleyicisi: 5 Adım
Video: ARDUİNO EĞİTİM DERS | 1 (Sıfırdan, Led Ampul Yakmak) 2024, Kasım
Anonim
Temel Arduino MIDI Denetleyicisi
Temel Arduino MIDI Denetleyicisi

Giriş:

Arduino ile çalışmakta yeniyim ama başkalarına öğreterek ve geri bildirim alarak bilgimi genişletmeyi umuyorum. Bu, 4 düğmeli ve potansiyometreli çok basit bir MIDI denetleyicisidir. Bu projenin ana hatları şöyle görünür:

1. Breadboard'u oluşturun

2. Krokiyi Arduino'ya Yükleyin

3. Tüysüz MIDI ve dahili MIDI döngüsünü (loopbe1) anlayın

4. MIDI'nizi bir DAW'a (Ableton) yönlendirin

Gereçler

1 x Arduino Mega 2560

1 x Ekmek Tahtası

1 x USB Kablosu

1 x Potansiyometre

4 x İncelik Düğmeleri

4 x 120Ohm direnç

Breadboard için 14 x atlama kablosu

Adım 1: Breadboard'u Oluşturma

Breadboard'u Oluşturmak
Breadboard'u Oluşturmak
Breadboard'u Oluşturmak
Breadboard'u Oluşturmak

Breadboard'unuzu, tüm bileşenlerin yukarıdaki resim 1 ile eşleşmesi için bağlayın. Her bir buton resim 2 ile aynı görünmelidir. Arduino üzerinde buton girişleri 2, 3, 4 ve 5'tir ve potansiyometrenin orta pini ANALOG giriş A0'a bağlanır.

2. Adım: Çizimi Yükleme

Çizimi Yükleme
Çizimi Yükleme

Aşağıdaki kodu kopyalayıp Arduino IDE'ye yapıştırın. "Araçlar" altında doğru kartı seçin ve çizimi Arduino'ya yükleyin.

byte noteON = 144;//commandbyte notunda not;//şu anda çalmakta olan not için depolama int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = DÜŞÜK;//mevcut düğme durumu için depolama boolean lastState = DÜŞÜK;//son düğme durumu için depolama void kurulumu(){ pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); pinMode(buttonPin3, INPUT); pinMode(buttonPin4, INPUT); //bu sefer pini INPUT Serial.begin(9600);//initialize Serial connection } void loop(){ int PotVal = analogRead(potPin); bayt hızı = map(PotVal, 0, 1023, 0, 127); currentState = digitalRead(buttonPin1); if (currentState == HIGH && lastState == LOW){ MIDImessage(noteON, 60, hız);//nota 60'ı 127 hız gecikmesiyle açın(200);//düğmenin geri tepmesinin kaba şekli} else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//turn note 60 off delay(2);//düğmenin geri tepmesinin kaba şekli } lastState = currentState; currentState = digitalRead(buttonPin2); if (currentState == HIGH && lastState == LOW){//düğmeye az önce basıldıysa MIDImessage(noteON, 61, hız);//not 60'ı 127 hız gecikmesiyle açın(200);//düğmenin kaba şekli geri dönme } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//turn note 60 off delay(2);//düğmenin geri tepmesinin kaba şekli } lastState = currentState; currentState = digitalRead(buttonPin3); if (currentState == HIGH && lastState == LOW){//düğmeye az önce basıldıysa MIDImessage(noteON, 62, hız);//not 60'ı 127 hız gecikmesiyle açın(200);//düğmenin kaba şekli geri dönme } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//turn note 60 off delay(2);//düğmenin geri tepmesinin kaba şekli } lastState = currentState; currentState = digitalRead(buttonPin4); if (currentState == HIGH && lastState == LOW){//düğmeye az önce basıldıysa MIDImessage(noteON, 63, hız);//not 60'ı 127 hız gecikmesiyle açın(200);//düğmenin kaba şekli geri dönme } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//turn note 60 off delay(2);//düğmenin geri tepmesinin kaba şekli } lastState = currentState; } //MIDI mesajı gönder void MIDImessage(bayt komutu, bayt veri1, bayt veri2) { Serial.write(komut); Serial.write(veri1); Serial.write(veri2); }

Genel olarak kod yazma konusunda hala çok yeniyim….. biraz daha fazla deneyime sahip olanlar muhtemelen bunu temizleyebilir…

Adım 3: Tüysüz MIDI ve Dahili MIDI Döngülerini Anlama

Tüysüz MIDI ve Dahili MIDI Döngülerini Anlama
Tüysüz MIDI ve Dahili MIDI Döngülerini Anlama
Tüysüz MIDI ve Dahili MIDI Döngülerini Anlama
Tüysüz MIDI ve Dahili MIDI Döngülerini Anlama
Tüysüz MIDI ve Dahili MIDI Döngülerini Anlama
Tüysüz MIDI ve Dahili MIDI Döngülerini Anlama

Arduino'nun Hairless MIDI gibi bir seri köprüden, ardından loopbe1 (veya Mac için IAC bus) gibi bir dahili MIDI döngüsünden geçmesi gerekir.

Not: Tüysüz MIDI seri köprüsüne bağlıyken Arduino'ya çizim yükleyemezsiniz.

Tüysüz MIDI seri portunda Arduino'nuzu ve MIDI çıkışında loopbe1 veya IAC Bus'ı seçin.

Not: loopbe1'i kullanırken sessizin açık olmadığından emin olun.

4. Adım: DAW'ınıza Bağlanma

DAW'ınıza Bağlanma
DAW'ınıza Bağlanma

Breadboard üzerindeki bir düğmeye bastığınızda (ışıklar yanıp sönecektir) Hairless MIDI uygulamasına sinyal alıyorsanız, MIDI verilerini bir DAW'a gönderebilmeniz gerekir. Ableton kullandım ama herhangi bir DAW çalışmalı. DAW tercihlerinizde dahili MIDI döngünüzün (loopbe1) etkinleştirildiğinden emin olun (Ableton'da "iz"in etkinleştirilmesini istiyorsunuz). Ardından, yukarıdaki resimde gösterildiği gibi MIDI döngüsüne (loopbe1) MIDI track girişlerinizden birini seçin.

Adım 5: Oynat

Image
Image

Düğmeler artık diğer MIDI denetleyicileri gibi çalışacak! Potansiyometre, DAW'a gönderilen notaların hızını değiştirecektir. Yukarıdaki (çok karanlık…) video, bir kuyruklu piyano sesini çalışırken gösteriyor!

Önerilen: