|
Sujet: Effet Reverb avec µC
|
| Auteur |
Message |
|
Axhan
19 messages
 De passage
|
20-09-2010 11:59
Bonjour à tous,
D'abord permettez moi pour mon premier message de vous dire merci de m'acceuillir sur ce forum, je sens que je vais passer beaucoup de temps ici...
Je suis étudiant en électronique appliquée et doit plancher sur un projet à réaliser pour le mois de janvier. J'aimerais réaliser une unité Reverb par microcontrôleur (c'est un projet dans le cadre d'un cours sur ceux-ci) directement raccordée à la sortie audio d'une carte son.
Seulement voilà, je vis mes premières heures confronté au monde du µC et à part programmer un thermomètre avec un ATMEGA48 et Bascom, je n'ai pas beaucoup de bagage...
J'ai deja un tout petit peu discuté le coup avec un professeur, il s'agirait donc de mettre le signal audio en mémoire, le décaler autant de fois qu'il le faut selon la durée de la réverbération et enfin le renvoyer dans un CNA (sans encore parler du dry/wet etc).
Ok pour le principe, mais ensuite pour le choix du µC, le type de programmation (est-ce jouable en basic ?), là je suis un peu perdu...
Y aurait-il moyen d'avoir le minimum minimorum sur le sujet pour ensuite approfondir ? (je n'ai vraiment pas peur d'apprendre !)
D'avance merci et bonne journée,
TC
|
|
obdh
229 messages
 Habitué
|
20-09-2010 12:10
D'ici janvier, il y a largement le temps !!
Ca ne doit pas poser de problème en BASCOM, mais ce serait peut-être le moment de se mettre au C, ce n'est pas si compliqué. Et pour la suite, ce sera plus valorisant et utile.
Quant au processeur, il y a le choix, mais autant viser aussi quelque chose de pas trop limité. Apprendre à programmer un PIC32 (32bits) en C sera plus "vendeur" que programmer un PIC16 (8 bits) en assembleur... Je parle Microchip, mais les autres marques sont tout aussi valables, voir donc en fonction du matériel qui peut être obtenu.
|
|
pitbuell94
46 messages
 De passage
|
21-09-2010 09:27
Bonjour,
Une architecture envisageable serait d'échantillonner votre signal audio et de le stocker dans une FIFO.
Il sera ensuite ressorti avec un délai variable dépendant de la taille de la FIFO et de la vitesse d'échantillonnage.
Je m'explique.
Pour les puristes, j'informe que je prends là des valeurs fantaisistes pous simplifier les calculs.
Imaginons que votre FIFO aie une taille de 40 000 mots de taille 8 bits( > la taille de la conversion de votre signal audio), vous échantillonnez à la vitesse de 40 Khz> 2 fois le fréquence max de votre signal audio.
Lorsque votre FIFO sera pleine, vous aurez alors cumulé un échantillon audio d'une seconde que vous pourrez alors ressortir avec votre signal d'origine.
Vous aurez là un phénomène d'écho.
Si avec la même taille mémoire vous augmentez la vitesse d'échantillonnage de 2, vous réduisez alors le retard à 0.5 seconde.
L'atténuation de cet écho se fera au moment de la ré-injection de votre signal dans la FIFO > si vous remettez un signal non atténué, vous aurez un écho infini...
Dans le cas de la réverbération, c'est un peu plus complexe car il s'agit là de multiples réflections...
J'espère vous avoir quelque peu éclairé.
Pitbuell94.
|
|
RISC
54 messages
 Visiteur occasionnel
|
26-09-2010 13:44
Salut,
Si tu veux faire de la réverbération le point important va être la taille la RAM qui contient un certain nombre d'échantillons.
Le 2e point est le calcul. Une architecture 16 ou 32 bits va éviter les saturations du aux opérations successives.
Pour avoir accès à des RAM importantes et éviter un micro + RAM externe (cela dépend de la durée de la réverbération), tu peux choisir un PIC32 avec 128KB de RAM interne comme le PIC32MX795.
Si tu cherches un kit déjà tout fait pour l'audio, il existe un kit dsPIC33 audio avec entrées et sorties audio.
Au niveau programmation il vaudrait mieux utiliser le langage C plus adéquat pour ce genre d'applications...
Si tu as besoin de RAM externe pour avoir une réverbération plus longue, regarde du coté des serial SRAM qui ont l'avantage de ne nécessiter que de petits boitiers car elles s'interfacent en SPI.
a+
Modifié par RISC
le 26-09-2010 13:46 Modifié par RISC
le 26-09-2010 13:47
|
|
Axhan
19 messages
 De passage
|
26-09-2010 20:01
Salut à tous,
Merci pour vos réponses !
Je déblaye encore un peu pour le moment mais j'ai déjà une idée plus claire de la chose, ma grande question étant :
Pour utiliser l'effet en temps réel, quelle quantité de mots traiter ? Car j'imagine que fonctionner seconde par seconde c-à-d réinjecter des tranches de 44100 mots est un peu inutile pour de la reverb, il y aurait deja un décalage de 1 seconde en attendant que l'échatillon soit mis en mémoire, c'est ça ?
Le mot par mot est il alors envisageable ? Quelle est la limite entre la reverb et un echo distinct ?
Merci !
Axhan
|
|
pitbuell94
46 messages
 De passage
|
27-09-2010 17:44
Bonjour,
En effet, ré-injecter des tranches d'une seconde est inutile.
C'était un exemple.
Dans votre cas, quelles sont vos contraintes?
Quel est votre cahier des charges?
Votre professeur vous-a-t-il imposé certaines choses?
La réverbération est par définition avec des temps très courts.
Il faut s'imaginer que les temps ici sont de l'ordre de 0.5 à 0.8 secondes.
La direction des réverbération est multiple.
Il faut donc ré-injecter de multiples fois en fonction de ce que vous soulez simuler, le signal d'entrée atténué avant même que ce dernier ne soit complètement atténué.
Il vous faut donc accéder à la RAM de multiples fois, buffuriser l'information, faire le calcul et sortir tout cela.
Je m'arrêterai là car je ne suis pas un expert en audio.
Pitbuell94.
|
|
Axhan
19 messages
 De passage
|
28-09-2010 11:11
pitbuell94,
Voici ma seule charge pour le cours :
Le µC doit être un Atmel (n'importe lequel), on fait ce qu'on veut avec tant que l'on écrit un programme, qu'on construit un boitier etc. On doit avoir un appareil fini et qui fonctionne, avec un Atmel à l'intérieur.
L'autre charge concernant l'effet en lui-même : le "release" doit durer de 0.1 à 5 secondes (si on peut faire + c'est bien mais pas vital).
Donc imaginons que mon µC échantillone à 48 kHz, si je veux une reverb de 5 secondes il me faudra donc 48x5 = 240 Ko de mémoire (en découpant mot par mot, réinjectant ces mots de manière à ce qu'après 5 secondes son amplitude soit nulle et que l'on puisse le remplacer par un autre mot) ? Il faut donc utiliser de la mémoire RAM externe ?
Qu'entendez-vous par bufferiser ?
Merci,
Axhan
|
|
pitbuell94
46 messages
 De passage
|
13-11-2010 18:56
Bonjour,
Par bufferisé, j'entends le fait de stocker l'information des différents délais que vous souhaiterez ré-injecter.
Par exemple, si vous créez une réverbération composée avec 5 délais, il vous faudra accéder à la mémoire aux 5 emplacements contenant la valeur de chacun des délais, faire le calcul, puis réinjecter tout cela en sortie avec le signal d'origine.
L'accès à la mémoire étant séquentiel, il vous faut donc stocker l'information jusqu'à la fin de l'accès au dernier échantillon demandé.
Ai-je été assez clair?
Frédéric Cabanes( Pitbuell94).
|
|
Axhan
19 messages
 De passage
|
28-03-2011 14:05
Bonsoir à tous,
Pour ceux que ça intéresse, le travail a été accompli et est fonctionnel, le résultat est visible ici.
La technique utilisée a été, sans entrer dans les détails, de stocker des échantillons dans un tableau et de les mélanger aux échantillons entrants avec une certaine atténuation, l'échantillon résultant écrasant l'échantillon entrant dans le tableau.
Le tout fait quelques lignes et est stocké dans une interruption.
Merci pour votre aide,
T
|
|
YMasquel
2503 messages
 Expert
|
28-03-2011 17:16
Bonjour "Axhan",
Merci pour ce retour d'informations alors que nous avons proposé du PIC32 et du C pour ton projet dont le cadre était ATMEGA48 et BASCOM.
Le résultat ne me saute pas à l'oreille mais je dois préciser que je ne suis pas un fan de la réverbération et que ma connaissance du schéma sonore de l'original entendu sur la vidéo ne me permet pas de déceler une quelconque différence (mais ce sont mes oreilles et mon cerveau  ).
Par contre je suis plus friand du contenu intellectuel que tu pourrais développer un peu pour les amateurs.
Te retrouver sur le forum serait sympa.
Amicalement, Yves.
|
|
obdh
229 messages
 Habitué
|
28-03-2011 18:06
Depuis le dernier message, j'ai acheté, fin décembre, un lot de livres Elektor (offre spéciale intéressante de fin d'année...). Dans le lot, un sur les DSP et le traitement de signal (je n'ai pas le titre précis en tête), et j'avoue qu'il est passionnant. Il ne s'adresse pas uniquement aux utilisateurs de DSP, et explique de façon très claire pas mal de choses. Je le recommande vivement à tous ceux qui veulent faire du traitement numérique, en particulier pour l'audio, mais pas uniquement.
|
|
YMasquel
2503 messages
 Expert
|
28-03-2011 18:55
Bonjour Hervé,
Cela ne serait-il pas Applications audionumériques des DSP ?
N'étant pas orienté musique je n'y avais pas prêté attention mais si tu dis qu'il visite aussi des chemins intéressants tu me donnes envie de le consulter.
Amicalement, Yves.
|
|
obdh
229 messages
 Habitué
|
28-03-2011 19:11
Oui, c'est celui-là. Il présente les différents formats, virgule fixe, virgule flottante, montre comment faire du filtrage.... On peut certainement trouver une bonne partie sur le net, mais tout est rassemblé, bien présenté et agréable à lire. Je l'ai reçu juste à un moment où je devais réaliser un certain nombre de calculs sur des signaux divers, il est tombé à pic et m'a fait gagner du temps. La partie spécifique dsp et logiciel associé n'est pas trop importante, le livre a donc un intérêt même si l'on n'a qu'un processeur avec un peu de capacité de calcul.
|