Daftar Isi:

Arduino MIDI Rhythm Section Sequencer: 8 Langkah (dengan Gambar)
Arduino MIDI Rhythm Section Sequencer: 8 Langkah (dengan Gambar)

Video: Arduino MIDI Rhythm Section Sequencer: 8 Langkah (dengan Gambar)

Video: Arduino MIDI Rhythm Section Sequencer: 8 Langkah (dengan Gambar)
Video: 8 step keyboard sequencer 2024, Juli
Anonim
Pengurut Bagian Irama MIDI Arduino
Pengurut Bagian Irama MIDI Arduino
Pengurut Bagian Irama MIDI Arduino
Pengurut Bagian Irama MIDI Arduino
Pengurut Bagian Irama MIDI Arduino
Pengurut Bagian Irama MIDI Arduino

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 64 langkah perangkat keras MIDI drum sequencer murni yang mampu memicu hingga 12 elemen drum (bagian) yang berbeda, tetapi kemudian berkembang dalam sequencer bagian ritme…

… di sana kita pergi!

Langkah 1: Cara Kerjanya

Perangkat keras ini tidak dapat menghasilkan suara sendiri, tetapi hanya mengurutkan perangkat keras eksternal melalui MIDI. Ini berarti Anda memerlukan generator suara dari suara drum Anda (sampeler atau synthesizer drum atau PC dengan perangkat lunak drum favorit Anda atau apa pun yang Anda inginkan) yang dapat dipicu oleh pesan nada MIDI.

Ini terutama terdiri dari matriks tombol 4 x 4 (dengan LED), satu untuk setiap langkah bilah. Seluruh urutan 64 langkah dibuat dengan 16 langkah dikalikan 4 batang. Setiap langkah adalah 1/16 dari sebuah catatan.

Ada dua mode operasi: mode langsung dan mode edit.

Dalam mode edit, Anda sebenarnya dapat mengedit urutan langkah demi langkah dengan menentukan drum mana yang akan dimainkan di setiap langkah.

Instrumen perangkat keras eksternal Anda ("drum") dipicu dengan mengirimkan pesan "note on" MIDI untuk "nomor not MIDI" yang berbeda pada nomor saluran "10". Secara default nomor catatan ini adalah

drum #1 (yaitu tendangan) -> not MIDI nomor "60"

drum #2 (yaitu snare) -> not MIDI nomor "62"

drum #3 (yaitu bertepuk tangan) -> MIDI note nomor "64"

drum #4 (yaitu Hihat) -> not MIDI nomor "65"

drum #5 -> not MIDI nomor "67"

drum #6 -> not MIDI nomor "69"

drum #7 -> not MIDI nomor "71"

drum #8 -> not MIDI nomor "72"

drum #9 -> not MIDI nomor "74"

drum #10 -> not MIDI nomor "76"

drum #11 -> not MIDI nomor "77"

drum #12 -> not MIDI nomor "79"

Anda dapat mengubah nilai-nilai ini (dan saluran MIDI) dalam sketsa jika Anda mau.

Dalam mode langsung dengan menekan tombol langkah, Anda dapat memainkan drum secara langsung yang terkait dengan setiap langkah dengan mengirimkan pesan MIDI melalui serial. Anda dapat merekam secara langsung penekanan tombol dan/atau pesan MIDI yang masuk.

Baik dalam mode live maupun mode edit, Anda dapat membisukan (atau membunyikan) drum, "memutar putar" drum yang sedang aktif, dan "mengayunkan" urutan Anda.

Bagian ritme?

Sebagian besar sequencer drum adalah pemicu bagian drum MIDI murni, dengan nomor not MIDI tetap untuk setiap suara drum. Dalam hal ini, kami memiliki "sequencer bagian ritme" lebih dari sekadar "sequencer drum" murni karena Anda bahkan dapat mengurutkan synthesizer.

Baca PANDUAN MULAI CEPAT untuk detail selengkapnya dan daftar fitur lengkap.

Langkah 2: Perangkat Keras

Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras

Proyek ini diwujudkan di sekitar papan Arduino DUE. Saya mencoba untuk menjaga perangkat keras sesederhana mungkin, yaitu dengan menghindari penggunaan driver LED. Arduino DUE kemungkinan bukan papan yang paling tepat untuk menangani sekelompok LED tanpa driver LED karena batas arus keluarannya (dari 5 mA hingga 15 mA, tergantung pada pinnya), tetapi ini adalah Arduino tercepat dan pengaturan waktu adalah segalanya saat menangani dengan sequencer. Jadi, perlu diingat bahwa konfigurasi perangkat keras INI kemungkinan mendorong Arduino Anda karena batasnya dan dapat merusaknya dalam jangka panjang.

Ini dikatakan, perangkat keras terutama 16 tombol, 16 LED (satu untuk setiap langkah) sequencer dengan 5 tombol tambahan untuk fungsi dan 3 potensiometer. Saya juga menambahkan LED merah setelah menambahkan fungsi perekaman langsung.

Berikut adalah bill of material:

- 1x Arduino DUE

- 16x tombol tekan non-latching sesaat dengan LED terintegrasi (Anda dapat menggunakan LED eksternal jika Anda mau, tetapi ingat untuk menggunakan LED berdaya rendah!!)

- 1x LED merah (daya rendah!)

- 5x tombol tekan sesaat yang tidak menempel

- 3x 10K putaran tunggal, linier, potensiometer

- 3x 6,5 mm panel mount mono jack perempuan

- 1x case plastik (saya menggunakan case 190x140x70 mm)

- 2x konektor soket pemasangan panel perempuan DIN 5-pin (MIDI)

- 1x papan perf 70x90 mm dua sisi;

- Strip header pin baris tunggal 2x 40 pin (2,54 mm), lebih baik jika berlapis emas

- 1x H11L1 optocoupler

- 1x 1N4148 dioda

- resistor 23x 1000 ohm

- Resistor 3x 220 ohm

- 2x BC547 transistor pnp

…kawat solder, beberapa kabel, stasiun solder, alat bor… dan waktu luang:)

Harap perhatikan bahwa tombol-tombol pada gambar telah diganti dengan tombol tekan jenis lain (bahkan lebih murah …) karena pantulan yang keterlaluan …

Waktu yang dibutuhkan untuk menyelesaikan proyek: 8 - 10 jam

PERINGATAN: SELALU kenakan kacamata pelindung dan sarung tangan saat mengebor! Serpihan bahan panas dapat diproyeksikan ke mata Anda atau bersentuhan dengan kulit Anda dan menyebabkan luka bakar atau bahkan kerusakan yang lebih serius pada Anda atau orang-orang di sekitar Anda

Langkah 3: Pengkabelan

kabel
kabel
kabel
kabel
kabel
kabel

Tombol langkah terhubung langsung ke pin Arduino dari 22 (langkah 1) hingga 37 (langkah 16). Tombol ground dirantai daisy dan terhubung ke ground Arduino DUE. Tidak perlu resistor pullup atau pulldown karena resistor pullup terintegrasi Arduino adalah perangkat lunak yang diaktifkan (lihat sketsa).

Hal yang sama berlaku untuk 5 tombol tambahan (pin Arduino 2, 3, 4, 5 dan 6), yang digunakan untuk fungsi selain langkah. Saya juga menempatkan konektor jack female 6,5 mm secara paralel dengan tombol "start" agar dapat memutar dan menghentikan urutan saya dari jarak jauh.

LED terhubung ke ground (daisy chain) dan pin Arduino DUE dari 38 (langkah #1) hingga 53 (langkah #16) secara seri dengan resistor 1K ohm masing-masing untuk membatasi pengurasan arus dan mempertahankan mikrokontroler.

Potensiometer terhubung seperti yang ditunjukkan pada gambar terlampir. Perhatikan bahwa tegangan referensi adalah 3.3V, bukan 5V. Input yang digunakan adalah A0, A1 dan A2.

Saya juga menerapkan dua output pemicu untuk sinyal arpeggio, seperti yang diperlukan untuk arpegiate synth 80-an seperti Korg Polysix dan Roland Juno 6/60. Mereka terhubung ke pin A3 dan A4, tetapi Anda dapat menggunakan pin digital jika Anda lebih suka menjadi sinyal digital. 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 akan memerlukan rangkaian sakelar pnp sederhana (lihat skema terlampir).

Sirkuit MIDI IN dan OUT digambarkan dalam gambar terlampir. Perhatikan bahwa, berbeda dengan kebanyakan arduino, Rx1 dan Tx1 digunakan secara default pada papan DUE, bukan Rx0 dan Tx0. Ini bagus karena Anda dapat mengunggah sketsa Anda tanpa perlu memutuskan Rx setiap saat. Perhatikan juga bahwa saya telah menggunakan optocoupler H11L1 karena saya tidak dapat menjalankan sebagaimana mestinya 6N138 umum dalam batas Arduino DUE 3.3V.

Langkah 4: Perangkat Lunak

Sketsa telah ditulis di dalam Arduino IDE dan harus diunggah ke papan Arduino DUE Anda. Saya tidak akan membahas detail tentang cara mengunggah sketsa ke arduino DUE Anda. Jika ini adalah pengalaman pertama Anda dengan Arduino DUE baca ini. Jika ini adalah pengalaman pertama Anda dengan arduino IDE, silakan baca ini juga.

Anda dapat mengunduh firmware yang diperbarui DI SINI (tautan github).

Sketsa bergantung pada perpustakaan MIDI FortySevenEffects yang sangat baik. Anda perlu menginstal perpustakaan di IDE arduino Anda.

Catatan keluar MIDI yang ditetapkan untuk setiap drum ditentukan oleh variabel drumNote[STEPS_NUM] dalam sketsa. Anda dapat mengubahnya sesuai keinginan Anda.

Nomor saluran keluar MIDI untuk drum diatur ke "10" secara default.

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 dengan saran apa pun, Anda dipersilakan! Kirimkan saya variasi apa pun yang dapat meningkatkan efisiensi/efektivitas kode dan saya akan memasukkannya ke sketsa utama (dengan jelas mengutip Kontributor!).

Langkah 5: Panduan Memulai Cepat

DRUM: SEKUENSI LANGKAH DEMI LANGKAH

Segera setelah Anda menyalakan sequencer Anda (atau mengatur ulang), urutan kosong akan dimuat. Sequencer melakukan booting dalam mode edit, dengan bilah pertama ditahan/dikunci dan drum pertama (yaitu tendangan) dipilih. Ini berarti bahwa dengan menekan tombol langkah apa pun, Anda akan segera menetapkan "tendangan" ke langkah-langkah itu. Volume drum yang akan dipicu diatur oleh posisi potensiometer "volume" saat menugaskan drum ke langkah. Dengan menekan kembali tombol langkah yang ditetapkan sebelumnya, Anda akan membatalkan penetapan drum saat ini pada langkah itu.

Jika Anda menekan tombol "mulai", Anda melihat LED Anda berjalan dari kiri ke kanan, atas ke bawah, memainkan "tendangan" setiap kali langkah tendangan dilewati.

Dengan terus menekan tombol "shift" Anda akan melihat LED langkah pertama pada baris pertama menyala (artinya drum pertama yang dipilih) dan LED langkah pertama pada baris keempat (artinya Anda terkunci pada bar pertama). Anda sekarang dapat mengubah drum yang ingin Anda urutkan dengan menekan tombol langkah lain sambil terus menekan "shift". Setelah memilih drum baru, lepaskan "shift". Semua LED akan mati (karena Anda belum menetapkan drum baru ke langkah apa pun) dan Anda dapat mulai menetapkan drum baru ke langkah. Ulangi untuk semua drum yang Anda butuhkan (hingga 12).

Sekarang Anda telah membuat pola yang bagus, terus tekan "shift" dan matikan langkah yang disorot di baris bawah (itu harus menjadi langkah pertama dari baris ke-4 jika Anda telah mengadopsi tata letak yang sama yang saya gunakan): Anda baru saja " unlocked" urutan yang sekarang akan melewati semua 4 bar. LED mentah bawah akan mulai "bergerak", menunjukkan bar mana yang sedang diputar (progresi bar). Anda akan melihat bahwa hanya ketika di bar pertama sebuah urutan akan dimainkan, dengan semua 3 bar lainnya tidak menghasilkan suara. Ini karena Anda telah menetapkan drum hanya ke bilah pertama, yang lainnya dibiarkan kosong. Anda dapat mengisinya dengan tangan (pilih bilah baru dengan menekan salah satu dari 4 tombol langkah terakhir sambil terus menekan "shift", pilih salah satu drum, isi langkah, dll. dll.) Atau salin dan tempel urutan bilah yang Anda buat ke semua bilah dengan memasuki mode edit (kunci kembali ke bilah pertama) dan tekan "rekam" (yang sekarang mengasumsikan fungsi "tempel") sambil terus menekan "shift". Lebih mudah dilakukan daripada dikatakan.

DRUM: MODE BERMAIN LANGSUNG

Saat startup sequencer dalam mode edit. Untuk keluar dari mode edit Anda harus terus menekan "shift" dan menekan tombol bar yang saat ini ditahan/terkunci (tombol langkah pada baris ke-4 dihidupkan). Ini akan mematikan LED dari bilah yang sebelumnya terkunci dan membuka kunci urutan. Anda sekarang dalam mode putar langsung.

Dalam mode putar langsung, dengan menekan tombol langkah apa pun, drum yang terkait dengan tombol itu akan dipicu.

Jika Anda ingin merekam urutan Anda secara langsung, mulailah urutannya dengan menekan "putar", lalu tekan tombol "rekam" (hanya dalam mode putar langsung). LED merah akan menyala. Permainan Anda pada matriks panel kontrol sequencer drum atau pesan masuk MIDI (yaitu dari keyboard MIDI eksternal) akan direkam.

Fungsi lainnya

Dengan menekan tombol "roll", drum yang sedang aktif akan dimainkan pada setiap langkah (dalam gulungan). Ini berfungsi baik dalam mode "langkah-demi-langkah" dan "putar langsung".

Dengan menekan tombol langkah apa pun sambil terus menekan tombol "mute", drum yang terkait dengan langkah itu akan dibisukan (atau dibunyikan). Ini berfungsi baik dalam mode "langkah-demi-langkah" dan "putar langsung".

Anda dapat menghapus urutan drum tertentu dengan menekan tombol langkah relatif sambil terus menekan tombol "REC".

Anda dapat menghapus seluruh urutan (soft reset) dengan terus menekan tombol "start" selama lebih dari 3 detik.

Anda dapat "mengayunkan" urutan Anda dengan memutar potensiometer "mengayun".

Anda dapat menonaktifkan/mengaktifkan gema MIDI dengan menekan tombol "mute" sambil terus menekan tombol "shift". Ketika gema MIDI diaktifkan (default), informasi apa pun yang ada di jack MIDI INPUT akan dikirim ke jack MIDI OUTPUT (hanya nada MIDI aktif, nada mati, pitch bend, aftertouch dan perubahan kontrol yang digemakan).

Baik input dan output jam MIDI diimplementasikan dan diaktifkan secara default. Jika tidak ada input jam yang diterima, tempo diatur dengan potensiometer khusus. Jika input jam MIDI diterima, tempo dihitung dari itu dan potensiometer tempo tidak akan merespons. Jam MIDI selalu dikirim ke MIDI keluar.

Langkah 6: Bagian Irama

Ide awalnya adalah sequencer drum MIDI 64 langkah "murni" untuk mengurutkan hingga 12 bagian drum independen. Setelah beberapa pengujian, saya perhatikan bahwa akan menyenangkan untuk mengontrol garis bass juga, dan saya menetapkan fitur variabel pitch-per-step hanya untuk drum terbaru. Setelah itu, saya memodifikasi kodenya lagi sehingga saya bisa mengubah nada di setiap drum dan mengontrol hingga 12 synthesizer. Revisi kemudian saya menambahkan polifoni (polifoni per-synth terbatas pada 3 secara default).

Untuk menyimpulkan:

- saat dalam mode LIVE, jika perekaman LIVE diaktifkan dan urutan dimulai, Anda dapat merekam pesan masuk MIDI note-on, secara polifonik. Info nada dan volume akan disimpan. Pitch tikungan dan info aftertoutch hilang. Pesan Perubahan Kontrol MIDI akan disimpan. Ingatlah bahwa Anda hanya memiliki satu slot CC per saluran, per langkah.

- Jika urutan dihentikan, Anda dapat merekam hingga 3 nilai nada (kord) ke langkah tertentu dari bilah tertentu dengan terus menekan tombol langkah tujuan dan menekan (secara bersamaan atau satu per satu) tombol yang diinginkan pada keyboard terhubung ke port MIDI IN.

Perhatikan itu:

- nada yang dipicu pada satu langkah "terbunuh" pada langkah berikutnya. Untuk menambah panjang nada, lakukan parameter "lepaskan" VCA pada synthesizer Anda.

- berbeda dengan drum, not tidak dapat dimainkan dalam bentuk gulungan dengan menekan tombol "putar".

- Saat merekam LANGSUNG, data saluran MIDI yang masuk disimpan dalam langkah "drum" relatif (saluran MIDI #1 -> "drum" #1 dan seterusnya).

Anda dapat menghapus urutan synth tertentu dengan menekan tombol langkah "drum" relatif sambil terus menekan tombol "REC". Menekannya lagi akan menghapus urutan drum juga. Jika urutan CC direkam, itu akan menjadi yang pertama dihapus, kemudian mengikuti urutan CC -> Synth -> Drum

Langkah 7: Pemicu Arpeggio

Synth pra-MIDI awal tahun 80-an sering kali dilengkapi dengan "input pemicu arpeggio". Dengan mengirimkan sinyal trigonometri 2,5 hingga 5,0 V (V-trig atau "pemicu tegangan") atau dengan membumikan input pemicu arpeggio (S-Trig atau "pemicu sakelar"), Anda dapat memberi tahu synthesizer untuk maju satu langkah pada urutan arpeggio. Ini bisa sulit untuk dikelola dengan sequencer tanpa pemicu khusus (terkadang "rimshot" terdengar dari tempat khusus / digunakan sebagai cara untuk synths V-trig) tetapi dengan papan mikrokontroler Anda dapat dengan mudah mengelola sinyal dan kontrol tersebut arpeggio synth Anda seperti yang dimaksudkan oleh pabrik.

Sequencer bagian ritme ini mencakup kemungkinan untuk memicu arpeggiator dari dua synthesizer yang berbeda, secara independen.

Penggunaannya sangat mudah: pilih drum 11 atau 12 (tekan langkah 11 atau 12 sambil menekan "shift") dan aktifkan langkah yang Anda inginkan agar arpeggiator bergerak satu langkah. Dengan cara ini Anda dapat "memprogram" 1/16 arpeggio reguler dengan panjang nada yang sangat ketat dengan mengaktifkan semua langkah, atau 1/8 dengan mengaktifkan setiap langkah lainnya. Selain itu, Anda dapat memprogram arpeggio yang lebih kompleks dengan mengaktifkan langkah-langkah yang mengikuti jalur yang tidak teratur.

Bergantung pada jenis sinyal pemicu yang didukung oleh synth yang ingin Anda kendalikan, Anda akan memerlukan modifikasi perangkat keras sederhana: dalam kasus V-trig (yaitu synths Roland) tempatkan resistor 1 Kohm secara seri dengan output pemicu arduino. Dalam kasus S-trig (yaitu synths Korg) gunakan skema yang dilampirkan pada langkah "pengkabelan" untuk pemicu sakelar yang aman.

Langkah 8: Jika Hal Tidak Bekerja…

Bahkan proyek yang relatif sederhana seperti ini kemungkinan besar tidak akan berfungsi 100% saat pertama kali Anda menyalakannya. Di sini, Sebagai contoh, kesesuaian antara tombol dan LED sangat penting, dan kabel yang tidak cocok akan membuat sequencer tidak berguna.

Untuk menguji semua komponen berbeda yang membentuk sequencer langkah, saya menulis sketsa pengujian sederhana (lihat lampiran).

Anda dapat mengunduh firmware uji terbaru DI SINI (tautan GitHub).

Sketsa tes berfungsi sebagai berikut:

- tekan tombol langkah: LED yang sesuai akan menyala dan nota MIDI pada saluran 10 akan dikirim ke output MIDI.

- tekan tombol fungsi: salah satu dari 5 LED pertama akan menyala.

- putar potensiometer: LED akan menyala sesuai (pot pertama -> baris LED pertama, pot kedua -> baris LED kedua, pot ketiga -> baris LED ketiga).

- jika not MIDI aktif diterima, LED pertama akan berkedip.

Ingatlah bahwa gema MIDI diaktifkan secara default. Ini berarti bahwa jika Anda memiliki loop MIDI antara synth dan MRSS, ini dapat menyebabkan masalah (saya sering mengalami pemicu nada ganda yang dapat diprediksi, tetapi juga nada yang sangat rendah dipicu dan keyboard bawaan yang umumnya tidak responsif dengan synths dengan MIDI bertindak sebagai MIDI Melalui … itu tergantung pada synth). Jika demikian, nonaktifkan gema MIDI dengan menekan tombol "mute" sambil terus menekan tombol "shift".

Direkomendasikan: