Apa kategori dasar operasi yang dilakukan pada sinyal audio untuk membuat suara yang menarik?

10

Saya tidak tahu apakah pertanyaan ini masuk akal karena saya sangat baru di dsp.

Dalam perampokan terbatas saya ke audio dsp saya temui:

  1. Modulasi frekuensi
  2. Modulasi Amplitudo
  3. Sintesis Aditif
  4. Sintesis Subtraktif

Pertanyaan saya adalah: apakah ini kategori dasar utama manipulasi sinyal (khusus untuk audio)?

Dengan kata lain, dapatkah semua efek dan hal-hal mewah yang dapat dilakukan oleh FL Studio dengan serangkaian penuh plugin, dipecah menjadi serangkaian dan kombinasi dari 4 operasi di atas? Atau ada banyak lagi? Dapatkah DAW modern dengan plugin secara teoritis dipecah menjadi kategori apa pun dengan cara ini? Apakah 4 kategori di atas bahkan masuk akal dalam diri mereka sendiri ?!

Sedikit latar belakang: Pada dasarnya saya mencoba membuat synthesizer / editor audio yang sangat dasar (tetapi sangat fleksibel) sebagai proyek untuk mempelajari pemrograman dan audio dsp. Menggunakan java saya mulai dengan meniru kelas synthersizer-ish dunia nyata dasar, memanggil hal-hal seperti Oscillator dan LFO dan sejenisnya, tetapi setiap kali saya belajar sesuatu yang baru, saya menemukan diri saya harus menulis ulang semuanya agar sesuai dengan konsep baru ke dalam program.

Saya mencoba untuk memulai lagi sekarang dan datang dengan objek dasar dan struktur program. Untuk itu saya perlu tahu bagaimana saya harus membiarkan benda-benda ini berinteraksi dll ...

Terima kasih!

EDIT * * *

Terima kasih atas komentar dan jawaban yang bermanfaat. Saya menyadari bahwa saya mungkin telah meremehkan sisi dsp dari hal-hal dan saya tidak akan dapat hanya membuat template dasar & struktur untuk synthesizer sederhana dan kemudian hanya mengembangkannya / membangun di atasnya. Saya mungkin harus berulang kali membangun kembali & lagi saat saya mempelajari hal-hal baru & cara yang "tepat" untuk melakukan sesuatu ... Itu akan memakan waktu lebih lama, tapi mungkin saya akan belajar lebih banyak? Juga maaf saya tampaknya tidak memiliki cukup tenaga untuk memperbaiki siapa pun ... secepat yang saya bisa, saya akan melakukannya.

EDIT * EDIT ***

Saya harus menambahkan bahwa sedikit googling mengungkapkan panduan dasar ini untuk "jenis sintesis" yang menurut saya relevan dan menarik.

kiman
sumber
Apakah Anda ingin latar belakang teoretis tentang teknik sintesis, atau Anda menginginkan sesuatu yang lebih seperti ini (yaitu metode umum yang digunakan dalam praktik)? dsp.stackexchange.com/questions/192/…
datageist
1
Jika saya meringkas semua manipulasi suara yang mungkin dalam beberapa kategori mungkin, saya akan menyebutkan transformasi linear dan non-linear. Tetapi itu terlalu umum dan luas untuk dapat diimplementasikan.
Alexey Frunze
@datageist - saya kira saya akan membutuhkan keduanya! Tapi itu tautan yang sangat berguna, terima kasih.
kiman
@Alex Itu sangat umum, tetapi ini adalah titik awal konseptual dan setidaknya saya sekarang tahu bahwa saya agak menggonggong pohon yang salah.
kiman
dapatkan buku Will Pirkle, Merancang Perangkat Lunak Synthesizer Plug-Ins di C ++: Untuk RackAFX, VST3, dan Unit Audio. Anda akan benar-benar membuat synthesizer dan belajar sepanjang jalan alih-alih mencoba mencari tahu semuanya sendiri.
panthyon

Jawaban:

9

Haikamut(t)sayan(t)

Tidak ada mesin ajaib sekali pakai di jantung semua efek audio yang disediakan oleh perangkat lunak produksi musik. Tetapi jika Anda melihat kode sumber serangkaian besar efek audio dari pengembang DSP, berikut adalah beberapa "blok bangunan" yang akan diperhitungkan di kelas mereka sendiri dan yang dibagikan oleh banyak efek yang berbeda. Saya tidak menyiratkan bahwa ini membentuk dasar yang baik untuk mengkategorikan efek; tetapi dari sudut pandang implementasi, blok-blok itu sangat penting:

  • Filter biquad.
  • Garis penundaan pecahan.
  • Mesin konvolusi, untuk konvolusi sinyal input yang cepat dengan respons impuls yang berubah-ubah.
  • Waveshaper (penerapan fungsi non-linear ke sinyal input dalam time-domaine).
  • Blok penyusun synthesizer: osilator, LFO, amplop ADSR.
  • Detektor sinyal: pengikut amplop, ekstraktor f0.

Dengan blok itu Anda dapat membangun:

  • Filter seperti synth atau wah-wah: satu atau dua biquads
  • Auto-wah: pengikut amplop + amplop + biquad
  • Flanger / Phaser: garis LFO + delay
  • Chorus: LFO + garis tunda
  • Algoritma reverb: garis tunda (array filter sisir paralel dan serial)
  • Konvolusi reverb: konvolusi
  • Spatializer: konvolusi (dengan tanggapan impuls HRTF)
  • Simulasi ampli gitar: konvolusi, pemecah gelombang
  • Distorsi, Fuzz: gain + waveshapper
  • Bitcrusher (quantizer): kasus waveshapper tertentu
  • Modulator dering dengan pembawa sinus: osilator
  • Gerbang Kebisingan dan efek dinamika lainnya: pengikut amplop
  • Simulasi pita: konvolusi, penyapu gelombang, pengikut amplop (untuk pemrosesan dinamika)
  • EQ: biquads
  • Tremolo: LFO
  • Leslie emulation: convolution + LFO
  • Vocoder: biquads + pengikut amplop

Sementara beberapa dari efek ini hanya masalah menambal blok yang berbeda (flanger benar-benar adalah LFO memodulasi garis penundaan), beberapa efek lainnya membutuhkan lem yang lebih kompleks antara bagian-bagian, yang cukup spesifik untuk tidak dimasukkan ke dalam blok bangunan sendiri.

Ini, secara keseluruhan, serangkaian efek menarik yang akan mencakup banyak landasan untuk produksi musik, tetapi tidak lengkap dan memang ada beberapa efek yang tidak sesuai dengan kerangka ini ... Beberapa contoh: * Pengurang laju sampel kotor (dalam a bitcrusher): true, ini adalah perkalian dengan sisir dirac dan kemudian konvolusi oleh jendela persegi panjang ... tapi lebih mudah untuk menuliskannya sebagai sesuatu yang menduplikasi nilai satu sampel daripada sampel N berikut daripada menambal modulasi amplitudo dan belok! * Efek perubahan pitch (pergeseran-pitch, auto-tune) tidak cocok dengan kerangka ini dengan baik. Mereka membutuhkan representasi sinyal audio yang lebih rumit untuk dilakukan (phase vocoder untuk metode domain frekuensi; deteksi nada dan tanda pitch untuk metode domain waktu).

Saya menyarankan Anda untuk bermain dengan perangkat lunak "gaya modular" seperti Pd, Reaktor, Plogue, SyntheEdit ... - dan mencoba menerapkan efek dari blok bangunan dasar yang mereka sediakan untuk Anda.

pichenettes
sumber
2
Untuk apa nilainya, modulasi frekuensi digunakan dalam FM Synthesis. Ini mudah dilihat dari kasus modulasi FM nada tunggal, yang menghasilkan sinyal dengan deret Fourier yang ditentukan oleh fungsi Bessel jenis pertama.
Bryan
1
"FM sintesis" sebagaimana diterapkan dalam synthesizer (seperti seri Yamaha DX, perangkat keras berbasis OPL, dan emulasi perangkat lunak dari mereka), adalah keliru, karena ini sebenarnya dilakukan dengan modulasi fase. en.wikipedia.org/wiki/Phase_modulation
pichenettes
Saya tidak melihat sumber apa pun yang terlampir pada entri Wikipedia itu. Apapun, menurut entri itu, katanya terdengar "mirip", dan bahwa PM digunakan karena FM lebih sulit untuk diterapkan. Saya tidak membelinya, mengingat FM adalah kasus khusus PM. Namun, teori yang saya kutip di balik modulasi FM menghasilkan harmonik yang terkait dengan fungsi Bessel, dan berguna.
Bryan
@Bryan. Lihat Klaim 1 dari paten sintesis "FM", US4018121. A sin (wt + I (t) sin w_m t) - itu modulasi fase. PM lebih mudah diterapkan karena 1 / Anda tidak memerlukan akumulator tambahan untuk mengintegrasikan frekuensi sesaat yang bervariasi ke dalam satu fase - lihat beberapa tulisan di sini di mana orang-orang mencoba menghasilkan nada dengan frekuensi yang bervariasi waktu dan digigit balik 2 / konversi dari frekuensi menjadi peningkatan fase melibatkan pembagian. Dengan PM Anda menghitung ulang kenaikan fase pada tingkat modulasi; dengan FM Anda harus menghitung ulang kenaikan fase pada laju sampel.
pichenettes
Jawaban yang sangat berguna, terima kasih. Saya menyadari bahwa saya telah memfokuskan banyak pada aspek pemrograman (bahwa saya baru belajar) dan tidak mengambil sisi dsp cukup serius. Mungkin ini bukan proyek yang bisa saya mulai dengan yang kecil dan dibangun secara bertahap, tetapi yang harus saya bangun kembali dan bangun berkali-kali seperti yang saya pelajari.
kiman