İçindekiler:
- Aşama 1: !! Dikkat Notu - Sorumluluk Reddi !
- Adım 2: Donanım Mühendisliği
- Adım 3: Bileşen Listesi
- Adım 4: Bağlantılar/Şemalar
- Adım 5: Yazılım
- 6. Adım: Sorun Giderme
- 7. Adım: Faydalı Bağlantılar
Video: CV Kutusuna Başka Bir MIDI: 7 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
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
Ş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
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
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:
Çoğunlukla 3D Baskılı Başka Bir Döner Anahtar: 7 Adım (Resimlerle)
Başka Bir Çoğunlukla 3D Baskılı Döner Anahtar: Bir süre önce Minivac 601 Replika projem için özel olarak Çoğunlukla 3D Baskılı Döner Anahtar oluşturdum. Yeni Think-a-Tron 2020 projem için kendimi başka bir döner anahtara ihtiyaç duyarken buluyorum. Bir SP5T panel montaj anahtarı arıyorum. Bir ek
Eski/Hasarlı Bir PC veya Dizüstü Bilgisayar Nasıl Medya Kutusuna Dönüştürülür: 9 Adım
Eski/Hasarlı Bir PC veya Dizüstü Bilgisayar Nasıl Medya Kutusuna Dönüştürülür: Teknolojinin bizden daha hızlı ilerlediği bir dünyada, sevgili elektroniklerimiz çok hızlı bir şekilde eskiyor. Belki de hiç sevmediğiniz kedileriniz dizüstü bilgisayarınızı masanın üzerine düşürdü ve ekranı kırıldı. Ya da belki bir akıllı TV için medya kutusu istiyorsunuz
Bir Arduino'yu Kitaplık Olmadan Kayan Bir Metin Görüntülemek İçin Başka Bir Arduino Kullanarak Programlamak: 5 Adım
Bir Arduino'yu Kitaplık Olmadan Kayan Bir Metni Görüntülemek için Başka Bir Arduino Kullanarak Programlama: Sony Spresense veya Arduino Uno o kadar pahalı değil ve çok fazla güç gerektirmez. Ancak projenizin güç, alan ve hatta bütçe kısıtlaması varsa Arduino Pro Mini kullanmayı düşünebilirsiniz. Arduino Pro Micro'nun aksine, Arduino Pro Mi
Bir Cekete veya Başka Bir Giysiye EL Teli Nasıl Eklenir: 10 Adım (Resimlerle)
Bir Paltoya veya Başka Bir Giysiye EL Teli Nasıl Eklenir: Işıklı bir kostüm tasarımcısı olarak, kendi EL tel kostümlerini nasıl yapacaklarını bilmek isteyen insanlardan çok fazla soru alıyorum. Herkese bireysel olarak yardım edecek zamanım yok, bu yüzden tavsiyemi tek bir talimatta birleştirmeyi düşündüm. İnşallah
Bir AVR (arduino) Başka Bir Arduino İle Nasıl Programlanır: 7 Adım
Bir AVR (arduino) Başka Bir Arduino ile Nasıl Programlanır: Bu talimat aşağıdaki durumlarda yararlıdır: * arduino'nuzu atmega168 ile aldıysanız ve yerel elektronik mağazanızdan bir atmega328 satın aldıysanız. Arduino önyükleyicisi yok * arduino kullanmayan bir proje yapmak istiyorsunuz - sadece bir