Cara membuat synthesizer yang nyaman dengan tangan Anda sendiri

Sebagai seorang anak, saya punya piano, sungguh asli, Soviet, 300 kilogram, saya suka memetik di atasnya, dan bahkan memainkan sesuatu setelah lulus dari sekolah musik. Piano itu keren, asli, tetapi sama sekali tidak praktis. Dan untuk benar-benar mudah bagi jiwa, Anda juga memerlukan drum kit, lima tumit gitar listrik, klarinet, sitar dan sampel loop ...



Tentu saja, sekarang tidak perlu lagi membuat studio garasi dari apartemen untuk simpanan enam gaji, cukup untuk menginstal editor musik gratis di PC. Tapi, itu semua tidak nyaman.

Keyboard PC sama sekali tidak seperti instrumen keyboard, ini dia tidak begitu. Terlebih lagi, untuk mengajar anak ini sama sekali tidak cocok. Tampaknya tidak ada pilihan selain membeli synthesizer. Tetapi keraguan masih membuat saya terpisah.

Apa itu synthesizer? Perangkat besar dengan keyboard musik, yang di suatu tempat harus menempati tempat yang layak. Di mana akustik built-in, namun saya sudah memiliki penerima dengan speaker. Yang memiliki PC yang cukup built-in, tetapi saya memiliki PC yang bagus.

Ternyata selama 40 ribu saya membeli apa yang sudah saya miliki dalam kualitas terbaik, dengan pengecualian hanya keyboard. Ini hanya beberapa biaya irasional maksimal.

Mencari keyboard terpisah, saya menemukan kelas perangkat seperti USB MIDI Keyboard.
Bagi saya selalu tampak bahwa MIDI berasal dari bidang aktivitas musik profesional.
Tapi sekarang semua musik dibuat di PC, di tempat yang nyaman, yang berarti bahwa musisi membutuhkan keyboard musikal yang mudah masuk ke dalam ransel.

Ini dia!



Sebuah rencana segera terbentuk di kepalaku. Kami menghubungkan keyboard MIDI ke pusat media rumah berdasarkan Raspberry Pi 3, di mana synthesizer perangkat lunak berputar, memungkinkan siapa saja yang ingin memenuhi karya mereka berikutnya kapan saja. Pada keyboard MIDI ini, sebagai aturan, ada satu set tombol dan tombol tambahan yang diprogram untuk berbagai efek atau instrumen musik tambahan. Terlihat dan terdengar sangat keren!

Ada perangkat yang lebih besar dan lebih kecil, ada yang lebih mahal dan sedikit lebih murah. Saya memilih opsi untuk sekitar 5 sput. Dia memiliki dua oktaf, tombol berukuran normal, tombol untuk penabuh genderang, tombol tuning, hanya itu yang bisa diimpikan oleh musisi elektronik pemula.

Saya tidak spesial dalam membuat musik di PC, jadi sulit mencari cara untuk mengimplementasikan ide-ide saya. Informasi harus dikumpulkan sedikit demi sedikit. Teka-teki secara bertahap mulai terbentuk dan ternyata untuk mengumpulkan solusi yang berfungsi, yang saya bagikan dengan Anda. Anehnya, dalam distribusi Raspbian / Debian standar, semuanya ditemukan yang Anda butuhkan, Anda bahkan tidak perlu menghubungkan repositori eksternal.

Fluidsynth digunakan sebagai sequencer (aplikasi yang memainkan file MIDI).
Keyboard MIDI segera terdeteksi melalui ALSA dan tersedia untuk koneksi ke sequencer.
Untuk memutar suara berbagai instrumen, buka database sampel dalam format SoundFont2. Untuk memulai, instal semuanya.

sudo -s apt-get update apt-get -y install alsa-utils fluid-soundfont-gm fluidsynth 

Kami menghubungkan keyboard MIDI ke Raspberry dan memulai sequencer dalam mode server:

 fluidsynth -i -s -a alsa -g 3 /usr/share/sounds/sf2/FluidR3_GM.sf2 

Kami menjalankan perintah:

 aconnect -o 

Hasilnya, kita akan melihat daftar klien MIDI yang tersedia:

 client 14: 'Midi Through' [type=kernel] 0 'Midi Through Port-0' client 20: 'VMini' [type=kernel] 0 'VMini MIDI 1 ' 1 'VMini MIDI 2 ' client 128: 'FLUID Synth (1628)' [type=user] 0 'Synth input port (1628:0)' 

Di sini, penting bagi kita untuk mengingat nomor-nomor keyboard dan sequencer klien, dan kemudian menghubungkannya dengan perintah:

 aconnect 20:0 128:0 

Sekarang kita siap memainkan Yamaha Piano (ini adalah instrumen default). Baca manual fluidsynth , ada banyak perintah menarik di sana, misalnya, untuk mengubah instrumen menjadi drum atau angin, atur jumlah reverb atau chorus.

Mari kita buat synthesizer perangkat lunak kita nyaman. Agar tidak menyambungkan keyboard secara manual ke sequencer setiap waktu, kami akan menulis iblis sederhana yang akan melakukan ini saat startup secara otomatis.

 cat > /etc/init.d/fluidsynth << EOF #!/bin/bash ### BEGIN INIT INFO # Provides: fluidsynth # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Fluidsynth deamon to play via MIDI-keyboard ### END INIT INFO startDaemon() { sleep 30s && fluidsynth -i -s -a alsa -g 3 --load-config=/home/osmc/midi-router >/var/log/fluidsynth & sleep 60s && aconnect 20:0 128:0 & } stopDaemon() { pkill -9 fluidsynth &> /dev/null } restartDaemon() { stopDaemon startDaemon } case "$1" in start) startDaemon ;; stop) stopDaemon ;; restart) restartDaemon ;; status) ;; *) startDaemon esac exit 0 EOF 

Daftarkan daemon untuk autorun:

 chmod 755 /etc/init.d/fluidsynth update-rc.d fluidsynth defaults 

Harap dicatat bahwa sekarang saat startup file konfigurasi (/ home / osmc / midi-router) yang berisi perintah yang mengubah keyboard kita menjadi synthesizer nyata ditransfer ke sequencer.

Ini masalahnya. Setiap tombol dan putaran pada keyboard mengirimkan acara tertentu, dengan nomornya sendiri. Seperti yang saya pahami, tidak ada standar khusus, sehingga setiap produsen melakukan apa yang diinginkannya. Sebagai contoh, saya ingin kunci kotak terdengar drum, sisa tombol untuk bermain piano, tombol-tombol untuk mengontrol volume, gema dan paduan suara.

Jadi, saya perlu memetakan kode acara dari keyboard ke instrumen yang berbeda, dan kode dari pegangan ke kode yang dipahami oleh sequencer. Dalam fluidsynth, ini dilakukan menggunakan router. Perintah-perintah inilah yang terkandung dalam file konfigurasi.

Berikut adalah contoh file konfigurasi saya, dengan komentar tentang apa fungsinya.

 cat > /home/osmc/midi-router << EOF #     ,  -    load /usr/share/sounds/sf2/FluidR3_GM.sf2 load /home/osmc/241-Drums.SF2 #       select 1 2 128 0 select 2 1 0 0 #       0 #          router_begin note router_chan 0 0 0 1 router_par1 36 48 1 0 router_end #          router_begin note router_chan 0 0 0 2 router_par1 0 35 1 0 router_end router_begin note router_chan 0 0 0 2 router_par1 49 255 1 0 router_end #      ,   , #         fluidsynth router_begin cc router_chan 0 0 0 2 router_par1 14 14 0 98 router_end router_begin cc router_chan 0 0 0 2 router_par1 15 15 0 11 router_end router_begin cc router_chan 0 0 0 2 router_par1 16 16 0 91 router_end router_begin cc router_chan 0 0 0 2 router_par1 17 17 0 93 router_end #     0, #      #      cc 0 7 0 EOF 

Untuk mengetahui kode apa yang dihasilkan perangkat Anda, Anda perlu menggunakan utilitas ini:

 aseqdump -p 20:0 

Dia mendengarkan dan menampilkan acara dari keyboard MIDI di konsol. Tekan tombol atau putar kenop dan Anda akan melihat jenis, saluran dan kode acara. Anda dapat memprogram keyboard Anda seperti yang Anda inginkan, dan tidak dengan cara para insinyur yang mengembangkan synthesizer tertentu muncul. Untuk itu banyak terima kasih kepada para pengembang fluidsynth, alsa, SoundFont2, Raspberry dan V-Mini.

By the way, topik ini dengan synthesizer DIY tercermin dalam beberapa penemuan, saya sarankan untuk studi: sekali dan dua kali .

Source: https://habr.com/ru/post/id409123/


All Articles