J'ai fait un peu de recherche sur ce site mais étonnamment, je n'ai pas trouvé beaucoup d'informations pertinentes, et ma connaissance du DSP est très très limitée.
Mon objectif est assez simple: je veux programmer une réverbération algorithmique en C ++ qui sonne vraiment bien. Ou plus exactement, la meilleure option serait de laisser l'utilisateur final choisir le compromis entre la qualité et l'utilisation du processeur.
D'après ce que j'ai découvert jusqu'à présent, pour créer une réverbération, vous devez alimenter le signal sec dans un algorithme de premières réflexions, puis dans un algo de réflexions tardives. Est-ce correct ?
Maintenant, j'ai trouvé un article complet sur la partie des réflexions tardives, en utilisant Feedback Delay Network ( RÉDUCTION DES EXIGENCES DE RÉVERBERATION ARTIFICIELLE À L'AIDE DE RÉSEAUX DE RETARD DE RÉTROACTION VARIANT DANS LE TEMPS ). D'après ce que j'ai lu, le FDN est un moyen de haute qualité, pas trop étendu (au niveau du processeur), de simuler les réflexions tardives. De plus, je suppose que vous pouvez contrôler le compromis qualité / charge CPU en modifiant le nombre de lignes à retard.
Cependant, je n'ai absolument aucune idée de la façon de programmer les premières réflexions algo (rappelez-vous? Je suis vraiment ignorant dans le domaine DSP).
Il me semblerait logique d'utiliser une sorte de multi-delay, qui a l'avantage d'être facile à programmer et peu coûteux en calcul. Mais cela semble trop simple pour être vrai.
De plus, mon instinct me dit qu'un ou plusieurs filtres doivent être inclus quelque part dans le chemin du signal.
Quelqu'un pourrait-il clarifier un peu ce sujet pour moi?
Deux notes:
- Je ne suis pas du tout après une réverbération à convolution. Je ne me soucie pas vraiment du réalisme de la réverbération, mais au lieu de cela, je veux une bonne sonorité, ajustable, pas à une réverbération gourmande en processeur.
- De plus, la partie codage ne m'inquiète pas, je demanderais autrement sur stackoverflow. C'est vraiment la partie DSP, et juste cette partie, que je recherche :)
la source
Faire une bonne réverbération n'est pas facile. Les réseaux de retard de rétroaction sont certainement la voie à suivre. Les algorithmes originaux de Schroeder avec toutes les passes et les filtres en peigne souffrent d'un "amincissement spectral" qui le rend métallique. Vous devez composer une atténuation dépendante de la fréquence sur les différentes lignes à retard représentatives du temps de réverbération (en fonction de la fréquence). Les premières réflexions peuvent être effectuées à travers une ligne à retard tapée également avec une certaine atténuation dépendante de la fréquence et quelques diffuseurs pour les décorréler. Faire de la stéréo nécessite également certains moyens de décorrélation.
Il y a une assez bonne implémentation open source flottante, elle s'appelle GVerb et elle est utilisée, par exemple, dans Audacity. Une recherche Google devrait vous amener à une copie (légale) du code source.
la source