İçindekiler:

Arduino MIDI Denetleyici Oluşturma: 9 Adım (Resimlerle)
Arduino MIDI Denetleyici Oluşturma: 9 Adım (Resimlerle)

Video: Arduino MIDI Denetleyici Oluşturma: 9 Adım (Resimlerle)

Video: Arduino MIDI Denetleyici Oluşturma: 9 Adım (Resimlerle)
Video: Ders 11 74HC138 ile Port Çoğullama 2024, Temmuz
Anonim

Bu talimat ilk olarak 28 Haziran 2020'de blogumda yayınlandı

Elektronik içeren şeyler yapmaktan zevk alıyorum ve her zaman Arduino kullanarak bir şeyler inşa etmek istemişimdir.

Bulduğum yeni başlayanlar için en yaygın yapılardan biri bir MIDI denetleyicisiydi. MIDI denetleyicisi, sesleri tetiklemek ve müzik yapmak için MIDI verilerini (Müzik Enstrümanı Dijital Arayüzü) bir cihaza gönderen herhangi bir donanımdır.

Yeni başlayanlar için bile birçok uygulamanın karmaşık olduğunu buldum. Yüzlerce satır okunamayan kod kullanmam gerektiğini bulmak çok sinir bozucuydu. Veya diğer örneklerin yanı sıra bazı durumlarda bir direnç lehimlemem gerekiyor.

Proje

Kendi Arduino MIDI Denetleyicimi yaparak amacım, gürültüyü en düşük seviyede tutarak keyifli bir proje yapmaktı. Herhangi bir yeni başlayanın takip edebileceği bir şey. Bunu başarmak için MIDI Fighter 3D'yi temel ilham kaynağı olarak kullandım ve gerekli olmayan her özelliği kaldırdım.

Projemin toplam maliyeti 30 doların altındaydı ve malzeme listesi gerçekten kısaydı (ortak bağlantılar):

  • Arduino Leonardo (veya klonu): 10 ila 20 dolar arasında.
  • 16 x Sanwa düğmesi 24 mm (veya klon): düğme başına 1 ila 2,50 ABD Doları arasında.
  • Havya
  • 22 AWG Elektrik Teli

Arduino Kurulu

Bu projeye başladığımda, bir sürü yeni Arduino modeli olduğunu gördüm (yüzlerce uyumlu kart dahil değil). Ve hepsi biraz farklı yetenekler sunuyor.

MIDI sinyallerini bir bilgisayara göndermem gerekiyordu ve bunu yapmanın en basit yolu USB üzerinden. ATmega32u4 mikrodenetleyicisine dayalı herhangi bir Arduino kartı, yerleşik USB iletişimine sahiptir.

Yerel USB desteğine sahip resmi Arduino kartları Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro'dur. Bu kartların entegre USB desteği vardır, bu da bir USB MIDI cihazı olarak işlev görebilecekleri anlamına gelir.

Arduino Leonardo'nun bir klonuyla gitmeye karar verdim. Bu proje için yeterli girişe sahiptir ve ayrıca kabloları takmayı/çıkarmayı kolaylaştıran başlıklar içerir.

İlk adım

Bu proje için kodu nasıl uyguladığımı adım adım anlatacak olsam da son halini indirebilirsiniz.

Tahtaya kod yüklemek için Arduino IDE kullanmanız gerekir. Ayrıca çok kullanışlı bir Web düzenleyicileri vardır, ancak kod derleyebileceğiniz günlük olarak sınırlı bir kotaları vardır.

Adım 1: Yerleşik LED'in Yanıp Sönmesi

Donanım dünyasındaki "Merhaba Dünya"nın bir LED'i nasıl yanıp söndüğü komik.

Arduino Leonardo'nun kodunuzu test etmek için yanıp sönebileceğiniz yerleşik bir LED'e sahip olduğunu keşfetmek benim için hoş bir sürpriz oldu. Bu şekilde, LED'li ve dirençli bir devre tahtası üzerinde harici bir devre kurmanıza gerek kalmaz.

Kod:

Adım 2: Manuel Girişte LED'i Yanıp Sönme

Bir sonraki mantıklı adım, bir sinyal gönderdiğimde aynı LED'i yanıp sönmekti. 2 Dupont telinin bir ucunun plastik kapağını çıkardım ve diğer ucunu panoya bağladım:

  • Pin numarası 2: Dijital girişlerden biri (pozitif). Herhangi bir dijital pin olabilir.
  • Pin GND: Herhangi bir topraklama pini (negatif).

Şimdi, tellerin açıkta kalan uçlarına her katıldığımda devreyi kapatıyorum ve böylece sonuç olarak kodu çalıştırabiliyorum

Leonardo'daki 20 dijital pinin her biri, INPUT_PULLUP kullanılarak etkinleştirilebilen bir dahili rezistöre (varsayılan olarak bağlantısı kesilmiştir) sahiptir. Bir pull-up girişinin, düğme durumunun tersine çevrildiği anlamına geldiğini unutmayın:

  • YÜKSEK devre açıkken (düğmeye BASILI DEĞİLDİR).
  • DÜŞÜK devre kapatıldığında (düğmeye basıldığında).

Kod:

Adım 3: MIDIUSB Kitaplığını Yükleme

Bu kütüphane, USB özellikli bir Arduino kartının USB üzerinden MIDI enstrümanı olarak hareket etmesine izin verir. Daha fazla bilgi için resmi belgelere bakın.

Arduino IDE'yi kullanarak, Kitaplık Yöneticisini kullanarak fazladan Arduino Kitaplıkları kurabilirsiniz:

  1. IDE'yi açın ve "Çizim" menüsüne, ardından "Kitaplığı Dahil Et"e ve ardından "Kütüphaneleri Yönet"e tıklayın.
  2. MIDIUSB'yi arayın ve Yükle'ye tıklayın.
  3. Tamamlandığında, MIDIUSB kitaplığının yanında bir Yüklendi etiketi görünmelidir.
  4. Kütüphane Yöneticisini kapatın.

Artık Leonardo, USB üzerinden MIDI mesajları gönderebilir! Ama önce, MIDI'nin nasıl çalıştığına dair biraz anlayışa ihtiyaç var.

MIDI Nasıl Çalışır?

"MIDI (Müzik Enstrümanı Dijital Arayüzü), elektronik müzik aletlerini, bilgisayarları ve ilgili ses cihazlarını müzik çalmak için birbirine bağlayan standart bir iletişim protokolüdür." - Vikipedi

Diğer talimatların yanı sıra çalınan notanın perdesi ve hızı verileriyle olay mesajlarını işler

Bu özel projede, 16 düğmeden gelen giriş, USB üzerinden farklı mesajlar gönderir. Bu mesajlar, GarageBand veya Ableton Live gibi herhangi bir uygun yazılım kullanılarak bir bilgisayarda sese dönüştürülebilir.

Bir MIDI mesajının anatomisi

Bir MIDI mesajı göndermek için 3. adımda kurduğum MIDIUSB Kütüphanesinden sendMIDI() yöntemini kullandım.

Bu yöntem 4 parametre alabilir:

  • Olay türü: Note On (nota çal) için 0x09 veya note Off (nota çalmayı durdur) için 0x08 olabilir.
  • Not Açık/Kapalı: MIDI kanalıyla birleştirilmiş olay tipi (1-16). Yalnızca kanal 1'i kullanıyorum, bu nedenle not Açık için 0x90 veya Not Kapalı için 0x80.
  • Nota numarası: Her nota ilişkili bir sayısal perdeye (frekans ölçeği) sahiptir.
  • Hız: 0'dan (hız yok) 127'ye (en hızlı).

Adım 4: Bir MIDI Mesajı Gönderme

MIDIUSB Kitaplığını ekledim ve yerleşik LED'i yanıp sönmek yerine bir not gönderdim.

Kod:

⚠ Önemli: Bu adımdan itibaren Arduino bir MIDI USB Denetleyicisine dönüşür ve USB üzerinden kod almayı durdurur.

Arduino'nun artık programlanamayacağı bir konumda takılıp kaldığınızda şu adımları izleyin:

  1. Arduino kartındaki yuvarlak sıfırlama düğmesini basılı tutun.
  2. Arduino IDE'de Yükle'ye tıklayın.
  3. Sıfırlama düğmesini bırakın.
  4. Güncellenen kod panoya yüklenecektir.

Adım 5: Her Düğmeden Bir MIDI Mesajı Gönderme

Her Düğmeden Bir MIDI Mesajı Gönderme
Her Düğmeden Bir MIDI Mesajı Gönderme

Son adım, her adımı bir düğmeye eşlemekti. 16 düğme için, aşağıdan yukarıya ve soldan sağa bir sırayla 36'dan 51'e perdeler olan C2'den E3b'ye bir ölçek tanımladım. Her nota hangi adımın karşılık geldiğini görmek için Arduino Tutorials'daki bu dosyayı inceleyin.

2'den 12'ye kadar dijital pinler ve A0'dan A4'e kadar analog pinler (dijital olarak kullanarak) kullandım.

Ve bu, son kodun nasıl göründüğü

Adım 6: Kanalları veya Bankaları Ayarlama (isteğe bağlı)

Kanalları veya Bankaları Ayarlama (isteğe bağlı)
Kanalları veya Bankaları Ayarlama (isteğe bağlı)

MIDI Fighter 3D'de olduğu gibi (resme bakın), kanal veya banka değiştirme özelliğine sahip daha fazla düğme eklemek isterseniz, Arduino Leonardo'nun kullanabileceğiniz dört pini daha vardır. Arduino Leonardo'nun 20 dijital giriş/çıkış pini vardır ve bunların sadece 16'sı nota çalmak için kullanılır.

Koddaki bir değişkeni güncellemek için bu ekstra düğmeleri kullanabilir ve değerini MidiUSB.sendMIDI yöntemine parametre olarak gönderebilirsiniz:

Gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Adım 7: Vaka

Dosya
Dosya
Dosya
Dosya

Bu projeyi basit tutmak için, hangi özelliklerin içerileceğini seçme konusunda son derece seçici davrandım.

  • Yalnızca düğmeler: 4x4 ızgarada 16 Sanwa benzeri arcade düğmesi. Düğme yok, kaydırıcı yok, fader yok veya başka bir analog giriş yok.
  • Tek gövdeli kasa: Muhafaza için veya Arduino kartını tutmak için vida, somun, cıvata veya yapıştırıcı kullanmayın.
  • Günlük araçlar: Örneğin, arcade düğmeleri için belirli bir kablo kesme makinesi satın almak yerine kabloları lehimledim.

Tek Gövde Tasarımı

Karşılaştığım zorluklardan biri, montaj gerektirmeyen ve tek seferde 3B yazdırılabilen yeterince basit bir kasa tasarlamaktı.

Vida veya yapıştırıcı kullanmaktan kaçınmak için elektronik aksamlara en küçük erişimi sağlayan bir muhafaza tasarlamam gerekiyordu. Kasa için en büyük ilham kaynağım, alt kısmında daire şeklinde bir delik bulunan Mac Mini oldu. Ayrıca bunun için vidalanabilir bir kapak tasarlamak istedim, ancak elektroniği açığa çıkarmak için açılmasına izin verdim.

3B yazdırılabilir kasayı indirin (322 KB). Önerilen ayarlar: PLA, 0.15mm katmanlar, %20 dolgu, en azından yuvarlatılmış alt delik, Arduino tutucular ve mikro USB için uygulayıcıları destekler.

Arduino'yu vidasız tutmak

Leonardo'nun kartı uygun herhangi bir kasaya vidalamak için 4 deliği var, ancak benim fikrim, kartı kasaya eklemeyi ve kasadan çıkarmayı kolaylaştırmaktı.

Arduino için Thingiverse'de bir klips tutucu bulmak kolaydı ve bu tutucuyu tek gövde tasarımına entegre etmek 5 yinelememi aldı. En zor kısım, düğme deliklerinden kaçınmak için bacaklarını yapmak ve mikro USB'yi kasaya orta hizalı hale getirmekti.

Adım 8: Montaj

Meclis
Meclis
Meclis
Meclis
Meclis
Meclis

Tüm düğmeleri yerlerine yerleştirdikten sonra aralarındaki düğmelerin tüm negatif ayaklarını birleştiren kısa siyah teller lehimledim.

Ardından, doğrudan panoya bağlanmak için her bir pozitif bacaktan uzun kırmızı kablolar lehimledim.

Kabloları Arduino'ya bağlamak için bazı Dupont uçlarını kesip lehimledim ve üzerlerini ısıyla daralan makaronla kapladım.

MIDI Fighter'dakiyle aynı sırayı izleyerek kabloları panoya bağladım. Aşağıdan yukarıya ve soldan sağa

Adım 9: MIDI Denetleyicisini Kullanma

MIDI Denetleyicisini Kullanma
MIDI Denetleyicisini Kullanma

MIDI almak ve biraz müzik yapmak için herhangi bir müzik yazılımı (veya uygun donanım) kullanılabilir. En çok önerilenler Garage Band, Ableton Live ve bir telefona yüklenecek bir sürü uygulama olduğunu biliyorum.

Tüm bu araçlar, parmakla davul çalmak için önceden tanımlanmış sesleri yüklemek için kullanışlıdır, ancak daha büyük amaçlar için yapılmıştır. Bu araçların kurulumu yeni başlayanlar için zor olabilir.

Web tarayıcısında MIDI

Bu proje ve basitliği ile daha uyumlu bir şey yapmak için, tamamen MIDI denetleyicilerine odaklanan bir Web aracı oluşturdum.

Punchy: MIDI denetleyicileri için WebMIDI ve WebAudio uygulaması.

MIDI mesajlarını WebMIDI JavaScript API'sini destekleyen herhangi bir tarayıcıda okuyabilir. Ardından sesleri bir sentezleyicide (WebAudio API kullanarak) veya herhangi bir ses paketinden özel sesler yükleyerek bir örnekleyicide çalar.

Ableton Live'ı kurun

MIDI Denetleyicinin Ableton Live ile çalışmasını sağlamak için resmi belgelerinden bu basit adımları izleyin.

Tercihler → MIDI Bağlantısı'na gidin ve kılavuzda belirtildiği gibi "Giriş"in "İz" ve "Uzaktan" AÇIK olduğundan ve çıkışın "Uzaktan" AÇIK olduğundan emin olun:

Önerilen: