Daftar Isi:
- Langkah 1: Apa Persisnya Ini (dan Apa yang Tidak…)
- Langkah 2: Pengurut 16 Langkah "Tersembunyi"
- Langkah 3: Perangkat Keras Dibutuhkan dan Membangun
- Langkah 4: Pengkabelan
- Langkah 5: Perangkat Lunak - Beberapa Tautan ke Teori
- Langkah 6: Perangkat Lunak - Sketsa
- Langkah 7: Proyek Terkait
Video: (hampir) Universal MIDI SysEx CC Programmer (dan Sequencer): 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Pada pertengahan tahun delapan puluhan produsen synth memulai proses "kurang lebih baik" yang mengarah ke synth barebone. Ini memungkinkan pengurangan biaya di sisi pabrikan, tetapi membuat proses penambalan menjadi membosankan jika bukan tidak mungkin bagi pengguna akhir.
Produsen sendiri dan perusahaan pihak ketiga menyadari kotak opsional yang penuh dengan kenop dan/atau penggeser untuk memungkinkan Anda benar-benar "bermain" dengan nada synth Anda, tetapi ini sangat mahal saat ini dan, seperti biasa, kami terpaksa mencari solusi murah sendiri;)
Proyek ini datang dari kebutuhan saya untuk dengan mudah memprogram patch pada beberapa synth terbaru saya yang dibeli: Roland Alpha Juno 2 dan JX8P. Ini dimulai sebagai pengontrol SysEx sederhana, kemudian tumbuh pada saya dan menjadi sesuatu yang lebih kompleks, dengan synth lain yang didukung di jalan (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) dan sequencer bawaan.
Dalam instruksi ini saya akan menunjukkan kepada Anda bagaimana mewujudkan pengontrol Anda sendiri: alat murah yang mengemulasi kotak kontrol parameter dengan harga tinggi itu… dan banyak lagi (lanjutkan membaca untuk detailnya…).
Langkah 1: Apa Persisnya Ini (dan Apa yang Tidak…)
Kontroler MIDI SysEx dan Control Change di sini pada dasarnya adalah 16 tombol (potensiometer) dan 4 tombol kontroler MIDI. Sketsa default menangani tiga "halaman", dengan total 48 parameter nada synth.
Saya membuat pengontrol kompatibel dengan pesan MIDI perubahan kontrol (jenis pesan MIDI sederhana dan "global" yang digunakan secara luas oleh produsen synth terutama dari tahun 90-an) dan pesan SysEx (jenis pesan MIDI lain, jauh lebih umum dan sangat spesifik synth. digunakan pada tahun 80-an).
Secara khusus, pengontrol secara default kompatibel dengan:
- Roland Alpha Juno (1/2)
- Roland JX8P
-Korg DW8000
- Oberheim Matrix 6/6R (> 2.14 firmware)
- Rangkaian sekuensial MAX/SixTrak.
Anda akhirnya dapat mengaktifkan pengontrol untuk bertindak pada synth apa pun yang dapat menerima pesan perubahan kontrol (CC) MIDI, tetapi dinonaktifkan secara default.
Menjadi proyek open source, sangat mudah untuk mendukung synth lain pilihan Anda (lihat langkah kode untuk detailnya).
Tata letak parameter nada dengan semua nomor tersebut dapat membingungkan pada awalnya, tetapi ini tidak "acak" seperti yang terlihat: mengikuti urutan bagan implementasi MIDI pabrikan. Ini adalah pilihan desain untuk menjaga kode tetap sederhana dan "universal".
Anda dapat mengunduh lembar gambar dengan "tata letak" 4x4 yang saya sadari untuk Alpha-Junos, JX8P, DW8000, Matrix 6 dan MAX/SixTrak di halaman ini: parameter biru adalah parameter yang dapat Anda sesuaikan saat di halaman 1, hitam di halaman 2 dan oranye yang ada di halaman 3.
Bahkan jika pengontrol tidak memiliki layar, bermain-main dengan synth yang menunjukkan kepada Anda parameter apa yang sedang disetel secara real time membuat proses pembuatan tambalan menjadi menyenangkan. JX8P dan Matrix 6, misalnya, mampu melakukan ini; Alpha Juno, sebagai gantinya, tidak menunjukkan kepada Anda parameter yang sedang diubah dan membuat segalanya sedikit lebih sulit (tetapi membuat tambalan yang mengagumkan pasti bisa dilakukan dan lebih mudah daripada dengan menggunakan antarmuka tanpa tombol bawaan); DW8000 hanya memiliki tampilan numerik, tetapi Anda dapat melihat tweakin Anda secara real time sehingga ditempatkan di antaranya.
Bagaimana dengan tombol-tombol di sana?
Nah, yang pertama (kiri atas dalam tata letak saya) adalah untuk penjelajahan halaman: lompat ke halaman parameter berikutnya setiap kali menekan tombol. LED akan menunjukkan halaman mana Anda berada.
Yang kedua ketika ditekan, kirim tambalan tempat Anda bekerja kembali ke synth (bayangkan: Anda membuat tambalan hidup Anda, lalu menyentuh tombol program di permukaan synth dan tambalan khusus tombol dimuat … semua pekerjaan Anda telah hilang !). Dengan tombol ini Anda dapat mengirim semua nilai yang telah dihafal oleh programmer selama proses patching terakhir. Proses recall patch ini tidak bekerja jika Anda menekan randomizer lagi (proses pengacakan menimpa semua parameter di memori) dan itu hanya efektif pada parameter yang Anda edit setidaknya sekali. Patch terbaru tidak disimpan dalam memori setelah dimatikan.
Yang ketiga adalah untuk fungsi sekunder: pengacak/penambal! Putar penuh berlawanan arah jarum jam kenop yang Anda inginkan untuk mengunci parameternya ke nilai minimum (yaitu LFO osilator, amplop osilator, dll.) atau putar sepenuhnya searah jarum jam untuk memaksimalkan nilainya (yaitu volume campuran osilator, volume VCA, dll.) dan tekan tombol untuk memulai proses pengacakan untuk semua parameter lainnya.
Tombol keempat ada untuk mengaktifkan easter egg (semacam…) Saya menempatkan kode setelah memperhatikan bahwa tata letaknya sempurna untuk… sequencer MIDI 16 langkah! Tepat: tekan tombol keempat (tombol MODE), pengontrol akan memasuki "mode sequencer" dan Anda akan diizinkan untuk memicu nada dengan cara yang sama seperti yang dilakukan oleh sequencer analog lama. Bagus!
Tekan tombol MODE lagi untuk kembali ke mode controller/patcher.
Bagaimana dengan LED itu?
Ada 4 LED yang sesuai untuk setiap tombol (di sebelah kanan setiap tombol dalam tata letak saya); LED ini memiliki beberapa tuang:
1) mereka memberi tahu Anda di halaman parameter mana Anda berada (LED atas menyala ketika Anda berada di halaman 1, LED di bawahnya menyala ketika halaman 2 aktif, LED 3 menyala … Anda yang menentukannya sendiri). Kami terbatas pada 3 halaman ATM, tetapi kode dapat dengan mudah disetel untuk menangani lebih banyak halaman;
2) LED kedua menunjukkan parameter halaman 2 AND menyala saat mikrokontroler mengirimkan patch sebelumnya (patch recall);
3) LED ketiga menunjukkan parameter halaman 3 DAN menyala selama proses pengacakan.
LED keempat tidak melakukan apa pun dalam mode pengontrol MIDI dan digunakan untuk perubahan MODE global.
Semua fungsi ini ditransmisikan sebagai pesan MIDI, jadi agar efektif, synth Anda harus mampu/diaktifkan untuk menerima dan menafsirkan pesan semacam ini
Langkah 2: Pengurut 16 Langkah "Tersembunyi"
Seperti yang dikatakan, saat menguji pengontrol, saya menyadari bahwa akan sangat bagus untuk membiarkan urutan nada berjalan sehingga saya dapat mengubah parameter synth dan memiliki gagasan yang lebih baik tentang efek akhir pada nada. Saya memiliki sequencer perangkat lunak (saya sangat menyukai seq24!), Tetapi perangkat keras ini adalah sequencer 16-langkah yang hampir SEMPURNA! Maka itu hanya masalah kode untuk mengimplementasikannya.
Anda dapat beralih antara mode pengontrol dan mode sequencer dengan menekan tombol #4 (tombol MODE).
Saat dalam mode sequencer, tombol bekerja secara berbeda dan LED memberi Anda informasi baru:
- tombol pertama (tombol SHIFT) saat ditekan memungkinkan untuk modifikasi tempo, panjang nada, saluran dan oktaf; nilai tempo diberikan oleh posisi potensiometer pertama, panjang nada dihitung dari posisi potensiometer kedua, saluran MIDI dari posisi potensiometer ketiga dan keempat dan oktaf (-1 o hingga +2) dari pot kelima. Anda dapat mengontrol tempo dari 40 BPM (putar potensiometer #1 berlawanan arah jarum jam penuh sambil terus menekan tombol #1) hingga hampir 240 BPM (putar potensiometer #1 searah jarum jam penuh sambil terus menekan tombol #1). Anda dapat mengatur panjang nada menjadi nada setengah, nada seperempat, nada delapan, nada enam belas dengan memutar pot #2 sambil terus menekan tombol SHIFT. Anda dapat mengatur saluran MIDI (saluran primer dan saluran sekunder) dari 1 hingga 16. Rentang nada dasar (dari C2 hingga F#4) dapat diturunkan satu oktaf atau ditingkatkan satu atau dua oktaf.
Secara default tempo diatur ke 120 BPM dan panjang not ke not seperempat.
- tombol kedua memulai dan menghentikan urutan catatan. Seperti yang dikatakan, jika Anda mengubah mode dengan menekan tombol #4 (MODE) saat menjalankan urutan, Anda akan masuk ke mode pengontrol tetapi urutan akan terus berjalan.
- tombol ketiga adalah PANIK! Dengan menekan itu semua catatan akan dimatikan.
- yang keempat digunakan untuk beralih antara mode global (pather atau sequencer) ketika tombol #1 tidak ditekan, atau antara mode urutan (lihat di bawah) ketika #1 ditekan.
Dalam mode sequencer jika Anda menekan tombol pilih mode sambil terus menekan tombol #1 (SHIFT), Anda dapat beralih di antara 3 mode urutan yang berbeda:
1 - 16 langkah urutan mono
2 - 16 langkah urutan poli: nada satu oktaf lebih rendah dari yang ditentukan oleh pot juga dipicu (ini menguras 2 suara per ketukan)
3 - 8 langkah urutan poli, saluran ganda: dua urutan 8 langkah paralel dikirim ke dua saluran yang berbeda (CH1 dan CH2 secara default); dengan menyetel nilai saluran yang sama baik pada saluran primer maupun sekunder, Anda dapat memiliki dua urutan 8 langkah paralel yang dimainkan oleh synthesizer (polifonik) yang sama.
Tentang LED: segera setelah Anda memasuki mode sequencer, keempat lampu akan menyala. Saat Anda memulai urutan, LED akan mengikuti urutan (atau urutan). Saya menempatkan satu LED setiap empat potensiometer dan cukup baik untuk saya. Akan mudah untuk memodifikasi sketsa untuk menangani 16 LED, satu untuk setiap langkah Anda.
Fitur step sequencer miss yang mungkin diperlukan seseorang: MIDI sync IN, steps hold (Anda hanya dapat mematikan satu langkah), CV out.
Saya telah menerapkan jam KELUAR, tetapi entah bagaimana bermasalah. Saya mencoba dua pendekatan untuk ini (satu dengan dan satu tanpa interupsi pengatur waktu), tetapi keduanya tidak sempurna (atau gagal total). Jam MIDI harus benar-benar sempurna untuk bekerja dalam jangka panjang. Sinyal jam tetap dikirim dan Anda dapat menonaktifkannya langsung pada sketsa (lihat nanti untuk detailnya).
Perhatikan bahwa sequencer langkah ini adalah MIDI, atau digital jika Anda lebih suka, jadi agar dapat bekerja harus terhubung ke synth yang diaktifkan untuk menerima dan menafsirkan pesan semacam ini
Langkah 3: Perangkat Keras Dibutuhkan dan Membangun
Setelah semua kata-kata ini, mari bersenang-senang!
Kami akan menggunakan cara Arduino yang umum. Saya menggunakan Arduino MEGA karena jumlah input analog yang tinggi (kami ingin sebuah kotak yang penuh dengan tombol-tombol yang menonjol, bukan?!:)).
Secara khusus, Arduino MEGA dapat menangani 16 input analog (dengan beberapa penyesuaian perangkat keras, yaitu dengan muxing, Anda dapat meningkatkan ini tetapi kami tidak akan menggunakan rute ini di sini), jadi kami akan mengirim 48 pesan MIDI melalui 16 potensiometer. Setiap potensiometer kemudian akan mengontrol tiga parameter, satu untuk setiap "halaman"; halaman dipilih dengan tombol sakelar.
Daftar perangkat keras:
- 1x Arduino MEGA
- Potensiometer linier, putaran tunggal 10 K ohm 16x
- 16x kenop panci
- 4x tombol tekan sesaat
- 4x LED
- Resistor 6x220 ohm
- 1x konektor MIDI
- 1x kotak proyek ABS
Beberapa kabel, kawat solder dan enam - delapan jam waktu luang.
Saya menggunakan perfboard dan beberapa pin header untuk mewujudkan semacam perisai. Saya menyolder resistor dan mengarahkan kabel. Ini memiliki keuntungan membiarkan Anda mengeluarkan Arduino Anda dan menggunakannya untuk proyek lain (kita semua kehabisan papan Arduino di beberapa titik!). Lagi pula itu tidak wajib dan pendekatan bagus lainnya adalah dengan melepas pinheader arduino MEGA dan kabel solder langsung di tempatnya.
Saya menggunakan resistor 200 ohm sebagai pengganti resistor 220 ohm dan mereka tetap bekerja dengan sempurna; saya berani bertaruh bahkan resistor 150 ohm akan bekerja dengan baik (untuk komunikasi MIDI dan LED).
Untuk membentuk kotak, pertama-tama saya membubuhkan kertas perekat pada permukaan kotak, diukur di mana lubang harus dibor (saya memiliki 3 cm dari lubang ke lubang agar semua pot muat) membuat lubang pemandu dan kemudian diperbesar ke kanan ukuran untuk membiarkan benang pot atau benang kancing lewat dengan bor mini. Saya menghabiskan waktu kurang lebih 2 jam untuk menyelesaikan kotak tersebut. Saya menyadari lubang kecil juga, dan menempelkan LED di tempatnya.
Saya juga mengebor lubang untuk konektor MIDI OUT dan satu lagi untuk konektor daya arduino (saya menggunakan langsung konektor daya USB bawaan dan mengunci arduino MEGA dengan kuat di tempatnya).
PERINGATAN: SELALU SELALU kenakan pelindung mata dan tangan saat mengebor, bahan apa pun yang Anda kerjakan (plastik, kayu, logam, komposit… tidak masalah: Anda berisiko baik dalam hal perkakas listrik maupun serpihan material yang terkikis/dibakar dari alat bergerak).
Kemudian, saya meletakkan semua panci dan kancing dan menyolder komponen sesuai gambar terlampir. Cara efektif untuk mengurangi berat objek akhir (dan panjang kabel) adalah dengan merangkai semua pot baik pada jalur 5V maupun jalur GND.
Dan sebelum ada yang bertanya: Saya tahu, kotak yang saya gunakan jelek! Tapi itu gratis dan tidak ada yang mengalahkan gratis:)
Langkah 4: Pengkabelan
Menghubungkan semuanya semudah memasang potensiometer (x16), tombol tekan (x4) dan LED (x4) ke papan mikrokontroler Arduino. Semua dasar-dasar Arduino dibahas di sini:)
Terlampir adalah kabel. Perhatikan itu:
- Semua pin analog digunakan (dari A0 hingga A15), satu untuk setiap potensiometer;
- 4 pin digital (input) digunakan (dari D51, D49, D47, D45), satu untuk setiap tombol;
- 4 pin digital (output) lainnya digunakan untuk LED (D43, D41, D39, D37);
- Koneksi keluar MIDI sangat sederhana dan meminta dua resistor 220 ohm (tetapi hingga 150 ohm akan berfungsi)
- Tombol tidak meminta resistor pulldown karena sketsa mengaktifkan resistor pullup internal Arduino.
- Setiap LED meminta resistor pembatas arus (200-220 ohm boleh untuk LED hijau).
Saya menggunakan pin digital yang terdaftar untuk komoditas, tetapi itu bukan pin "khusus" (kami tidak menggunakan kemampuan pwm dari beberapa pin di sini atau beberapa fitur khusus pin lainnya): Anda dapat mengatur pin digital favorit Anda, tetapi ingat untuk memodifikasi kode yang sesuai atau tombol/LED Anda tidak akan berfungsi!
Harap perhatikan bahwa koneksi MIDI OUT dalam gambar adalah tampak DEPAN (bukan tampak belakang).
Langkah 5: Perangkat Lunak - Beberapa Tautan ke Teori
Saya tidak akan menjelaskan teori lengkap di balik pesan System Exclusive atau Control Change karena ada banyak artikel bagus di luar sana dan konyol untuk menulis ulang apa yang telah ditulis.
Hanya beberapa tautan cepat untuk implementasi Roland SysEx:
- https://erha.se/~ronny/juno2/Roland%20Juno%20MIDI%2… (BAHASA INGGRIS)
- https://www.2writers.com/eddie/tutsysex.htm (BAHASA INGGRIS)
- https://www.chromakinetics.com/handsonic/rolSysEx.h… (BAHASA INGGRIS)
- https://www.audiocentralmagazine.com/system-exclusi… (ITALIANO)
dan beberapa tautan untuk MIDI secara umum:
-
-
Langkah 6: Perangkat Lunak - Sketsa
Berikut terlampir adalah sketsa yang harus Anda unggah ke Arduino Mega Anda.
Saya mencoba untuk menjaga programmer sebagai "universal" mungkin, artinya saya mencoba untuk mengurangi potongan kode khusus synth. Saya mencoba untuk menjaga kode sesederhana mungkin. Menambahkan sequencer langkah membuat segalanya lebih kompleks dan kode lebih berantakan, bagaimanapun itu sangat berharga bagi saya. Menjaga kode "universal" adalah mengapa tata letak pengontrol begitu "acak": mengikuti urutan parameter implementasi MIDI yang ditentukan oleh Pabrikan synth dalam manual. Ini bisa membingungkan pada awalnya, tetapi Anda akan terbiasa dengan sangat cepat.
Kode/sketsa/firmware default mendukung "hanya" 48 parameter (masing-masing tiga halaman dengan 16 tombol) sehingga tidak mungkin untuk mengontrol semua pesan MIDI yang didukung oleh synth Anda (pikirkan di Access Virus atau Novation Supernova: mereka menerima lebih banyak atau kurang dari 110 parameter yang sesuai dengan MIDI). Anda dapat dengan mudah mengubah sketsa untuk mendukung lebih banyak pesan, jika diperlukan.
Sebenarnya pesan SysEx yang kompatibel dengan Roland Alpha-Juno, JX8P, Korg DW8000 dan Oberheim Matrix 6 didukung. Saya meninggalkan kode untuk pesan yang kompatibel dengan Juno 106 jika Anda membutuhkannya.
Untuk Matrix 6, saya harus memilih parameter yang akan dikontrol. Saya meninggalkan amplop ketiga, jalan kedua dan sesuatu yang lain. Matriks tidak dapat dikontrol melalui MIDI, jadi keluar juga. Anda memerlukan firmware yang diperbarui (ver. 2.14 atau lebih tinggi) dan Anda harus mengatur parameter "Master -> Sysex Enable" ke "3".
Jam keluar entah bagaimana buggy (jam harus benar-benar sempurna untuk bekerja sebagaimana mestinya dan mungkin dua pendekatan yang saya adopsi jika tidak efektif). Secara default dinonaktifkan.
Kode menyertakan komentar, jadi tidak perlu berkomentar lebih lanjut di sini.
Seperti biasa: ingatlah bahwa saya bukan pembuat kode dalam kehidupan nyata dan pasti ada cara yang lebih baik untuk membuat kode apa yang kita butuhkan di sini. Jika Anda seorang pembuat kode dan memiliki saran, Anda dipersilakan! Kirimkan saya variasi apa pun yang dapat meningkatkan efisiensi/efektivitas kode dan saya akan memasukkannya ke sketsa utama (dengan jelas mengutip Kontributor!).
Saya selalu mempelajari sesuatu yang baru dengan membaca beberapa kode pembuat kode yang baik;)
Langkah 7: Proyek Terkait
Sejauh yang saya tahu, tidak ada pengontrol dan sequencer parameter MIDI di luar sana (mungkin Behringer BCR2000 lama dengan firmware yang dimodifikasi?)
lagi pula, jika Anda tidak cenderung menyadari kotak seperti ini tetapi sangat tertarik dengan solusi murah untuk mengontrol parameter synth Anda dari jarak jauh, pertimbangkan alternatif lain ini:
- Editor CTRL MIDI: ini adalah program open source yang brilian dan gratis yang berjalan di win/Linux/mac yang dapat mengubah PC Anda menjadi pengontrol penuh untuk synths SysEx
- Konverter CC "junosex" David Konsumer: proyek ini meminta pekerjaan perangkat keras kecil di pihak Anda dan idenya bagus - konverter CC ke SysEx berbasis arduino yang memungkinkan Anda menggunakan pengontrol MIDI non-SysEx umum (yaitu keyboard master AKAI MPK) untuk berbicara dengan synth yang mendukung SysEx
Direkomendasikan:
Arduino MIDI Rhythm Section Sequencer: 8 Langkah (dengan Gambar)
Arduino MIDI Rhythm Section Sequencer: Memiliki mesin drum perangkat lunak yang bagus mudah dan murah hari ini tetapi menggunakan mouse membunuh kesenangan bagi saya. Inilah mengapa saya menyadari apa yang awalnya dimaksudkan sebagai perangkat keras 64 langkah MIDI drum sequencer murni yang mampu memicu hingga 12 elemen drum yang berbeda
Ubah Hampir Apa Saja Menjadi Pembicara: 13 Langkah (dengan Gambar)
Ubah Hampir Apa Saja Menjadi Speaker: Anda dapat mengubah hampir semua objek menjadi speaker dengan menggunakan disk piezo dan beberapa komponen tambahan. Meskipun ini mungkin tampak seperti sihir, sebenarnya ada penjelasan teknis yang agak sederhana. Dengan menggerakkan disk piezo menggunakan amplifier, disk
Spin Coater V1 (hampir Analog): 9 Langkah (dengan Gambar)
Spin Coater V1 (hampir Analog): Tidak semua peralatan dibuat tahan lama, saya seorang mahasiswa/peneliti yang mempelajari bahan film tipis untuk teknologi surya. Salah satu peralatan yang saya andalkan disebut spin coater. Ini adalah alat yang digunakan untuk membuat film tipis suatu bahan dari larutan cair
Patchfinder - sebuah MIDI SysEx dan Control Change Patcher Randomizer: 4 Langkah
Patchfinder - MIDI SysEx dan Control Change Patcher Randomizer: Baru-baru ini saya membeli beberapa Synth murah tua/vintage dari Roland: Alpha-Juno dan JX8P (well, Korg DW8000 juga setelah beberapa saat). Seperti yang mungkin Anda ketahui, mereka bukan yang paling mudah untuk membuat tambalan karena kurangnya "satu pot/slide
Timing Gear dan Chain Clock - Hampir Gratis!: 5 Langkah (dengan Gambar)
Timing Gear dan Jam Rantai - Hampir Gratis!: Semoga saat Anda mengubah pengaturan waktu mobil, Anda tidak membuang roda gigi dan rantai lama. Saya hampir melakukannya, tetapi istri saya menunjukkan ini kepada saya: http://www.uncommongoods.com/product/auto-timing-chain-and-gears-wall-clock $125 AS ditambah ongkos kirim.