Saya melakukan sedikit pencarian di situs ini tetapi yang mengejutkan, saya tidak menemukan banyak informasi yang relevan, dan pengetahuan saya tentang DSP sangat terbatas.
Tujuan saya cukup sederhana: Saya ingin memprogram reverb algoritmik dalam C ++ yang terdengar sangat bagus. Atau lebih tepatnya, opsi terbaik adalah membiarkan pengguna akhir memilih trade-off antara kualitas dan penggunaan cpu.
Dari apa yang saya temukan sejauh ini adalah bahwa, untuk membuat reverb, Anda harus memasukkan sinyal kering ke dalam algoritma refleksi awal, kemudian ke algo refleksi akhir. Apakah ini benar ?
Sekarang, saya menemukan artikel yang luas di bagian akhir refleksi, menggunakan Feedback Delay Network ( MENGURANGI PERSYARATAN REVERBERASI ARTIFIKIAL MENGGUNAKAN JARINGAN TAMPAKAN PEMBAYARAN UMPAN BALIK WAKTU-VARIAN ). Dari apa yang saya baca, FDN adalah kualitas tinggi, tidak terlalu ekspansif (cpu wise) cara mensimulasikan refleksi akhir. Selanjutnya, saya kira Anda dapat mengontrol kualitas / biaya cpu trade-off dengan mengubah jumlah garis penundaan.
Namun saya sama sekali tidak tahu bagaimana memprogram refleksi awal algo (ingat? Saya benar-benar bodoh dalam domain DSP).
Kedengarannya logis bagi saya untuk menggunakan semacam penundaan multi, yang memiliki keuntungan untuk mudah diprogram dan komputasi murah. Tapi itu terdengar terlalu sederhana untuk menjadi kenyataan.
Lebih lanjut, naluri saya memberi tahu saya bahwa satu atau beberapa filter harus dimasukkan di suatu tempat di jalur sinyal.
Bisakah seseorang memperjelas topik ini sedikit untuk saya?
Dua catatan:
- Saya tidak mengejar reverb konvolusi sama sekali. Saya tidak benar-benar peduli dengan realisme reverb, tetapi saya ingin yang bagus, tweakable, tidak reverb lapar-cpu.
- Juga, bagian pengkodean bukan yang membuat saya khawatir, saya akan bertanya di stackoverflow sebaliknya. Ini benar-benar bagian DSP, dan hanya bagian itu, yang saya cari :)
sumber
Membuat reverb yang terdengar bagus TIDAK mudah. Jaringan keterlambatan umpan balik jelas merupakan cara yang harus dilakukan. Algoritma Schroeder asli dengan semua lintasan dan filter sisir mengalami "penipisan spektral" yang membuatnya terdengar metalik. Anda perlu menekan atenuasi tergantung frekuensi pada garis tunda berbeda yang mewakili waktu gema (sebagai fungsi frekuensi). Refleksi awal dapat dilakukan melalui jalur delay yang disadap juga dengan beberapa pelemahan tergantung frekuensi dan beberapa pemakai untuk mende-korelasikannya. Melakukan stereo juga memerlukan beberapa cara de-korelasi.
Ada implementasi open source yang cukup bagus, ini disebut GVerb dan digunakan dalam, misalnya, Audacity. Pencarian google akan membawa Anda ke salinan kode sumber (legal).
sumber