İçindekiler:

(neredeyse) Evrensel MIDI SysEx CC Programcısı (ve Sıralayıcı): 7 Adım (Resimlerle)
(neredeyse) Evrensel MIDI SysEx CC Programcısı (ve Sıralayıcı): 7 Adım (Resimlerle)

Video: (neredeyse) Evrensel MIDI SysEx CC Programcısı (ve Sıralayıcı): 7 Adım (Resimlerle)

Video: (neredeyse) Evrensel MIDI SysEx CC Programcısı (ve Sıralayıcı): 7 Adım (Resimlerle)
Video: Происхождение человека: документальный фильм об эволюционном путешествии | ОДИН КУСОЧЕК 2024, Aralık
Anonim
(neredeyse) Evrensel MIDI SysEx CC Programcısı (ve Sıralayıcı…)
(neredeyse) Evrensel MIDI SysEx CC Programcısı (ve Sıralayıcı…)
(neredeyse) Evrensel MIDI SysEx CC Programcısı (ve Sıralayıcı…)
(neredeyse) Evrensel MIDI SysEx CC Programcısı (ve Sıralayıcı…)

Seksenlerin ortalarında synth üreticileri, barebone synth'lere yol açan bir "az daha iyidir" sürecini başlattı. Bu, üretici tarafında maliyetlerin azalmasına izin verdi, ancak son kullanıcı için yama sürecini imkansız değilse de sıkıcı hale getirdi.

Üreticilerin kendileri ve üçüncü taraf şirketler, synth tonlarınızla gerçekten "oynamanıza" izin vermek için düğmeler ve/veya kaydırıcılarla dolu isteğe bağlı kutular gerçekleştirdiler, ancak bunlar günümüzde aptalca pahalı ve her zaman olduğu gibi kendi başımıza ucuz çözümler bulmak zorunda kalıyoruz;)

Bu proje, en son satın aldığım bazı synth'ler için yamaları kolayca programlama ihtiyacımdan geldi: Roland Alpha Juno 2 ve JX8P. Basit bir SysEx denetleyicisi olarak başladı, sonra üzerimde büyüdü ve yolda desteklenen diğer sentezleyiciler (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) ve yerleşik bir sıralayıcı ile daha karmaşık bir şey haline geldi.

Bu talimatta size kendi kontrol cihazınızı nasıl gerçekleştireceğinizi göstereceğim: bu yüksek fiyatlı parametre kontrol kutularını taklit eden ucuz bir araç… ve daha fazlası (detaylar için okumaya devam edin…).

Adım 1: Bu Şey Tam Olarak Nedir (ve Ne Değildir…)

Bu Şey Tam Olarak Nedir (ve Ne Değildir…)
Bu Şey Tam Olarak Nedir (ve Ne Değildir…)
Bu Şey Tam Olarak Nedir (ve Ne Değildir…)
Bu Şey Tam Olarak Nedir (ve Ne Değildir…)
Bu Şey Tam Olarak Nedir (ve Ne Değildir…)
Bu Şey Tam Olarak Nedir (ve Ne Değildir…)

Buradaki MIDI SysEx ve Kontrol Değişikliği denetleyicisi, esasen 16 düğmeli (potansiyometre) ve 4 düğmeli bir MIDI denetleyicisidir. Varsayılan çizim, toplam 48 synth ton parametresi için üç "sayfa" işler.

Denetleyiciyi, kontrol değişikliği MIDI mesajları (özellikle 90'lardan itibaren synth üreticileri tarafından yaygın olarak kullanılan basit ve "küresel" bir MIDI mesajı türü) ve SysEx mesajları (başka bir MIDI mesajı türü, çok daha az genel ve yüksek oranda synth'e özgü) ile uyumlu hale getirdim. 80'lerde kullanılır).

Özellikle, denetleyici varsayılan olarak aşağıdakilerle uyumludur:

- Roland Alfa Juno (1/2)

-Roland JX8P

- Korg DW8000

- Oberheim Matrix 6/6R (> 2.14 bellenim)

- Sıralı devreler MAX/SixTrak.

Sonunda, denetleyicinin MIDI denetim değişikliği (CC) mesajlarını alabilen herhangi bir sentezleyici üzerinde hareket etmesini sağlayabilirsiniz, ancak varsayılan olarak devre dışıdır.

Projenin açık kaynak yapısı olduğundan, seçtiğiniz herhangi bir başka sentezleyiciyi desteklemek çok kolaydır (ayrıntılar için kod adımına bakın).

Tüm bu sayılarla birlikte ton parametreleri düzeni ilk başta kafa karıştırıcı olabilir, ancak göründüğü gibi "rastgele" değildir: üreticinin MIDI uygulama tablosunun sırasını takip eder. Bu, kodu basit ve "evrensel" tutmak için bir tasarım seçimiydi.

Alpha-Junos, JX8P, DW8000, Matrix 6 ve MAX/SixTrak için yaptığım 4x4 "düzen" ile resim sayfalarını bu sayfadan indirebilirsiniz: mavi parametreler 1. sayfadayken ince ayar yapabileceğiniz parametrelerdir, siyah parametreler 2. sayfada ve siyah parametrelerdir. 3. sayfadakiler turuncu.

Denetleyicinin ekranı olmasa bile, hangi parametrenin gerçek zamanlı olarak ayarlandığını gösteren synth'lerle oynamak, bir yama oluşturma sürecini bir keyif haline getirir. Örneğin JX8P ve Matrix 6 bunu yapabilir; Alpha Juno bunun yerine, değiştirilen parametreyi göstermez ve işleri biraz daha zorlaştırır (ancak harika yamalar oluşturmak kesinlikle yapılabilir ve yerleşik düğmesiz arayüzü kullanmaktan daha kolaydır); DW8000'in yalnızca sayısal ekranları vardır, ancak ince ayarlarınızı gerçek zamanlı olarak görebilir, böylece bunun arasına yerleştirir.

Oradaki düğmeler ne olacak?

İlki (düzenimde sol üstte) sayfada gezinme içindir: düğmeye her basıldığında bir sonraki parametrenin sayfasına atlayın. LED'ler hangi sayfada olduğunuzu gösterecektir.

İkinci basıldığında, üzerinde çalıştığınız yamayı synth'e geri gönderin (anlayın: hayatınızın yamasını yaptınız, sonra synth yüzeyinde bir program düğmesine dokundunuz ve düğmeye özel yama yüklendi… tüm çalışmalarınız gitti. !). Bu buton ile programcının son yama işlemi sırasında hafızaya aldığı tüm değerleri gönderebilirsiniz. Bu yama geri çağırma işlemi, rastgeleleştiriciye tekrar basarsanız çalışmaz (rastgeleleştirme işlemi bellekteki tüm parametrelerin üzerine yazar) ve yalnızca en az bir kez düzenlediğiniz parametreler üzerinde etkilidir. En son yama, kapatıldıktan sonra bellekte tutulmaz.

Üçüncüsü ikincil bir işlev içindir: randomizer/yamalı! Etki ettikleri parametrenin minimum değere (yani osilatör LFO, osilatör zarfı, vb.) kilitlenmesini istediğiniz düğmeleri saat yönünün tersine çevirin veya değeri en üst düzeye çıkarmak için saat yönünde tam çevirin (yani osilatör karışım hacmi, VCA hacmi, vb.) ve düğmesine basın. diğer tüm parametreler için rastgeleleştirme işlemini başlatan düğme.

Dördüncü düğme, bir paskalya yumurtasını etkinleştirmek için orada (bir çeşit…) Düzenin mükemmel olduğunu fark ettikten sonra koda yerleştirdim… 16 adımlı bir MIDI sıralayıcı! Tam olarak: dördüncü düğmeye (MODE düğmesi) basın, kontrolör "sıralayıcı moduna" girecek ve eski analog sıralayıcının yaptığına benzer şekilde notları tetiklemenize izin verilecektir. Güzel ah!

Kontrolör/yamalayıcı moduna geri dönmek için MODE düğmesine tekrar basın.

Bu LED'ler ne olacak?

Her butona uygun olarak 4 adet led bulunmaktadır (düzenimde her butonun sağında); bu LED'lerin birden fazla dökümü vardır:

1) hangi parametre sayfasında olduğunuzu söylerler (1. sayfadayken üst led yanar, 2. sayfa aktifken alttaki led yanar, led 3 yanar… siz kendiniz anladınız). 3 sayfa ATM ile sınırlıyız, ancak kod daha fazla sayfa işlemek için kolayca ayarlanabilir;

2) ikinci LED, parametreleri sayfa 2'yi gösterir VE mikrodenetleyici önceki yamayı gönderirken yanar (yama geri çağırma);

3) üçüncü LED, sayfa 3 parametrelerini gösterir VE rastgeleleştirme işlemi sırasında yanar.

Dördüncü LED, MIDI denetleyici modunda hiçbir şey yapmaz ve genel MOD değişikliği için kullanılır.

Tüm bu işlevler MIDI mesajları olarak iletilir, bu nedenle etkili olması için synth'inizin bu tür mesajları alma ve yorumlama yeteneğine sahip/etkin olması gerekir

Adım 2: "Gizli" 16 Adımlı Sıralayıcı

NS
NS

Dediğim gibi, kontrol cihazını test ederken, synth parametrelerinde ince ayar yapabilmek ve ton üzerindeki nihai etki hakkında daha iyi bir fikre sahip olabilmek için bir dizi notayı çalıştırmanın harika olacağını fark ettim. Bir yazılım sıralayıcım var (seq24'ü çok seviyorum!), ancak bu donanım neredeyse MÜKEMMEL 16 adımlı bir sıralayıcı! O zaman onu uygulamak sadece bir kod meselesiydi.

#4 düğmesine (MODE düğmesi) basarak kontrolör modu ve sıralayıcı modu arasında geçiş yapabilirsiniz.

Sıralayıcı modundayken düğmeler farklı çalışır ve LED'ler size yeni bilgiler verir:

- basıldığında ilk düğme (SHIFT düğmesi) tempo, nota uzunluğu, kanallar ve oktav değişikliğine izin verir; tempo değeri birinci potansiyometre pozisyonundan, nota uzunluğu ikinci potansiyometre pozisyonundan, MIDI kanalları üçüncü ve dördüncü potansiyometre pozisyonlarından ve oktav (-1o'dan +2'ye kadar) beşinci potadan hesaplanır. Tempoyu 40 BPM'den (1 numaralı düğmeyi basılı tutarken 1 numaralı potansiyometreyi saat yönünün tersine çevirin) yaklaşık 240 BPM'ye (1 numaralı düğmeyi basılı tutarken 1 numaralı potansiyometreyi saat yönünde çevirin) kontrol edebilirsiniz. Nota uzunluğunu, SHIFT düğmesini basılı tutarken pot #2'yi çevirerek yarım nota, dörtlük nota, sekizlik nota, onaltılık nota olarak ayarlayabilirsiniz. MIDI kanallarını (birincil kanal ve ikincil kanal) 1'den 16'ya ayarlayabilirsiniz. Temel nota aralığı (C2'den F#4'e kadar) bir oktav düşürülebilir veya bir veya iki oktav arttırılabilir.

Varsayılan olarak tempo 120 BPM'ye ve nota uzunluğu çeyrek notalara ayarlanmıştır.

- ikinci düğme nota sırasını başlatır ve durdurur. Söylendiği gibi, diziyi çalıştırırken #4 (MODE) düğmesine basarak modu değiştirirseniz, denetleyici moduna girersiniz ancak dizi çalışmaya devam eder.

- üçüncü düğme bir PANİK! Basıldığında tüm notalar kapatılacaktır.

- dördüncüsü, 1 numaralı düğmeye basılmadığında global modlar (pather veya sıralayıcı) arasında veya #1 basıldığında sıralama modları arasında (aşağıya bakınız) geçiş yapmak için kullanılır.

Sıralayıcı modunda, #1 (SHIFT) düğmesini basılı tutarken mod seçme düğmesine basarsanız, 3 farklı sıralama modu arasında geçiş yapabilirsiniz:

1 - 16 adım mono dizi

2 - 16 adımlı çoklu dizi: potlar tarafından tanımlananlardan bir oktav daha düşük notlar da tetiklenir (bu, vuruş başına 2 ses boşaltır)

3 - 8 adımlı çoklu dizi, çift kanal: iki paralel 8 adımlı dizi, iki farklı kanala gönderilir (varsayılan olarak CH1 ve CH2); hem birincil hem de ikincil kanallarda aynı kanal değerini ayarlayarak, aynı (polifonik) sentezleyici tarafından çalınan iki paralel 8 adımlı diziye sahip olabilirsiniz.

LED'ler hakkında: Sıralayıcı moduna girer girmez dört ışığın tümü yanacaktır. Diziyi başlattığınızda, LED'ler diziyi (veya dizileri) takip edecektir. Her dört potansiyometrede bir LED yerleştirdim ve bu benim için yeterli. Her adım için bir tane olmak üzere 16 LED'i işlemek için çizimi değiştirmek basit olurdu.

Adım sıralayıcı, birinin gerekli bulabileceği özellikleri kaçırır: MIDI senkronizasyonu IN, adım tutma (yalnızca bir adımı kapatabilirsiniz), CV çıkışı.

ÇIKIŞ saati uyguladım, ancak bir şekilde hatalı. Bunun için iki yaklaşım denedim (biri zamanlayıcı kesintisi olan ve olmayan), ancak ikisi de kusurlu (veya tamamen başarısız) durumda. MIDI saati, uzun vadede çalışmak için kesinlikle mükemmel olmalıdır. Yine de bir saat sinyali gönderilir ve bunu doğrudan çizim üzerinde devre dışı bırakabilirsiniz (detaylar için daha sonra bakın).

Bu adım sıralayıcının MIDI veya tercih ederseniz dijital olduğuna dikkat edin, bu nedenle çalışması için bu tür mesajları alıp yorumlayabilecek bir synth'e bağlı olmalıdır

3. Adım: Gerekli Donanım ve Oluşturma

Gerekli Donanım ve Bina
Gerekli Donanım ve Bina
Gerekli Donanım ve Bina
Gerekli Donanım ve Bina
Gerekli Donanım ve Bina
Gerekli Donanım ve Bina
Gerekli Donanım ve Bina
Gerekli Donanım ve Bina

Tüm bu sözlerden sonra, hadi biraz eğlenelim!

Ortak Arduino yoluna gidiyoruz. Yüksek miktarda analog giriş nedeniyle bir Arduino MEGA kullandım (bir kutu dolusu düğmeli düğme istiyoruz, değil mi?!:)).

Özellikle, Arduino MEGA 16 analog girişi işleyebilir (bazı donanım ayarlarıyla, yani muxing ile bunu artırabilirsiniz, ancak burada bu rotaya gitmiyoruz), bu yüzden 48 MIDI mesajını 16 potansiyometre aracılığıyla göndereceğiz. Her potansiyometre daha sonra her "sayfa" için bir tane olmak üzere üç parametreyi kontrol edecektir; sayfalar bir geçiş düğmesi ile seçilir.

Donanım listesi:

- 1x Arduino MEGA

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

- 16x tencere topuzu

- 4x anlık butonlar

- 4x LED

- 6x 220 ohm direnç

- 1x MIDI konektörü

- 1x ABS proje kutusu

Biraz kablo, lehim teli ve altı - sekiz saatlik boş zaman.

Dirençleri lehimlediğim ve kabloları yönlendirdiğim bir tür kalkan gerçekleştirmek için bir perfboard ve bazı pin başlıkları kullandım. Bu, Arduino'nuzu çıkarmanıza ve diğer projeler için kullanmanıza izin verme avantajına sahiptir (bir noktada hepimiz Arduino panolarında tükeniriz!). Zaten zorunlu değil ve bir başka iyi yaklaşım da arduino MEGA pin başlıklarını sökmek ve kabloları doğrudan yerinde lehimlemek olabilir.

220 ohm direnç yerine 200 ohm direnç kullandım ve yine de mükemmel çalışıyorlar; 150 ohm'luk dirençlerin bile harika çalışacağına bahse girerim (hem MIDI iletişimi hem de LED'ler için).

Kutuyu şekillendirmek için önce kutu yüzeyine biraz yapışkanlı kağıt sürdüm, deliklerin delinmesi gereken yeri ölçtüm (tüm tencerelerin sığması için delikten deliğe 3 cm yaptım) kılavuz delikleri yaptım ve sonra sağa büyüttüm. tencere ipliği veya düğme ipliğinin mini bir matkapla geçmesine izin verecek boyutta. Kutuyu bitirmek için aşağı yukarı 2 saat harcadım. Ben de küçük delikler fark ettim ve LED'leri yerine yapıştırdım.

Ayrıca MIDI OUT konektörü ve arduino güç konektörü için birer delik açtım (doğrudan yerleşik USB güç konektörünü kullandım ve arduino MEGA'yı sıkıca yerine kilitledim).

UYARI: Üzerinde çalıştığınız malzeme ne olursa olsun (plastik, ahşap, metaller, kompozitler… fark etmez: delme sırasında daima gözlerinizi ve ellerinizi koruyun) hem elektrikli aletler hem de aşınmış/ateşlenmiş malzeme talaşları açısından risk altındasınız hareketli aletten).

Daha sonra tüm tencere ve düğmeleri yerleştirdim ve bileşenleri ekteki resimdeki gibi lehimledim. Nihai nesnenin ağırlığını (ve kabloların uzunluğunu) azaltmanın etkili bir yolu, hem 5V hattındaki hem de GND hattındaki tüm kapları zincirleme yapmaktır.

Ve kimse sormadan önce: Biliyorum, kullandığım o kutu çirkin! Ama bedavaydı ve hiçbir şey bedavanın yerini tutamaz:)

Adım 4: Kablolama

kablolama
kablolama

Bir potansiyometre (x16), bir basma düğmesi (x4) ve LED'i (x4) bir Arduino mikrodenetleyici kartına bağlamak kadar kolay bağlantı. Tüm Arduino temelleri burada ele alınmaktadır:)

Ekli kablolamadır. Dikkat edin:

- Her bir potansiyometre için bir adet olmak üzere tüm analog pinler (A0'dan A15'e kadar) kullanılır;

- 4 dijital pin (giriş) kullanılır (D51, D49, D47, D45'ten), her düğme için bir tane;

- LED'ler için diğer 4 dijital pin (çıkış) kullanılır (D43, D41, D39, D37);

- MIDI çıkış bağlantısı çok basittir ve iki adet 220 ohm direnç ister (ancak 150 ohm'a kadar çalışır)

- Düğmeler, çizimin dahili Arduino'nun çekme dirençlerini etkinleştirmesi nedeniyle açılan dirençler istemez.

- Her LED bir akım sınırlayıcı direnç ister (yeşil LED'ler için 200-220 ohm uygundur).

Listelenen dijital pinleri mal için kullandım, ancak bunlar "özel" pinler değiller (burada bazı pinlerin pwm özelliğini veya pine özgü başka bir özelliği kullanmıyoruz): En sevdiğiniz dijital pinleri ayarlayabilirsiniz, ancak değiştirmeyi unutmayın buna göre kod veya düğmeleriniz/LED'leriniz çalışmayacaktır!

Lütfen resimdeki MIDI OUT bağlantısının ÖN görünüm (arka görünüm değil) olduğuna dikkat edin.

Adım 5: Yazılım - Teoriye Bazı Bağlantılar

Sisteme Özel veya Kontrol Değişikliği mesajlarının arkasındaki tam teoriyi açıklamayacağım çünkü orada çok sayıda iyi makale var ve zaten yazılmış olanı yeniden yazmak aptalca.

Roland SysEx uygulaması için sadece bazı hızlı bağlantı:

- https://erha.se/~ronny/juno2/Roland%20Juno%20MIDI%2… (TÜRKÇE)

- https://www.2writers.com/eddie/tutsysex.htm (TÜRKÇE)

- https://www.chromakinetics.com/handsonic/rolSysEx.h… (TÜRKÇE)

- https://www.audiocentralmagazine.com/system-exclusi… (İTALYANO)

ve genel olarak MIDI için bazı bağlantılar:

-

-

Adım 6: Yazılım - Eskiz

Arduino Mega'nıza yüklemeniz gereken çizim ektedir.

Programlayıcıyı mümkün olduğunca "evrensel" tutmaya çalıştım, yani synth'e özgü kod parçalarını azaltmaya çalıştım. Kodu olabildiğince basit tutmaya çalıştım. Adım sıralayıcıyı eklemek işleri daha karmaşık hale getirdi ve kodu daha dağınık hale getirdi, yine de benim için buna değdi. "Evrensel" kodunu tutmak, denetleyici düzeninin bu kadar "rastgele" olmasının nedenidir: kılavuzda tanımlanan synth Üreticisinin MIDI uygulamasının parametre sırasını takip eder. İlk başta kafa karıştırıcı olabilir, ancak buna çok çabuk alışacaksınız.

Varsayılan kod/çizim/ürün yazılımı "yalnızca" 48 parametreyi (her biri 16 düğmeden oluşan üç sayfa) destekler, bu nedenle synth'iniz tarafından desteklenen tüm MIDI mesajlarını kontrol etmek mümkün olamazdı (bir Access Virus veya Novation Supernova'da düşünün: daha fazlasını kabul ederler). veya daha az 110 MIDI uyumlu parametre). Gerekirse, daha fazla mesajı desteklemek için taslağı kolayca değiştirebilirsiniz.

Aslında Roland Alpha-Juno, JX8P, Korg DW8000 ve Oberheim Matrix 6 ile uyumlu SysEx mesajları desteklenmektedir. İhtiyacın olursa diye Juno 106 uyumlu mesajların kodunu bıraktım.

Matrix 6 için kontrol edeceğim parametreleri seçmem gerekiyordu. Üçüncü zarfı, ikinci rampayı ve başka bir şeyi dışarıda bıraktım. Matris zaten MIDI aracılığıyla kontrol edilemez, bu yüzden o da çıktı. Güncellenmiş bellenime (sürüm 2.14 veya üstü) ihtiyacınız var ve "Master -> Sysex Enable" parametresini "3" olarak ayarlamalısınız.

Zaman aşımı bir şekilde sorunlu (saat olması gerektiği gibi çalışması için kesinlikle mükemmel olmalı ve muhtemelen etkili olmadığında benimsediğim iki yaklaşım). Varsayılan olarak devre dışıdır.

Kod yorumlar içerir, bu nedenle burada daha fazla yorum yapmanıza gerek yoktur.

Her zaman olduğu gibi: gerçek hayatta kodlayıcı olmadığımı ve burada ihtiyaç duyduğumuz şeyi kodlamanın kesinlikle daha iyi yolları olduğunu unutmayın. Bir kodlayıcıysanız ve öneriniz varsa, 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!).

İyi bir kodlayıcı kodunu okuyarak her zaman yeni bir şeyler öğrenirim;)

7. Adım: İlgili Projeler

Bildiğim kadarıyla, orada bir MIDI parametre denetleyicisi ve sıralayıcı yok (belki değiştirilmiş bir bellenime sahip eski Behringer BCR2000?)

her neyse, böyle bir kutu yapmaya yatkın değilseniz ancak synth parametrelerinizi uzaktan kontrol etmek için ucuz çözümlerle çok ilgileniyorsanız, şu diğer alternatifleri düşünün:

- CTRL MIDI editörü: Bu, win/Linux/mac üzerinde çalışan, bilgisayarınızı SysEx synth'ler için tam bir kontrolöre dönüştürebilen harika, ücretsiz bir açık kaynak programdır.

- David Konsumer'in "junosex" CC dönüştürücüsü: bu proje sizin tarafınızdan küçük bir donanım çalışması istiyor ve fikir harika - SysEx olmayan ortak bir MIDI denetleyicisi (yani bir AKAI MPK ana klavyesi) kullanmanıza izin veren arduino tabanlı bir CC'den SysEx'e dönüştürücü) SysEx'e hazır synth'inizle konuşmak için

Önerilen: