Saya mengembangkan perangkat lunak emulasi synthesizer analog. Saya mencoba memodulasi nada osilator menggunakan LFO. Untuk setiap sampel yang dimasukkan ke sound system komputer, saya menghitung frekuensi yang akan dimasukkan ke osilator utama seperti ini (pseudocode):
osc_frequency = note_frequency * (1 + tuning) * (1 + lfo_y * lfo_mod_depth)
Variabel dalam pernyataan ini dijelaskan sebagai berikut:
- note_frequency = frekuensi not untuk dimainkan dalam Hz
- tuning = osilator fine-tuning dalam persen dari pitch yang dimainkan (mis: -0,02 = detune sebesar 2%)
- lfo_y = nilai y saat ini dari bentuk gelombang lfo (berkisar dari -1 hingga 1)
- lfo_mod_depth = kedalaman / intensitas efek untuk diterapkan ke osilator dalam persen
Namun, perhitungan ini tidak menghasilkan hasil yang diinginkan. Saya berharap untuk mendengar nada memodulasi ke atas dan ke bawah, terkunci di sekitar frekuensi tengah (nada dimainkan). Apa yang saya dapatkan adalah efek modulasi yang menyebabkan nada "lari"; Saya tidak tahu persis apa yang terjadi, tetapi ini terdengar seperti ini:
- Intensitas modulasi meningkat dari waktu ke waktu (tanda frekuensi tinggi / rendah yang dicapai oleh modulasi semakin tinggi / semakin rendah, semakin lama nada tersebut ditahan)
- Sementara intensitas modulasi tetap konstan dari waktu ke waktu, frekuensi pusat meningkat sementara modulasi berosilasi di sekitarnya
Apakah saya menggunakan pendekatan yang benar atau tidak? Jika tidak, apa pendekatan yang tepat? Setiap bantuan dengan ini sangat kami hargai.
sumber
Jawaban:
Seperti yang dikatakan oleh Jason, ini mungkin karena Anda tidak mengimplementasikan osilator dengan benar - misalnya dengan mengalikan frekuensi berdasarkan waktu alih-alih mengintegrasikannya.
Perhatikan juga - dan ini tidak terkait dengan topik Anda tetapi benar-benar layak untuk diamati - bahwa rumus Anda untuk modulasi frekuensi menerapkan perilaku yang sangat berbeda dengan kebanyakan synthesizer, dan akan terdengar aneh bagi seorang musisi.
Misalnya, jika lfo_y berosilasi antara -1 dan 1; lfo_mod_depth adalah 0,5; dan jika note_frequency sama dengan 220 Hz, osc_frequency akan menyapu antara 110 dan 330 - artinya antara -1 oktaf dan +1 kelima di sekitar note. Jadi modulasi nada akan tampak terpusat pada skala hertz, tetapi tidak akan terpusat pada skala musik perseptual.
Perilaku yang benar adalah memiliki sesuatu seperti:
Kemudian:
Ini disebut "FM eksponensial", dan ini adalah norma pada synthesizer. Pada synthesizer analog, ini diterapkan dengan menjumlahkan sinyal LFO ke CV yang mengenai konverter eksponensial dari VCO. Pada synthesizer digital, ini diterapkan dengan menerapkan modulasi pada representasi pitch resolusi tinggi internal yang masih dalam skala musik - sebelum mengkonversi ke frekuensi atau fase kenaikan.
sumber