İçindekiler:

Arduino MIDI Ritim Bölüm Sıralayıcısı: 8 Adım (Resimlerle)
Arduino MIDI Ritim Bölüm Sıralayıcısı: 8 Adım (Resimlerle)

Video: Arduino MIDI Ritim Bölüm Sıralayıcısı: 8 Adım (Resimlerle)

Video: Arduino MIDI Ritim Bölüm Sıralayıcısı: 8 Adım (Resimlerle)
Video: XY instrument kullanımı | Classic LFO ve Random modülleri | Using XY instrument 2024, Temmuz
Anonim
Arduino MIDI Ritim Bölümü Sıralayıcısı
Arduino MIDI Ritim Bölümü Sıralayıcısı
Arduino MIDI Ritim Bölümü Sıralayıcısı
Arduino MIDI Ritim Bölümü Sıralayıcısı
Arduino MIDI Ritim Bölümü Sıralayıcısı
Arduino MIDI Ritim Bölümü Sıralayıcısı

İyi bir yazılım davul makinesine sahip olmak bugün kolay ve ucuz ama bir fare kullanmak benim için eğlenceyi öldürüyor. Bu nedenle, başlangıçta 12 farklı davul elemanını (parçasını) tetikleyebilen saf 64 adımlı donanım MIDI davul sıralayıcısı olarak tasarlanan şeyin farkına vardım, ancak daha sonra bir ritim bölümü sıralayıcıda gelişti…

… oraya gidiyoruz!

Adım 1: Nasıl Çalışır?

Bu donanım kendi başına ses üretemez, ancak MIDI aracılığıyla yalnızca harici donanımı sıralar. Bu, MIDI nota mesajları tarafından tetiklenebilen bateri seslerinizin bir ses üretecine (bir örnekleyici veya bir bateri sentezleyici veya en sevdiğiniz bateri yazılımına sahip bir PC veya tercih ettiğiniz herhangi bir bilgisayar) ihtiyacınız olacağı anlamına gelir.

Esas olarak, bir çubuğun her adımı için bir tane olmak üzere 4 x 4 düğme matrisinden (LED'li) oluşur. 64 adım dizisinin tamamı, 4 çubukla çarpılan 16 adımdan oluşur. Her adım bir notun 1/16'sı kadardır.

İki çalışma modu vardır: canlı mod ve düzenleme modu.

Düzenleme modunda, her adımda hangi davulun çalacağını tanımlayarak dizinizi adım adım düzenleyebilirsiniz.

Harici donanım enstrümanınız ("davul"), "10" numaralı kanalda farklı "MIDI nota numaraları" için bir MIDI "note on" mesajı göndererek tetiklenir. Varsayılan olarak bu not numaraları

davul #1 (yani tekme) -> "60" MIDI notası

davul #2 (yani trampet) -> MIDI nota numarası "62"

davul #3 (yani alkış) -> "64" MIDI notası

davul #4 (yani Hihat) -> "65" MIDI notası

davul #5 -> MIDI nota numarası "67"

davul #6 -> MIDI nota numarası "69"

davul #7 -> MIDI nota numarası "71"

davul #8 -> MIDI nota numarası "72"

davul #9 -> MIDI nota numarası "74"

davul #10 -> MIDI nota numarası "76"

davul #11 -> MIDI nota numarası "77"

davul #12 -> MIDI nota numarası "79"

İsterseniz çizimde bu değerleri (ve MIDI kanalını) değiştirebilirsiniz.

Canlı modda, adım düğmelerine basarak, seri olarak MIDI mesajları göndererek her adımla ilişkili davulları canlı olarak çalabilirsiniz. Düğme basışlarınızı ve/veya gelen MIDI mesajlarınızı canlı olarak kaydedebilirsiniz.

Hem canlı modda hem de düzenleme modunda bir bateri sesini kapatabilir (veya sesini açabilir), o anda aktif olan bateriyi "yuvarlayabilir" ve dizinizi "sallayabilirsiniz".

Ritim bölümü?

Davul sıralayıcıların çoğu, her bir davul sesi için sabit bir MIDI nota numarasına sahip tamamen MIDI davul parçaları tetikleyicileridir. Bu durumda, saf bir "davul sıralayıcıdan" daha fazla bir "ritim bölümü sıralayıcımız" var çünkü sentezleyicileri bile sıralayabilirsiniz.

Daha fazla ayrıntı ve özelliklerin tam listesi için HIZLI BAŞLANGIÇ KILAVUZUNU okuyun.

2. Adım: Donanım

Donanım
Donanım
Donanım
Donanım
Donanım
Donanım

Bu proje bir Arduino DUE panosu etrafında gerçekleştirilmiştir. Donanımı mümkün olduğunca basit tutmaya çalıştım, yani LED sürücüleri kullanmaktan kaçındım. Arduino DUE, çıkış akımı limitleri nedeniyle (pimine bağlı olarak 5 mA'dan 15 mA'ya kadar) LED sürücüsü olmayan bir grup LED'i işlemek için muhtemelen en uygun kart değildir, ancak en hızlı Arduino'dur ve işlem yaparken zamanlama her şeydir. sıralayıcılar ile. Bu nedenle, BU donanım yapılandırmasının muhtemelen Arduino DUE'nizi sınırlarını zorladığını ve uzun vadede zarar verebileceğini unutmayın.

Bununla birlikte, donanım esas olarak 16 düğme, 16 LED (her adım için bir tane) ve işlevler için 5 ek düğme ve 3 potansiyometre ile sıralayıcıdır. Canlı kayıt işlevi ekledikten sonra kırmızı bir LED de ekledim.

İşte malzeme listesi:

- 1x Arduino DUE

- Entegre LED'lere sahip 16x anlık, kilitlenmeyen butonlar (isterseniz harici LED'leri kullanabilirsiniz, ancak düşük güçlü LED'leri kullanmayı unutmayın!!)

- 1x kırmızı LED (düşük güç!)

- 5x anlık, kilitlenmeyen butonlar

- 3x 10K tek dönüşlü, lineer, potansiyometre

- 3x 6.5 mm panel montajlı mono jak dişi

- 1 adet plastik kasa (190x140x70 mm kasa kullandım)

- 2x 5 pinli DIN dişi panel montajlı soket konnektörü (MIDI)

- 1x çift taraflı 70x90 mm perf levha

- 2x 40 pin erkek tek sıra pin başlık şeridi (2,54 mm), altın kaplama ise daha iyi

- 1x H11L1 optokuplör

- 1x 1N4148 diyot

- 23x 1000 ohm dirençler

- 3x 220 ohm dirençler

- 2 adet BC547 pnp transistör

… lehim teli, bazı kablolar, lehimleme istasyonu, delme aleti… ve boş zaman:)

Lütfen resimlerdeki düğmelerin, aşırı zıplama nedeniyle başka tür (hatta daha ucuz…) basmalı düğmelerle değiştirildiğini unutmayın…

Projeyi tamamlamak için gereken süre: 8 - 10 saat

UYARI: Delme sırasında DAİMA koruyucu gözlük ve eldiven kullanın! Sıcak malzeme parçacıkları gözlerinize yansıtılabilir veya cildinizle temas edebilir ve yanıklara ve hatta size veya çevrenizdeki insanlara daha ciddi zararlara neden olabilir

Adım 3: Kablolama

kablolar
kablolar
kablolar
kablolar
kablolar
kablolar

Adım düğmeleri, 22'den (adım 1) 37'ye (adım 16) doğrudan Arduino pinlerine bağlanır. Düğmeler topraklaması papatya dizimidir ve Arduino DUE toprağına bağlanmıştır. Arduino entegre pullup dirençlerinin yazılımla etkinleştirilmesi nedeniyle pullup veya pulldown dirençlerine ihtiyaç yoktur (çizime bakın).

Aynısı, adımlar dışındaki işlevler için kullanılan ek 5 düğme (Arduino pinleri 2, 3, 4, 5 ve 6) için de geçerlidir. Ayrıca dizilerimi uzaktan çalabilmek ve durdurabilmek için "start" düğmesine paralel olarak 6,5 mm dişi jak konektörü yerleştirdim.

LED'ler toprağa (papatya zinciri) ve Arduino DUE pinlerine 38'den (adım #1) 53'e (adım #16) kadar seri olarak 1K ohm'luk bir dirençle bağlanır ve böylece akım tahliyesi sınırlandırılır ve mikrodenetleyici korunur.

Potansiyometreler ekteki resimde gösterildiği gibi bağlanır. Referans voltajının 5V değil 3.3V olduğuna dikkat edin. Kullanılan girişler A0, A1 ve A2'dir.

Korg Polysix ve Roland Juno 6/60 gibi eski 80'lerin synth'lerini arpejlemek için gerekli olanlar gibi arpej sinyalleri için iki tetikleme çıkışı da uyguladım. A3 ve A4 pinlerine bağlıdırlar, ancak dijital sinyal olmayı tercih ederseniz dijital pinleri kullanabilirsiniz. V-Trig (voltaj tetikleme) sinyalleri ile uyumlu bir synth dizilimi yapacaksanız, akım tüketimini azaltmak için 1k ohm serisi bir direnç yeterli olacaktır; S-Trig (anahtar tetikleyici) synth olması durumunda, basit bir pnp anahtar devresine ihtiyacınız olacaktır (ekli şemaya bakın).

MIDI IN ve OUT devreleri ekteki resimlerde şematize edilmiştir. Çoğu arduino'nun aksine, DUE kartlarında varsayılan olarak Rx0 ve Tx0 yerine Rx1 ve Tx1'in kullanıldığına dikkat edin. Bu harika çünkü her seferinde Rx'in bağlantısını kesmeye gerek kalmadan çiziminizi yükleyebilirsiniz. Arduino DUE 3.3V limiti dahilinde ortak bir 6N138 olması gerektiği gibi çalıştıramadığım için bir H11L1 optokuplör kullandığıma da dikkat edin.

4. Adım: Yazılım

Taslak Arduino IDE içinde yazılmıştır ve Arduino DUE kartınıza yüklenmelidir. Krokiyi arduino DUE'nize nasıl yükleyeceğinizle ilgili ayrıntılara girmeyeceğim. Bu Arduino DUE ile ilk deneyiminizse, bunu okuyun. Bu, arduino IDE ile ilk deneyiminizse, lütfen bunu da okuyun.

Güncellenen bellenimi BURADAN indirebilirsiniz (github bağlantısı).

Taslak, mükemmel FortySevenEffects MIDI kitaplığına dayanmaktadır. Kütüphaneyi arduino IDE'nize kurmanız gerekecek.

Her bir davula atanan MIDI çıkış notaları çizimdeki drumNote[STEPS_NUM] değişkeni tarafından tanımlanır. Bunları isteğinize göre değiştirebilirsiniz.

Bateriler için MIDI çıkış kanal numarası varsayılan olarak "10" olarak ayarlanmıştır.

Ben gerçek hayatta kodlayıcı değilim ve kesinlikle burada ihtiyacımız olan şeyi kodlamanın daha iyi yolları var. Herhangi bir önerisi olan bir kodlayıcı iseniz, hoş geldiniz! Lütfen kodun verimliliğini/etkinliğini artırabilecek herhangi bir varyasyonu bana gönderin ve onu ana taslağa dahil edeceğim (açıkça Katkıda Bulunan'dan alıntı yaparak!).

Adım 5: Hızlı Başlangıç Kılavuzu

DRUMLAR: ADIM ADIM SIRALAMA

Sıralayıcınızı açar açmaz (veya sıfırladığınızda), boş bir sıralama yüklenecektir. Sıralayıcı, birinci çubuk basılı tutulmuş/kilitlenmiş ve ilk tambur (yani tekme) seçilmiş olarak düzenleme modunda açılır. Bu, herhangi bir adım düğmesine basarak, o adımlara hemen "tekme" atayacağınız anlamına gelir. Tamburun tetikleneceği hacim, tambur kademeye atanırken "hacim" potansiyometresinin konumu ile ayarlanır. Önceden atanmış bir adım düğmesine yeniden basarak, o adımdaki mevcut tamburun atamasını kaldıracaksınız.

"Başlat" düğmesine basarsanız, LED'lerinizin soldan sağa, yukarıdan aşağıya doğru çalıştığını, bir adım geçildiğinde her seferinde "kick" çaldığını görürsünüz.

"Shift" tuşuna basılı tutarak 1. sıradaki 1. kademe LED'inin yandığını (birinci tamburun seçildiği anlamına gelir) ve dördüncü sıradaki ilk kademe LED'inin (birinci çubuğa kilitlendiğiniz anlamına gelir) göreceksiniz. Artık "shift" düğmesini basılı tutarken başka bir adım düğmesine basarak sıralamak istediğiniz tamburu değiştirebilirsiniz. Yeni tamburu seçtikten sonra "shift" düğmesini bırakın. Tüm LED'ler sönecektir (çünkü yeni tamburu herhangi bir adıma atamamışsınızdır) ve yeni tamburu adımlara atamaya başlayabilirsiniz. İhtiyacınız olan tüm davullar için tekrarlayın (12'ye kadar).

Artık güzel bir desen oluşturduğunuza göre, "shift" tuşuna basmaya devam edin ve alt satırda vurgulanan adımı kapatın (kullandığım aynı düzeni benimsediyseniz 4. sıranın 1. adımı olmalıdır): sadece " kilidi açıldı", şimdi tüm 4 çubuğun üzerinden geçecek olan dizi. Alttaki ham LED'ler, o anda hangi çubuğun oynatıldığını (çubuk ilerlemesi) belirten "hareket etmeye" başlayacaktır. Yalnızca ilk çubukta bir dizinin oynatılacağını ve diğer 3 çubuğun hiçbirinin ses üretmediğini fark edeceksiniz. Bunun nedeni, davulları yalnızca ilk çubuğa atamış olmanız, diğerlerinin boş bırakılmasıdır. Bunları elle doldurabilirsiniz ("shift" basılı tutarken son 4 adım düğmelerinden birine basarak yeni bir çubuk seçin, tamburlardan birini seçin, adımları doldurun vb.) veya oluşturduğunuz çubuk dizisini kopyalayıp yapıştırabilirsiniz. düzenleme moduna girerek (ilk çubuğa yeniden kilitleyin) ve "shift" tuşunu basılı tutarken "kaydet"e (artık "yapıştır" işlevini üstlenir) basarak tüm çubuklara. Söylenenden daha kolay.

DRUMLAR: CANLI ÇALMA MODU

Başlangıçta sıralayıcı düzenleme modundadır. Düzenleme modundan çıkmak için "shift" tuşunu basılı tutmalı ve halihazırda tutulan/kilitli çubuk düğmesine basmalısınız (4. sıradaki adım düğmesi açık). Bu, önceden kilitlenen çubuğun LED'ini kapatacak ve dizinin kilidini açacaktır. Artık canlı oyun modundasınız.

Canlı çalma modunda, herhangi bir adım düğmesine basıldığında, o düğmeyle ilişkili davul tetiklenir.

Dizinizi canlı olarak kaydetmek istiyorsanız, "oynat" düğmesine basarak diziyi başlatın, ardından "kaydet" düğmesine basın (yalnızca canlı oynatma modunda). Kırmızı bir LED yanacaktır. Davul sıralayıcı kontrol paneli matrisindeki çalmanız veya herhangi bir gelen MIDI nota mesajı (yani harici bir MIDI klavyesinden) kaydedilecektir.

Diğer fonksiyonlar

"Yuvarla" düğmesine basıldığında, o anda aktif olan davul her adımda (bir rulo halinde) çalınacaktır. Bu, hem "adım adım" hem de "canlı oynatma" modlarında çalışır.

"Sessiz" düğmesini basılı tutarken herhangi bir adım düğmesine basıldığında, o adımla ilişkili davulun sesi kapatılır (veya sesi açılır). Bu, hem "adım adım" hem de "canlı oynatma" modlarında çalışır.

"REC" düğmesini basılı tutarken ilgili adım düğmesine basarak belirli bir davul dizisini temizleyebilirsiniz.

"Başlat" düğmesini 3 saniyeden fazla basılı tutarak tüm sıralamayı (yazılımdan sıfırlama) silebilirsiniz.

"Swing" potansiyometresini çevirerek dizinizi "sallayabilirsiniz".

"Shift" düğmesini basılı tutarken "mute" düğmesine basarak MIDI yankısını devre dışı bırakabilir/etkinleştirebilirsiniz. MIDI yankısı etkinleştirildiğinde (varsayılan), MIDI INPUT jakında bulunan her türlü bilgi MIDI OUTPUT jakına gönderilir (yalnızca MIDI notası açık, nota kapalı, perde bükme, dokunma sonrası ve kontrol değişikliği yankılanır).

MIDI saat girişi ve çıkışı varsayılan olarak uygulanır ve etkinleştirilir. Saat girişinin alınmaması durumunda, özel potansiyometre ile tempo ayarlanır. Bir MIDI saat girişi alınması durumunda, tempo bundan hesaplanır ve tempo potansiyometresi yanıt vermez. MIDI saati her zaman MIDI çıkışına gönderilir.

Adım 6: Ritim Bölümü

Orijinal fikir, 12 adede kadar bağımsız davul parçasını sıralamak için "saf" 64 adımlı bir MIDI davul sıralayıcıydı. Bazı testlerden sonra, bir bas hattını da kontrol etmenin güzel olacağını fark ettim ve adım başına değişken adım adım özelliğini yalnızca en son davula atadım. Ondan sonra, her davuldaki perdeyi değiştirebilmek ve 12'ye kadar sentezleyiciyi kontrol edebilmek için kodu tekrar değiştirdim. Bir revizyon daha sonra polifoni ekledim (synth başına polifoni varsayılan olarak 3 ile sınırlıdır).

Sonuç olarak:

- CANLI moddayken, CANLI kayıt devredeyse ve dizi başladıysa, gelen MIDI nota mesajlarını polifonik olarak kaydedebilirsiniz. Perde ve hacim bilgisi saklanacaktır. Pitch bend ve aftertouch bilgileri kaybolur. MIDI Kontrol Değişikliği mesajları saklanacaktır. Adım başına kanal başına yalnızca bir CC yuvanız olduğunu unutmayın.

- Sekans durdurulursa, hedef adım düğmesini basılı tutarak ve ekrandaki istediğiniz tuşlara (aynı anda veya tek tek) basarak belirli bir çubuğun belirli bir adımına en fazla 3 perde değeri (akor) kaydedebilirsiniz. MIDI IN bağlantı noktasına bağlı klavye.

Dikkat edin:

- bir adımda tetiklenen nota, bir sonraki adımda "öldürülür". Nota uzunluğunu artırmak için sentezleyicinizin "serbest bırakma" VCA parametresine göre hareket edin.

- Davulların aksine, "roll" düğmesine basılarak notalar rulo halinde çalınamaz.

- CANLI kaydederken, gelen MIDI kanal verileri ilgili "davul" adımında saklanır (MIDI kanalı #1 -> "davul" #1 vb.).

"REC" düğmesini basılı tutarken ilgili "davul" adım düğmesine basarak belirli bir synth dizisini temizleyebilirsiniz. Tekrar basmak davul dizisini de temizleyecektir. Bir CC dizisi kaydedilmişse, ilk silinecek olan bu olacaktır, ardından CC -> Synth -> Drum sırasını takip edin.

7. Adım: Arpej Tetikleyicileri

80'lerin başlarında MIDI öncesi synth'ler genellikle bazen "arpej tetikleme girişi" olarak adlandırılan bir donanıma sahiptir. 2,5 ila 5,0 V trig sinyali (V-trig veya "voltaj tetiği") göndererek veya arpej tetikleme girişini (S-Trig veya "anahtar tetikleyici") topraklayarak sentezleyiciye bir arpej dizisinde bir adım ilerlemesini söyleyebilirsiniz. Özel bir tetikleyici çıkışı olmayan bir sıralayıcı ile bunu yönetmek zor olabilir (bazen V-trig synth'ler için bir çözüm olarak kullanılan/kullanılan özel bir çıkıştan "çentik" sesleri gelir) ancak bir mikrodenetleyici kartı ile bu tür sinyal ve kontrolü kolayca yönetebilirsiniz. Synth arpejiniz fabrika tarafından söylendiği gibi.

Bu ritim bölümü sıralayıcı, iki farklı sentezleyicinin arpejatörünü bağımsız olarak tetikleme olasılığını içerir.

Kullanımı çok kolaydır: tambur 11 veya 12'yi seçin ("shift" tuşuna basarken adım 11 veya 12'ye basın) ve arpejatörün bir adım hareket etmesini istediğiniz adımları etkinleştirin. Bu şekilde, tüm adımları etkinleştirerek bir nota uzunluğundaki düzenli arpejlerin çok sıkı 1/16'sını veya diğer her adımı etkinleştirerek 1/8'ini "programlayabilirsiniz". Ayrıca, düzensiz bir yolu izleyen adımları etkinleştirerek daha karmaşık arpejler programlayabilirsiniz.

Kontrol etmek istediğiniz synth tarafından desteklenen tetikleyici sinyal tipine bağlı olarak, basit bir donanım değişikliğine ihtiyacınız olacaktır: V-trig (yani Roland synth'ler) durumunda, arduino tetik çıkışı ile seri olarak 1 Kohm direnci yerleştirin. Bir S-trig (yani Korg synth'leri) durumunda, güvenli bir anahtar tetikleyicisi için "kablolama" adımına eklenmiş şemayı kullanın.

Adım 8: İşler Çalışmıyorsa…

Bunun gibi nispeten basit bir proje bile, ilk açtığınızda büyük olasılıkla %100 çalışmayacaktır. Burada, örneğin, düğmeler ve LED'ler arasındaki uyum çok önemlidir ve benzersiz bir kablolama, sıralayıcıyı kullanışsız hale getirecektir.

Adım sıralayıcıyı oluşturan tüm farklı bileşenleri test etmek için basit bir test taslağı yazdım (eke bakın).

En son test yazılımını BURADAN indirebilirsiniz (GitHub bağlantısı).

Test taslağı aşağıdaki gibi çalışır:

- bir adım düğmesine basın: ilgili LED yanmalı ve MIDI çıkışına kanal 10'da bir MIDI notası gönderilecektir.

- bir fonksiyon düğmesine basın: ilk 5 LED'den biri yanacaktır.

- bir potansiyometreyi çevirin: LED'ler buna göre yanacaktır (birinci pot -> birinci LED'ler sırası, ikinci pot -> ikinci LED'ler sırası, üçüncü pot -> üçüncü LED'ler sırası).

- bir MIDI notu alınırsa, ilk LED yanıp sönecektir.

MIDI yankısının varsayılan olarak etkin olduğunu unutmayın. Bu, bir synth ve MRSS arasında bir MIDI döngünüz varsa, bunun sorunlara neden olabileceği anlamına gelir (çoğu zaman tetiklenen öngörülebilir bir çift nota yaşadım, ancak aynı zamanda çok düşük notalar tetiklendi ve MIDI ile synth'lere sahip genel olarak yanıt vermeyen yerleşik klavye MIDI Throu olarak işlev görür… synth'e bağlıdır). Bu durumda, "shift" düğmesini basılı tutarken "mute" düğmesine basarak MIDI yankısını devre dışı bırakın.

Önerilen: