Bir Arduino ile MIDI Kontrolörü Nasıl Yapılır

  • Edmund Richardson
  • 0
  • 3347
  • 314
reklâm

Bir müzik aletleri ve gürültü kutusu koleksiyonuna sahip olan bir müzisyen olarak, mütevazi Arduino, özel bir MIDI denetleyicisi oluşturmak için mükemmel bir araçtır. Ahududu Pi Nesnelerin İnterneti (IoT) Nesnelerin İnterneti: 2016 Yılında Denemeniz Gereken 10 Faydalı Ürün Şeylerin İnterneti: 2016 Yılında Denemeniz Gereken 10 Faydalı Ürün Şeylerin İnterneti 2016, ama bu tam olarak ne anlama geliyor? Kişisel olarak Nesnelerin İnternetinden nasıl faydalanırsınız? Göstermek için birkaç yararlı ürün. projeler, basit bir Arduino Uno (farklı Arduino türleri nelerdir? Arduino Satın Alma Rehberi: Hangi Kurulu Almalı? Arduino Satın Alma Rehberi: Hangi Kurulu Almalı? Orada birçok farklı Arduino kurulu var mı? Kafanız karıştığı için affedilir, projeniz için hangisini satın almalısınız? Bu Arduino satın alma rehberi ile yardım edelim!) bu proje için fazlasıyla yeterli güce sahip.

Bir Arduino kullanarak ilk kez? Endişeye gerek yok, tam bir Arduino başlangıç ​​kılavuzuna sahibiz Arduino ile Başlarken: Bir Başlangıç ​​Kılavuzu Arduino ile Başlarken: Bir Başlangıç ​​Kılavuzu Arduino, esnek, kullanımı kolay donanım ve yazılımı temel alan açık kaynaklı bir elektronik prototip platformudur. Sanatçılar, tasarımcılar, hobiler ve etkileşimli nesneler veya ortamlar yaratmak isteyen herkes için tasarlanmıştır. Bu projeyle mücadele etmeden önce okumak için.

MIDI nedir?

MIDI Müzik Enstrümanı Dijital Arayüzü anlamına gelir. Müzik aletlerinin birbirleriyle iletişim kurmasının standart bir yolunu gösterir. Elektronik bir klavyeniz varsa, muhtemelen bir MIDI arayüzünüz vardır. MIDI uygulamasında yer alan birkaç teknik detay varken, MIDI'nin ses olmadığını hatırlamak önemlidir! MIDI verileri basit bir talimat setidir (bir komut bir “mesaj”) başka bir cihazın farklı sesler çıkarmak veya parametreleri kontrol etmek için uygulayabileceği.

MIDI 16 kanalı destekliyor. Bu, her bir 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 anlamına gelir “Alman Standardizasyon Enstitüsü”, ve sadece konektörün içinde beş pimli bir kablodur. USB genellikle 5 pinli DIN'in yerine kullanılır veya bir USB-MIDI arayüzü kullanılabilir..

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

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

Kontrol Değişimi (CC) mesajları bir kontrol cihazı numarası ve 0 ile 127 arasında bir değer içerir. CC mesajları genellikle ses seviyesi veya aralık gibi ayarları değiştirmek için kullanılır. MIDI'yi kabul eden cihazlar, hangi kanalların ve mesajların varsayılan olarak ayarlandığını ve bunların nasıl değiştirileceğini açıklayan bir el kitabıyla gelmelidir (MIDI eşlemesi 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 olarak bilinir. “Yama Değişimi”. CC mesajlarına benzer şekilde, üreticiler belirli bir mesajla hangi ayarların değiştirildiğini belirten bir belge sağlamalıdır..

Neye İhtiyacınız Var?

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

Plan Oluştur

Bu proje oldukça basit olacak. Elbette ihtiyaçlarınızı karşılamak için daha fazla düğme veya donanım ekleyebilirsiniz. Hemen hemen her Arduino uygun olacaktır - bu örnek için sadece üç pin gerekir. Bu proje programı kontrol etmek için iki düğme, veri göndermek için bir MIDI portu ve mesajları almak için bir cihazdan oluşur. Bu devre bir breadboard üzerine inşa edilmiştir. Acemi Elektronikler: Bilmeniz Gereken 10 Beceri Acemi Elektronikler: Bilmeniz Gereken 10 Beceri Birçoğumuz hiçbir zaman lehim havyası bile dokunmadık - ama işler inanılmaz derecede ödüllendirici olabilir. İşte size başlamanıza yardımcı olacak en temel DIY elektronik becerilerinden biri. burada, ancak sağlam bir çözüm için bir proje kutusuna ve lehimli konnektörlere aktarılması mümkündür..

Devre Meclisi

MIDI Bağlantısı

MIDI soketinizi şu şekilde bağlayın:

  • MIDI pim 5 ila 220 ohm direnç ile Arduino İletimi (TX) 1
  • MIDI pin 4'ten 220 ohm'a kadar bir dirençle Arduino + 5V'a
  • Arduino toprağına MIDI pin 2

Düğme Bağlantısı

Düğmeler Arduino'nun direncini değiştirerek çalışıyor “görür”. Arduino pimi düğmeden doğrudan yere geçer (DÜŞÜK) bir 10k ohm direnç (a “aşağı çek” Direnç, değerin düşük kalmasını sağlamak). Düğmeye basıldığında, devre tarafından görülen değer, dirençsiz olarak + 5v'ye değişir (YÜKSEK). Arduino bu değişikliği kullanarak tespit edebilir. digitalRead (iğne) Komut. Düğmeleri, Arduino dijital giriş / çıkışındaki (I / O) 6 ve 7 numaralı pinlere bağlayın. Her iki düğmeyi de bağlayın:

  • Düğmenin sol tarafı + 5V’a
  • Düğmenin sağ tarafı, 10k ohm'luk bir dirençle Arduino Ground'a
  • Düğmenin sağ tarafı Arduino pimine (6 veya 7)

MIDI Testleri

Şimdi tüm donanımlar bittiğine göre, test etme zamanı geldi. 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ğlı MIDI portu veri gönderiyor, bu yüzden çıktı. Bilgisayarınız verileri alıyor, bu nedenle girdi. Bu proje, Kırk Yedi Efekt tarafından geliştirilen mükemmel Arduino MIDI Kütüphanesi v4.2'yi kullanmaktadır. Kitaplığı yükledikten sonra, adresine giderek kodunuza ekleyebilirsiniz. Eskiz> Kütüphaneye Dahil Et> MIDI.

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

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

Arduino'yu Bağlayın Arduino Başlangıç ​​Kitinize Başlarken - Sürücüleri Takın ve Tahta ve Bağlantı Noktasını Ayarlayın Arduino Başlangıç ​​Kitinize Başlarken - Sürücüleri Takın ve Tahta ve Bağlantı Noktasını Ayarlayın Böylece, kendinize bir Arduino başlangıç ​​kiti satın aldınız ve Muhtemelen bazı diğer rasgele serin bileşenleri - şimdi ne? Bu Arduino şeyini programlamaya gerçekten nasıl başladınız? Bilgisayarınıza nasıl kurarsınız… ve aşağıdaki sınama kodunu yükleyin (doğru pano ve bağlantı noktasını seçmeyi unutmayın. Araçlar> Yönetim Kurulu ve Araçlar> Liman menüler).

#include #include #include #include #include MIDI_CREATE_INSTANCE (DonanımSerial, Seri, midiOut); // midiOut adlı bir MIDI nesnesi yaratın void setup () Serial.begin (31250); // MIDI için kurulum dizisi 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 PC gönderin - 12 = değer, 1 = kanal gecikmesi (1000); // 1 saniye bekle

Bu kod bir CC mesajı gönderir, 1 saniye bekler, bir PC mesajı gönderir ve süresiz olarak 1 saniye bekler. Her şey doğru çalışıyorsa, MIDI monitörünüzde bir mesaj belirdiğini görmelisiniz..

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

  • Tüm bağlantıların doğru olduğundan emin olun
  • MIDI portunun doğru kablolanıp bağlanmadığını kontrol edin - dış kenarlarda 2 yedek pim olmalıdır
  • Devrenin doğru olduğunu tekrar kontrol edin
  • Devrenin bir MIDI kablosuyla bir USB-MIDI arayüzüne bağlı olduğunu doğrulayın
  • MIDI kablonuzun bağlı olduğunu kontrol edin. giriş USB-MIDI arayüzünüzde
  • Arduino’nun gücünün olduğundan emin olun
  • USB-MIDI arayüzünüz için doğru sürücüyü kurun

Eğer sen yine sorun yaşarsanız breadboard'unuzu kontrol etmeye değer olabilir. Ucuz panolar 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. MIDI'nin bu bölümü test etmek için bağlı olması gerekmez.

const int buttonOne = 6; // değişkeni const'a pim atamak int buttonTwo = 7; // değişken void ayarına düğme pimi atayın () Serial.begin (9600); // metin pinMode için seri ayarları (buttonOne, INPUT); // giriş pinMode (buttonTwo, INPUT) olarak kurulum butonu; // giriş olarak kurulum butonu void loop () if (digitalRead (buttonOne) == HIGH) // düğme durum gecikmesini kontrol edin (10); // yazılım if-bounce eğer (digitalRead (buttonOne) == HIGH) // düğme durumunu tekrar kontrol et Serial.println ("Button One Works!"); // log sonuç gecikmesi (250);  if (digitalRead (buttonTwo) == HIGH) // düğme durum gecikmesini kontrol et (10); // yazılım if-bounce eğer (digitalRead (buttonTwo) == HIGH) // düğme durumunu tekrar kontrol et Serial.println ("Button Two Works!"); // 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 görmelisiniz “Button One Works!” veya “Düğme İki Çalışması!” bastığınız düğmeye bağlı olarak.

Bu örnekten alınacak önemli bir not var - yazılım geri çekiliyor. Bu, düğmeyi kontrol etmek ve ardından düğmeyi tekrar kontrol etmek arasında basit bir 10 milisaniye (ms) gecikmedir. Bu, düğmeye basmanın doğruluğunu artı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 Yaratmak

Artık her şey kablolu ve çalışıyor, tam denetleyiciyi bir araya getirmenin zamanı geldi.

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

#include #include #include #include #include const int buttonOne = 6; // değişkeni const'a pim atamak int buttonTwo = 7; // MIDI_CREATE_INSTANCE değişkenine düğme pimi atayın (HardwareSerial, Serial, midiOut); // midiOut adlı bir MIDI nesnesi yaratın void setup () pinMode (buttonOne, INPUT); // giriş pinMode (buttonTwo, INPUT) olarak kurulum butonu; // Serial.begin (31250) girişi olarak kurulum butonu; // MIDI çıkışını ayarla void loop () if (digitalRead (buttonOne) == HIGH) // düğme durum gecikmesini kontrol edin (10); // yazılım if-bounce if (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 et (10); // yazılım if-bounce eğer (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 - kullanamazsınız Serial.println () MIDI çıkışı ile.
CC yerine bir PC mesajı göndermek istiyorsanız, aşağıdakileri değiştirin:

midiOut.sendControlChange (42,127,1);

İle:

midiOut.sendProgramChange (değer, kanal); 

Eylemde

Aşağıda, Ableton Live denetleyicisi olarak gösterilmektedir (Her bütçe için en iyi DJ yazılımı Her Bütçe için en iyi DJ yazılımı Her Bütçe için en iyi DJ yazılımı İyi karıştırma yazılımı performansınızdaki tüm farkı yaratabilir. , Windows veya Linux'ta, DJS'e başlamak istiyorsanız, her beceri ve bütçe seviyesi sizin için hazırlanmıştır.). Sağ üstteki ses sayaçlarını ve üst ortadaki gelen midi mesajlarını gösterir (OS X'teki MIDI Monitor üzerinden).

Bir MIDI Kontrol Cihazı 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 kontrolörü oluşturabilirsiniz. Ve bir tane satın almakla ilgileniyorsanız, işte en iyi USB MIDI denetleyicileri: Müzisyenler için En İyi 9 USB MIDI Denetleyici İşte bütçe ne olursa olsun, şu anda satın alabileceğiniz en iyi MIDI denetleyicileri. satın alabilirsin.

Resim Kredisi: Shutterstock.com üzerinden Keith Gentry




Henüz no comments

Modern teknoloji hakkında basit ve uygun fiyatlı.
Modern teknoloji dünyasında rehberiniz. Her gün bizi çevreleyen teknolojileri ve araçları nasıl kullanacağınızı ve Internet'te ilginç şeyleri nasıl keşfedeceğinizi öğrenin.