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.
audio
signal-detection
c
distortion
Carlos Barbosa
la source
la source
Réponses:
Ce que fait votre boîtier de distorsion, c'est d'appliquer une fonction de transfert non linéaire au signal:
output = function(input)
ouy = 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:
Alors oui, si vous voulez ajouter des harmoniques impaires, passez votre signal via une fonction de transfert symétrique impair comme
y = tanh(x)
ouy = 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^4
ouy = x + abs(x)
. Lex +
conserve le fondamental qui serait sinon détruit, tandis que lex^4
est 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:
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:
Symétrie étrange:
Fonction de transfert avec symétrie étrange:
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:
Même symétrie + fondamentale:
Fonction de transfert avec symétrie uniforme et fonction d'identité:
Signal d'origine en gris, avec signal déformé en bleu et spectre de signal déformé montrant des harmoniques uniformes et fondamentales:
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:
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?
la source
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:
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:
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)
En les connaissant, vous pouvez déterminer le troisième et le quatrième:
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
la source