İçindekiler:

CV Kutusuna Başka Bir MIDI: 7 Adım (Resimlerle)
CV Kutusuna Başka Bir MIDI: 7 Adım (Resimlerle)

Video: CV Kutusuna Başka Bir MIDI: 7 Adım (Resimlerle)

Video: CV Kutusuna Başka Bir MIDI: 7 Adım (Resimlerle)
Video: MERVELER KÖTİ KÖTİİİ MERVELER ZALIM 28. BÖLÜM BU SEFER FATMA GELDİ 2024, Kasım
Anonim
CV Box'a başka bir MIDI
CV Box'a başka bir MIDI

Bir diğer MIDI to CV kutusu, bir Korg MS10 kapımı çalıp stüdyomda yer aldığında geliştirdiğim bir proje. Kurulumum, tüm enstrümanları otomatikleştirmek ve senkronize etmek için MIDI ile yoğun bir şekilde ilgili olduğundan, MS10'u satın aldığımda yüzleşmem gereken ilk sorun, bu tür bir kontrolün nasıl uygulanacağıydı.

Korg MS20/10, MIDI'yi uygulamak için en kolay sentezleyiciler değildir: her şeyden önce, ok/V (oktav başına 1V) yerine Hz/V kontrolüne (kontrol voltajı ve nota frekansı arasındaki doğrusal korelasyon) dayanırlar; ikinci olarak, bir notu tetiklemek için bir negatif kapı sinyali göndermeli ve girişi +5 V sinyali (V-tetik) değil toprağa (S-Trig) kısa devre yapmalısınız.

Günümüzde bu tür enstrümanları kontrol etmek için çeşitli ticari çözümler var (örneğin Arturia Beatstep Pro, Korg SQ-1, Kenton Solo) ama ben ucuz bir piç kurusuyum ve "ses çıkarmayan" bir cihaz için 100 Euro bile çok fazla:).

O zaman işte buradayız: Bir MIDI öncesi synth'in perdesini, geçidini, hızını ve kesme frekansını harici bir MIDI denetleyicisi (Klavye, DAW, sıralayıcı veya her neyse) ile kontrol etmek/otomatikleştirmek için düşük bütçeli bir MIDI'den CV'ye kutusunu nasıl oluşturacağınızı göstereyim..

"Peki ya yeni MS20 mini?"

Neredeyse herkesin bildiği gibi, yeni MS20 aslında 5 kutuplu MIDI konektörlü MIDI:IN ve USB konektörlü IN/OUT.

"Yani, eğer bir MS20 mini'm varsa bu şey işe yaramaz!"

Hayır. MS20 mini sadece not açma/kapama mesajlarını tanır ve klavye hıza duyarlı değildir. MS10/20 vintage veya mini klavye ile bunun üstesinden gelmenin bir yolu yok, ancak midi kutusu ve hıza duyarlı klavye ile altınsınız. Ek olarak, MIDI kutusuyla filtre kesmeyi (veya başka herhangi bir voltaj kontrol edilebilir parametreyi) otomatikleştirebilir veya gelen MIDI notu ile hız üzerinde modüle edilmesini sağlayabilirsiniz. Yine MS20 mini'nin yanıt verdiği tek MIDI kanalı kanal 1'dir. Bu kutu ile bu sınırı da aşabilirsiniz.

"Ya bir Oct/V synth'im varsa?"

Sorun değil! Yazdığım kod, Oct/V sentezleyicilerle uyumludur (denenmemiş, ancak kullanıma hazır olarak çalışacağından eminim;)).

Aşama 1: !! Dikkat Notu - Sorumluluk Reddi !

Ekipmanınız çok değerlidir ve test yapmak için kullanılmamalıdır.

Elektrikle oynamak, ekipmanınıza ciddi şekilde zarar verebilir veya kendinize zarar verebilir.

Bu talimatta bildirdiğim herhangi bir yazılım veya şema veya bilgi veya bağlantıdan kaynaklanan ekipmanınıza/donanımınıza veya hatta kendinize gelebilecek zararlardan sorumlu tutulamam.

Uyarıldın!

Adım 2: Donanım Mühendisliği

Arduino, bunun gibi projelerle uğraşırken kullanışlı oluyor. Büyük bir Topluluğun ve hemen hemen her ortak görevi kapsayan çok iyi kitaplıkların varlığı, onu doğru seçim yapar. Burada kart, gelen MIDI verilerini okuyacak ve ardından sürücüye uygun voltajlar gönderecek şekilde programlanacaktır:

- VCO'yu dijitalden analoğa dönüştürücü (DAC) aracılığıyla sürmek için bir pwm çıkışını analog voltaja dönüştürerek adım

- VCA'yı basit bir RC filtresiyle sürmek için bir pwm çıkışını filtreleyerek hız

- Basit bir RC filtresi ile VCF'yi sürmek için bir pwm çıkışını filtreleyerek Filtre Kesme Frekansı

- Geçit, V-trig durumunda doğrudan dijital çıkıştan (akım tahliyesini azaltmak için çıkışa seri olarak 1Kohm koyun) veya dijital çıkıştan basit bir pnp transistör anahtarı ile (şematik adıma ekli şemaya bakın).

Arduino, doğrudan sabit voltajlar değil, çeşitli periyotlarla (PWM) 0/+5 V darbeler üretebilir. Döküntü için dijitalden analoğa dönüştürücülere (DAC) ihtiyacımız var. RC filtreleri, aklıma gelen en kolay DAC. Voltaj kontrollü amplifikatör ve filtre (VCA ve VCF) için bir RC filtresi yeterlidir. RC filtreleri, < 20Hz (en düşük duyulabilir frekans) bir kesme frekansı ile sonuçlanacak şekilde uyarlanmıştır.

Düşük kapasiteli polarize olmayan kapasitörlerle bazı testler yaptım ve en uygun olması için 0,1 uF kapasite değeriyle bitirdim. MS20 MKII'de iyi test edildi.

Ne yazık ki, voltaj kontrollü osilatörü (VCO) çalıştırmak için bir RC filtresine güvenemeyiz, çünkü bu yeterince doğru olmaz (Hz/V ölçeğinde, alt uçta iki adiacend yarım tonu 0,02V'den daha az farklıdır; V'de) /oct iki bitişik yarım ton 0.083 V için farklıdır); bunun için bir IC DAC (MPC4725) kullanacağız.

Bilinen Limitler

Sürücü voltajını 5V (Arduino çıkış voltajı) ile sınırlayarak, hız için 0 ila 5V aralığının tamamı kapsanır; kesme yarı kapalıdır (-5V ila +5V); VCO aralığı kısmen kapsanmıştır, çünkü Hz/V'de 440 Hz A4'e ulaşmak için 8 V'luk bir voltaj gerekir. 5V çıkış limiti ile osilatörü Hz/V cinsinden D4 frekansına kadar ayarlayabiliriz.

Adım 3: Bileşen Listesi

Bileşenler Listesi
Bileşenler Listesi
Bileşenler Listesi
Bileşenler Listesi
Bileşenler Listesi
Bileşenler Listesi

Şunlara ihtiyacınız var:

1X Arduino UNO (veya nano)

1X MPC4725 DAC kartı

4X 1/8" veya 1/4" mono konektörler

1X MIDI konektörü

1X 6N138 optokuplör

1X 1N4148 diyot

1X 220 ohm 1/4 W direnç

1X 470 ohm 1/4 W direnç

1X 10K ohm 1/4 W direnç

4X 1K ohm 1/4 W direnç

2X 0.1 uF kapasitör

1X BC547 pnp transistör (S-trig durumunda)

1X ABS kutusu (en az 55 x 70 x 100 mm)

… ve tabii ki breadboard veya perfboard, havya, lehim teli ve kablolar (2 metre 28 AWG yeterli olmalıdır).

Yukarıdaki resimlerde prototipimin 100 uF elektrolitik kapak taktığına dikkat edin, ancak kapasite şarj süresi nedeniyle çok yavaşlar. 0.1 uF'lik bir kapasitans doğru seçimdir.

Arduino'ma güç sağlamak için ek bir konektör kullandım; Mikrodenetleyiciyi doğrudan yerleşik mini USB konektörü aracılığıyla beslemek gerekli değildir.

Adım 4: Bağlantılar/Şemalar

Bağlantılar/Şemalar
Bağlantılar/Şemalar
Bağlantılar/Şemalar
Bağlantılar/Şemalar
Bağlantılar/Şemalar
Bağlantılar/Şemalar

MİDİ İÇİ

MIDI IN devresi basittir ve internette iyi tanımlanmıştır. Örneğin, Amanda Gassaei tarafından MIDI ve Arduino'da BU mükemmel talimatı alın. Yine de konuyla ilgili n. şemayı yaptım.

MIDI IN şemasına bir anahtar eklediğime dikkat edin (anahtar 1): Arduino'ya yeni bir çizim yüklerken bu gereklidir çünkü opto, gelen midi mesajları olmadan bile RX hattına müdahale eder. Çiziminizi yüklemeden önce anahtarı açmalısınız, aksi takdirde IDE yeni çizimi yükleyemez.

Sonunda, bir seri yazılım iletişimi kullanmak için çizimi değiştirebilirsiniz.

DAC, RC Filtresi, Sentezleyici

DAC, RC filtreleri ve Synth (pitch, gate ve hız) bağlantıları üstteki şemada gösterilmektedir. Bir Korg MS20 patch panelini referans olarak aldım, ancak her şeyi bir MS10'da da test ettim. Hız CV'sinin VCA "ilk kazanç" yama noktasına doğrudan bağlantısının hiçbir etkisi yoktur (bu şeyi daha fazla kazmalıyım), ancak onu "Toplam" yama noktasına bağlarsanız ve toplam harici potlarınızı yükseltirseniz (MG/T. EXT)), nota hızının bir fonksiyonu olarak hoş ton varyasyonları duyacaksınız.

Şemalarım (ve prototipim de) DAC çıkışında bir akım sınırlayıcı direnç kullanmıyor, ancak devrelerinize uzun ömür sağlamak için bir tane yerleştirmek her zaman iyi bir fikirdir. 220 ohm'luk bir direnç yeterli olacaktır.

100 uF'nin üzerindeki şemalarda elektrolitik kapakların bildirildiğine, ancak kapasite şarj süresi nedeniyle çok yavaş olduklarına dikkat edin. Polarize olmayan, 0.1 uF kapaklar doğru seçimdir.

Kapı Çıkışı

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 tetik) synth olması durumunda, basit bir PNP anahtar devresi kullanabilirsiniz (ekli şemaya bakın).

Adım 5: Yazılım

Yazılım
Yazılım

Taslağı olabildiğince açık ve "okunabilir" tutmaya çalıştım.

Bir Voltaj Vs Not# eğrisi türetmek ve doğrudan mikrodenetleyicideki denklemi kullanmak için BURADA bulduğum basit bir hesap tablosu üzerinde çalıştım. Denklem üstteki grafikte gösterilmiştir. Arp/Korg uyumlu Voltaj Vs not ilişkisi elde etmek için C2'yi referans notu olarak kullandım (C0 - 0.25V, C1 - 0.5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V vb.).

İyi bir ayar yapabilmek için bazı değişkenler tanımlamam gerekti… doğru değerleri bulmak için zaman ayırın. Bir tuner gereklidir.

Çıkış voltajı dalgalanmasını azaltmak için bir Zamanlayıcı/Sayacı pwm frekansını artıracağız (bir kod satırı kadar kolay).

Kodun gelen baytlara yanıt vermesini sağlamak için kod, büyük ölçüde işlev geri aramalarına dayanır.

Derlemek için Sparkfun'un "Adafruit_MCP4725.h" ve Forty Seven Effects/Francois Best'in "MIDI.h" kitaplıklarına ihtiyacınız var! (Bu kişilere çok teşekkürler: onların çabaları olmadan bu proje asla gerçekleşemezdi!).

PC'nizde Arduino IDE'nin hazır olduğunu ve Arduino kartınıza nasıl eskiz yükleyeceğinizi bildiğinizi varsayacağım.

Ben gerçek hayatta kodlayıcı değilim, bu yüzden taslak daha iyi bir şekilde yazılabilir. Önerilere açığım (her zaman kodlayıcının koduna bakarak bir şeyler öğrenirim;))

Ek notlar aşağıdaki kodda yazılmıştır. İki kitaplığı kurun, IDE'nizde ekli kodu açın, panonuzu bağlayın, pano tipini seçin ve yükleyin.

6. Adım: Sorun Giderme

Proje düşük seviyede olsa bile, yanlış gidebilecek tonlarca şey var. Kendi MIDI to CV kutunuzu oluşturmaya çalışırken sorun yaşıyorsanız şu adımları izleyin:

1. Arduino'nun MIDI mesajlarını doğru şekilde aldığından emin olun

Klavyenizin veya DAW veya Sequencer'ınızın MIDI mesajlarının çıkışını yaptığı çıkış kanalını kontrol edin. Arduino varsayılan olarak kanal 1'i dinliyor. Gelen bir noteON mesajını okumak için "TEST_MIDI_IN.ino" dosyasını yükleyin.

2. Kablolamalarınızı iki kez kontrol edin

… veya daha da iyisi: onları üç kez kontrol edin! Bunun için zaman ayırın.

3. DAC adresini ve çıktısını kontrol edin

DAC, çizimde belirlediğimden farklı bir adresten veri alacak şekilde ayarlanabilir. "I2C_scanner.ino" çalıştırarak adresi kontrol edin. Bir "cihaz bulunamadı" hatası oluşursa, DAC kablolamanızı kontrol edin (SDA ve SCL girişleri farklı Arduino kartlarında farklıdır!). Bir osiloskopunuz varsa (15 Euro'luk dijital osiloskoplar bile yeterince iyi… ve oynaması eğlenceli!) DAC kitaplığı kurulumuna dahil olan üçgen dalga üreteci örneğini yükleyerek DAC'nizin çıkışını kontrol edebilirsiniz.

Arduino kartınızın RX girişine bir optokuplör bağlandığında, yeni bir çizim yükleyemeyeceğinizi unutmayın! RX pininden önce bir anahtar (basit bir jumper olabilir) yerleştirin.

Bu test çizimlerinin çoğu benim değil veya en azından mevcut çevrimiçi materyale dayanıyor.

Bu şey bana uyumsuz geliyor!?

Bu gerçek bir sorun değildir: Hz/V kontrolü için türetilen denklem "idealdir". İdeal davranıştan bir miktar sapma, 5.000V değil, sağladığınız +5V'den, DAC'den ve cihazın kendisinden yükselebilir. Çözmek için synth tune/ince ayar potansiyometrenize göre hareket etmelisiniz ve mükemmel ayarlanmış bir MIDI kontrolü "voilà";)

7. Adım: Faydalı Bağlantılar

en.wikipedia.org/wiki/CV/gate

www.instructables.com/id/Send-and-Receive-…

www.songstuff.com/recording/article/midi_me…

pages.mtu.edu/~suits/NoteFreqCalcs.html

espace-lab.org/activites/projets/en-arduin…

learn.sparkfun.com/tutorials/midi-shield-h…

provideyourown.com/2011/analogwrite-conver…

www.midi.org/specations/item/table-3-c…

arduino-info.wikispaces.com/Arduino-PWM-Fr…

sim.okawa-denshi.jp/en/PWMtool.php

Önerilen: