Aggiungi armoniche pari / dispari al segnale?


12

Come posso aggiungere armoniche dispari o addirittura a un segnale in virgola mobile?

Devo usare tanh o sin?

Quello che sto cercando di fare è ottenere alcuni effetti di distorsione molto semplici, ma faccio fatica a trovare riferimenti esatti. Quello che mi piacerebbe è qualcosa di simile a quello che fa il Culture Vulture aggiungendo armoniche dispari e persino nelle sue impostazioni di pentodi e triodi. Il valore float è un singolo campione in un flusso di campione.


3
Perché vuoi aggiungere armoniche? Che cosa stai cercando di realizzare? Con quale tipo di segnale stai lavorando?
Jim Clay,

Quello che sto cercando di fare è ottenere alcuni effetti di distorsione molto semplici, ma ho difficoltà a trovare riferimenti esatti. Quello che vorrei è qualcosa di simile a quello che fa l'avvoltoio della cultura aggiungendo armoniche dispari e persino nelle sue impostazioni di pentodi e triodi, il valore float è un singolo campione in un flusso di campioni.
Carlos Barbosa,

1
@CarlosBarbosa È necessario modificare tali informazioni dai commenti alla domanda. Fornire dettagli: più interessante è la domanda per la comunità, più risposte ci si può aspettare, oltre a risposte di migliore qualità.
penelope,

perché le strane armoniche sono più pericolose delle armoniche del sistema di alimentazione

Risposte:


17

Ciò che fa la vostra casella di distorsione è applicare una funzione di trasferimento non lineare al segnale: output = function(input)o y = f(x). Stai solo applicando la stessa funzione a ogni singolo campione di input per ottenere il campione di output corrispondente.

Quando il segnale in ingresso è un'onda sinusoidale, viene prodotto un tipo specifico di distorsione chiamato distorsione armonica . Tutti i nuovi toni creati dalla distorsione sono armoniche perfette del segnale di ingresso:

  • Se la tua funzione di trasferimento ha una simmetria dispari (può essere ruotata di 180 ° rispetto all'origine), produrrà solo armoniche dispari (1f, 3f, 5f, ...). Un esempio di un sistema con una simmetria dispari è un amplificatore con clipping simmetrico.
  • Se la tua funzione di trasferimento ha una simmetria uniforme (può essere riflessa sull'asse Y), le armoniche prodotte saranno solo armoniche di ordine pari (0f, 2f, 4f, 6f, ...) L'1f fondamentale è un'armonica dispari, e viene rimosso. Un esempio di un sistema con simmetria uniforme è un raddrizzatore a onda intera.

Quindi sì, se vuoi aggiungere armoniche dispari, metti il ​​tuo segnale attraverso una funzione di trasferimento simmetrica dispari come y = tanh(x)o y = x^3.

Se vuoi aggiungere solo armoniche anche, metti il ​​tuo segnale attraverso una funzione di trasferimento che sia persino simmetrica più una funzione di identità, per mantenere l'originale fondamentale. Qualcosa di simile y = x + x^4o y = x + abs(x). La x +mantiene il fondamentale che altrimenti verrebbero distrutti, mentre il x^4è ancora-simmetrica e produce solo armoniche pari (compreso DC, che probabilmente si desidera rimuovere poi con un filtro passa-alto).

Simmetria uniforme:

Funzione di trasferimento con simmetria uniforme:

y = x ^ 6 funzione di trasferimento

Segnale originale in grigio, con segnale distorto in blu e spettro di segnale distorto che mostra solo armoniche uniformi e non fondamentali:

y = x ^ 6 spettro

Strana simmetria:

Funzione di trasferimento con simmetria dispari:

y = x ^ 7 funzione di trasferimento

Segnale originale in grigio, con segnale distorto in blu e spettro di segnale distorto che mostra solo armoniche dispari, tra cui fondamentali:

y = x ^ 7 spettro

Anche simmetria + fondamentale:

Funzione di trasferimento con simmetria uniforme e funzione di identità:

y = x + x ^ 4 funzione di trasferimento

Segnale originale in grigio, con segnale distorto in blu e spettro di segnale distorto che mostra anche armoniche più fondamentali:

y = x + x ^ 4 spettro

Questo è ciò di cui le persone parlano quando affermano che una scatola di distorsione "aggiunge strane armoniche", ma non è proprio accurata. Il problema è che la distorsione armonica esiste solo per l'ingresso dell'onda sinusoidale . La maggior parte delle persone suona strumenti, non sinusoidali, quindi il loro segnale di ingresso ha più componenti sinusoidali. In tal caso, si ottiene una distorsione di intermodulazione , non una distorsione armonica, e queste regole sulle armoniche dispari e persino non si applicano più. Ad esempio, l'applicazione di un raddrizzatore a onda intera (anche simmetria) ai seguenti segnali:

  • onda sinusoidale (solo armonica dispari fondamentale) → seno rettificato a onda intera (solo armoniche uniformi)
  • onda quadra (solo armoniche dispari) → DC (solo armonica 0a)
  • onda a dente di sega (armoniche dispari e pari) → onda triangolare (solo armoniche dispari)
  • onda triangolare (solo armoniche dispari) → 2 × onda triangolare (solo armoniche dispari)

Quindi lo spettro di uscita dipende fortemente dal segnale di ingresso, non dal dispositivo di distorsione, e ogni volta che qualcuno dice "il nostro amplificatore / effetto produce armoniche di ordine pari più musicali ", dovresti prenderlo con un granello di sale .

(C'è del vero nell'affermazione secondo cui i suoni con armoniche pari sono "più musicali" di quelli con solo armoniche dispari , ma questi spettri non vengono effettivamente prodotti qui, come spiegato sopra, e questa affermazione è valida solo nel contesto di Scale occidentali: i suoni dispari-armonici (onde quadrate, clarinetti, ecc.) Sono più consonanti su una scala musicale Bohlen-Pierce basata sul rapporto 3: 1 anziché sull'ottava 2: 1.)

Un'altra cosa da ricordare è che i processi digitali non lineari possono causare aliasing, che può essere scarsamente udibile. Vedi Esiste una distorsione non lineare limitata dalla banda?


Si noti che le funzioni di esempio qui rendono la matematica semplice da capire, ma non sono generalmente utilizzate nelle cose audio. Con x ^ 7, ad esempio, il segnale diventa meno distorto più aumenta il guadagno.
endolith,

8

Quello che stai cercando di ottenere si chiama distorsione . Queste tecniche utilizzate quando si desidera aggiungere alcune armoniche a un determinato segnale. Hai 2 metodi di base per farlo: wavehaping e modulazione ad anello . Cercherò di spiegarne uno per primo.

waveshaping

La forma d'onda consente di effettuare distorsioni mediante l'uso della funzione appositamente selezionata . Uno dei metodi utili sono i polinomi di Chebyshev . Hanno una proprietà molto importante quando si archivia attraverso di essi un segnale armonico con ampiezza unitaria (ad esempio un'onda sinusoidale), otteniamo lo stesso segnale, solo alcune volte più in alto. Il moltiplicatore di frequenza dipenderà dall'ordine del polinomio. Tutti i polinomi si presentano così:

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

Nel nostro caso, ogni elemento genera un'armonica e quindi si sommano tutti. La vista di ciascun membro è determinata dalla seguente relazione di ricorrenza:

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

In esso, ogni membro è determinato in base al precedente, tutto inizia con uno zero, nel nostro caso è uguale a uno, e il primo, che è uguale a x (ma puoi cambiarlo, ovviamente)

T0(x)=1;

T1(x)=x;

Conoscendoli, puoi determinare il terzo e il quarto:

T2(x)=2xx1=2x21;

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

Come puoi immaginare, il secondo termine - la prima armonica e la terza - il secondo e così via.

Un'altra caratteristica dei polinomi di Chebyshev, quando attraverso di essi fornisce un segnale la cui ampiezza è inferiore all'unità, l'uscita è un suono meno saturo con armoniche. Ciò consente di creare effetti overdrive.

Dopotutto, il tuo segnale è una matrice di punti fluttuanti, puoi scegliere qualsiasi parte della tua matrice e applicare a loro i polinomi di Chebyshev, che creeranno ulteriori armoniche. E usare le funzioni del sarà abbastanza buono per questo.sin


Bella risposta, ho imparato qualcosa qui. Tuttavia, non sono d'accordo con il tuo utilizzo del termine funzione di trasferimento . La sua definizione comune è l'output per immettere la relazione di un sistema lineare invariante nel dominio della frequenza. Il tuo sistema non è lineare. Preferirei chiamarlo caratteristica o semplicemente funzionare qui.
Deve l'

@ Grazie Grazie. Sì, in effetti ho usato un termine errato, ho appena funzionato abbastanza bene. Stavo pensando di scrivere un esempio di sistema lineare, ma è abbastanza semplice, quindi il termine è rimasto nei miei pensieri
sigrlami,

Wow, grazie per tutto questo leggerò anche se sembra molto, qualche possibilità di qualche esempio di codice c? grazie ancora
Carlos Barbosa l'

Puoi ampliare il modo in cui esattamente le equazioni con , ecc. Sono correlate all'equazione originale con ? ...T 1 ( x ) yT0(x)T1(x)y
Spacey,

@Mohammad non sono esattamente correlati, è solo una semplice descrizione della funzione polinomiale se l'argomento non lo sa.
sigrlami,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.