Arduino ile MIDI Denetleyici Nasıl Yapılır?

Arduino ile MIDI Denetleyici Nasıl Yapılır?

Müzik aletleri ve gürültü kutularından oluşan bir koleksiyona sahip bir müzisyen olarak mütevazı Arduino, özel bir MIDI denetleyicisi oluşturmak için mükemmel bir araçtır. Raspberry Pi, Nesnelerin İnterneti (IoT) projelerinin tacını almış olsa da, basit bir Arduino Uno (farklı Arduino türleri nelerdir?) bu proje için fazlasıyla yeterli güce sahiptir.





Arduino'yu ilk kez mi kullanıyorsunuz? Endişelenme, tam bir Arduino başlangıç ​​kılavuzu Bu projeyi ele almadan önce baştan sona okumak için.





MIDI nedir?

MIDI, Müzik Aleti Dijital Arayüzü anlamına gelir. Müzik cihazlarının birbirleriyle iletişim kurması için standart bir yolu ana hatlarıyla belirtir. Bir elektronik klavyeniz varsa, muhtemelen bir MIDI arayüzünüz vardır. MIDI'nin uygulanmasıyla ilgili birkaç teknik ayrıntı olsa da, MIDI'nin sesli olmadığını hatırlamak önemlidir! MIDI verileri, başka bir cihazın farklı sesler veya kontrol parametreleri yapmak için uygulayabileceği basit bir talimat setidir (bir talimata 'mesaj' denir).





MIDI 16 kanalı destekler. Bu, her kablonun birbiriyle bağımsız olarak iletişim kuran 16 farklı cihazı destekleyebileceği anlamına gelir. Cihazlar, 5 pinli bir DIN kablosu kullanılarak bağlanır. DIN, 'Alman Standardizasyon Enstitüsü' anlamına gelir ve sadece konektörün içinde beş pimli bir kablodur. USB genellikle 5 pimli DIN yerine kullanılır veya bir USB-MIDI arabirimi kullanılabilir.

MIDI-Kablo-Erkek



Kontrol Değişikliği ve Program Değişikliği

İki ana MIDI mesajı türü vardır: Kontrol Değişikliği ve Program Değişikliği.

Kontrol Değişikliği (CC) mesajları bir kontrolör numarası ve 0 ile 127 arasında bir değer içerir. CC mesajları genellikle ses seviyesi veya perde gibi ayarları değiştirmek için kullanılır. MIDI kabul eden cihazlar, varsayılan olarak hangi kanalların ve mesajların ayarlandığını ve bunların nasıl değiştirileceğini (MIDI eşlemesi olarak bilinir) açıklayan bir kılavuzla birlikte gelmelidir.





Program Değiştirme (PC) mesajları, CC mesajlarından daha basittir. PC mesajları tek bir sayıdan oluşur ve bir cihazdaki ön ayarı veya yamayı değiştirmek için kullanılır. PC mesajları bazen 'Yama Değişikliği' olarak bilinir. CC mesajlarına benzer şekilde, üreticiler belirli bir mesajla hangi ön ayarların değiştirildiğini gösteren bir belge sağlamalıdır.

Neye ihtiyacınız olacak

  • Arduino
  • 5 pinli DIN dişi soket
  • 2 x 220 ohm direnç
  • 2 x 10k ohm direnç
  • 2 x anlık anahtar
  • Bağlantı telleri
  • ekmek tahtası
  • MIDI kablosu
  • MIDI cihazı veya USB arayüzü
Su ve Ahşap PC Klavye için 5 Adet DIN 5 Pin PCB Montaj Dişi Soketler ŞİMDİ AMAZON'DAN SATIN AL

Yapı Planı

Bu proje oldukça basit olacak. Elbette ihtiyaçlarınıza göre daha fazla düğme veya donanım ekleyebilirsiniz. Hemen hemen her Arduino uygun olacaktır - bu örnek için sadece üç pin gereklidir. Bu proje, programı kontrol etmek için iki düğme, verileri göndermek için bir MIDI portu ve mesajları almak için bir cihazdan oluşur. Bu devre burada bir breadboard üzerine kurulmuştur, ancak sağlam bir çözüm için bir proje kutusuna ve lehimli konektörlere aktarmak mümkündür.





Devre Montajı

Arduino-Midi-Kontrolör-Devresi

MIDI Bağlantısı

MIDI-Pin çıkışı

MIDI soketinizi aşağıdaki gibi bağlayın:

  • 220 ohm'luk bir direnç aracılığıyla MIDI pin 5'ten Arduino Transmit (TX) 1'e
  • 220 ohm'luk bir direnç aracılığıyla MIDI pin 4'ten Arduino +5V'ye
  • MIDI pin 2'den Arduino toprağına

Düğme Bağlantısı

Düğmeler, Arduino'nun 'gördüğü' direnci değiştirerek çalışır. Arduino pimi, anahtardan doğrudan toprağa gider ( DÜŞÜK ) 10k ohm'luk bir dirençle (değerin düşük kalmasını sağlayan bir 'aşağı çekme' direnci). Butona basıldığında devrenin gördüğü değer dirençsiz +5v olarak değişir ( YÜKSEK ). Arduino, bu değişikliği kullanarak algılayabilir. dijitalOkuma(pin) emretmek. Düğmeleri Arduino dijital giriş/çıkış (G/Ç) üzerindeki 6 ve 7 pinlerine bağlayın. Her iki düğmeyi de bağlayın:

  • Düğmenin sol tarafı +5V'a
  • 10k ohm direnç üzerinden Arduino Ground'a düğmenin sağ tarafı
  • Arduino pinine (6 veya 7) düğmenin sağ tarafı

MIDI Testi

Artık tüm donanımlar bittiğinde, test etme zamanı geldi. Bir USB-MIDI arabirimine (birçok ses arabirimi bunu yapabilir) ve bir MIDI kablosuna ihtiyacınız olacak. Breadboard'a bağlanan MIDI bağlantı noktası veri gönderiyor, bu yüzden çıktı. Bilgisayarınız verileri alıyor, bu nedenle girdidir. Bu proje mükemmel Arduino'yu kullanıyor MIDI Kitaplığı v4.2 Kırk Yedi Etkisi tarafından. Kitaplığı kurduktan sonra, adresine giderek kodunuza dahil edebilirsiniz. Çizim > Kitaplığı Dahil Et > MIDI .

Ayrıca gelen MIDI verilerini izlemek için bir programa ihtiyacınız olacak:

Arduino'yu bilgisayarınıza bağlayın ve aşağıdaki test kodunu yükleyin (Anahtardan doğru kartı ve bağlantı noktasını seçmeyi unutmayın). Araçlar > Pano ve Araçlar > Bağlantı Noktası menüler).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

Bu kod bir CC mesajı gönderecek, 1 saniye bekleyecek, bir PC mesajı gönderecek ve ardından süresiz olarak 1 saniye bekleyecek. Her şey düzgün çalışıyorsa, MIDI monitörünüzde bir mesaj görünmelidir.

Hiçbir şey olmazsa, panik yapmayın! Sorun gidermeyi deneyin:

  • Tüm bağlantıların doğru olduğundan emin olun
  • MIDI bağlantı noktasının doğru şekilde kablolandığını kontrol edin - dış kenarlarda 2 yedek pim olmalıdır
  • Devrenin doğru olduğunu iki kez kontrol edin
  • Devrenin bir MIDI kablosuyla bir USB-MIDI arayüzüne bağlı olduğunu doğrulayın
  • MIDI kablonuzun bağlı olup olmadığını kontrol edin. giriş USB-MIDI arabiriminizde
  • Arduino'nun gücü olduğundan emin olun
  • USB-MIDI arayüzünüz için doğru sürücüyü yükleyin

Eğer sen hâlâ sorun yaşıyorsanız, breadboard'unuzu kontrol etmeye değer olabilir. Ucuz tahtalar bazen çok tutarsız ve düşük kaliteli olabilir -- bu proje üzerinde çalışırken başıma geldi.

Düğme Testi

Şimdi düğmelerin doğru çalıştığını test etme zamanı. Aşağıdaki test kodunu yükleyin. Bu parçayı test etmek için MIDI'nin bağlanması gerekmez.

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

Bu kodu çalıştırın (ancak USB kablosunu bağlı tutun) ve Seri Monitörü açın ( Sağ Üst > Seri Monitör ). Bir düğmeye bastığınızda 'Birinci Düğme Çalışıyor!' ifadesini görmelisiniz. veya 'İki Düğme Çalışıyor!' bastığınız düğmeye bağlı olarak.

Bu örnekten çıkarılacak önemli bir not var - yazılımın geri dönmesi. Bu, düğmeyi kontrol etmek ve ardından düğmeyi tekrar kontrol etmek arasındaki 10 milisaniyelik (ms) basit bir gecikmedir. Bu, düğmeye basmanın doğruluğunu arttırır ve Arduino'yu tetikleyen gürültünün önlenmesine yardımcı olur. Tavsiye edilmesine rağmen bunu yapmak zorunda değilsiniz.

Denetleyiciyi Oluşturma

Artık her şey kablolu ve çalışıyor olduğuna göre, tam kontrol cihazını monte etme zamanı.

Bu örnek, basılan her düğme için farklı bir CC mesajı gönderecektir. Bunu OS X'te Ableton Live 9.6'yı kontrol etmek için kullanıyorum. Kod, yukarıdaki test örneklerinin her ikisine de benzer.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

Not -- kullanamayacaksınız Seri.println() MIDI çıkışı ile.

CC yerine bir PC mesajı göndermek istiyorsanız, şunu değiştirin:

midiOut.sendControlChange(42,127,1);

İle birlikte:

midiOut.sendProgramChange(value, channel);

Eylemde

Aşağıda bir kontrolör olarak bir gösteri Ableton Canlı ( Her bütçeye uygun en iyi DJ yazılımı ). Sağ üst kısım ses göstergelerini ve üst orta kısım gelen midi mesajlarını gösterir (aracılığıyla). MIDI Monitör OS X'te).

müzik indirmek için en iyi uygulama nedir

MIDI Denetleyici Yaptınız mı?

Özel bir MIDI denetleyicisi için birçok pratik kullanım vardır. Ayakla kontrol edilen geniş bir ünite veya şık bir stüdyo denetleyicisi oluşturabilirsiniz. Ve bir tane satın almakla ilgileniyorsanız, satın alabileceğiniz en iyi USB MIDI denetleyicileri burada.

Resim Kredisi: Shutterstock.com aracılığıyla Keith Gentry

Önerdiğimiz ve tartıştığımız öğeleri beğeneceğinizi umuyoruz! MUO'nun bağlı kuruluş ve sponsorlu ortaklıkları vardır, bu nedenle bazı satın alımlarınızdan elde edilen gelirden pay alırız. Bu, ödediğiniz fiyatı etkilemez ve en iyi ürün önerilerini sunmamıza yardımcı olur.

Paylaş Paylaş Cıvıldamak E-posta Windows 11'e Yükseltmeye Değer mi?

Windows yeniden tasarlandı. Ancak bu sizi Windows 10'dan Windows 11'e geçmeye ikna etmek için yeterli mi?

Sonrakini Oku
İlgili konular
  • kendin yap
  • DJ Yazılımı
  • Arduino
  • Elektronik
  • gün ortası
Yazar hakkında Joe Coburn(136 Makale Yayınlandı)

Joe, İngiltere'deki Lincoln Üniversitesi'nden Bilgisayar Bilimleri mezunudur. Profesyonel bir yazılım geliştiricisi ve drone uçurmadığı veya müzik yazmadığı zamanlarda, genellikle fotoğraf çekerken veya video çekerken bulunabilir.

Joe Coburn'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın