Tambahkan harmonik aneh / genap ke sinyal?

12

Bagaimana cara menambahkan harmonik aneh atau genap ke sinyal titik mengambang?

Apakah saya harus menggunakan tanh atau dosa?

Apa yang saya coba lakukan adalah mencapai beberapa efek distorsi yang sangat sederhana, tetapi saya kesulitan menemukan referensi yang tepat. Apa yang saya suka adalah sesuatu yang mirip dengan apa yang dilakukan Vulture Budaya dengan menambahkan harmonik aneh dan bahkan dalam pengaturan pentode dan triode. Nilai float adalah sampel tunggal dalam aliran sampel.

Carlos Barbosa
sumber
3
Mengapa Anda ingin menambahkan harmonik? Apa yang ingin Anda capai? Sinyal apa yang Anda kerjakan?
Jim Clay
Apa yang saya coba lakukan adalah mencapai beberapa efek distorsi yang sangat sederhana, tetapi saya kesulitan menemukan referensi yang tepat. Apa yang saya inginkan adalah sesuatu yang mirip dengan apa yang dilakukan oleh burung bangkai budaya dengan menambahkan harmonik aneh dan bahkan dalam pengaturan pentode dan triode itu, nilai float itu sampel tunggal dalam aliran sampel.
Carlos Barbosa
1
@CarlosBarbosa Anda harus mengedit informasi itu dari komentar di atas ke pertanyaan Anda. Berikan perincian - semakin menarik pertanyaannya bagi komunitas, semakin banyak jawaban yang dapat Anda harapkan, serta jawaban dengan kualitas yang lebih baik.
penelope
mengapa harmonik ganjil lebih berbahaya daripada harmonik pada sistem daya

Jawaban:

17

Apa yang dilakukan kotak distorsi Anda adalah menerapkan fungsi transfer non-linear ke sinyal: output = function(input)atau y = f(x). Anda hanya menerapkan fungsi yang sama untuk setiap sampel input individu untuk mendapatkan sampel output yang sesuai.

Ketika sinyal input Anda adalah gelombang sinus, jenis distorsi tertentu dihasilkan disebut distorsi harmonik . Semua nada baru yang dibuat oleh distorsi adalah harmonik sempurna dari sinyal input:

  • Jika fungsi transfer Anda memiliki simetri ganjil (dapat diputar 180 ° tentang asalnya), maka itu hanya akan menghasilkan harmonik aneh (1f, 3f, 5f, ...). Contoh sistem dengan simetri ganjil adalah amplifier kliping simetris.
  • Jika fungsi transfer Anda memiliki simetri genap (dapat dipantulkan pada sumbu Y), maka harmonik yang dihasilkan hanya akan menjadi harmonik dengan urutan rata (0f, 2f, 4f, 6f, ...) Fundamental 1f adalah harmonik ganjil, dan dihapus. Contoh sistem dengan simetri genap adalah penyearah gelombang penuh.

Jadi ya, jika Anda ingin menambahkan harmonik aneh, masukkan sinyal Anda melalui fungsi transfer aneh-simetris seperti y = tanh(x)atau y = x^3.

Jika Anda hanya ingin menambahkan harmonik, masukkan sinyal Anda melalui fungsi transfer yang bahkan simetris ditambah fungsi identitas, untuk menjaga fundamental asli. Sesuatu seperti y = x + x^4atau y = x + abs(x). The x +menjaga fundamental yang seharusnya dapat dihancurkan, sementara x^4bahkan-simetris dan hanya menghasilkan bahkan harmonik (termasuk DC, yang mungkin Anda ingin menghapus setelah itu dengan high-pass filter).

Bahkan simetri:

Fungsi transfer dengan simetri genap:

y = x ^ 6 fungsi transfer

Sinyal asli berwarna abu-abu, dengan sinyal terdistorsi berwarna biru dan spektrum sinyal terdistorsi hanya memperlihatkan harmonik dan tidak ada fundamental:

y = x ^ 6 spektrum

Simetri ganjil:

Fungsi transfer dengan simetri ganjil:

y = x ^ 7 fungsi transfer

Sinyal asli berwarna abu-abu, dengan sinyal terdistorsi berwarna biru dan spektrum sinyal terdistorsi hanya menunjukkan harmonik aneh, termasuk fundamental:

y = x ^ 7 spektrum

Bahkan simetri + fundamental:

Fungsi transfer dengan fungsi simetri plus identitas:

y = x + x ^ 4 fungsi transfer

Sinyal asli berwarna abu-abu, dengan sinyal terdistorsi berwarna biru dan spektrum sinyal terdistorsi menunjukkan harmonik plus fundamental:

y = x + x ^ 4 spektrum

Inilah yang orang bicarakan ketika mereka mengatakan bahwa kotak distorsi "menambah harmonik aneh", tetapi itu tidak benar-benar akurat. Masalahnya adalah bahwa distorsi harmonik hanya ada untuk input gelombang sinus . Kebanyakan orang memainkan instrumen, bukan gelombang sinus, sehingga sinyal input mereka memiliki banyak komponen gelombang sinus. Dalam hal ini, Anda mendapatkan distorsi intermodulasi , bukan distorsi harmonik, dan aturan tentang harmonik aneh dan bahkan tidak lagi berlaku. Misalnya, menerapkan penyearah gelombang penuh (bahkan simetri) pada sinyal berikut:

  • gelombang sinus (fundamental harmonik aneh saja) → gelombang penuh gelombang yang diperbaiki (hanya harmonik saja)
  • gelombang persegi (hanya harmonik aneh) → DC (hanya harmonik ke-0 saja)
  • gelombang gigi gergaji (harmonik aneh dan genap) → gelombang segitiga (hanya harmonik aneh)
  • gelombang segitiga (hanya harmonik aneh) → 2 × gelombang segitiga (hanya harmonik aneh)

Jadi spektrum output sangat tergantung pada sinyal input, bukan perangkat distorsi, dan setiap kali seseorang mengatakan " amplifier / efek kami menghasilkan lebih banyak musikal bahkan harmonik orde ", Anda harus membawanya dengan sebutir garam .

(Ada beberapa kebenaran pada klaim bahwa suara dengan harmonik bahkan "lebih musikal" daripada suara dengan hanya harmonik aneh , tetapi spektrum ini sebenarnya tidak diproduksi di sini, seperti dijelaskan di atas, dan klaim ini hanya valid dalam konteks Timbangan barat tetap saja. Suara harmonik aneh (gelombang persegi, klarinet, dll.) Lebih konsonan pada skala musik Bohlen-Pierce yang didasarkan pada rasio 3: 1, bukannya 2: 1 oktaf.)

Satu hal yang perlu diingat adalah bahwa proses non-linear digital dapat menyebabkan aliasing, yang dapat didengar dengan buruk. Lihat Apakah ada yang namanya distorsi non-linear terbatas-band?

endolit
sumber
Perhatikan bahwa contoh fungsi di sini membuat matematika mudah dipahami, tetapi biasanya tidak digunakan dalam hal-hal audio. Dengan x ^ 7, misalnya, sinyal menjadi kurang terdistorsi semakin Anda meningkatkan gain.
endolith
8

Apa yang Anda coba capai disebut distorsi . Teknik ini digunakan ketika Anda ingin menambahkan beberapa harmonisa ke sinyal yang diberikan. Anda memiliki 2 metode dasar untuk melakukan ini: waveshaping dan ring modulation. Saya akan mencoba menjelaskan yang pertama.

Waveshaping

Waveshaping memungkinkan Anda untuk membuat distorsi melalui penggunaan fungsi yang dipilih secara khusus . Salah satu metode yang berguna adalah polinomial Chebyshev . Mereka memiliki sifat yang sangat penting ketika mengajukan melalui mereka sinyal harmonik dengan satuan amplitudo (misalnya, gelombang sinus), kami memperoleh sinyal yang sama, hanya beberapa kali lebih tinggi. Pengganda frekuensi akan tergantung pada urutan polinomial. Semua polinomial terlihat seperti ini:

 y=f(x)=d0+d1x+d2x2+d3x3++dNxN;

Dalam kasus kami, setiap elemen menghasilkan harmonika, dan kemudian semuanya bertambah. Tampilan masing-masing anggota ditentukan oleh hubungan perulangan berikut:

Tk+1(x)=2xTk(x)Tk1(x);

Di dalamnya, setiap anggota ditentukan berdasarkan yang sebelumnya, semuanya dimulai dengan nol, dalam kasus kami sama dengan satu, dan yang pertama, yang sama dengan x (tetapi Anda dapat mengubahnya, tentu saja)

T0(x)=1;

T1(x)=x;

Mengetahui mereka, Anda dapat menentukan yang ketiga dan sebagainya:

T2(x)=2xx1=2x21;

T3(x)=2x(2x21)x=4x33x;

Seperti yang Anda duga, istilah kedua - harmonik pertama, dan yang ketiga - yang kedua dan seterusnya.

Fitur lain dari polinomial Chebyshev, ketika melalui mereka memberikan sinyal yang amplitudo kurang dari unit, output suara kurang jenuh dengan harmonik. Ini memungkinkan untuk membuat efek overdrive.

Setelah semua, sinyal Anda adalah sebuah array titik mengambang, Anda dapat memilih bagian mana pun dari array Anda dan menerapkannya ke polinomial Chebyshev, yang akan menciptakan harmonik tambahan. Dan menggunakan fungsi akan cukup baik untuk ini.sin

sigrlami
sumber
Jawaban yang bagus, pelajari sesuatu di sini. Namun, saya tidak setuju dengan penggunaan fungsi transfer oleh Anda . Definisi umumnya adalah relasi keluaran ke input dari sistem invarian-linear dalam domain frekuensi. Sistem Anda non-linear. Saya lebih suka menyebutnya karakteristik atau hanya berfungsi di sini.
Deve
@Deve Terima kasih. Ya memang saya menggunakan istilah yang salah, hanya berfungsi cukup baik. Saya berpikir untuk menulis contoh sistem linier, tetapi cukup mudah, jadi istilah tetap dalam pikiran saya
sigrlami
Wow, terima kasih untuk semua ini saya akan membaca meskipun tampaknya banyak, ada kemungkinan beberapa contoh kode c? terima kasih sekali lagi
Carlos Barbosa
Bisakah Anda memperluas bagaimana sebenarnya persamaan dengan , dll terkait kembali ke persamaan asli dengan ? ...T 1 ( x ) yT0(x)T1(x)y
Spacey
@Mohammad mereka tidak terkait persis, itu hanya deskripsi sederhana dari fungsi polinom jika pemula topik tidak mengetahuinya.
sigrlami