Daftar Isi:

Kotak MIDI lain ke CV: 7 Langkah (dengan Gambar)
Kotak MIDI lain ke CV: 7 Langkah (dengan Gambar)

Video: Kotak MIDI lain ke CV: 7 Langkah (dengan Gambar)

Video: Kotak MIDI lain ke CV: 7 Langkah (dengan Gambar)
Video: Perbedaan cewek dan cowok ketika nulis... 🤭😂 #shorts 2024, Juli
Anonim
MIDI lain ke Kotak CV
MIDI lain ke Kotak CV

Kotak MIDI ke CV lainnya adalah proyek yang saya kembangkan ketika Korg MS10 mengetuk pintu saya dan terjadi di studio saya. Karena pengaturan saya sangat terkait dengan MIDI untuk mengotomatisasi dan menyinkronkan semua instrumen, ketika saya membeli MS10, masalah pertama yang harus saya hadapi adalah bagaimana menerapkan kontrol tersebut.

Korg MS20/10 bukan synth termudah untuk mengimplementasikan MIDI untuk: pertama-tama, mereka mengandalkan kontrol Hz/V (korelasi linier antara tegangan kontrol dan frekuensi nada), bukan okt/V (1V per oktaf); kedua, untuk memicu nada, Anda harus mengirim sinyal gerbang negatif dan menyingkat input ke ground (S-Trig), bukan sinyal +5 V (V-trig).

Ada berbagai solusi komersial untuk mengontrol instrumen tersebut saat ini (yaitu Arturia Beatstep Pro, Korg SQ-1, Kenton Solo) tapi saya bajingan murah dan bahkan 100 euro terlalu banyak untuk perangkat "tidak terdengar":).

Di sinilah kita kemudian: izinkan saya menunjukkan kepada Anda bagaimana membangun kotak MIDI ke CV anggaran rendah untuk mengontrol/mengotomatiskan nada, gerbang, kecepatan, dan frekuensi cutoff synth pra-MIDI dengan pengontrol MIDI eksternal (Keyboard, DAW, sequencer atau apa pun).

"Bagaimana dengan mini MS20 yang baru?"

Seperti yang diketahui hampir semua orang, MS20 baru sebenarnya sudah siap MIDI:IN dengan konektor MIDI 5 kutub dan IN/OUT dengan konektor USB.

"Jadi, kalau saya punya MS20 mini, barang ini tidak berguna!"

Yah, tidak. MS20 mini hanya mengenali pesan on/off note dan keyboard tidak peka terhadap kecepatan. Tidak ada cara untuk mengatasi hal ini dengan keyboard mini atau vintage MS10/20, tetapi dengan kotak midi dan keyboard yang sensitif terhadap kecepatan Anda adalah emas. Selain itu, dengan kotak MIDI Anda dapat mengotomatiskan cutoff filter (atau parameter lain yang dapat dikontrol tegangan) atau memodulasinya oleh catatan MIDI yang masuk pada kecepatan. Sekali lagi, satu-satunya saluran MIDI yang ditanggapi oleh MS20 mini adalah saluran 1. Dengan kotak ini Anda juga dapat mengatasi batas ini.

"Bagaimana jika saya memiliki synth Oct/V?"

Tidak masalah! Kode yang saya tulis kompatibel dengan synthesizer Oct/V (belum diuji, tetapi saya yakin itu akan berfungsi dengan baik;)).

Langkah 1: !! Catatan Perhatian - Penafian

Peralatan Anda sangat berharga dan tidak boleh digunakan untuk melakukan tes.

Bermain-main dengan listrik dapat merusak peralatan Anda atau membahayakan diri Anda sendiri.

Saya tidak bertanggung jawab atas kerusakan pada peralatan/perangkat keras Anda atau bahkan diri Anda sendiri yang berasal dari salah satu perangkat lunak atau skema atau informasi atau tautan yang saya laporkan dalam instruksi ini.

Anda telah diperingatkan!

Langkah 2: Rekayasa Perangkat Keras

Arduino sangat berguna saat menangani proyek seperti ini. Keberadaan Komunitas besar dan perpustakaan yang sangat bagus yang menjangkau hampir setiap tugas umum menjadikannya pilihan yang tepat. Di sini papan akan diprogram sedemikian rupa sehingga akan membaca data MIDI yang masuk dan kemudian akan mengirimkan tegangan yang sesuai ke drive:

- Pitch, dengan mengubah output pwm menjadi tegangan analog untuk menggerakkan VCO melalui digital to analog converter (DAC)

- Kecepatan, dengan memfilter output pwm untuk menggerakkan VCA dengan filter RC sederhana

- Filter Cutoff Frequency, dengan memfilter output pwm untuk menggerakkan VCF dengan filter RC sederhana

- Gerbang, langsung dari keluaran digital jika terjadi V-trig (pasang seri 1Kohm dengan keluaran untuk mengurangi aliran arus) atau dengan sakelar transistor pnp sederhana dari keluaran digital (lihat skema terlampir pada langkah skema).

Arduino tidak mampu mengeluarkan tegangan stabil secara langsung, tetapi pulsa 0/+5 V dengan berbagai periode (PWM). Kami membutuhkan konverter digital ke analog (DAC) untuk rumah tuang. Filter RC adalah DAC termudah yang dapat saya pikirkan. Filter RC cukup baik untuk penguat dan filter yang dikontrol tegangan (VCA dan VCF). Filter RC disesuaikan untuk menghasilkan frekuensi cutoff < 20Hz (frekuensi terdengar terendah).

Saya melakukan beberapa tes dengan kapasitor non polarized berkapasitas rendah dan saya mengakhirinya dengan nilai kapasitas 0.1uF untuk menjadi yang paling cocok. Diuji dengan baik pada MS20 MKII.

Sayangnya, kita tidak dapat mengandalkan filter RC untuk menggerakkan voltage controlled oscillator (VCO) karena itu tidak akan cukup akurat (dalam skala Hz/V, di ujung bawah dua semitone adiacend berbeda kurang dari 0,02V; dalam V /oct dua semitone adiacent berbeda untuk 0,083 V); kita akan menggunakan IC DAC (MPC4725) untuk ini.

Batas yang Diketahui

Membatasi tegangan drive ke 5V (tegangan output Arduino), kisaran penuh 0 hingga 5V tercakup untuk kecepatan; cutoff setengah tertutup (-5V hingga +5V); kisaran VCO sebagian tertutup karena dalam Hz/V tegangan 8 V akan diperlukan untuk mencapai 440 Hz A4. Dengan batas keluaran 5V, kita dapat menaikkan osilator ke frekuensi D4 dalam Hz/V.

Langkah 3: Daftar Komponen

Daftar Komponen
Daftar Komponen
Daftar Komponen
Daftar Komponen
Daftar Komponen
Daftar Komponen

Anda sedang membutuhkan:

1X Arduino UNO (atau nano)

1X papan MPC4725 DAC

4X 1/8" atau 1/4" konektor mono

1X konektor MIDI

1X 6N138 optocoupler

1X 1N4148 dioda

1X 220 ohm 1/4 W resistor

1X470 ohm 1/4 W resistor

1X 10K ohm 1/4 W resistor

4X 1K ohm 1/4 W resistor

2X 0,1 uF kapasitor

1X BC547 transistor pnp (dalam kasus S-trig)

1X kotak ABS (setidaknya 55 x 70 x 100 mm)

… dan tentu saja papan tempat memotong roti atau papan berlubang, besi solder, kawat solder dan kabel (2 meter dari 28 AWG seharusnya cukup).

Perhatikan bahwa pada gambar di atas prototipe saya memasang tutup elektrolit 100 uF, tetapi terlalu lambat karena waktu pengisian kapasitas. Sebuah kapasitansi 0.1uF adalah pilihan yang tepat.

Saya menggunakan konektor tambahan untuk memasok daya ke arduino saya; tidak perlu membuat jus mikrokontroler secara langsung melalui konektor mini USB onboard.

Langkah 4: Koneksi/Skema

Koneksi/Skema
Koneksi/Skema
Koneksi/Skema
Koneksi/Skema
Koneksi/Skema
Koneksi/Skema

MIDI IN

Sirkuit MIDI IN sederhana dan dijelaskan dengan baik di internet. Ambil INI instruksi yang sangat baik pada MIDI dan Arduino oleh Amanda Gassaei, misalnya. Saya membuat skema ke-n tentang masalah ini.

Perhatikan bahwa saya menambahkan sakelar dalam skema MIDI IN (sakelar 1): ini diperlukan saat mengunggah sketsa baru ke Arduino karena opto mengganggu jalur RX bahkan tanpa pesan midi yang masuk. Anda harus membuka sakelar sebelum mengunggah sketsa Anda atau IDE akan gagal mengunggah sketsa baru.

Anda akhirnya dapat memodifikasi sketsa untuk menggunakan komunikasi perangkat lunak serial.

DAC, Filter RC, Synthesizer

Koneksi untuk DAC, filter RC dan Synth (pitch, gate dan velocity) ditunjukkan pada diagram di atas. Saya mengambil referensi panel patch Korg MS20, tetapi saya juga menguji semuanya pada MS10. Koneksi langsung dari CV kecepatan ke titik patch "penguatan awal" VCA tidak berpengaruh (saya harus menggali hal ini lebih lanjut) tetapi jika Anda menghubungkannya ke titik patch "Total" dan menaikkan total pot eksternal Anda (MG/T. EXT), Anda akan mendengar variasi nada yang bagus sebagai fungsi dari kecepatan nada.

Skema saya (dan prototipe saya juga) tidak menggunakan resistor pembatas arus pada keluaran DAC, tetapi selalu merupakan ide bagus untuk menempatkannya untuk memastikan umur panjang sirkuit Anda. Sebuah resistor 220 ohm akan cukup.

Perhatikan bahwa dalam skema di atas 100 uF tutup elektrolit dilaporkan, tetapi terlalu lambat karena waktu pengisian kapasitas. Tutup 0,1uF yang tidak terpolarisasi adalah pilihan yang tepat.

Gerbang keluar

Jika Anda akan mengurutkan synth yang kompatibel dengan sinyal V-Trig (pemicu tegangan), resistor seri 1k ohm untuk mengurangi aliran arus sudah cukup; dalam kasus synth S-Trig (pemicu sakelar), Anda dapat menggunakan rangkaian sakelar PNP sederhana (lihat skema terlampir).

Langkah 5: Perangkat Lunak

Perangkat Lunak
Perangkat Lunak

Saya mencoba membuat sketsa sejelas dan "dapat dibaca" mungkin.

Saya mengerjakan lembar kalk sederhana yang saya temukan DI SINI untuk mendapatkan kurva Tegangan Vs Catatan # dan menggunakan langsung persamaan di mikrokontroler. Persamaan ditunjukkan pada grafik di atas. Saya menggunakan C2 sebagai catatan referensi untuk mendapatkan hubungan tegangan Vs yang sesuai dengan Arp/Korg (C0 - 0.25V, C1 - 0.5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V dan seterusnya).

Saya harus mendefinisikan beberapa variabel untuk dimainkan untuk mendapatkan penyetelan yang baik… luangkan waktu Anda untuk menemukan nilai yang benar. Tuner diperlukan.

Kami akan meningkatkan frekuensi pwm dari Timer/Counter untuk mengurangi riak tegangan output (semudah baris kode).

Agar kode tetap responsif terhadap byte yang masuk, kode sangat bergantung pada panggilan balik fungsi.

Anda membutuhkan "Adafruit_MCP4725.h" Sparkfun dan perpustakaan "MIDI.h" Forty Seven Effects/Francois Best untuk dikompilasi! (Terima kasih banyak kepada orang-orang ini: tanpa usaha mereka, proyek ini tidak akan pernah terwujud!).

Saya akan menganggap Anda memiliki Arduino IDE yang siap di PC Anda dan Anda tahu cara memuat sketsa ke papan Arduino Anda.

Saya bukan pembuat kode dalam kehidupan nyata, jadi kemungkinan besar sketsa itu dapat ditulis dengan cara yang lebih baik. Saya terbuka untuk saran (saya selalu belajar sesuatu dengan melihat kode pembuat kode;))

Catatan tambahan ditulis dalam kode di bawah ini. Instal dua perpustakaan, buka kode terlampir pada IDE Anda, sambungkan papan Anda, pilih jenis papan dan unggah.

Langkah 6: Pemecahan Masalah

Bahkan jika proyeknya rendah, ada banyak hal yang bisa salah. Jika Anda mengalami masalah saat mencoba membuat kotak MIDI ke CV Anda sendiri, ikuti langkah-langkah berikut:

1. Pastikan Arduino menerima pesan MIDI dengan benar

Periksa saluran keluaran keyboard atau DAW atau Sequencer Anda untuk mengeluarkan pesan MIDI. Arduino mendengarkan saluran 1 secara default. Unggah "TEST_MIDI_IN.ino" untuk membaca pesan noteON yang masuk.

2. Periksa kembali kabel Anda

… atau bahkan lebih baik: periksa tiga kali! Simpan waktu Anda untuk ini.

3. Periksa alamat dan keluaran DAC

DAC dapat diatur untuk menerima data pada alamat yang berbeda dari yang saya atur dalam sketsa. Periksa alamat dengan menjalankan "I2C_scanner.ino". Jika terjadi kesalahan "tidak ada perangkat yang ditemukan", periksa kabel DAC Anda (input SDA dan SCL berbeda pada papan Arduino yang berbeda!). Jika Anda memiliki osiloskop (bahkan osiloskop digital seharga 15 euro itu cukup bagus… dan menyenangkan untuk dimainkan!), Anda dapat memeriksa keluaran DAC Anda dengan mengunggah contoh generator gelombang segitiga yang disertakan dengan instalasi pustaka DAC.

Ingatlah bahwa ketika optocoupler terhubung ke input RX dari papan arduino Anda, Anda tidak akan dapat mengunggah sketsa baru!! Tempatkan sakelar (bisa berupa jumper sederhana) sebelum pin RX.

Sebagian besar sketsa tes ini bukan milik saya atau setidaknya berdasarkan materi online yang ada.

Hal ini terdengar tidak selaras denganku!?

Ini bukan masalah nyata: persamaan yang diturunkan untuk kontrol Hz/V adalah "ideal". Beberapa penyimpangan dari perilaku ideal dapat muncul dari +5V yang Anda suplai menjadi bukan 5.000V, dari DAC dan dari instrumen itu sendiri. Untuk menyelesaikannya, Anda harus bertindak pada potensiometer synth tune/fine tune Anda dan "voilà" kontrol MIDI yang disetel dengan sempurna;)

Langkah 7: Tautan Berguna

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/specifications/item/table-3-c…

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

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

Direkomendasikan: