Kendi elinizle ucuz bir Arduino tabanlı MIDI denetleyicisi nasıl yapılır. Kendi ellerinizle Arduino'ya dayalı ucuz bir MIDI denetleyicisi nasıl yapılır Potansiyometre pozisyonlarını okumak

Uzun zamandır içimdeki besteciyi uyandırıp kendi elektronik müziğimi yaratmaya başlamak istiyordum. Ancak, MIDI kontrolörlerinin yüksek fiyatları nedeniyle (en hafif tabirle) cesaretim kırıldı. Ancak interneti araştırdıktan sonra Arduino Uno ve iletken boyaları kullanarak kendi kontrol cihazımı oluşturma fikri aklıma geldi!

Hadi başlayalım)

Adım 1: Parçaların seçimi

Sunulan malzemeden biraz sapabilirsiniz ve monte ettiğiniz MIDI kontrol cihazı çalışmaya devam edecektir (“hafif sapma” derken, biraz farklı değerde bir direnç takabileceğinizi veya pinlerden birini bağlantısız bırakabileceğinizi kastediyorum).

Elektronikten ihtiyacımız var:

  • 1 Arduino Uno, USB kablosuyla;

  • 1 kavanoz iletken boya;

  • 5x7 cm ölçülerinde 1 adet montaj plakası;

  • 3 düğme;

  • 2,2 kOhm dirençli dirençler;

  • 1 LED;

  • 10 kOhm dirençli dirençler;

  • 1 LDR sensörü;

  • 4,7 kOhm dirençli dirençler;

  • 1 atlama teli;

  • 12 adet 2,7 MΩ direnç;

  • 30 düz pim;

  • 12 bükülmüş pim;

  • 12 adaptör;

  • 12 ataç.

Elektroniğe ek olarak aşağıdaki araçlara da ihtiyacınız olacak:

  • Havya ve lehim;
  • Kablo kesiciler;
  • Parçaları lehimlemek için stand (üçüncü el);
  • Multimetre;
  • Birkaç kablo ve/veya ince metal tel.

Adım 2: Pimleri lehimleyin

Pimleri lehimleyerek tahtayı oluşturmaya başlayalım. Haydi yayınlayalım bükülmüş pimler tahtadaki ilk sıranın ortasında. Daha sonra klavyenin bağlanacağı "hassas" pinler olarak görev yapacaklar.

Pimleri taktıktan sonra kısa pimlerin karttan dışarı çıktığına dikkat edin. Her şeyin aynı hizada olması için onlara baskı yapıyoruz. Şimdi onları lehimliyoruz ve bağlantılarda kısa devre olup olmadığını hemen kontrol ediyoruz.

Not: Pimleri çok uzun süre lehimlemeyin, aksi takdirde ısınıp plastiği eritebilirler.

Bir sonraki adım için düz tarakları yuvalara yerleştirin arduino. Arduino’ya takılan pinlerin üstüne kartı yerleştirelim. Bu işlem biraz güç gerektiriyordu çünkü pimler tahtadaki deliklerle tam olarak hizalanmıyordu.

Kartı pinlere başarıyla taktıktan sonra pinlerin kartın üst kenarıyla aynı hizada olduğundan emin olun. Bundan sonra lehimlenebilirler.

Adım 3: Jumper'ları lehimleyin

Şimdi kartı Arduino'dan çıkaralım ve ters tarafa çevirelim. Daha sonra bileşenlerin takılacağı jumperları lehimleyelim. Bunu yapmanın iki yolu vardır:

  • Gerekli tüm delikleri lehimle doldurun ve ardından bunları birbirine bağlayın.
  • İnce tel kullanın.

Daha basit ve hızlı olduğu için ikinci yöntemi kullanmanızı tavsiye ederim. Bu yöntemi seçerseniz teli resimde gösterildiği gibi tahtanın üzerine konumlandırın.

  • Kırmızı nokta, telin deliğe lehimlendiği anlamına gelir.
  • Sarı nokta - ince kabloyu kartın diğer tarafındaki pime bağlayın (üçüncü resimdeki gibi).

Gördüğünüz gibi çok fazla lehim uyguladığımda sol alt köşeyi biraz bozdum, dikkatli olun!

İpucu: Eğer ince teliniz yoksa, kullandığınız dirençlerin kablolarının artıklarını kullanın.

Adım 4: Dokunmatik kapasitif dirençleri lehimleyin

Bileşenleri kuruyoruz, yani 2.7 MOhmdirençler duyusal kapasitif işlevleri yerine getirecek.

Not: Dokunmatik kapasitif sensörlerin teorik temelleri ve pratik uygulamaları hakkında daha fazla bilgi edinmek istiyorsanız aşağıdaki bağlantılara göz atmanızı tavsiye ederim:

Bir tane yerleştirelim 2.7 MOhmdirenç en sağdaki bükülmüş pimin altından ve bacakları deliklerden geçirin (ilk resimdeki gibi). Şimdi kartı ters çevirelim ve bir direnç kablosunu bir sonraki deliğe geri itelim (ikinci resimde gösterildiği gibi). Direncin alt ayağını deliğe, üst ayağını ise pin terminaline lehimleyin. Daha sonra ekleyeceğiz 7 santimetre tel bu pinin üzerine (üçüncü resimde görüldüğü gibi).

İşlemi tüm dirençler ve tellerle tekrarlayarak yerlerine lehimleyelim. Dirençlerin alt ayakları uzun bir bağlantı oluşturmalıdır.

Tavsiye: Kablolar için alternatif renkler seçin; bu, sonraki adımlarda bağlantıları kolaylaştıracaktır.

Adım 5: Düğmeleri Lehimleyin

Birinci ve ikinci görseldeki gibi butonları ve dirençleri board üzerine yerleştirerek başlayalım. Benim durumumda kullandım 2.2 kOhm dirençler ancak değeri 2kOhm ile 10KOhm arasında olan herhangi bir direnci kullanabilirsiniz.

Tahtayı ters çevirelim ve her şeyi yerine lehimleyelim. Resim 3, yapmanız gereken farklı bağlantıları açıklamaktadır:

  • mavi nokta – tahtaya lehimlenmesi gereken düğme ayağını gösterir;
  • pembe nokta – panele lehimlenmesi gereken direnç ayağını gösterir;
  • kırmızı çizgi, iki noktayı tek bir bağlantıya lehimlemeniz gerektiği anlamına gelir;
  • siyah çizgi, düğmenin bir ayağından karttaki delikten geçerek diğer taraftaki pime bağlanacak olan kabloyu gösterir.

Her şey doğru şekilde lehimlenmişse, en soldaki iki düğme oktavları değiştirmenize olanak sağlar, en sağdaki düğme etkinleştirilirkenLDR sensörü.

Adım 6: LDR ve LED'i lehimleyin

Butonlar lehimlendikten sonra LDR, LED ve ilgili dirençleri takmaya devam ediyoruz. Bunu yapmadan önce LED'e gidecek dirençlerin değerlerini denemek akıllıca olacaktır. Belki de puanım LED'inizi açamayacak kadar yüksek. Doğru direnç değerini bulmak için biraz deneme yapın.

İpucu: 330 arasında herhangi bir dirençOhm ve 5kOhm5 için iyi bir çözüm olurdummNEDEN OLMUŞ.

Şimdi LED'i, LDR'yi ve dirençleri ayarlayacağız ( 4.7 K içinLDR) doğru yerlerde. Tahtayı ters çevirelim ve her şeyi lehimleyelim. Üçüncü resimde yapılması gereken farklı bağlantılar açıklanacaktır:

  • kahverengi noktalar panele lehimlenmesi gereken LDR pinleridir;
  • pembe nokta panele lehimlenmesi gereken direnç ayağıdır;
  • turuncu noktalar, karta lehimlenmesi gereken LED pinleridir;
  • kırmızı şerit - iki noktayı tek bir bağlantıya lehimlemeniz gerekir;
  • siyah şerit, direnç çıkışından kart deliği boyunca gidecek ve daha sonra pime bağlanacak olan teldir.

Not: LED'i lehimlemeden önce LED'in polaritesinin doğru olduğundan emin olun. LED'in pozitif terminali bir dirence, negatif terminali ise toprağa bağlanmalıdır.

7. Adım: Tüm bağlantıları test edin

Şimdi düğmelerin, LDR ve LED'in bağlantılarının başarıyla lehimlenip lehimlenmediğini test etmenin tam zamanı. Hataları düzeltmek için bu son fırsat, ekteki kodu indirip programı çalıştırmanızı tavsiye ederim. ve indir Arduino_Test_Fixture_Code Arduino panosuna.

Her şey başarılıysa ve test tamamlandıysa bir sonraki adıma geçebilirsiniz. Değilse, karttaki lehimli bağlantıları iki kez kontrol edin. Bir multimetreyi elinizde tutmak daha iyidir, bunu kendi acı tecrübelerime dayanarak söylüyorum.

Adım 8: Tahtayı Bitirmek

İlk resimde görüldüğü gibi telleri deliklere takarak başlayalım. Bu adım için farklı renkteki iki telin kullanılması uygundur.

Tahtayı ters çevirelim ve kabloları gereken uzunlukta keselim. Bunları Arduino konektörlerine giren pinlere lehimleyin. Kullanmaya başlamadan önce MIDI denetleyicisi için öncelikle bir test taslağı kullanarak bağlantılarını test etmeniz gerekir. Çizimi yükleyin, seri bağlantı noktasını açın ve karttaki "hassas" pinlere dokunun. Her pin için 'Note x aktif' yazısını dokunduğunuzda görüyorsanız tüm pinler doğru çalışıyor demektir.

Adım 9: Arduino'yu MIDI Cihazına Dönüştürün

Kart hazır olduğunda, Arduino'yu Ableton ve Fl Studio gibi müzik programları ve hatta diğer MIDI cihazları tarafından tanınacak bir MIDI kontrol cihazına dönüştürmenin zamanı geldi. Süreç iki adımdan oluşur:

  1. Arduino Uno'daki mevcut donanım yazılımını MIDI uyumlu programlarla değiştirin;
  2. MIDI taslağını Arduino'ya yükleyin.

İlk noktadan başlayalım. Arduino'ya koşula göre yüklendi donanım yazılımıUSB seri bağlantı noktası Arduino'nun PC ve Arduino IDE ile mesaj alışverişi yapmasına olanak tanır. Yeni bir programla DualMoco Arduino'nun aşağıdaki gibi hareket etmesini sağlayacak ikinci bir mod eklenecektir: MIDI cihazları.

Arduino yazılımını değiştirmek için FLIP programını kullanacağız ve talimatları takip edeceğiz. Firmware klasöründeki arşivde çalışan bir dosya bulacaksınız - DualMoco.hex dosyası.

Yeni bellenimi indirdikten sonra Arduino'yu PC'ye yeniden bağlayın. Her şey yolunda giderse, yeni program () dosyasında olduğundan Arduino, Arduino IDE tarafından algılanmamalıdır. MİDİmod). MIDI kaydı yapabilen bir müzik programı açın ve Arduino'nun adının olup olmadığını kontrol edin. MİDİ/ MOKOiçinLUFA 1. resimde görebileceğiniz gibi MIDI ayarlarının üzerinde görüntülendi.

Adım 10: Son hazırlıkların yapılması

tuhaflık DualMoco ikinci bir modu olması - USB seri bağlantı noktası Bu, normal ürün yazılımında olduğu gibi Arduino IDE'den eskizler yüklemenize olanak tanır. Arduino'yu ikinci moda geçirmek için iki ISCP pinini resim 1 ve 2'de gösterildiği gibi birbirine bağlayın. Resimlerde gösterildiği gibi bir parça tel veya küçük bir atlama teli kullanabilirsiniz. Şimdi USB kablosunu Arduino'dan birkaç saniyeliğine çıkarın ve yeniden bağlayın, Arduino, Arduino IDE'de görünmelidir.

Not: Moddan geçiş yapmak istediğinizdeUSB bağlantı-seri portVMIDI modunda atlama kablosunu çıkarınISCP pinlerini üçüncü resimde gösterildiği gibi yeniden bağlayınArduino'dan PC'ye.

Mevcut taslağı Arduino'ya yüklemenin zamanı geldi, Arduino_Final_Kod. İndirin, Arduino'yu dönüştürün USBseri port Modu açın ve kodu indirin. Eşiğe ince ayar yapmanız gerekiyorsa değerlerle denemeler yapın EŞİK Ve RES. Her şey beklendiği gibi çalıştığında mevcut satır 17'yi şu şekilde değiştirin:

boolean midiMode = false; // midiMode = false ise, Arduino usb'den seriye aygıt gibi davranacaktır

boolean midiMode = true;// midiMode = true ise, Arduino yerel bir MIDI cihazı gibi davranacaktır.

Kodda son değişiklikler yapıldıktan sonra MIDI cihazlarını destekleyebilecek bir müzik programını test etme zamanı geldi. Bunun için öncelikle Arduino’yu MIDI moduna geçirelim:

  1. Son kodu Arduino'ya yükleyelim.
  2. USB kablosunu Arduino’dan çıkaralım.
  3. Jumper'ı ISCP pinlerinden çıkararak Arduino'yu MIDI moduna geçirin.
  4. USB kablosunu Arduino’ya takalım.

Her şey yolunda giderse müzik programını açın ve pinlere dokunmaya başlayın. Sihirli sesler duyulmalı...

Adım 11: Ataşları atlama tellerine lehimleyin

Arduino kartı tamamen tamamlandıktan sonra klavyeye ve onu tahtaya nasıl bağlayacağınıza odaklanmanın zamanı geldi. Bunu yapmanın milyonlarca yolu var ama ben boyalı kağıda sabitlenecek ataçları seçtim (sabitlenmesi kolaydır ve yeniden kullanılabilirler).

Ataçları tellere lehimleme işlemi oldukça basittir:

  1. Telin bir tarafındaki fişi kesin;
  2. Yalıtım telini 5 mm sıyırıyoruz;
  3. Soyulmuş teli bir ataca lehimleyin;
  4. 12 ataşın tümü için tekrarlayın.

Not: Zımbalar herhangi bir kaplamayla (boya veya plastik) kaplanmamalıdır.

Adım 12: Şablonu Boyama

Arduino MIDI klavyesini sadece ataşlara dokunarak çalmak mümkün olsa da, kendi kalıbınızı yapıp onu kullanmak çok daha eğlenceli. Basılı şablonu renklendirdik. Şablon proje arşivindedir.

Şablonu renklendirmek oldukça basittir, sadece satırlar arasında boşluk bıraktığınızdan ve uygun renkler kullandığınızdan emin olun, aksi takdirde işe yaramayacaktır. Boya kuruduktan sonra “tuşlara” ataç takın ve müzik yapmaya başlayabilirsiniz.

İlginiz için teşekkür ederiz!)

Klavye, bir sıralayıcı programına veya canlı performansa müzik kaydetmek için MIDI protokolünü kullanan harici bir ses modülüne veya bilgisayara (uygun bir arayüz varsa) bağlantı için tasarlanmıştır. Önerilen versiyondaki tuş sayısı 48'dir ancak devreyi değiştirmeden 64'e çıkarılabilir. Önerilen klavyenin ayırt edici özelliği, tuşa uygulanan darbe kuvvetine karşı duyarlılığıdır.

Cihazın geçmişi

Bir süre önce, bir daire satın almayla bağlantılı olarak, benim için MIDI klavyesi görevi gören lüks bir enstrümanı kaybetmek zorunda kaldım - bu efsanevi YAMAHA DX-7'ydi. Üzüntü dindiğinde, tüm ciddiyeti ve çirkinliğiyle şu soru ortaya çıktı: Ne üzerinde çalışmalı? İşte o anda, arkadaşımın çabalarıyla, KR1816BE39 için yarı monte edilmiş bir devre (karşıt anlamda bu işlemciye 8048 denir) komisyoncu ellerime düştü. Devrenin montajı ve kurulumu kolaydır ve en önemlisi doğru zamanda elimize geçmiştir. Klavyeyi KR1533ID7 ve KR1533KP7 kullanarak 8x6 matris şeklinde monte ettim. Ayrıca merhemde bir sinek vardı - bu planın iki dezavantajı, tüm avantajlarını ölümle yok ediyor: tuş vuruş hızına (hoparlörler) ve PITCH WEEL tekerleğine karşı hassasiyet eksikliği. Bir zamanlar Z-80'de programlamıştım (ve hatta çalışan bir sıralayıcı bile yapmıştım) ve eski günleri üzerimden atmaya karar verdim. Z-80'i ahlaki açıdan geçerliliğini yitirmiş bir CPU olarak nitelendirerek kesinlikle reddettim. Ayrıca çok fazla lehimleme yapmak istemedim ve aynı cihazı KR1816BE39'da temel almaya karar verdim ve tuşların (üst) kontaklarını kesmek için başka bir çoklayıcıyla donattım. KR1816BE39 derleyicisi için belgeler buldum (buna inanmayacaksınız - kütüphanede “Tek Çipli Mikroişlemcilerde Dijital Cihazlar Tasarlamak” kitabı) ve bir program karaladım... Ve sonra bir arkadaşımın ROM programcısının ROM'u olduğu ortaya çıktı. öldü ve programı flashlayacak hiçbir şey yoktu... Kederden tamamen aklımı kaybettim ve aynı algoritmayı PIC için yeniden yazmaya karar verdim. Yarım gün içinde programcı (LUDIPIPO) birbirine lehimlendi, ardından bir soket, KR1533ID7 ve bir çift KR1533KP7'den bir prototip yapıldı ve tüm kurulum MGTF tarafından herhangi bir damga olmadan yapıldı. Ve süreç başladı...

Öncelikle programın dinamik olmayan bir versiyonu piyasaya sürüldü (tuş başına bir kontak bulunan klavyesi olanlar için de sunuyorum). Daha sonra dinamik versiyon başladı. Ve sonra düğmeler ve bir gösterge ekleme fikri geldi. Gerçek şu ki, uzun süre boşta duran bir WAVEBLASTER'ım (çok eski ses sistemleri için dalgalanabilir bir sentezleyici) vardı. Bunu benim eserime bağlayarak, bilgisayar olmadan (yeteneğiniz ve yeteneğiniz ölçüsünde) oynayabileceğiniz, bazen oldukça kullanışlı olan bir şey elde ettim. Bu, düğmelerdeki işlev kümesini belirledi - "canlı" çalma sırasında ses modüllerine bağlanırken yararlı olabilir. Düğmelerin işlevlerini, kendi işleyicilerinizi yazarak ve yoklama ve görüntüleme prosedürlerimi kullanarak değiştirmek kolaydır. Her nasılsa, demir bir kasaya monte edilen klavyenin YAMAHA PSS'den daha kullanışlı olduğu ortaya çıktı (hala tam boyutlu tuşlar, bir pedal ve en önemlisi dinamikler!). Yaratıcı sürecin ortasında, MIDI klavyenin yalnızca bilgisayar için bir versiyonunu yapma konusunda zor bir istek ortaya çıktı - gösterge ve düğmeler isteğe bağlıdır, ancak PITCH WEEL ve MODULATION tekerlekleri gereklidir. Bir süre uğraştım ama sonunda pes edip havyayı tekrar çalıştırdım. Elektroniğin montajı zor değil ama mekaniği biraz daha zor ve tekerlek tasarımı konusunda kaşlarımı çatmaya başladım. Biraz düşündükten sonra ikinci tekerleği bırakmaya karar verdim - zaten ikisini aynı anda döndürmem, genellikle önce notalar yazıp adım atarım, sonra modülasyon eklerim. Çok sevdiğim mekanik iş hacminin yarıya indirilmesi en az dikkate alınan konu değildi. Daha az tembel olanlar için, neredeyse hiç karmaşıklık olmadan iki tekerleğin nasıl yapılacağını aşağıda açıklayacağım. Hala modülasyon yazabilmek için tekerleğin üç çalışma modunu düzenlemeye karar verdim: 2 yarım ton için perde, 1 yarım ton için perde (uygun) ve modülasyon. Tüm bunları tek tuşla değiştirebilir ve modu bir çift LED ile belirtebilirsiniz. Devreyi basitleştirmek için kalan düğmeleri ve göstergeleri kaldırdım; modern sıralayıcı programlarla çalışmak için bunların hepsine gerek yok.

Çarkın elbette potansiyometre eksenine yerleştirilmesi gerekiyor, bu anlaşılabilir bir durum ama neye bağlanmalı? İlk düşüncem 555 zamanlayıcıda tek atış kullanmaktı ancak hesaplamalar, işlemci esas olarak ölçümle meşgul olduğundan, kabul edilebilir bir tekerlek örnekleme hızı sağlamaya çalışırken darbe genişliği ölçümünde doğruluk ve kararlılık elde etmenin zor olacağını gösterdi. klavye kontaklarının anahtarlama süresi. Geriye kalan tek yol analogdan dijitale dönüştürücü (ADC) kullanmaktır. Yerleşik ADC'siz bir Pic16F84 kullandığım için mühendislik geçmişimi (ve yerel fabrikamı) hatırladım ve bir karşılaştırıcı (ve bir program parçası) ile birkaç dirençten bir ADC yaptım. Basit, ucuz ve oldukça doğru olduğu ortaya çıktı.

Her iki diyagramı da - hem düğmelerle hem de tekerlekle ve ayrıca onlar için programlar sunuyorum. İstenirse, harici cihazların adresleri hafifçe değiştirilerek her iki devre de kolayca birleştirilebilir; sadece CHORUS (STEREO) modunun akort bozma elde etmek için perdeyi kullandığını ve onu kaldırmanız veya akort bozma ile perdeyi aktarma konusunda endişelenmeniz gerektiğini hatırlamanız yeterlidir. kanallar arasında.

Yani - gerçek klavye

Cihaz şeması

İlk ortaya çıkan, düzenin işlevselliğini test etmek için anahtar üzerindeki etki kuvvetine karşı duyarsız, dinamik olmayan bir versiyondu.

PIC16F84'ü çeşitli nedenlerden dolayı işlemci olarak kullandım: Bu çip mevcut, ucuz ve programlanması kolay ve elimde olan da buydu. Dikkat: PIC16C84 uygun değildir - yalnızca 36 hücre RAM'e sahiptir ve program çalışmayacaktır. Bununla birlikte, tekerlek devresi daha az RAM hücresi kullanır ve programı, birkaç hücre daha azaltılarak, örneğin MIDCH (iletilen tüm verilere sabit bir MIDI kanalı atayarak) PIC16C84'e sıkıştırılabilir.

Göstergeli dinamik klavyenin şeması aşağıda gösterilmiştir:

Devre birçok açıdan gelenekseldir - pedallar ve tekerlekler olmadan bir bisikleti yeniden icat etmek zordur. J Bağlantı Noktası B iletim için çalışır - daha düşük 7 bit, matristeki anahtar adresi veya harici cihazlar için verileri (gösterge ve tekerlek DAC) verir. En önemli bit, MIDI verilerinin seri kodda çıktısını almak için kullanılır; dönüştürme ve çıktı, yazılımda yapılır. Bu nedenle, MIDI bayt çıkış rutinini yeniden yazmak istemediğiniz sürece kristal 4 MHz'de olmalıdır. A bağlantı noktasının en az iki biti alım için çalışır - "serbest bırakılmış" ve "basılı" tuş kontaklarının çoklayıcılarından sinyaller alırlar ve en önemli üç bit, harici cihazın adresini belirler (başka bir KR1533ID7 kod çözücü aracılığıyla). Tekerlekli devrede, devreyi basitleştirmek ve karşılaştırıcıdan veri girişi için PA4 portunun yüksek bitini serbest bırakmak için harici cihaz adres kod çözücüsünü bıraktım, böylece klavyenin ve düğmelerin adresleri farklı olacak. Devreleri birleştirirken, adresin şifresini çözmek için bu mikro devrenin iade edilmesi, PA2 ve PA3 bağlantı noktası bitlerini kullanması ve 4 cihazı adreslemesi gerekecektir: klavye, düğmeler, dinamik gösterge veri kaydı ve dinamik gösterge aşinalık kaydı. Tekerlek modu göstergesinin yeniden yazılması gerekecektir.

PITCH WEEL / MODULATION tekerleğine sahip devre şuna benzer:

Ayırma için her tuşa bir diyot takılmıştır. Çoklayıcıların girişlerindeki dirençler 8k'den fazla olmamalıdır, aksi takdirde montaj kapasitansı nedeniyle aksaklıklar meydana gelebilir. Gösterge - 3 basamaklı ortak anotlu herhangi biri, eğer her basamağın bölümlerinin terminalleri ayrı ayrı çıkıyorsa, aynı adı taşıyan bölümlerin terminalleri birleştirilmelidir - gösterge dinamiktir ve basamaklar sırayla yanar. Herhangi bir tuş, kilitlenmeden, temas sıçraması yazılım tarafından kontrol edilir. LED'ler aynı adı taşıyan düğmelerin yanına monte edilmiştir ve ilgili modların etkinleştirildiğini gösterir; "+" ve "-" düğmelerinde LED yoktur. Göstergedeki transistörler herhangi bir düşük güçlü, yüksek frekanslı ters iletimdir. Mevcut gösterge rakamının adresini ve kodunu dönüşümlü olarak kilitlemek için iki KR1533IR23 kaydı kullanılır (LED'ler ayrıca iki yarı rakam halinde gruplandırılmıştır). Sovyet elektrik orglarından 48 tuşlu standart bir klavye kullandım (ayrıca “START” radyo tasarımcısı olarak ayrı üretildi ve oldukça yaygın). Klavyenin yüksekliğini ve enstrümanın kalınlığını azaltmak için her tuşun altındaki altı temas grubundan ikisi bırakıldı ve tamamı kesilip yeniden yapıştırıldı. Genelde anahtar başına bir anahtarlama grubu yeterlidir, ancak bu şekilde yapıştırmak daha uygun oldu. “Bırakılmış” ve “basılmış” kontakların baraları 8 tuş uzunluğundadır. İstenirse, anahtarlama kontak grubu yerine iki çift kapatma kontağının kullanıldığı bir klavye de kullanabilirsiniz - bir çift tuş hareketinin başlangıcında, diğeri sonunda kapanır (YAMAHA cihazlarında olduğu gibi). Bu durumda PA0'a sinyal çoklayıcının ters çıkışından (pin 6) sağlanmalıdır. Devrede değişiklik yapmadan 64 tuşlu (standart – 61, yani 5 oktav) bir klavye kullanabilirsiniz. Gerekirse anahtar sayısı en az 127'ye çıkarılabilir, bunun için devreye başka bir KR1533ID7 kod çözücü eklemeniz gerekir.

Mekanizmayı iyi ayarlamak çok önemlidir - tuşlar bırakıldığında üst kontakların kapanması GEREKİR. Eğer bu yapılmazsa program bu tuşları basılacak olarak kabul edip işlemeye çalışır, dolayısıyla bu tuşlara tekrar basıldığında ses çıkmaz. Ayrıca aynı anda çalınabilecek maksimum nota sayısı 10'dur (birinin elinde daha fazla parmak varsa bu sayı kolaylıkla değiştirilebilir) ve tuşları bırakmamak bu sayıyı azaltır. Aynı nedenlerden dolayı, klavye yoklama prosedüründe belirtilen tuş sayısının gerçek anahtar sayısıyla eşleşmesi ZORUNLUDUR. Kontak sıçraması yazılım tarafından bastırılır.

Dirençli bir matris R-2R ADC için, dirençlerin% 1-2 doğrulukla seçilmesi tavsiye edilir ve mutlak değerler farklı olabilir, oran önemlidir. Ancak nominal değeri çok fazla artırmamalısınız; bu, karşılaştırıcının giriş kapasitansı nedeniyle dönüşüm süresini artıracaktır. SMD dirençlerini eşleştirmeden kullandım, ancak ölçümler bir montaj şeridinde dirençlerin genellikle% 1'in üzerinde bir doğrulukla eşleştirildiğini gösterdi. Devrenin kesin olmayan dirençlerle çalışacağından eminim ancak karakteristiğin doğrusallığı bozulacaktır. Tekerleğin kendisi eski bir TV'nin sapından yapılmıştır ve potansiyometre ekseninde onu orta konuma döndüren bir yaya sahiptir. Mekaniği ayarlama kolaylığı için, mod düğmesine basıldığında gücü açtığınızda, tekerlek orta konumdayken LED'i yakan bir hata ayıklama programı etkinleştirilir, bu, sıfır konumuna ince ayar yapmanıza olanak tanır potansiyometre ekseni üzerindeki tekerleğin. Ayrı bir MODÜLASYON çarkı yapma ihtiyacı ve arzusu varsa, serbest bir karşılaştırıcı elemana bağlanması gerekir (bunlardan dört tane vardır) ve R-2R matrisi her iki tekerlek için de ortaktır. Karşılaştırıcıların çıkışlarını değiştirmek için ek bir mikro devre kullanmak ve kontrol sinyali olarak PA2'yi kullanmak daha iyidir.

İstenirse, gösterge olmadan, düğmeler olmadan ve PITCH WEEL / MODULATION tekerleği olmadan klavyenin dinamik bir versiyonunu monte edebilirsiniz - sadece devrenin kullanılmayan kısmını monte etmeden. Güç açıldığında tüm değiştirilebilir parametreler varsayılana ayarlanacaktır...

Bütün bunlar herhangi bir şeyden çalıştırılabilir; mevcut tüketim belirli göstergeye bağlıdır ve 100 mA'yı geçmez. Anakartın üzerinde soğutucu olmadan bir 7805 dengeleyicim var (fotoğrafta açıkça görülüyor). 9v'den fazla beslenirse küçük bir radyatöre ihtiyaç vardır. Karşılaştırıcı, tercihen stabilize edilmiş 9 - 12 v'luk bir voltajla çalıştırılır. Evet, eski stoklardan Sovyet yapımı mikro devreler kullandım - çok sayıda modern analogu var, değiştirilmesi mümkün ve hatta arzu edilir - modern analogların tüketimi daha düşük.

programı

Basılan tuşların işlenmesine yönelik algoritma, 5, 1986 sayılı "Mikroişlemci Araçları ve Sistemleri" dergisinde önerilen algoritmadan gelmektedir. Beni montajcıyı incelemeye iten şey bu yayındı (veya daha doğrusu önerilen programdaki bir hataydı). Aslında oradan alınan tek fikir, basılan her tuşun numarasını RAM'in özel olarak ayrılmış bir alanına (CHAN) kaydetmekti, böylece klavye tekrar yoklandığında zaten işlenmiş olan tuşu tekrar işlemez. Basılan tuşların her biri için tahsis edilmiş iki RAM hücrem var (toplamda en fazla 10): birincisinde, basılan tuşun sayısı, ikincisinde - HIZI (basma hızı) kaydedilir. Tekrar ediyorum - bu hücrelerden sadece 20 tane var ve başlangıç ​​adresi CHAN adıyla veriliyor. Serbest bir çiftin işareti, ilk hücrenin en anlamlı bitidir. Ayarlanan ikinci hücrenin en önemli biti, bu anahtar için NOT AÇIK'ın zaten iletildiği ve daha fazla işleme gerek duymadığı anlamına gelir.

Programın tamamını ayrıntılı olarak açıklamayacağım; kaynak kodu yorumlarla doludur ve eğitimli bir kişi için oldukça erişilebilirdir. Geri kalanı için hemen Dinamic.hex ve Pitchmod.hex dosyasında hazır ürün yazılımı sağlıyorum. Sadece açık olmayan bazı noktaları açıklayacağım. Her şeyden önce dinamiklere gelince: anahtarın üst kontakları açıldığında, numarası CHAN bölgesindeki ilk serbest çiftin ilk hücresine yazılır ve aynı anda serbest çift işareti sıfırlanır. Başlangıç ​​değeri VELOCITY = 127, ikinci hücreye yazılır. Klavyenin hassasiyeti, kesme frekansı tarafından belirlenir, çünkü kesme işlemi, NOTE ON'un henüz iletilmediği tüm tuşlar için VELOCITY değerlerini azaltır. Kesintilere yerleşik bir zamanlayıcı neden olur. Tuşun alt kontakları kapatıldığı anda ilgili CHAN hücresinde “transfer edildi” işareti ayarlanır ve NOTE ON mevcut HIZ ile iletilir. Hassasiyet eğrisini iyileştirmek için, VELOCITY değerleri logaritmik yasaya göre azalır: 1/16'sı 1 azaltılarak mevcut VELOCITY değerinden çıkarılır. Böylece tuş üst temastan alta doğru hareket eder. Birincisi, karşılık gelen CHAN hücresindeki VELOCITY değeri logaritmik yasaya göre azalır ve anahtar ne kadar hızlı hareket ederse, anahtarın alt kontaklarının kapatıldığı ve NOTE ON'un iletildiği andaki VELOCITY o kadar büyük olur. Kesintiler aynı zamanda dinamik ekranı da kontrol eder; bu, göstergenin titremesini ortadan kaldırmak için yapılır.
Düğme işlevleri: TRANSPOSE - tüm tuşlar en sevdiğiniz A minöre indirgenir: aralık +/- 15 yarım ton. PRG, belirli bir ön ayara (UP1-UP5) bir tını (enstrüman) atar ve VOL bunun ses seviyesini atar. Geçerli parametre göstergede görüntülenir ve “+” ve “-” düğmeleri kullanılarak değiştirilebilir. TWIN, “çift” bir tını görüntüler - ön ayarlardan biri (UP1-UP5) ve aynı zamanda LOWER ön ayarı. aynı anda ses çıkarır. STEREO, mevcut ön ayarın sesini hafif bir "ayar bozma" ("koro" efekti) ile sağ ve sol stereo kanallara verir. SPLIT düğmesi etkin değil. SUSTAIN pedalı, düğmelerden biri olarak devre şeklinde tasarlanmıştır; telinin kapasitesi çok büyük olmamalıdır. Düğme işleyicilerinin adresleri programın başında bir tabloda toplanır; düğmelerin işlevlerini değiştirirken kendinizinkini değiştirebilirsiniz.

Tekerleğin ADC'si yarı yazılımdır, ardışık bir yaklaşım algoritması kullanarak çalışır, R-2R matrisi dijitalden analoğa dönüşümü gerçekleştirir. Öncelikle R-2R matrisine en anlamlı basamaktaki 1 uygulanır ve karşılaştırıcı bunun çok mu yoksa az mı olduğunu belirler. Az varsa en anlamlı rakamda 1 kalır, çoksa - 0. Daha sonra aynı şey sonraki her düşük basamaklı rakamda olur (toplamda 6 adım) ve buna karşılık gelen altı bitlik bir sayı elde ederiz. tekerleğin dönme açısı. Bu doğruluk bana yeterli geliyor ama matrisi ve dönüşüm programını artırarak bir bit daha ekleyebilirsiniz.

Tasarım

Gerçek klavye olarak Sovyet yapımı bir "Başlat" yapıcısı kullandım; belki artık eski, çalışmayan bir Yamaha veya Casio bulmak daha kolaydır, bu aynı zamanda davayı yapma sorununu da çözecektir - eğer tabii ki eski enstrüman nispeten sağlam...

Baskılı devre kartı geliştirilmedi - Cihazın tek bir kopyasını üretmek için kablolama ve kart yapımına zaman harcamanın uygunsuz olduğunu düşündüm ve düzen, MGTF atlama telleri kullanılarak devre kartı üzerinde yapıldı. Klavyeye bir konektör ve kablo olarak, her iki tarafta karşılık gelen bir konektöre sahip bir bilgisayarın disket sürücülerinden bir kablo kullandık - bu, bitmiş cihazın montajını / sökülmesini kolaylaştırır.

Benim durumumda, gövde ince çelik sacdan (eldeki) - ahşap kenarlarla (eski Sovyet aletleri gibi) bükülmüştü.

Yani kısacası bu kadar. Yaratıcı başarı!

Radyo elemanlarının listesi

Tanım Tip Mezhep Miktar NotMağazanot defterim
1 numaralı şema.
MikrodenetleyiciPIC16F841 Not defterine
YongaKR1533ID71 Not defterine
YongaKR1533KP71 Not defterine
Doğrusal regülatör

LM7805

1 Not defterine
Diyot

KD522A

64 Not defterine
Kapasitör22pF2 Not defterine
Kapasitör0,1 uF2 Not defterine
100 uF2 Not defterine
Direnç

220Ohm

2 Not defterine
Direnç

6,8 kOhm

8 Not defterine
Kuvars rezonatör4 MHz1 Not defterine
Klavye düğmesi 64 Not defterine
2 numaralı şema.
MikrodenetleyiciPIC16F841 Not defterine
YongaKR1533ID72 Not defterine
YongaKR1533KP72 Not defterine
YongaKR1533IR232 Not defterine
Doğrusal regülatör

LM7805

1 Not defterine
Bipolar transistör

KT315A

5 Not defterine
Diyot

KD522A

80 Not defterine
Kapasitör22pF2 Not defterine
Kapasitör0,1 uF2 Not defterine
Elektrolitik kondansatör100 uF2 Not defterine
Direnç

180Ohm

7 Not defterine
Direnç

220Ohm

2 Not defterine
Direnç

6,8 kOhm

16 Not defterine
Direnç

8 kOhm

1 Not defterine
Kuvars rezonatör4 MHz1 Not defterine
Ortak anotlu 3 haneli LED dijital gösterge. 1 Not defterine
Işık yayan diyotKırmızı12 Not defterine
Anahtar anahtarı 64 Not defterine
Düğme 16 Not defterine
3 numaralı şema.
MikrodenetleyiciPIC16F841 Not defterine
YongaKR1533ID71 Not defterine
YongaKR1533KP72 Not defterine
Karşılaştırıcı

Uzun bir süredir yapımcılar ve ses mühendisleri için MIDI denetleyicisi güzel müzik yaratmaya yardımcı olan önemli bir özellik haline geldi. Sanal enstrümanlar her zaman özel ses çıkarır, dolayısıyla her melodinin dekorasyonudurlar.

Pek çok müzisyenin ürünlerinin kalitesi konusunda çok endişe duyması nedeniyle şu soru ortaya çıkıyor: MIDI tipi kontrol cihazı nasıl seçilir? Bu makale ipuçlarını ve temel seçim kriterlerini açıklayacaktır.

MIDI denetleyicisi nedir?

1980'lerde, bir müzisyenin tek bir klavyeyi kullanarak birden fazla sentezleyicinin çalışmasını aynı anda kontrol etmesine olanak sağlamak için denetleyici adı verilen bir cihaz kullanıldı. Bu fikir başarılı oldu ve bu tür cihazlar hemen yaygınlaştı. O zaman herkes bunları satın alamazsa, şu anda kontrolörlerin fiyatı büyük ölçüde düştü. Müzisyenler, ses mühendisleri, şarkı yazarları, sanatçılar, DJ'ler - herkes bu tür cihazları kullanıyor.

Klavyesi olan cihaz nedir? Piyano ve synthesizer tuşlarına benzer. Düğmeler, çeşitli düğmeler ve kaydırıcılar eklendi. Onlarla etkileşime girildiğinde melodi, harici tipteki ses modüllerine iletilir. Dizüstü bilgisayarlar ve diğer cihazlardan bahsediyoruz. Başka bir deyişle, kontrolörler (çoğu) kendi başlarına ses üretme yeteneğine sahip değildir. Harici bir cihazdan (ses modülü) üretilen bitleri, notaları ve diğer parametreleri düzenlemek için tasarlanmıştır.

MIDI denetleyicisinin avantajları nelerdir? En bariz olanı: çok yönlü ve taşınabilir olmasıdır. Bu sayede tüm sanal efektleri uygulayabilir ve modern yazılımı kontrol edebilirsiniz. Örneğin bir dizüstü bilgisayar çantası kullanılarak kolayca taşınabilir.

Satın alırken nelere dikkat edilmelidir?

Herhangi bir denetleyiciyi satın almadan önce bunun ne için olduğunu düşünmeniz gerekir. Aşağıdaki soruları cevaplamak faydalı olacaktır; geniş ürün yelpazesinden hangi seçeneğin uygun olduğu konusunda doğru bir fikir verecektir.

Kontrolör ne için kullanılacak? Sahne performanslarına yönelik bir cihazın, mekanik strese dayanıklı bir malzemeye sahip olması gerekir. Çoğu kumandanın plastikten yapıldığını düşünürsek metal seçeneklere dikkat etmeniz gerekiyor. Ayrıca mekanizmanın türüne ve anahtar sayısına da karar vermeniz gerekir. Çok fazla varsa, canlı performans sırasında bunlardan herhangi birinin amacını karıştırma olasılığı vardır.

Küçük bir MIDI denetleyicisi bir DJ için gayet yeterli olacaktır. Bir kişi elektronikten anlıyorsa bunu kendi ellerinizle yapmak hiç de zor değil. Bu, DJ'lerin sıklıkla ev yapımı ekipmanlar kullandığı anlamına gelir. Bu konuda daha fazlasını aşağıda okuyabilirsiniz. Tutamaçlara ve kaydırıcılara da ihtiyacınız olduğu gerçeğini dikkate alarak böyle bir cihazı satın almanız gerekir. Bunlar olmadan program (MIDI denetleyicisi yalnızca onunla birlikte çalışır) istenen işlevleri gerçekleştirmez.

Bir müzisyen parçaları yatakta, uçakta, arabada veya başka bir yerde kurguluyorsa, seçim yaparken en önemli husus taşınabilirlik olacaktır. Cihaza güç verildiğini göz önünde bulundurarak USB veri yolundan şarj edilebilecek olanlara dikkat etmeniz gerekiyor.

Pioneer'dan MIDI kontrolörleri

Pioneer MIDI denetleyicisi her zaman talep gören bir cihazdır. Bu üretici uzun zamandır bu tür ekipmanlarda pazardaki ilk üç lider arasında yer almaktadır. “İlgili” Pioneer modellerini birbirinden ayıran şey nedir? Sadece kontrol panelindeki sıradan mekanik düğmelere benzeyen ek işlevlerin varlığı. Bu markanın herhangi bir kontrol cihazı mükemmel jog tekerleklerine sahiptir. Görünüm ciddi ve zariftir. Cihazın etkileyici boyutu, maksimum işlevselliği ile telafi edilir.

Hangi modeli seçeceğinizi merak etmenize gerek yok. Hemen DDJ-T1'e daha yakından bakmalısınız. Cihaz birçok kişi tarafından tavsiye edilmektedir. Fiyat-kalite oranı oldukça iyidir. Kontrol paneli kullanışlıdır, tuşlara sorunsuz basılabilir ve cihazın taşınması kolaydır.

Novation Launchpad Denetleyicisi

Novation Launchpad MIDI denetleyicisi özellikle Ableton Live ile çalışacak şekilde tasarlanmıştır. Cihaz hem sahne hem de ev stüdyosu etkinlikleri için uygundur. Onunla disko tutmak da kolay olacak. Cihaz ızgarası 64 düğmeden oluşur. Yazılımla çalışmaya yönelik işlevlerin yanı sıra ek efektlerle donatılmıştır. Cihaz bir bilgisayara bağlanabilir ve hem Windows ailesiyle hem de diğer bazı işletim sistemleriyle çalışabilir.

DIY MIDI denetleyicisi - gerçek mi yoksa efsane mi?

Ev yapımı MIDI kontrolörleri uzun zamandır talep görüyor. Fikrinizi hayata geçirmek için ne gerekiyor? Cihazın lehimleneceği ve monte edileceği bir şemaya, bir bütçeye, bu alanda bilgili bir fizikçiye veya bir elektrikçiye ihtiyacınız var.

Teknik tarafı bilmenin yanı sıra, yaratıcının kontrolörler hakkında ne kadar bilgi sahibi olduğunu da kendinize sormanız gerekir. Tüm beklentileri karşılayacak bir cihazı doğru bir şekilde monte etmek için hangi tabanın en iyi şekilde kullanılacağını, modelin neden monte edileceğini ve ayrıca kontrol panelinin nereye kurulacağını anlamanız gerekir. Sorun oldukça karmaşık ama tamamen çözülebilir. Günümüzde bir kontrolörün montajı için kullanılabilecek birçok hazır devre bulunmaktadır. Önemli olan planlarınıza ve sabrınıza olan güvendir.

Akai marka modeli

Akai yakın zamanda MPC Touch adında yeni bir kontrol cihazı piyasaya sürdü. İlgili cihazların aksine, bu cihaz 7 inçlik bir ekrana sahip. Bu, onunla çalışmayı çok daha kolay hale getirir. İncelemelere dayanarak, profesyonel kontrolörler söz konusu olduğunda örnek olarak kullanılan modelin açıklanan model olduğunu söylemek gerekir. Ona bakıldığında ve işlevsellik göz önüne alındığında böyle bir cihazın nasıl seçileceği sorusu hemen ortadan kalkıyor. Yazılım oldukça hızlı ve verimli çalışıyor, sorun çıkmıyor ve arızalar oldukça nadir.

Tek dezavantajı, kontrolörün pili olmadığı için güç kaynağı olmadan çalışamamasıdır. Akai markası piyasada uzun süredir tanınmaktadır. MIDI denetleyicisi ağır yüklere dayanabilen güçlü ve kaliteli bir cihazdır. Çoğu zaman bazı modeller sahnede kullanılır.

MIDI denetleyicisi, belirli bir fiziksel işlemi MIDI formatında bir dizi dijital komuta dönüştüren bir cihazdır. Fiziksel süreç, bir tuşa parmakla basmaktan ses düğmesini çevirmeye kadar herhangi bir şey olabilir. Ortaya çıkan komut akışı, MIDI protokolü aracılığıyla diğer cihazlara (bir bilgisayar, donanım örnekleyiciler, sentezleyiciler veya harici sıralayıcılar) iletilir ve orada belirli bir şekilde şifresi çözülür. En yaygın MIDI denetleyici türü, piyano klavyesinin elektronik eşdeğeri olan MIDI klavyesidir. Elektronik bateri kitleri de dahil olmak üzere başka birçok kontrol cihazı türü de vardır.

Modern pazar, elektronik kurulumlar için fiyat, kalite, teknik özellikler vb. gibi çeşitli kriterlerde farklılık gösteren çok sayıda farklı MIDI denetleyicisi sunmaktadır. Ayrıca ticari projeler (eDrum, megaDrum) olarak uygulanan çeşitli bitmiş kullanıcı cihazları da vardır. Ancak tüm bunlara rağmen, modern Kulibinlerin kafasında kendi elleriyle böyle bir cihaz yaratma arzusu hala yaşıyor.

Böylece, birkaç yıl önce, biraz gecikmeli olarak, ağır bir müzik grubunda yer aldığım için böyle bir cihaz yaratmaya ilgi duymaya başladım. Hard rock ya da daha doğrusu acımasız ölüm, goregrind, grindcore gibi bir şey çaldık. Elektro gitar çaldım. Biraz önce bir Sonor bateri seti aldık ve akşamları garajda gürültü yaptık. Daha sonra garaj bize sordu ve binayla ilgili soru ortaya çıktı. Kayda değer bir şey bulamayınca evde prova yapmaya karar verdik ve bu da hemen komşularla çatışmaya yol açtı. Elektronik davul sorununun ortaya çıktığı yer burasıdır.

Canlı enstrüman çalmaya paralel olarak elektronik müzik yazıyordum ve özellikle davul parçaları oluşturmak için VST enstrümanları ve eklentilerini kullanıyordum, MIDI arayüzü ile çalışabilme özelliğine sahip Addictive davulları ve ezDrums'ı tercih ediyordum. Bu konuyu Google'da araştırmadan bile, üzerinde 8 ADC kanalı bulunan bir DIP paketindeki uygun fiyatlı bir ATMega32 mikro denetleyici üzerinde kendi MIDI denetleyicimi geliştirmeye daldım. Devreyi çitle çevirmek istemedim ve kendimi 8 girişle sınırlamaya karar verdim. ATMega32'de donanımsal USB bulunmadığından bilgisayara sanal usb üzerinden standart bağlantı kullandım. Birkaç gün programlamayla uğraştıktan sonra cihazı çalıştırmayı başardım. İnternette devre şeması ve ürün yazılımı (MegaDrum) içeren hazır bir cihaz keşfettiğimde şaşırdığımı hayal edin. Ancak yapılmayan her şey daha iyiye doğrudur.


Tam USB

Mesleğim gereği bir programcıyım, ancak mesleğim gereği elektronik programcısıyım, teknik bilimler adayıyım ve eski amirimin söylediği gibi, İsviçreliyim, orakçıyım ve trompetçiyim. Çoğu zaman olduğu gibi, AVR'lere takılıp kaldım, onlara karşı hislerim olduğu için değil, teknik özellikleri ve performanslarından tamamen memnun olduğum için. Ancak artık yeterli olmadıkları zaman geldi. Ve sonra stm32, diğer şeylerin yanı sıra, tam teşekküllü bir usb arayüzüne sahip olarak onun yerini almaya geldi. Tam teşekküllü bir MIDI denetleyicisi yapma fikri burada ortaya çıktı. Ayrıca MIDI arayüzüyle çalışma deneyimim zaten vardı.

Nereden başlamalı? DIP paketlerinde stm32 yoktu (doğada mevcut olsalar bile), bu nedenle devre kartına lehimleme fikri hemen ortadan kalktı. Tam o sırada DISCOVERY gibi stm32 mikrodenetleyicileri temel alan ucuz geliştirme kartları ortaya çıkmaya başladı. Ve artık ST-Link programlayıcısını da içeren STM32F407DISCOVERY hata ayıklama kartının mutlu sahibiyim. STM32F407 işlemcide 16 ADC kanalı bulunur, ancak 4 kanal, hata ayıklama kartının basitçe doldurulduğu çevre birimleri tarafından işgal edilir. Ama benim amaçlarım için 12 kanal yeterliydi.


Keil programlama ortamını, STM32F407 mikroişlemcinin mimarisini ve USB ile çalışmaya yönelik standart çevresel kitaplıkları incelemek için biraz zaman harcadıktan sonra, doğrudan bellek erişim kanalının yanı sıra bileşik USB kullanarak tüm ADC kanallarını yoklamak için bir program oluşturdum Cihaz ayarlarını değiştirmek için MIDI Ses Cihazı ve HID içeren cihaz.

Tamburlar için sensörler olarak mağazadan ucuz bir fiyata satın alınabilecek ZP-1 piezo zili kullandım.


Bağlantı şemasını MegaDrum'dan aldım.


Kontrol programını Delphi'de 16 kanallık rezervle yazdım. Prensip olarak Megadrum'da yapıldığı gibi devreye analog çoklayıcılar eklenerek cihazın kanal sayısı süresiz olarak artırılabilir ancak biz o kadar gelişmiş müzisyenler olmadığımız için bizim amacımız için 16 kanal yeterli. Ve acemi bir davulcu için bu sayıda davul çocuk oyuncağı olacaktır.


Cihaz, Renoise izleyici kullanılarak hem Windows hem de Linux'ta test edildi. Çalışmada özel bir sorun bulunamadı.
Ancak bu sonuçta durmamaya karar verdim. STM32F407 oldukça gelişmiş bir işlemci olduğundan nispeten pahalıdır. STM32F103 kullanarak cihaz yapmak daha ucuzdu. eBay kurtarmaya geldi. Üzerinde STM32F103RBT6 bulunan bir geliştirme kartı satın aldım.


Doğru, yerleşik bir programlayıcısı yok. Şanslıydım çünkü hâlâ önceki işimden bir ST-Link programcım vardı.


407 ve 103 işlemcilerin çalışma prensipleri radikal olmasa da farklı olduğu için ürün yazılımını tamamen yeniden yazmak zorunda kaldım.
Daha sonra internette aslında bir kuruşa mal olan bir hata ayıklama panosuyla karşılaştım ve bu şekilde bileşenlerin maliyetini en aza indirebileceğime karar verdim.

İnternetteki makalelerin çoğu MIDI klavyeler, denetleyiciler, uzaktan kumandalar vb. yapımıyla ilgilidir. MIDI konektörlerinin kullanımına dayanır ve bunları modern bir bilgisayara bağlamak sorunlu olabilir. Eski ses kartlarında joystick'i veya MIDI cihazını bağlayabileceğiniz bir Oyun bağlantı noktası vardı:

Ancak tüm yeni anakartlar yerleşik bir ses denetleyicisiyle birlikte gelir ve ses kartları genellikle MIDI aygıtlarını bağlama özelliğinden yoksundur.
Geriye kalan tek şey modern bir MIDI klavye, DJ konsolu vb. satın almaktır. Bir bilgisayara bağlanmak için bir USB çıkışı ile veya bir adaptör satın alın/lehimleyin veya MIDI cihazlarını bağlama özelliğine sahip özel bir ses kartı satın alın. Satın almak elbette sorun değil ama bu siteye gelmemizin nedeni bu değil, değil mi?

Bu makalede, ucuz bir Arduino denetleyicisini kullanarak 8 tuşlu ve kaydırma tekerleği için USB bağlantısıyla basit bir MIDI klavye nasıl yapabileceğinizi göstermek istiyorum.

Ben de kullandım:
Arduino UNO denetleyicisi
8 adet düğmeler
8 direnç 10 kOhm
döner kodlayıcı 25LB22-Q
devre tahtası ve jumperlar

Bağlantı şeması aşağıdaki gibidir:

Bağlanmak için en basit seçeneği kullandım: 1 anahtar - 1 giriş. Ancak daha fazla sayıda anahtar, farklı denetleyiciler vb. ile. Yeterli giriş olmayabilir, bu nedenle veri okumayı analog girişler (farklı değerlerde dirençler ekleyerek) veya çoğullama yoluyla kullanmanız gerekecektir. Bununla birlikte, analog girişe birkaç tuş eklerseniz, aynı anda birkaç tuşa basıldığında durumun okunmasında sorunlar ortaya çıkabilir. Bu nedenle çoklamanın daha kabul edilebilir bir seçenek olduğunu düşünüyorum.

Arduino Yazılımı

MIDI verilerinin yapısını dikkate almayacağım çünkü... bu makalede anlatılmıştır:

Kodlayıcı donanım kesme girişlerine bağlı; onunla çalışmanın açıklamasını dikkate almayacağım çünkü... Program basittir ve resmi Arduino web sitesinden alınmıştır.

Bu projede kodlayıcı, modülasyon tekerleğini değiştirmek için kaydırma tekerleği olarak kullanılır, ancak başka amaçlarla (perde bükme vb.) yeniden atanabilir.

Kodlayıcıdan, Arduino'dan gelen MIDI verileri aşağıdaki satırla gönderilir:
noteOn(0xB0, 0x01, encoder0Pos);
burada 0xB0 denetleyici mesajıdır (kontrol değişikliği)
0x01 - denetleyici kodu (bizim durumumuzda Modülasyon)
encoder0Pos - denetleyici değeri (bizim durumumuzda 0-127).
Denetleyici kodlarını değiştirerek çeşitli denetleyiciler için kaydırma tekerleğini (kodlayıcı) kullanabilirsiniz.

Pitch Bend'den de bahsetmeye değer. MIDI spesifikasyonuna göre üç baytlık bir mesaj göndermenin gerekli olduğu anlaşılmaktadır: 0xE0 (Pitch Bend kodu), MSB (yüksek bayt), LSB (düşük bayt).

İki dış bayt, 0...16383 (0x3FFF) arasında değişebilen 14 bitlik bir aralık değerini saklar. Ortası 0x2000'dir, bu değerin üzerindeki her şey perdenin yukarı doğru değişmesine neden olur, daha düşükse perdenin aşağı doğru değişmesine neden olur.
Program kodunda, modülasyon yerine aniden Pitch Bend kullanmak istiyorsanız (değerin ortası, 2 bayta ayrıştırma vb.) satırları yorumladım.

Tuşa basma algılama kodu üç durumu içerir: bir tuşa basılmıştır, bir tuş tutulmuştur ve bir tuş bırakılmıştır. Bu, bir tuşa basma süresinin değerinin aktarılabilmesi için yapıldı. Bu gerekli değilse, yalnızca bir durumu bırakabilirsiniz (tuşlara basma), bu durumda program önemli ölçüde basitleştirilecektir.
Sekiz anahtarın her birinin durumunu yönetmek için aşağıdaki kod kullanılır:

If (buttonState_C == HIGH && note_C_send_on == false) // Tuşa basıldı ( noteOn(0x90, note_C, 0x7F); note_C_send_on = true; // Note On komutu gönderildi note_C_send_off = false; // Note Off komutu gönderilmedi ) else if (buttonState_C == HIGH && note_C_send_on == true) // Anahtar tutulursa ( noteOn(0x00, note_C, 0x7F); note_C_send_on = true; note_C_send_off = false; ) else if (buttonState_C == LOW && note_C_send_off == false) // Anahtar bırakılırsa ( noteOn(0x90, note_C, 0x00); note_C_send_on = false; note_C_send_off = true; encoder0Pos = 0; // Tekerlek konumunu sıfıra döndür ) ....... ..... .. ... .... // Seri bağlantı noktasına bir MIDI mesajı gönderme işlevi void noteOn(int cmd, int pitch, int speed) ( Serial.write(cmd); Serial.write(pitch); Serial. yazma(hız)(20);

Pitch bend kullanılırsa, encoder0Pos'un sıfıra değil 0x2000'e döndürülmesi gerekeceğini lütfen unutmayın (veya programın başında tanımlamayı ayarlamak daha iyidir).

Böylece devre monte ediliyor, taslak kontrolöre yükleniyor, Seri Monitörü başlatıyoruz, iletim hızını 115200 olarak değiştiriyoruz ve tuşlara basıyoruz veya kodlayıcıyı çevirip değerlere bakıyoruz.
Her şey yolundaysa bir sonraki bölüme geçin. Hemen şunu söyleyeceğim ki benim için en sorunlu olanı ortaya çıktı ve sanal bir USB -> Midi dönüştürücü bulmasaydım bu makale olmazdı.

PC Yazılımı (Windows)

Arduino'dan bir USB sanal COM bağlantı noktası aracılığıyla veri almak ve bunu herhangi bir MIDI sıralayıcı programına aktarmak için özel bir yardımcı programa ihtiyacınız vardır: Serial MIDI Converter V2D (ofis sitesi)

Program çoklu platformdur, bazı sorunlara rağmen Windows 7 x64 altında benim için çalıştı.

Başlatıyoruz, USB bağlantı noktasını, baud hızını (115200) ve MIDI Giriş Bağlantı Noktasını ve MIDI Çıkış Bağlantı Noktasını seçiyoruz.

Artık USB sanal COM bağlantı noktası 12'ye gelen tüm MIDI verileri MIDI Yoke 6 bağlantı noktasına yönlendiriliyor (sanal MIDI bağlantı noktaları oluşturmak için MIDI Yoke programını kullandım). Bunları Microsoft GS Wavetable Synth'e ve diğer bağlantı noktalarına yönlendirebilirsiniz.
Program her zaman açık olmalıdır. Tuşlara bastığınızda veya kodlayıcı düğmesini çevirdiğinizde alttaki Seri RX göstergesinin yanıp sönmesi gerekir.

Bağlantı noktasından gelen MIDI verilerini görsel olarak görüntülemek için MIDI-OX programını (ofis sitesi) çok faydalı buldum:

Lütfen MIDI Cihazları ayarlarında MIDI Giriş bağlantı noktasını ayarlamanız gerektiğini unutmayın.

Artık nota tuşlarına bastığınızda veya tekerleği çevirdiğinizde Monitör Çıkışında MIDI verilerini göreceksiniz.

O. Yazılım ve donanımın yardımıyla, Arduino kontrol cihazında, örneğin Cubase vb. gibi daha sonraki işlemler için bir bilgisayara veri aktarımı sağlayan basit bir MIDI klavye yapmayı başardık. dahil gerçek zamanda.
Bu projeye dayanarak bir DJ konsolu, tam teşekküllü bir MIDI klavye vb. yapabilirsiniz.

Aşağıda INO taslağını, Seri MIDI Dönüştürücü V2D, MIDI-OX ve MIDI Yoke'u indirebilirsiniz.