Algoritma efek Distorsi Digital

10

Saya membaca buku DAFX oleh Udo Zölzer tentang efek distorsi di halaman 124-125 dan dikatakan bahwa simulasi distorsi yang sesuai diberikan oleh fungsi:

f(x)=x|x|(1ex2/|x|)

Adakah yang bisa menjelaskan formula ini dan sinyal apa yang kita dapat?

Dari apa yang saya mengerti 'x' adalah sinyal sampel, jadi ini adalah urutan angka. Apa yang | x | berarti? Apakah ini merujuk pada nilai absolut x untuk setiap nilai sampel?

Jadi jika saya ingin mengimplementasikan simulasi efek distorsi ini,

  1. Saya perlu tahu panjang x (Ini diberikan oleh jumlah sampel)
  2. Dalam satu lingkaran, saya perlu menghitung rumus ini untuk setiap nilai sampel
  3. setelah loop berakhir, saya mendapatkan sinyal yang terdistorsi (dalam bentuk digital)

Setelah itu, saya perlu mengubahnya menjadi sinyal analog sehingga saya bisa mendengarnya.

Elior
sumber
2
Perhatikan bahwa ada kesalahan dalam rumus yang diberikan dalam buku (harus ada tanda negatif dalam eksponen). Lihat jawaban saya di bawah ini.
Matt L.

Jawaban:

5

| x | menunjukkan nilai absolut - x / | x | sedikit formula ada untuk memastikan bahwa tanda input dipertahankan dalam output. Mengenai implementasi, ya, langkah-langkah yang Anda daftarkan sudah benar.

pichenettes
sumber
1
Apa yang Anda maksud dengan "distorsi nyata"? Tentu saja operasi apa pun yang Anda lakukan pada sinyal asli akan menjadi distorsi! Apa yang sedang Anda coba lakukan?
pichenettes
1
Distorsi adalah istilah yang sangat samar yang menggambarkan setiap transformasi (biasanya tidak diinginkan) yang mengubah sinyal. Distorsi gitar dicapai oleh banyak proses yang berbeda - kliping, perbaikan, overloading - tergantung pada jenis pedal / amp di mana itu terjadi - tidak ada formula "benar" tunggal ... Formula yang Anda miliki sepertinya akan memberikan fungsi seperti sigmoid yang akan mensimulasikan overloading; tapi saya pikir mungkin ada kesalahan di suatu tempat.
pichenettes
1
Anda harus melakukan ini dalam domain waktu.
pichenettes
1
Karena itulah cara efek distorsi gitar bekerja. Mereka awalnya dibuat dengan elemen non-linear seperti tabung, dioda, dan kemudian transistor yang perilakunya dijelaskan dalam domain waktu oleh fungsi non-linear. Dan Anda mencoba meniru itu secara digital ...
pichenettes
1
Pitch-shifting, generator harmonisa mewah (mis. EHX micro pog) atau fancy spectral morphing (tidak dapat mengingat nama produk) memerlukan pemrosesan domain frekuensi. Beberapa ampli / speaker simulator memerlukan konvolusi panjang, yang dilakukan secara efisien dengan perkalian dalam domain frekuensi. Tetapi bagaimanapun juga itu TIDAK PERNAH "mengambil seluruh FFT dari sinyal" - ini diterapkan oleh tumpang tindih-tambahkan FFT kecil-panjang (sekitar 1024 sampel).
pichenettes
9

Berkat alur dalam jawaban Olli Niemitalo, saya yakin bahwa formula yang diberikan dalam buku ini memiliki kesalahan tanda. Non-linearitas yang digunakan untuk fuzz atau distorsi selalu merupakan beberapa jenis fungsi kliping yang dihaluskan, yang memampatkan sinyal input. Jadi amplitudo input kecil mengalami sedikit perubahan sedangkan amplitudo input tinggi (kurang lebih) terpotong dengan lembut. Dan angka yang ditunjukkan dalam jawaban Olli justru sebaliknya.

Jadi saya yakin bahwa formula yang tepat seharusnya

(1)f(x)=x|x|(1-e-x2/|x|)=sgn(x)(1-e-|x|)

xf(x)sgn(x)|x|=xf(x)sgn(x)

f(x)

masukkan deskripsi gambar di sini

(1)x/|x|x2/|x|x

jika (x> 0)
   y = 1 - exp (-x);
lain
   y = -1 + exp (x);
akhir
Matt L.
sumber
Oh ya buku itu mengutip web.archive.org/web/20070826204128/http://www.notam02.no/… dan di atas adalah rumus yang benar.
Olli Niemitalo
Ok terima kasih. Apakah Anda pikir ini adalah sumber buku?
Matt L.
Ya buku itu merujuk tesis siswa itu. Ada tesis mahasiswa Norwegia kedua yang memiliki formula yang salah dan mengutip tesis mahasiswa pertama. Saya tidak repot-repot memeriksa tanggal untuk melihat apakah buku itu menyalin tesis kedua tanpa memeriksa sumber aslinya atau apakah tesis kedua menyalin buku itu.
Olli Niemitalo
1
x2/|x|
2

Anda dapat menulis tubuh fungsi langsung ke Wolfram Alpha dan memplotnya:

masukkan deskripsi gambar di sini

Ini terlihat seperti pembasmi bagi saya, dan itu dapat digunakan seperti yang Anda jelaskan.

Olli Niemitalo
sumber
1
Sekarang saya melihat plot Anda, saya cukup yakin bahwa formula dalam buku itu salah. Lihat jawaban saya. Bagaimana menurut anda?
Matt L.
2
@ MattL. Ya itu jauh lebih masuk akal. Fungsi buku juga turun yang akan menyebabkan inversi fase yang tidak diinginkan.
Olli Niemitalo