Ajouter des harmoniques impaires / paires au signal?

12

Comment ajouter des harmoniques impaires ou paires à un signal à virgule flottante?

Dois-je utiliser le tanh ou le péché?

Ce que j'essaie de faire, c'est d'obtenir des effets de distorsion très simples, mais j'ai du mal à trouver des références exactes. Ce que j'aimerais, c'est quelque chose de similaire à ce que fait Culture Vulture en ajoutant des harmoniques impaires et paires dans ses réglages de pentode et de triode. La valeur flottante est un échantillon unique dans un flux d'échantillon.

Carlos Barbosa
la source
3
Pourquoi voulez-vous ajouter des harmoniques? Qu'est-ce que vous essayez d'accomplir? Avec quel type de signal travaillez-vous?
Jim Clay
Ce que j'essaie de faire, c'est d'obtenir des effets de distorsion très simples, mais j'ai du mal à trouver des références exactes. Ce que j'aimerais, c'est quelque chose de similaire à ce que fait le vautour de culture en ajoutant des harmoniques impaires et paires dans ses paramètres de pentode et de triode, la valeur flottante c'est un seul échantillon dans un flux d'échantillons.
Carlos Barbosa
1
@CarlosBarbosa Vous devez modifier ces informations dans les commentaires de votre question. Donnez des détails - plus la question est intéressante pour la communauté, plus vous pouvez attendre de réponses, ainsi que des réponses de meilleure qualité.
penelope
pourquoi les harmoniques impaires sont plus dangereuses que les harmoniques paires sur le système d'alimentation

Réponses:

17

Ce que fait votre boîtier de distorsion, c'est d'appliquer une fonction de transfert non linéaire au signal: output = function(input)ou y = f(x). Vous appliquez simplement la même fonction à chaque échantillon d'entrée individuel pour obtenir l'échantillon de sortie correspondant.

Lorsque votre signal d'entrée est une onde sinusoïdale, un type spécifique de distorsion est produit appelé distorsion harmonique . Toutes les nouvelles tonalités créées par la distorsion sont des harmoniques parfaites du signal d'entrée:

  • Si votre fonction de transfert a une symétrie impaire (peut être tournée de 180 ° autour de l'origine), alors elle ne produira que des harmoniques impaires (1f, 3f, 5f, ...). Un exemple de système à symétrie étrange est un amplificateur à écrêtage symétrique.
  • Si votre fonction de transfert a une symétrie paire (peut être réfléchie sur l'axe Y), alors les harmoniques produites ne seront que des harmoniques d'ordre pair (0f, 2f, 4f, 6f, ...) Le fondamental 1f est une harmonique impaire, et est supprimé. Un exemple de système à symétrie uniforme est un redresseur pleine onde.

Alors oui, si vous voulez ajouter des harmoniques impaires, passez votre signal via une fonction de transfert symétrique impair comme y = tanh(x)ou y = x^3.

Si vous souhaitez ajouter uniquement des harmoniques paires, passez votre signal via une fonction de transfert qui est même symétrique plus une fonction d'identité, pour conserver le fondamental d'origine. Quelque chose comme y = x + x^4ou y = x + abs(x). Le x +conserve le fondamental qui serait sinon détruit, tandis que le x^4est même symétrique et ne produit que des harmoniques paires (y compris DC, que vous voudrez probablement supprimer ensuite avec un filtre passe-haut).

Même symétrie:

Fonction de transfert avec une symétrie uniforme:

y = x ^ 6 fonction de transfert

Signal d'origine en gris, avec signal déformé en bleu et spectre de signal déformé ne montrant que des harmoniques pairs et aucun fondamental:

spectre y = x ^ 6

Symétrie étrange:

Fonction de transfert avec symétrie étrange:

y = x ^ 7 fonction de transfert

Signal d'origine en gris, avec signal déformé en bleu et spectre de signal déformé ne montrant que des harmoniques impaires, y compris fondamentales:

spectre y = x ^ 7

Même symétrie + fondamentale:

Fonction de transfert avec symétrie uniforme et fonction d'identité:

y = x + x ^ 4 fonction de transfert

Signal d'origine en gris, avec signal déformé en bleu et spectre de signal déformé montrant des harmoniques uniformes et fondamentales:

spectre y = x + x ^ 4

C'est ce dont les gens parlent quand ils disent qu'une boîte de distorsion "ajoute des harmoniques impaires", mais ce n'est pas vraiment précis. Le problème est que la distorsion harmonique n'existe que pour l'entrée d'onde sinusoïdale . La plupart des gens jouent des instruments, pas des ondes sinusoïdales, donc leur signal d'entrée a plusieurs composantes d'onde sinusoïdale. Dans ce cas, vous obtenez une distorsion d'intermodulation , pas une distorsion harmonique, et ces règles concernant les harmoniques impaires et paires ne s'appliquent plus. Par exemple, appliquer un redresseur pleine onde (même symétrie) aux signaux suivants:

  • onde sinusoïdale (harmonique impaire fondamentale uniquement) → sinus rectifié pleine onde (harmoniques paires uniquement)
  • onde carrée (harmoniques impaires uniquement) → DC (même 0e harmonique uniquement)
  • onde en dents de scie (harmoniques impaires et paires) → onde triangulaire (harmoniques impaires uniquement)
  • onde triangulaire (harmoniques impaires uniquement) → 2 × onde triangulaire (harmoniques impaires uniquement)

Ainsi, le spectre de sortie dépend fortement du signal d'entrée, pas du dispositif de distorsion, et chaque fois que quelqu'un dit " notre amplificateur / effet produit des harmoniques d'ordre musical plus musical ", vous devez le prendre avec un grain de sel .

(Il y a une certaine vérité dans l'affirmation selon laquelle les sons avec des harmoniques paires sont "plus musicaux" que les sons avec seulement des harmoniques impaires , mais ces spectres ne sont pas réellement produits ici, comme expliqué ci-dessus, et cette affirmation n'est valable que dans le contexte de Échelles occidentales de toute façon. Les sons harmoniques impairs (ondes carrées, clarinettes, etc.) sont plus cohérents sur une échelle musicale de Bohlen – Pierce basée sur le rapport 3: 1 au lieu de l'octave 2: 1.)

Une autre chose à retenir est que les processus numériques non linéaires peuvent provoquer un aliasing, qui peut être mal audible. Voir Existe - t-il une distorsion non linéaire à bande limitée?

endolith
la source
Notez que les exemples de fonctions ici rendent les mathématiques simples à comprendre, mais ne sont généralement pas utilisés dans les éléments audio. Avec x ^ 7, par exemple, le signal devient moins déformé plus vous augmentez le gain.
endolith
8

Ce que vous essayez de réaliser est appelé distorsion . Cette technique est utilisée lorsque vous souhaitez ajouter des harmoniques au signal donné. Vous avez 2 méthodes de base pour ce faire: la mise en forme d'onde et la modulation en anneau. Je vais essayer d'expliquer la première.

Façonnage des vagues

Waveshaping vous permet de créer une distorsion en utilisant une fonction spécialement sélectionnée . Une des méthodes utiles est les polynômes de Chebyshev . Ils ont une propriété très importante lors du dépôt à travers eux d'un signal harmonique d'amplitude unitaire (par exemple, une onde sinusoïdale), nous obtenons le même signal, seulement quelques fois plus élevé. Le multiplicateur de fréquence dépendra de l'ordre du polynôme. Tous les polynômes ressemblent à ceci:

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

Dans notre cas, chaque élément génère un harmonica, puis ils s'additionnent tous. La vue de chaque membre est déterminée par la relation de récurrence suivante:

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

Dans celui-ci, chaque membre est déterminé sur la base du précédent, tout commence par un zéro, dans notre cas, il est égal à un, et le premier, qui est égal à x (mais vous pouvez le changer, bien sûr)

T0(x)=1;

T1(x)=x;

En les connaissant, vous pouvez déterminer le troisième et le quatrième:

T2(x)=2xx1=2x21;

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

Comme vous pouvez le deviner, le deuxième terme - la première harmonique et le troisième - le deuxième et ainsi de suite.

Une autre caractéristique des polynômes de Chebyshev, quand à travers eux donne un signal dont l'amplitude est inférieure à l'unité, la sortie est un son moins saturé avec des harmoniques. Cela permet de créer un effet overdrive.

Après tout, votre signal est un tableau de points flottants, vous pouvez choisir n'importe quelle partie de votre tableau et leur appliquer des polynômes de Chebyshev, ce qui créera des harmoniques supplémentaires. Et utiliser les fonctions de sera suffisant pour cela.sin

sigrlami
la source
Belle réponse, j'ai appris quelque chose ici. Cependant, je ne suis pas d'accord avec votre utilisation du terme fonction de transfert . Sa définition commune est la relation de sortie à entrée d'un système linéaire invariant dans le temps dans le domaine fréquentiel. Votre système est non linéaire. Je préfère l'appeler caractéristique ou simplement fonctionner ici.
Deve
@Deve Merci. Oui, en effet, j'ai utilisé un terme incorrect, fonctionne juste assez bien. Je pensais écrire un exemple de système linéaire, mais c'est assez simple, alors le terme est resté dans mes pensées
sigrlami
Wow, merci pour tout cela, je lirai bien qu'il semble beaucoup, une chance d'un exemple de code c? merci encore
Carlos Barbosa
Pouvez-vous expliquer comment les équations avec , etc. se rapportent exactement à l'équation originale avec ? ...T 1 ( x ) yT0(x)T1(x)y
Spacey
@Mohammad, ils ne sont pas exactement liés, c'est juste une simple description de la fonction polynomiale si le sujet ne le sait pas.
sigrlami