J'aimerais mélanger au moins deux canaux audio PCM (par exemple, des échantillons enregistrés) numériquement de manière acoustiquement fidèle, de préférence en temps quasi réel (ce qui signifie peu ou pas de coup d'œil).
La façon physiquement "correcte" de procéder consiste à additionner les échantillons. Toutefois, lorsque vous ajoutez deux échantillons arbitraires, la valeur obtenue peut atteindre le double de la valeur maximale.
Par exemple, si vos échantillons ont une valeur de 16 bits, le résultat sera au maximum de 65 536 * 2. Cela entraîne une coupure.
La solution naïve consiste ici à diviser par N, N étant le nombre de canaux mélangés. Cependant, cela signifie que chaque échantillon est 1 / Nth aussi fort, ce qui est complètement irréaliste. Dans le monde réel, lorsque deux instruments jouent simultanément, chaque instrument ne devient pas moitié plus fort.
En lecture, une méthode de mixage courante est la suivante: resultat = A + B - AB, où A et B sont les deux échantillons normalisés mélangés, et AB est un terme permettant de garantir que les sons plus forts sont de plus en plus "atténués".
Cependant, cela introduit une distorsion du signal. Ce niveau de distorsion est-il acceptable dans une synthèse audio de haute qualité?
Quelles autres méthodes existe-t-il pour résoudre ce problème? Je m'intéresse aux algorithmes efficaces de moindre qualité ainsi qu'aux algorithmes de haute qualité moins efficaces.
Je pose ma question dans le contexte de la synthèse musicale numérique, dans le but de mélanger plusieurs pistes d’instrument. Les pistes peuvent être de l'audio synthétisé, des échantillons pré-enregistrés ou une entrée de microphone en temps réel.
la source
Réponses:
Il est très difficile de vous diriger vers des techniques pertinentes sans connaître le contexte de votre problème.
La réponse évidente serait de vous demander d'ajuster le gain de chaque échantillon de sorte que l'écrêtage se produise rarement. Il n’est pas si irréaliste de supposer que les musiciens joueraient moins fort dans un ensemble que lorsqu’on leur demande de jouer en solo.
La distorsion introduite par A + B - AB n’est tout simplement pas acceptable. Il crée des images miroir de A de chaque côté des harmoniques de B - l'équivalent de la modulation en anneau - ce qui est plutôt affreux si A et B ont un spectre riche avec des harmoniques qui ne sont pas à des rapports entiers. Essayez-le sur deux ondes carrées à 220 et 400 Hz par exemple.
Une fonction de découpage plus "naturelle" qui fonctionne échantillon par échantillon est la fonction tanh - elle correspond en fait au comportement de limitation douce de certains éléments analogiques. Au-delà de cela, vous pouvez vous pencher sur les techniques classiques de compression dynamique - si votre système peut anticiper et voir les pics venir, c'est encore mieux.
la source
Ce n'est pas la solution "naïve", c'est la seule solution. C'est ce que font tous les mélangeurs analogiques et numériques, parce que c'est ce que l'air fait et ce que fait votre cerveau.
Malheureusement, cela semble être une idée fausse commune, comme le montrent ces autres algorithmes de "mélange" (distorsion) non linéaires non linéaires:
Mélanger l'audio numérique(dans le mauvais sens)Une technique de mixage d'échantillon audio rapide et sale pour éviter l'écrêtage(ne le faites pas)La "division par N" s'appelle une marge ; la marge supplémentaire pour les pics alloués au-dessus du niveau RMS de la forme d'onde. La quantité de marge requise pour un signal est déterminée par le facteur de crête du signal . (La méconnaissance des niveaux des signaux numériques et de la marge de sécurité est probablement en partie responsable de la guerre de Loudness et d’ Elephunk .)
Dans le matériel analogique, la marge est peut-être de 20 dB. Dans un DSP matériel, le point fixe est souvent utilisé, avec une hauteur libre fixe; Le SigmaDSP d'AD , par exemple, a une marge de sécurité de 24 dB. Dans les logiciels informatiques, le traitement audio est généralement effectué en virgule flottante 32 bits, de sorte que la marge de sécurité est énorme.
Idéalement, vous n’auriez pas besoin de diviser par N du tout, mais simplement de faire la somme des signaux, car vos signaux ne seraient pas générés à 0 dBFS.
Notez que la plupart des signaux ne sont de toute façon pas corrélés, il est donc rare que tous les canaux d’un mélangeur interfèrent de manière constructive au même moment. Oui, le mélange de 10 ondes sinusoïdales identiques en phase augmenterait le niveau de crête de 10 fois (20 dB), mais le fait de mélanger 10 sources de bruit non cohérentes ne ferait qu'augmenter le niveau de crête de 3,2 fois (10 dB). Pour les signaux réels, la valeur sera comprise entre ces extrêmes.
Pour obtenir le signal mixé d'un DAC sans écrêtage, vous réduisez simplement le gain du mixage. Si vous souhaitez maintenir le niveau RMS du mixage élevé sans écrêter durement, vous devez appliquer un type de compression pour limiter les pics du signal, mais cela ne fait pas partie du mixage, il s'agit d'une étape distincte. Vous mélangez d'abord, avec suffisamment de marge, puis vous le soumettez ensuite à la compression de la plage dynamique ultérieurement, si vous le souhaitez.
la source
la formule
Peut-être ceci:
UPDATE: Comme suggéré par hotpaw2, vous pouvez retarder le signal d'entrée mais pas la suppression du gain. C'est ce qu'on appelle un "limiteur d'anticipation".
la source
L'une des façons de procéder consiste à utiliser un CAG d'anticipation dans le cas d'un mixage en temps non réel, dans lequel le gain d'un canal ou des deux canaux est réduit à un taux difficile à percevoir avant que l'amplitude de la somme ne dépasse la limite de saturation. Moins il y a d'anticipation disponible, soit le réglage du gain de l'AGC devient plus audible, soit le gain maximal pour une rampe de réglage de gain plus faible se rapproche de plus en plus de 0,5 par canal à la limite. Pour les sources sonores avec une certaine prévisibilité, on pourrait également utiliser des statistiques concernant le comportement de l'enveloppe dans le temps pour deviner de manière adaptative une limite de gain, mais avec une certaine probabilité d'échec (ce qui constituerait un ajustement brutal du gain de la CAG).
la source
J'avais parlé à un concepteur de table de mixage de la fin des années 1990 et des premières années 2000 qui passait sur la vague numérique (après la pointe des pieds). Je pense que le gars était un designer pour SPL, mais peut-être pas si gros, je ne me souviens absolument pas du nom ni de la marque, je me souviens juste à quel point la machine était vraiment grosse et chère.
Nous avons longuement discuté et enfin parlé des techniques permettant de garantir que leurs canaux 64/128 @ 24bits mélangés restent un canal de sortie mélangé précis 24 bits sans écrêtage.
La technique qu'il a expliquée était plutôt simple. Les 64 pistes (sur 24 bits) ont été ajoutées dans un canal de 48 bits, où l'écrêtage ne peut pas se produire. Tout droit.
Je ne peux pas dire comment ce signal a ensuite été dithered 48 à 24 bits. Peut-être que c'est là que les recettes de cuisine délicates sont appliquées.
Et il existe peut-être de nombreuses techniques pour y parvenir, surtout si elles sont effectuées en temps réel ou avec tous les signaux déjà enregistrés avec des pics élevés simples à déterminer ... toutes sortes de normalisations à imaginer, je pense.
la source
Réduisez le volume global. Le suiveur d’impulsions produit par défaut des canaux à un volume d’environ 33% maximum.
Cela semble être à la fois suffisamment fort pour une musique comportant peu de canaux (MOD Amiga à 4 canaux) et suffisamment souple pour des chansons comportant 50 canaux (étant donné que le contenu des canaux n'est généralement pas corrélé, le volume n'augmente pas aussi rapidement qu'un certain niveau ... plus quelques canaux produiront au volume maximum avec autant de choses à faire). Il laisse également assez de marge pour les canaux panoramiques gauche / droit (qui utilisent 66% de la gamme).
Aussi, vous ne voulez pas ajouter vos canaux ensemble sur 16 bits, vous voulez les ajouter ensemble sur 32 bits, puis coupez le résultat et réduisez-le à 16 bits à la fin. Vous aurez besoin de la plage la plus haute pour qu’elle ne s’emballe pas pendant que vous calculez. Une autre option consiste à utiliser une virgule flottante 32 bits (ce qui est pratique pour faire des filtres, des effets, etc.).
la source
Je pense que la clé est que, si vous avez des valeurs de 16 bits et que vous ajoutez 2 valeurs ensemble qui pourraient potentiellement être plus que la valeur maximale, vous avez 2 options:
1) convertissez les deux en 32 bits add puis renvoyez la valeur maximale si l'addition dépasse cette valeur. Puis remettez-le en 16 bits. Par exemple, si vos valeurs sont 32768 et 34567, il dépasse 65535 et la clé doit ensuite renvoyer 65535. Vous feriez la même chose si vous utilisiez des valeurs signées à la fin de la valeur minimale.
2) compresser les deux valeurs, puis les additionner.
La première est essentiellement une coupure dure, la seconde est une coupure douce. Les systèmes analogiques sont tous très durs.
la source
Elles ne feront que doubler l’espace si les fréquences des deux pistes occupent la même fréquence spatiale. Utilisez eq et la compression pour contourner ce problème en découpant des zones du spectre des fréquences pour chaque son et en contrôlant les transitoires et les sons de manière à ce que tout soit à l'endroit où il convient. Peut-être que cela ne répond pas à la question si. Vous pouvez retarder les signaux de fréquence inférieure de 2 ms maximum. Il n'annulera pas phase par phase car les longueurs d'onde sont plus longues que les fréquences plus élevées et cela ajoutera de l'espace car les transitoires ne sont pas complètement synchronisés avec les signaux graves gourmands en énergie. Quelque chose ajoutant linéairement plus de retard au plus bas du signal serait intéressant de tester.
la source
En d’autres termes, si A et B partagent un signe, appliquez un décalage limitant. L'amplitude du décalage est le produit de A et B. La direction du décalage est opposée à celle de A et B.
Si A et B ne partagent pas un signe, aucune limite n'est appliquée car il n'y a aucun moyen de déborder.
la source
Ma suggestion:
L'utilisateur peut souhaiter traiter ce flux mélangé avec compression et / ou limitation avant le dithering et la reconversion au format à virgule fixe 16 bits (en supposant que cette conversion ... le mixage destiné aux ingénieurs en mastering reste généralement dans un format de résolution plus élevé).
la source