Penulis Instructables di bawah nama panggilan rgco datang dengan synthesizer 1.5-octave empat suara Arduino Uno. Sebagai perbandingan, penyesuai kanak-kanak yang luas yang berbeza antara satu sama lain hanya dalam reka bentuk dan dibuat oleh cip yang sama adalah tiga suara. Benar, mereka secara automatik boleh mengiringi muzik dengan irama, menghafal melodi satu suara dan meniru suara haiwan. Tetapi kemudian buatan sendiri kedengarannya lebih baik. Mengapa?
Ini semua mengenai parameter. Kekerapan persampelan 31 kHz, 9-bit, 4 suara, sintesis FM dengan sapu pelbagai masa, sampul surat ADSR, 12 instrumen maya, 18 kekunci yang bersaiz 1.5 oktaf.
Tuan itu menyusun litar sintesis di Fritzing:
Di dalamnya, ia menyusun lokasi komponen pada papan roti jenis roti dan sambungan di antara mereka:
Dan mengumpul skema dalam kehidupan sebenar:
Hanya "tuangkan dan gunakan" adalah perkara paling mudah yang boleh anda lakukan dengan reka bentuk. 18 kunci (dari SEBELUM oktaf keempat ke FA kelima) - untuk bermain, kesembilan belas beralih instrumen maya dalam gelang: piano, xylophone, gitar, cincin, loceng, funky, vibrato, logam, biola, bass, sangkakala, akordion. Sifat bunyi itu dipengaruhi oleh tempoh ketukan kekunci, tetapi bukannya usaha, tidak seperti penyegerakan profesional. Tetapi pemaju mahu anda mencuba pengaturcaraan alat maya anda juga. Setiap daripada mereka diberikan oleh sepuluh parameter. Penyihir memberitahu anda parameter apa yang ia bergantung kepada.
ketenangan - kelantangan
Sekiranya parameter ini kurang dari 64, kelebihan beban dan penyimpangan yang berkaitan dikecualikan. Tetapi jika anda mempraktikkan alat maya seperti itu yang tidak berbunyi pada jumlah maksimum untuk jangka masa panjang, nilai parameter ini mungkin melebihi 64, kerana kesemua empat suara pada masa yang sama bunyi tidak senonoh.
pitch0 - pitch shift
Julat ini sepadan dengan yang di atas, jika anda menetapkan parameter ini kepada 12. Kurangkan bergerak ke bawah, naikkan. Zero bersesuaian dengan pergeseran ke bawah tepat satu oktaf, 24 - tepat tepat satu oktaf.
ADSR_a - kadar membunuh volum dari sifar hingga maksimum
Yang lebih kecil, semakin perlahan.Sebagai contoh, 8192 sepadan dengan 4 ms, 256 hingga 128 ms.
ADSR_d - kelajuan untuk menurunkan volum dari maksimum kepada yang ditentukan oleh parameter ADSR_s.
Prinsipnya sama.
ADSR_s - nilai yang jumlahnya berkurangan apabila kunci ditekan untuk jangka masa yang panjang
Contohnya, 256 - jumlahnya tetap maksimum sepanjang masa sementara kunci itu dipegang. 192 - jumlah turun kepada 80 peratus dan masih kekal sementara kunci ditahan. 0 - kelantangan berkurangan kepada sifar, walaupun kunci ditekan.
ADSR_r - kelajuan untuk mengurangkan kelantangan kepada sifar selepas melepaskan kunci
Prinsipnya adalah sama dengan parameter ADSR_a dan ADSR_d.
FM_inc - nisbah frekuensi modulasi ke nada
Dengan nilai 256, nisbah ini ternyata menjadi 1: 1, dengan 512 - 2: 1, dengan 128 - 1: 2, sisanya adalah dengan analogi. Jika parameter ini ditetapkan kepada berganda sebanyak 64, bunyi itu akan menjadi anharmonik.
FM_a1 - julat frekuensi modulasi pada permulaan nota
256 sepadan dengan pelbagai harmonik. Dengan penurunan, nada lebih bersih, dengan peningkatan harmonik menjadi lebih.
FM_a2 - modulasi kekerapan menyapu pada akhir nota
Prinsipnya sama. Bagi kebanyakan instrumen yang sebenar, harmonik merosakkan lebih cepat daripada nada asas. Sekiranya anda melakukan sebaliknya, anda akan mendapat bunyi luar biasa.
FM_dec - kelajuan peralihan pelbagai modulasi kekerapan dari satu set oleh FM_a1 kepada satu set oleh FM_a2
Prinsipnya adalah sama dengan parameter ADSR_a, ADSR_d dan ADSR_r.
Kekerapan PWM sebanyak 31,250 Hz diperoleh dengan membahagikan frekuensi jam (16 MHz) sebanyak 512. Program ini direka sedemikian rupa sehingga acara dikaitkan dengan masa tanpa gangguan. Sebaliknya, sedikit pemasa melampau terlibat. Agar program itu dapat menguruskan untuk melakukan semua yang diperlukan, hanya bilangan bulat panjang 8 dan 16 bit yang digunakan. Gelombang sinus dibentangkan dalam bentuk jadual nombor 8-bit. Operasi tambahan - membaca kata kunci, menukar instrumen maya, memilih suara, mengira nota parameter yang berubah dalam masa - diedarkan di antara 15 prosedur, yang mengambil 0.48 ms untuk diselesaikan. Pada masa ini, beberapa operasi dilakukan dengan ketepatan 32-bit, yang diperlukan untuk membiak dua nombor biner 16-bit.
Gelombang sinus mudah terdengar membosankan kerana tidak ada harmonik dalam spektrumnya. Sintesis FM membolehkan anda menerima mereka dan menukar spektrum mereka dari semasa ke semasa, meniru bunyi instrumen sebenar. Frekuensi pelbagai memberikan bunyi anharmonik yang berlaku, contohnya, dalam loceng. Peranti ini juga meniru perubahan spektrum yang wujud dalam instrumen sebenar dari masa ke masa, apabila sesetengah harmonik mereput lebih cepat daripada yang lain.