Modérateurs: Modération Forum Haute-Fidélité, Modération Forum Univers Casques, Modération Forum Installations, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 17 invités

Toutes les solutions de traitement du signal : différentes méthodes, matériel et logiciel, mise en œuvre...

Najda: une carte DSP pour applications HP

Message » 17 Avr 2013 15:50

La doc dit 8500 taps à 48kHz, distribuable entre canaux :
http://www.waf-audio.com/products.php?p ... =4&lang=fr

Cela donnerait la moitié à 96kHz (et 4 fois moins de "capacité" de filtrage FIR) et encore la moitié à 192kHz (et encore 4 fois moins de capacité)

Ensuite je crois avoir lu que des fonctionnalités de downsamplaing par canal sont prévues, ce qui donnerait du coup énormément de puissance potentielle, et ça répondrait à à peu près n'importe quelle situation de filtrage réelle.

Pour une petite illustration de ce qu'on peut espérer avec un nombre de taps donné à une fréquence donnée, voilà qq simulations:
http://www.minidsp.com/forum/14-opendrc ... 6&start=78

Ensuite la "règle" est simple:
- si on filtre 2 fois plus bas il faut 2 fois plus de taps pour obtenir le même résultat
- si on double la fréquence de sampling il faut 2 fois plus de taps pour obtenir le même résultat
- si on veut une pente plus forte il faut plus de taps pour obtenir la même réjection des ripples

Tout cela dépend aussi du type de fenêtrage utilisé, donc il faut essayer...

Quand on arrive aux limites des capacités de filtrage FIR (ie on n'arrive plus à suivre la pente, ou bien on a des ripples qui remontent trop) ca peut etre interessant de faire le filtrage en IIR, et de ne faire en FIR que la linearisation de la phase (du filtrage acoustique complete, filtre+naturel). Dans ces conditions on gagne en efficacité pour les raisons suivantes:
- pas de problème de ripples hors bande
- pas besoin de windowing doux: on peut rester en rectangulaire et donc tirer parti de l'ensemble des taps
- l'impulse n'est pas symétrique, donc on peut la centrer idéalement pour utiliser au mieux les taps disponibles (energy centering dans rephase)

En "gros" on peut linéariser un filtre IIR avec 2 fois moins de taps qu'il n'en faudrait pour le faire entièrement en FIR, et sans aucun problème de ripples hors bande. Par contre on est du coup lié aux seules "formes" de filtrage possibles avec les biquads (exit donc les truc genre horbach-keele, EQ raised cosine, etc...).
pos
 
Messages: 1996
Inscription Forum: 07 Mai 2007 16:36
  • offline

Message » 17 Avr 2013 15:59

Merci :thks:
LBTRMA
 
Messages: 9807
Inscription Forum: 03 Fév 2011 21:48
Localisation: Proche de Dunkerque
  • offline

Message » 17 Avr 2013 16:05

Nikk a écrit:
Kro a écrit:
Oui j'ai fait l'essai. Il y a une breve demo sur Diyaudio.


Si tu as le lien je veux bien mais c'est une bonne nouvelle.


Voici le lien: http://www.diyaudio.com/forums/digital- ... ost3443952

(Il faut etre membre je crois pour voir les screenshots).


Bonjour Nikk

Super, je vais mettre un lien vers ce mini tuto dans le topic rephase :D (si tu es ok)

J'ai qq questions au passage sur ta carte:
- C'est une convolution "directe" ou bien par FFT?
- Pas de problème de mémoire pour distribuer par exemple les 8500 taps sur un seul canal, ou bien pour gérer un plus grand nombre de taps en cas de downsampling?

Ta carte a l'air vraiment super intéressante (même si j'aurais préféré des sorties symétriques, mais évidemment on ne peux jamais contenter tout le monde, et il reste la solution I2S), et une alternative sérieuse et intégrée au miniSHARC (qui reste un poil plus puissant, mais ne gère pas encore le downsampling, et ne permet pas de mettre plus de 2048 taps sur un même canal).

Ça m’intéresserait d'améliorer les interactions possibles entre ton soft et rePhase (à moins que tu ne compte intégrer la génération des filtres FIR directement dans ton soft?), par exemple pour envoyer plus simplement les coefficients sans devoir sauver puis charger un fichier, et gérer à la mains les histoires d'offset.

Je pensais faire un truc assez simple, et compatible avec d'autres logiciels: à chaque génération d'impulse un fichier temporaire est créer (en parallèle du fichier normal), écrasant le précédent, et accompagné d'une description (nom de l'impulse, fréquence, offset, etc.), le tout dans le répertoire temp. Cela pourrait être un fichier json avec l'ensemble, coefficients + infos.
Du coup par exemple dans ton soft il suffirait d'importer l'impulse "en cours" (la dernière crée) avec un simple bouton "import from rePhase", et l'offset serait également directement affiché (en ms et samples), ce qui permettrait à l'utilisateur de compenser les autres canaux plus facilement (voir automatiquement).
pos
 
Messages: 1996
Inscription Forum: 07 Mai 2007 16:36
  • offline

Message » 17 Avr 2013 18:49

Je me demande si ce sujet ne serait pas plus à sa place dans DIY qu'est-ce que vous en dites ?
Avatar de l’utilisateur
Kro
Modérateur DIY
Modérateur DIY
 
Messages: 29426
Inscription Forum: 12 Jan 2004 19:24
Localisation: L'Isle d'Abeau (38)
  • offline

Message » 17 Avr 2013 21:52

Nikk a écrit:Merci pour ton interet.

Avant tout, je voudrais rappeler qu'il y a quand meme 500 MMACs avec ce DSP, ce qui devrait suffire pour gerer 2 enceintes il me semble.

Sinon, oui on aurait pu monter un DSP plus puissant - mais alors on passerait a une autre categorie de prix.

Il me semble que la carte, telle qu'elle est, constitue un bon equilibre entre ressources DSP, entrees/sorties et possibilite d'interfacage (keypad, telecommande, LCD, controle par USB). Et le but de cette carte, c'est avant tout de se faire plaisir pour un prix contenu.

Pour revenir a ta question, tu as besoin de combien de ressources?


dison qu'avec une réserve autour de 60000 taps, sa devrais aller

moi il me faudrait peut être deux carte donc une par enceinte donc 30000 x2 ou 60000 sur une

et sans limitation d'attribution ou très haute, cas extrême et inutile mais si je veux placer les 60000taps sur un eq j'aimerai ne pas essuyer de refus, si c'est moins sa va mais suffisamment

après sa peu être moins sa dépendra des proco disponible tout un tas de chose, plus des pente de filtrage forte

sachant que sur la carte je place des convolutions le filtrage
:wink:
dominax
 
Messages: 5458
Inscription Forum: 09 Mai 2010 16:50
  • offline

Message » 17 Avr 2013 22:06

T'es terrible dominax t'en veux tjs plus :mdr:
Avatar de l’utilisateur
Kro
Modérateur DIY
Modérateur DIY
 
Messages: 29426
Inscription Forum: 12 Jan 2004 19:24
Localisation: L'Isle d'Abeau (38)
  • offline

Message » 17 Avr 2013 22:47

Kro a écrit:T'es terrible dominax t'en veux tjs plus :mdr:


oui, c'est un peu mon problème toujours plus toujours moins chère, bon je suis prêt à payer un peu quand même

et attend j'ai même pas attaqué mes prérogative en matière de logiciel, parce que la par rapport à mes souhaits, c'est un petit peu la préhistoire, mais je ne désespère pas, si vraiment
j' était un crack en électronique et en développement logiciel, j'aurait déja commencé un travail de fond, et j'en aurai fait profiter le forum
je laisse sa à d'autre,

sa progresse bien et vite quand même tout sa

pour l'instant je me concentre sur mes enceintes, et le future comparo de compression qui est en faite une première parti du développement de l'enceinte pour y voir plus claire sur ce marché, il y a plein de compression en tout genre, cela va me permettre un grand trie, une ref chasse l'autre, on y vas à l'aveuglette un peu et on lope peut être des produits intéressant, parce que non testé ni comparé

il y a plein de modèles qui me font de l'oeil sur le papier, en plus un comparo de ce genre, c'est sympa à faire
:wink:
dominax
 
Messages: 5458
Inscription Forum: 09 Mai 2010 16:50
  • offline

Message » 18 Avr 2013 0:36

Kro a écrit:Je me demande si ce sujet ne serait pas plus à sa place dans DIY qu'est-ce que vous en dites ?


Moi je peux le déplacer sans probleme :wink: Je pense également que la section DIY conviendrait mieux à cette carte et rencontrerais un public plus large.
Si Nikk est partant je transfère.
LBTRMA
 
Messages: 9807
Inscription Forum: 03 Fév 2011 21:48
Localisation: Proche de Dunkerque
  • offline

Message » 18 Avr 2013 7:22

pos a écrit:Bonjour Nikk

Salut Pos, content de te rencontrer!
pos a écrit:Super, je vais mettre un lien vers ce mini tuto dans le topic rephase :D (si tu es ok)

Bien sur. Si tu le proposes, c'est que je n'ai pas dit trop de betises.
pos a écrit:J'ai qq questions au passage sur ta carte:
- C'est une convolution "directe" ou bien par FFT?

Convolution directe.
pos a écrit:- Pas de problème de mémoire pour distribuer par exemple les 8500 taps sur un seul canal, ou bien pour gérer un plus grand nombre de taps en cas de downsampling?

Si. En fait la limite actuelle est de 1023 taps par canal.
Plus en detail, dans le mode FIR actuel:
- Input Processing: 1023 coefs max sur chacun des 4 blocs FIR (Left, Right, Sum, Diff).
- Output Processing: 1023 coefs max sur les blocs FIR des canaux 1, 2, 3, 6, 7, 8 et 511 coefs max sur les canaux 4, 5, 9, 10

Je peux changer ca a tout moment - et je l'ai d'ailleurs deja fait une fois. Simplement, dans le contexte actuel d'allocation statique de la memoire sur le DSP, ce qui est reserve pour un filtre FIR n'est plus disponible pour autre chose, comme une ligne de retard par exemple. En clair, si je dois reserver plus de memoire pour les filtres FIR, je vais devoir reduire la longueur des lignes de retard.

L'etage de decimation est pour plus tard. Je pense l'organiser par paliers, ce qui laisserait a l'utilisateur la possibilite de selectionner un niveau de decimation adhoc. Par exemple 4x ou 16x. Je n'ai pas encore les details en tete, mais l'utilisateur va sans doute devoir fournir les coefs pour le taux de decimation choisi. Donc s'il choisit 16x par exemple, l'application s'attendra a recevoir 1000 coefs et pas 16000. Est-ce que c'est a ce type de probleme que tu penses?

Pour ma part, j'aimerais plus de flexibilite dans le choix de la frequence d'echantilonnage dans rePhase. Si j'implemente la decimation 4x et 16x, Fs = 12 kHz existe deja, mais pas Fs = 3kHz. Ce sera un gros probleme pour toi d'ajouter une frequence d'echantillonnage?

Dans un premier temps toutefois, il y aura le mix FIR/IIR. Donc 4x1023 taps ou 4x2047 taps (a decider) sur les entrees Left/Right/Sum/Diff, suivis de filtrage IIR apres routing des entrees vers les sorties.

pos a écrit:Ça m’intéresserait d'améliorer les interactions possibles entre ton soft et rePhase (à moins que tu ne compte intégrer la génération des filtres FIR directement dans ton soft?), par exemple pour envoyer plus simplement les coefficients sans devoir sauver puis charger un fichier, et gérer à la mains les histoires d'offset.

Je pensais faire un truc assez simple, et compatible avec d'autres logiciels: à chaque génération d'impulse un fichier temporaire est créer (en parallèle du fichier normal), écrasant le précédent, et accompagné d'une description (nom de l'impulse, fréquence, offset, etc.), le tout dans le répertoire temp. Cela pourrait être un fichier json avec l'ensemble, coefficients + infos.
Du coup par exemple dans ton soft il suffirait d'importer l'impulse "en cours" (la dernière crée) avec un simple bouton "import from rePhase", et l'offset serait également directement affiché (en ms et samples), ce qui permettrait à l'utilisateur de compenser les autres canaux plus facilement (voir automatiquement).


OK ca m'a l'air interessant. (S'il y a bien 1 truc que je n'aime pas dans la vie, c'est le formattage des fichiers :ko: ).
Est-ce que tu peux m'envoyer un exemple de fichier? (nholzem{arobas}waf-audio{point}com).

Najda utilise aussi un fichier de configuration XML qui comprend les coefs FIR, les retards etc. Ce fichier est produit des que l'utilisateur cree un 'setup'. Il y a peut-etre moyen de faire shampoing et apres-shampoing dans le meme tube?
Nikk
Pro-Fabricant
Pro-Fabricant
 
Messages: 24
Inscription Forum: 20 Aoû 2012 11:06
  • offline

Message » 18 Avr 2013 7:24

LBTRMA a écrit:
Kro a écrit:Je me demande si ce sujet ne serait pas plus à sa place dans DIY qu'est-ce que vous en dites ?


Moi je peux le déplacer sans probleme :wink: Je pense également que la section DIY conviendrait mieux à cette carte et rencontrerais un public plus large.
Si Nikk est partant je transfère.


Pour moi, oui, aucun probleme. Merci LBTRMA!
Nikk
Pro-Fabricant
Pro-Fabricant
 
Messages: 24
Inscription Forum: 20 Aoû 2012 11:06
  • offline

Message » 18 Avr 2013 7:57

Sujet déplacé :wink:
LBTRMA
 
Messages: 9807
Inscription Forum: 03 Fév 2011 21:48
Localisation: Proche de Dunkerque
  • offline

Message » 18 Avr 2013 9:08

Je me suis emmele les pinceaux avec la distribution des taps.

Sur le traitement des sorties, c'est:
- Output Processing: 1023 coefs max sur les blocs FIR des canaux 1, 2, 3, 5, 6, 7 et 511 coefs max sur les canaux 4, 8, 9, 10

A noter que les sorties 1, 2, 3, 4, 9 sont gerees par le premier core DSP, et les sorties 5, 6, 7, 8, 10 sont gerees par le second core. Pour profiter de toutes les ressources, il est bon de distribuer la charge de calcul de facon equitable entre les cores. Par exemple, un system 2x3 voies, ca serait les sorties 1, 2, 3 pour une enceinte, et les sorties 5, 6, 7 pour l'autre enceinte.
Nikk
Pro-Fabricant
Pro-Fabricant
 
Messages: 24
Inscription Forum: 20 Aoû 2012 11:06
  • offline

Message » 18 Avr 2013 17:51

Nikk a écrit:Salut Pos, content de te rencontrer!
De même :D

Convolution directe.
cool!

Je peux changer ca a tout moment - et je l'ai d'ailleurs deja fait une fois. Simplement, dans le contexte actuel d'allocation statique de la memoire sur le DSP, ce qui est reserve pour un filtre FIR n'est plus disponible pour autre chose, comme une ligne de retard par exemple. En clair, si je dois reserver plus de memoire pour les filtres FIR, je vais devoir reduire la longueur des lignes de retard.

Sur une enceinte filtrée en actif (pas fullband) les besoins en taps seront très différents d'une voie à l'autre, donc ça pourrait valoir le coup de repartir dès le départ de manière statique les max de taps dans cet esprit, avec par exemple 4095 pour le 1er canal et 127 pour le dernier canal...
Au pire si quelqu'un a besoin de plus de délais sur une voix il peut toujours le faire pas convolution :p

L'etage de decimation est pour plus tard. Je pense l'organiser par paliers, ce qui laisserait a l'utilisateur la possibilite de selectionner un niveau de decimation adhoc. Par exemple 4x ou 16x. Je n'ai pas encore les details en tete, mais l'utilisateur va sans doute devoir fournir les coefs pour le taux de decimation choisi. Donc s'il choisit 16x par exemple, l'application s'attendra a recevoir 1000 coefs et pas 16000. Est-ce que c'est a ce type de probleme que tu penses?

Je ne suis pas sûr de bien cerner la situation (je n'y connais rien du tout en prog DSP), mais si j'ai bien compris en gros si par exemple on est en 48kHz et qu'on alloue 1000 taps au canal 1, et qu'on le décime 16x, on dispose de 1000 taps à 3kHz, soit l’équivalent de 16000 taps à 48kHz (mais avec un Nyquist à 1.5kHz), c'est bien ça?
Donc en gros en décimant 16x on multiplie par 16 la capacité de filtrage, et on peut par exemple descendre 4 octaves plus bas pour un même filtrage.
Mais pourquoi ne dispose-t-on pas de plus de taps en downsamplant?
C'est le cas quand on passe de 96kHz à 48kHz de sampling par exemple: on a 2 fois le nb de taps et 2 fois la "capacité de filtrage" pour un même nb de taps, soit 4 fois la capacité de filtrage au final), mais visiblement ca n'est pas le cas quand on le fait pas décimation?
Si la carte tournait effectivement sur un sampling à 3kHz n'aurait-on pas 16*8500 taps disponibles (problème de mémoire mis à part), soit une capacité de filtrage multipliée par 16*16=256 ?

Enfin bref, comme tu vois qq petites choses m'échappent :mdr:

Pour ma part, j'aimerais plus de flexibilite dans le choix de la frequence d'echantilonnage dans rePhase. Si j'implemente la decimation 4x et 16x, Fs = 12 kHz existe deja, mais pas Fs = 3kHz. Ce sera un gros probleme pour toi d'ajouter une frequence d'echantillonnage?

Aucun problème, et je peux aussi ajouter 44.1/4 et 16 (je ne sais pas si le format wav va apprecier une frequence à virgule, on verra bien...).

OK ca m'a l'air interessant. (S'il y a bien 1 truc que je n'aime pas dans la vie, c'est le formattage des fichiers :ko: ).
Est-ce que tu peux m'envoyer un exemple de fichier? (nholzem{arobas}waf-audio{point}com).

Najda utilise aussi un fichier de configuration XML qui comprend les coefs FIR, les retards etc. Ce fichier est produit des que l'utilisateur cree un 'setup'. Il y a peut-etre moyen de faire shampoing et apres-shampoing dans le meme tube?

Ok on va voir ça
pos
 
Messages: 1996
Inscription Forum: 07 Mai 2007 16:36
  • offline

Message » 18 Avr 2013 21:23

Nikk tu parlais de bosser sur un possible mix FIR IIR. Ca peut permettre d'économiser le nombre de taps a priori, je suppose que c'est pour ça ?

Visiblement filtrer dans le grave est très consommateur, pour un caisson ou une troisième voie par exemple.

Nikk ou pos qu'est-ce qui serait le plus consommateur : filtres IIR et convolution de correction de phase ? Ou filtrage FIR direct (en oubliant qu'il faudra probablement faire de la correction de phase quand même car si le filtre est à phase linéaire les hp ne le sont pas).
Avatar de l’utilisateur
Kro
Modérateur DIY
Modérateur DIY
 
Messages: 29426
Inscription Forum: 12 Jan 2004 19:24
Localisation: L'Isle d'Abeau (38)
  • offline

Message » 19 Avr 2013 10:19

pos a écrit:Sur une enceinte filtrée en actif (pas fullband) les besoins en taps seront très différents d'une voie à l'autre, donc ça pourrait valoir le coup de repartir dès le départ de manière statique les max de taps dans cet esprit, avec par exemple 4095 pour le 1er canal et 127 pour le dernier canal...


Il y a toujours moyen de revoir ca, et ca va sans doute encore changer.

pos a écrit:Au pire si quelqu'un a besoin de plus de délais sur une voix il peut toujours le faire pas convolution :p


C'est bien vrai, sauf que ca n'est pas tres pratique a aucun niveau ;)

pos a écrit:Je ne suis pas sûr de bien cerner la situation (je n'y connais rien du tout en prog DSP), mais si j'ai bien compris en gros si par exemple on est en 48kHz et qu'on alloue 1000 taps au canal 1, et qu'on le décime 16x, on dispose de 1000 taps à 3kHz, soit l’équivalent de 16000 taps à 48kHz (mais avec un Nyquist à 1.5kHz), c'est bien ça?
Donc en gros en décimant 16x on multiplie par 16 la capacité de filtrage, et on peut par exemple descendre 4 octaves plus bas pour un même filtrage.
Mais pourquoi ne dispose-t-on pas de plus de taps en downsamplant?
C'est le cas quand on passe de 96kHz à 48kHz de sampling par exemple: on a 2 fois le nb de taps et 2 fois la "capacité de filtrage" pour un même nb de taps, soit 4 fois la capacité de filtrage au final), mais visiblement ca n'est pas le cas quand on le fait pas décimation?
Si la carte tournait effectivement sur un sampling à 3kHz n'aurait-on pas 16*8500 taps disponibles (problème de mémoire mis à part), soit une capacité de filtrage multipliée par 16*16=256 ?


Tu as tout-a-fait raison. La decimation est seulement une technique de sous-echantillonnage ou le rapport des frequences d'echantillonnage est un nombre entier.
Donc en principe, la decimation devrait nous apporter un facteur bonus egal au carre du facteur de decimation.
En pratique toutefois, il faut filtrer les signaux pour l'operation de decimation elle-meme, et il faut gerer a la frequence du systeme un signal sous-echantillonne. En effet, meme si dans ton exemple ci-dessus on se retrouve en equivalent 3 kHz, le systeme, lui, continue de fonctionner a 48 kHz. Aussi, avant de retransmettre le signal aux DACs, il faudra bien le ramener a la frequence d'echantillonnage du systeme.
Bref autant de choses qui font fondre le bonus - mais ca vaut quand meme la peine.

pos a écrit:Aucun problème, et je peux aussi ajouter 44.1/4 et 16 (je ne sais pas si le format wav va apprecier une frequence à virgule, on verra bien...).

Perso je n'utilise pas les multiples de 44.1 kHz. (Quoique... Najda a une entree pour horloge externe).

Kro a écrit:Nikk tu parlais de bosser sur un possible mix FIR IIR. Ca peut permettre d'économiser le nombre de taps a priori, je suppose que c'est pour ça ?


Le mix IIR/FIR n'est pas vraiment mon idee, c'est plutot celle des forumers sur Diyaudio. Ce qu'ils souhaitent faire, c'est implementer les crossovers avec des filtres IIR classiques, et d'y superposer une couche une couche FIR.

Voila comment ca va se presenter:

Image

Dans le bloc Output Processing, l'utilisateur parametre ses filtres de crossover de facon traditionnelle.

Il mesure la reponse des enceintes, et importe ses mesures dans rePhase.

Toujours dans rePhase, il arrange l'EQ et la phase. RePhase produit un filtre FIR.

Les coefficients du filtre FIR prennent place dans le bloc Input Processing.
Nikk
Pro-Fabricant
Pro-Fabricant
 
Messages: 24
Inscription Forum: 20 Aoû 2012 11:06
  • offline


Retourner vers Correction active et logiciels de mesure