İlan

Bir dizi müzik aleti ve gürültü kutusu toplayan bir müzisyen olarak, mütevazi Arduino, özel bir MIDI denetleyicisi oluşturmak için mükemmel bir araçtır. Ahududu Pi taç için almış olabilir iken Nesnelerin İnterneti (IoT) Nesnelerin İnterneti: 2016'da Denemeniz Gereken 10 Faydalı ÜrünNesnelerin İnterneti 2016'da yükseliyor, ama bu tam olarak ne anlama geliyor? Nesnelerin İnterneti'nden kişisel olarak nasıl yararlanırsınız? İşte açıklamak için birkaç yararlı ürün. Daha fazla oku projeleri, basit bir Arduino Uno (Arduino'nun farklı türleri nelerdir? Arduino Satın Alma Rehberi: Hangi Tahtayı Almalısınız?Dışarıda çok farklı Arduino tahtaları var, kafanız karıştığı için affedilirsiniz. Projeniz için hangisini satın almalısınız? Bu Arduino satın alma rehberi ile yardımcı olalım! Daha fazla oku ) bu proje için yeterli güce sahip.

Arduino'yu ilk kez mi kullanıyorsunuz? Endişeye gerek yok, tam bir elimiz var Arduino başlangıç ​​kılavuzu Arduino'ya Başlarken: Başlangıç ​​KılavuzuArduino esnek, kullanımı kolay donanım ve yazılıma dayalı açık kaynaklı bir elektronik prototipleme platformudur. Sanatçılar, tasarımcılar, hobiler ve etkileşimli nesneler veya ortamlar oluşturmak isteyen herkes için tasarlanmıştır.

instagram viewer
Daha fazla oku Bu projeyle uğraşmadan önce okumak için.

Arduino-Midi-Denetleyici-maketler

MIDI nedir?

MIDI, Müzik Enstrümanı Dijital Arayüzü anlamına gelir. Müzik cihazlarının birbirleriyle iletişim kurmasının standart bir yolunu ana hatlarıyla belirtir. Elektronik klavyeniz varsa, muhtemelen bir MIDI arabiriminiz vardır. MIDI'nin uygulanmasına ilişkin birkaç teknik detay olsa da, MIDI'nin ses olmadığını hatırlamak önemlidir! MIDI verileri, başka bir cihazın farklı sesler veya kontrol parametreleri yapmak için uygulayabileceği basit bir talimatlar 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 DIN kablosu kullanılarak bağlanır. DIN, “Alman Standartlar Enstitüsü” anlamına gelir ve 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şimi ve Program Değişimi

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

Denetim Değişikliği (CC) iletileri bir denetleyici numarası ve 0 ile 127 arasında bir değer içerir. CC mesajları genellikle ses seviyesi veya ses perdesi gibi ayarları değiştirmek için kullanılır. MIDI'yi kabul eden cihazlar, varsayılan olarak hangi kanalların ve mesajların ayarlandığını ve bunların nasıl değiştirileceğini açıklayan bir el kitabıyla birlikte gelmelidir (MIDI eşleme olarak bilinir).

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

Neye ihtiyacınız olacak

  • Arduino
  • 5 pimli DIN dişi soket
  • 2 x 220 ohm direnç
  • 2 x 10k ohm dirençler
  • 2 x anlık anahtar
  • Bağlantı telleri
  • Breadboard
  • MIDI kablosu
  • MIDI cihazı veya USB arayüzü

Yapı Planı

Bu proje oldukça basit olacak. Elbette ihtiyaçlarınıza uygun daha fazla düğme veya donanım ekleyebilirsiniz. Hemen hemen her Arduino uygun olacaktır - bu örnek için sadece üç pim gereklidir. Bu proje, programı kontrol etmek için iki düğme, verileri göndermek için bir MIDI bağlantı noktası ve mesajları alacak bir cihazdan oluşur. Bu devre, breadboard Başlangıç ​​Elektroniği: Bilmeniz Gereken 10 BeceriBirçoğumuz asla bir havya bile dokunmadık - ama bir şeyler yapmak inanılmaz derecede ödüllendirici olabilir. İşte başlamanıza yardımcı olacak en temel DIY elektronik becerilerinden on tanesi. Daha fazla oku ancak burada sağlam bir çözüm için bir proje kutusuna ve lehimli konektörlere aktarmak mümkündür.

Devre Montajı

Arduino-Midi-Denetleyici-Devre

MIDI Bağlantısı

MIDI-Pin

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

  • 220 ohm direnç üzerinden MIDI pin 5 - Arduino Transmit (TX) 1
  • 220 ohm direnç üzerinden MIDI pin 4 - Arduino + 5V
  • MIDI pin 2 - Arduino zemin

Düğme Bağlantısı

Düğmeler Arduino'nun gördüğü direnci değiştirerek çalışır. Arduino pimi anahtardan doğrudan toprağa geçer (DÜŞÜK) 10k ohm'luk bir dirençle (değerin düşük kalmasını sağlayan bir “aşağı çekme” direnci). Düğmeye basıldığında, devrenin gördüğü değer direnç olmadan + 5v olarak değişir (YÜKSEK). Arduino bu değişikliği digitalRead (pim) Komut. Düğmeleri Arduino dijital giriş / çıkışındaki (I / O) 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 düğmenin sağ tarafı Arduino Ground'a
  • Düğmenin sağ tarafı Arduino pinine (6 veya 7)

MIDI Testi

Artık tüm donanımlar bittiğine göre test etme zamanı. Bir USB-MIDI arayüzüne (birçok ses arayüzü bunu yapabilir) ve bir MIDI kablosuna ihtiyacınız olacaktır. Breadboard'a bağlanan MIDI bağlantı noktası veri gönderiyor, bu yüzden çıktı. Bilgisayarınız verileri alıyor, bu nedenle girdi. Bu proje mükemmel Arduino kullanıyor MIDI Kütüphanesi v4.2 Kırk Yedi Efekt. Kitaplığı kurduktan sonra, kodunuza kodunuzu Çizim> Kitaplığı Dahil Et> MIDI.

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

  • MIDI Monitörü OS X için
  • MIDI-OX pencereler için
  • KMidimon Linux için

Arduino'yu bağlayın Arduino Başlangıç ​​Setinizle Çalışmaya Başlama - Sürücüleri Yükleme ve Kart ve Bağlantı Noktasını KurmaYani, kendinize bir Arduino başlangıç ​​kiti ve muhtemelen diğer bazı rastgele serin bileşenleri satın aldınız - şimdi ne olacak? Bu Arduino programını programlamaya nasıl başlıyorsunuz? Nasıl kurarsınız ... Daha fazla oku bilgisayarınıza yükleyin ve aşağıdaki test kodunu yükleyin (cihazınızdan doğru kartı ve bağlantı noktasını seçmeyi unutmayın. Araçlar> Pano ve Araçlar> Bağlantı Noktası menüler).

#Dahil etmek 
#Dahil etmek 
#Dahil etmek 
#Dahil etmek 
#Dahil etmek  MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // midiOut void setup () {Serial.begin (31250) adlı bir MIDI nesnesi oluşturun; // MIDI için seri kurulumu. } void loop () {midiOut.sendControlChange (56,127,1); // bir MIDI CC gönder - 56 = not, 127 = hız, 1 = kanal gecikmesi (1000); // 1 saniye bekleyin midiOut.sendProgramChange (12,1); // bir MIDI bilgisayarı gönder - 12 = değer, 1 = kanal gecikmesi (1000); // 1 saniye bekleyin. }

Bu kod bir CC mesajı gönderecek, 1 saniye bekleyecek, bir PC mesajı gönderecek ve süresiz olarak 1 saniye bekleyecektir. Her şey doğru çalışıyorsa, MIDI monitörünüzde bir mesaj görmeniz gerekir.

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 bağlandığını kontrol edin - dış kenarlarda 2 yedek pim olmalıdır
  • Devrenin doğru olup olmadığını iki kez kontrol edin
  • Devrenin bir MIDI kablosuyla bir USB-MIDI arayüzüne bağlandığını doğrulayın
  • MIDI kablonuzun giriş USB-MIDI arayüzünüzde
  • Arduino'nun gücü olduğundan emin olun
  • USB-MIDI arabiriminiz için doğru sürücüyü yükleyin

Eğer sen yine Sorunlarınız varsa, 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ışıp çalışmadığını test etme zamanı. Aşağıdaki test kodunu yükleyin. Bu parçayı test etmek için MIDI'nin bağlı olması gerekmez.

const int düğmesiOne = 6; // düğme pinini değişkene atayın. const int düğmesiİki = 7; // değişken void kurulumuna düğme pimi ata () {Serial.begin (9600); // metin pinMode için kurulum dizisi (buttonOne, INPUT); // giriş pinMode olarak kurulum düğmesi (buttonTwo, INPUT); // giriş düğmesi olarak kurulum düğmesi. } void loop () {if (digitalRead (buttonOne) == HIGH) {// düğme durum gecikmesini kontrol et (10); // eğer yazılımın atlanması (digitalRead (buttonOne) == HIGH) {// düğme durumunu tekrar kontrol et Serial.println ("Düğme Bir Çalışır!"); // log sonuç gecikmesi (250); }} if (digitalRead (buttonTwo) == HIGH) {// düğme durum gecikmesini kontrol edin (10); // eğer yazılımın atlanması (digitalRead (buttonTwo) == HIGH) {// düğme durumunu tekrar kontrol et Serial.println ("Düğme İki Çalışır!"); // log sonuç gecikmesi (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 “Düğme Bir Çalışır!” veya "Düğme İki Çalışır!" bastığınız düğmeye bağlı olarak.

Bu örnekten uzaklaşmanın önemli bir notu vardır - yazılım geri dönme. Bu, düğmeyi kontrol etme ve ardından düğmeyi tekrar kontrol etme arasındaki basit 10 milisaniye (ms) bir gecikmedir. Bu, düğmeye basmanın doğruluğunu artırır ve Arduino'nun gürültüyü tetiklemesine yardımcı olur. Tavsiye edilmesine rağmen bunu yapmak zorunda değilsiniz.

Denetleyiciyi Oluşturma

Artık her şey kablolu ve çalışıyor, tam denetleyiciyi birleştirme zamanı.

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

#Dahil etmek 
#Dahil etmek 
#Dahil etmek 
#Dahil etmek 
#Dahil etmek const int düğmesiOne = 6; // düğme pinini değişkene atayın. const int düğmesiİki = 7; // düğme pinini MIDI_CREATE_INSTANCE değişkenine ata (HardwareSerial, Serial, midiOut); // midiOut void setup () {pinMode (buttonOne, INPUT) adlı bir MIDI nesnesi oluşturun; // giriş pinMode olarak kurulum düğmesi (buttonTwo, INPUT); // Serial.begin (31250) girişi olarak kurulum düğmesi; // MIDI çıkışını ayarlayın. } void loop () {if (digitalRead (buttonOne) == HIGH) {// düğme durum gecikmesini kontrol et (10); // eğer yazılımın atlanması (digitalRead (buttonOne) == HIGH) {// düğme durumunu tekrar kontrol et midiOut.sendControlChange (56,127,1); // bir MIDI CC gönder - 56 = not, 127 = hız, 1 = kanal gecikmesi (250); }} if (digitalRead (buttonTwo) == HIGH) {// düğme durum gecikmesini kontrol edin (10); // eğer yazılımın atlanması (digitalRead (buttonTwo) == HIGH) {// düğme durumunu tekrar kontrol et midiOut.sendControlChange (42,127,1); // bir MIDI CC gönder - 42 = not, 127 = hız, 1 = kanal gecikmesi (250); } } }

Not - kullanamayacaksınız Serial.println () MIDI çıkışı ile.
Bir CC yerine bir PC mesajı göndermek istiyorsanız değiştirin:

midiOut.sendControlChange (42,127,1);

İle:

midiOut.sendProgramChange (değer; kanal); 

Eylem

Aşağıda bir kontrolör olarak bir gösteri Ableton Live (Her bütçe için en iyi DJ yazılımı Her Bütçe İçin En İyi DJ Yazılımıİyi karıştırma yazılımı performansınızdaki tüm farkı yaratabilir. İster Mac, ister Windows veya Linux kullanın, DJlik yapmaya başlamak istiyorsanız her beceri ve bütçeye hitap edin. Daha fazla oku ). Sağ üstteki ses ölçerler ve üst ortadaki gelen midi mesajları (üzerinden MIDI Monitörü OS X'te).

Bir MIDI Kontrolörü yaptınız mı?

Özel bir MIDI denetleyicisi için birçok pratik kullanım vardır. Geniş bir ayak kumandalı ünite veya şık bir stüdyo denetleyicisi oluşturabilirsiniz. Ve bir tane satın almakla ilgileniyorsanız, işte burada en iyi USB MIDI denetleyicileri Müzisyenler için En İyi 9 USB MIDI Kontrol CihazıUSB MIDI denetleyicisi mi arıyorsunuz? İşte bütçesinden bağımsız olarak şu anda satın alabileceğiniz en iyi MIDI denetleyicileri. Daha fazla oku satın alabilirsin.

İmaj Kredisi: Shutterstock.com üzerinden Keith Gentry

Joe, İngiltere Lincoln Üniversitesi Bilgisayar Bilimi mezunudur. Profesyonel bir yazılım geliştiricisidir ve uçağı uçurmadığı veya müzik yazmadığı zamanlarda, genellikle fotoğraf çekerken veya video üretirken bulunabilir.