Modérateurs: Modération Forum DIY, Modération Forum Installations, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 45 invités

extension DSP pour DAC OKTO Research

Message » 26 Jan 2020 0:04

maxidcx a écrit:
Pour ce qui est de l'hdmi Gug42 tu as raison, le nanoavr est un bon example d'integration de composants hdmi... ca serait ideal... par contre pour les décodages c'est une autre paire de manche, et l'exemple d'emotiva est mémorable!

a+


Je n'ai pas suivi, des soucis de licences ?
Bah pour mon nanovr, je décode logiciellement le DTS/DD en LPCM 8 canaux. Par contre, me manquerait le hdmi 2, des sorties XLR, du FIR.

Et malheuresement, sur le marché, je ne vois aucune "évolution" ou concurrent au nanovr :(
Gug42
 
Messages: 1636
Inscription Forum: 16 Nov 2007 15:20
  • online

Message » 27 Jan 2020 8:38

@maxidcx, superbe initiative !
Comme tu le sais j’ai eu la chance de tester le DAC8PRO, c’est une superbe machine, du niveau des Exasound multicanaux à 3 fois le prix.
C’est la machine rêvée pour qui veut faire de la multi-amplification active, 2x4voies stereo pour ce qui me concerne. Avoir des fonctions DSP serait un plus certain. Après il sera difficile d’avoir en embarqué la richesse fonctionnelle et surtout la puissance de calcul des solutions purement logicielles, en particulier convolutions « croisées » type HomeAudioFidelity et suréchantillonnages poussés comme les polynomiaux ou sinc. Mais ce n’est pas forcément nécessaire pour tout le monde !
Pour ceux que ça intéresse mon CR en anglais ici https://www.audiosciencereview.com/foru ... ost-310548
alec_eiffel
 
Messages: 1347
Inscription Forum: 08 Jan 2004 0:28
Localisation: Aix-en-Provence
  • offline

Message » 28 Jan 2020 15:59

merci Alec_effeil pour ta participation à ce "tour" et pour le compte rendu.
C'est vrai que l'on est tous tentés par la convolution, que ce soit pour la correction de pièce ou un filtrage phase linéaire ou simplement pour la facilité de corriger la courbe de réponse en prenant l'inverse de la mesure (enfin presque!);
l'idée de Pavel c'est de faire la convolution en brutefir (fft based) dans le Raspberry Pi pour la version stereo, ou sur PC pour la version dac8pro (jriver par exemple)
Pour la partie crossover, une fois que c'est au point alors c'est bien de pouvoir la laisser dans le dac, pour pouvoir utiliser des entrées Toslink/coax et profiter quand même d'un filtrage actif autonome indépendant du streamer ou du PC.
Du coup on propose le crossover disons classique genre LR4/6 ou le filtre soustractif genre LV6 Lipschitz Vanderkooy. Ca laisse encore un peu de capacité de calcul pour faire des FIR avec peux de taps, pour la partie aiguës, pour la correction d'une compression par exemple...

je devrais pousser cela au maximum sur mon install 2x2voies+sub et proposer différentes solutions faciles à configurer avec un programme en ligne de commande, à défaut d'avoir assez de temps (et de competence...) pour faire une interface graphique...

pour faire patienter, voila comment est définit le crossover 2x2 voies et une voie LFE dans le moteur d'encodage pour le dsp virtuel du dac:
Code: Tout sélectionner
void prefilterLowpass(int in, int mem, int flow){
    dsp_PARAM_NUM(in*2);
    int defaultGain =
        dspGain_Default(1.0);

    int prefilter = dspBiquad_Sections(6);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);
        dspGain_Default(1.0);
        dsp_LP_BUT4(flow);

        dsp_dumpParameterNum(prefilter,30,"BQ6_PRE_FILTER",in);

    dsp_LOAD(in);
    dsp_GAIN(defaultGain);
    dsp_BIQUADS(prefilter);
    dsp_STORE_MEM(mem);
}

void crossOver2ways(int in,int outlow, int outhigh, int f, int dist, float highgain){

    dsp_PARAM_NUM(in*2+1);

    int lowpass = dspBiquad_Sections(4);
        dsp_LP_LR4(f);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);

    int highpass  = dspBiquad_Sections(4);
        dsp_HP_LR4(f);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);

    int delayline =
        dspDelay_MilliMeter_Max_Default(500, dist, 340); // max 50cm between drivers

    dsp_dumpParameterNum(lowpass, 10,"BQ2_LOWPASS",in);
    dsp_dumpParameterNum(highpass,10,"BQ2_HIGHPASS",in);
    dsp_dumpParameterNum(delayline,1,"DELAY_HIGH_LOW",in);

    dsp_LOAD(in);
    dsp_COPYXY();
    dsp_BIQUADS(lowpass);
    if (dist>0) dsp_DELAY(delayline);
    dsp_STORE(outlow);

    dsp_SWAPXY();
    dsp_BIQUADS(highpass);
    dsp_GAIN0DB_Fixed(highgain);
    if (dist<0) dsp_DELAY(delayline);
    dsp_STORE(outhigh);
}

void LFEChannel(int mem1,int mem2, int out, int dist){
    dsp_PARAM(10);
    int filterlfe = dspBiquad_Sections(4);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);
        dsp_Filter2ndOrder(FPEAK,1000, 0.5, 1.0);

    int delayline =
        dspDelay_MilliMeter_Max_Default(1000, dist, 340);

    dsp_dumpParameterNum(filterlfe,20,"BQ4_EQ_LFE",-1);
    dsp_dumpParameterNum(delayline,1,"DELAY_LFE",-1);

    dsp_LOAD_MEM(mem1);
    dsp_LOAD_MEM(mem2);
    dsp_ADDXY();
    dsp_BIQUADS(filterlfe);
    dsp_DELAY(delayline);
    dsp_STORE(out);
}

int StereoCrossOverLFE(int left, int right, int outs, int fx, int dist, int flfe){
    dsp_PARAM();
    int mem1 = dspMem_Location(1);
    int mem2 = dspMem_Location(1);

    dsp_dumpParameterNum(mem1,2,"MEM",1);
    dsp_dumpParameterNum(mem2,2,"MEM",2);

    dsp_CORE();
    prefilterLowpass(left,  mem1, flfe);
    prefilterLowpass(right, mem2, flfe);
    crossOver2ways(left, outs+0,outs+1, fx, dist, 0.8);
    crossOver2ways(right,outs+2,outs+3, fx, dist, 0.8);
    LFEChannel(mem1, mem2, outs+4, 0);
    return dsp_END_OF_CODE();
}



int dspProg(){

    return StereoCrossOverLFE(0,1,0,fcross,distance,flfe);

}


ce programme est ajouté lors du linkage à la compilation d'un programme en ligne de commande qui permet de paramétrer chacune des fonctions. Ensuite dspProg() est exécuté et cela génére un fichier d'opcode qui sera mis en flash du dac. un interpréteur d'opcode est implémentée dans le dac pour déchiffrer ce bazar :) et ca marche :hehe:

vivement les essais en vrai grandeur

Rappel de 2 liens majeurs sur le filtrage soustractif:
http://jimbee.over-blog.com/page-2554286.html
diy-filtrage-equalisation/filtrage-soustractif-a-delai-avec-le-dspiy-t30046299.html
Dernière édition par maxidcx le 30 Jan 2020 8:54, édité 2 fois.
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3103
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 29 Jan 2020 4:58

Oui ça me parait une très bonne approche !
Pour le filtrage linéaire FIR pour la transition medium/tweeter : ça apporte vraiment un plus, je filtre mes AMT à 1500Hz, par contre il me faut a minima 5000 taps @ 192kHz. Je ne sais pas si la puce XMOS pourrait faire ça en plus de l’IIR de la coupure grave.
alec_eiffel
 
Messages: 1347
Inscription Forum: 08 Jan 2004 0:28
Localisation: Aix-en-Provence
  • offline

Message » 02 Fév 2020 0:09

Ah tiens tu es de retour :bravo:
Du coup c'est un ESS sans le défaut de l'IMD, comment ils ont résolu ça tu sais ?
manudrz
 
Messages: 1415
Inscription Forum: 28 Déc 2010 0:25
Localisation: 50540
  • offline

Message » 04 Fév 2020 21:14

Salut Manudrz :P
oui, je commence vaguement à sortir la tête de l'eau avec ce projet USB pour le dac okto et maintenant je vais intégrer le mien alors j'en profite pour partager.

la mise au point d'une soluce ESS n'est effectivement pas simple et chaque société garde ses trucs & astuces :)
par exemple , il a eu accès à un système de mesure dernier cri ap555 il y a 2 semaines, et il a tuné une valeur dans les registres qui concernent "le bias de l'entrée crystal"... c'est du boulot pour atteindre la perfection. moi je trouve que 120db c'est cool et "suffisant", mais on disait çà avec "100db" il y a quelques années :)

sinon, pour donner des nouvelles, j'ai eu le plaisir d'échanger avec tcli au sujet du dsp et il a prit du temps pour développer une interface linux/alsa qui permet de faire tourner ce moteur sur linux. Donc pour ceux qui ne peuvent ou ne souhaite pas investir dans un dac-dsp de okto, il pourront bricoler les même types de filtres sur un front end raspi :) dailleurs je dois tester avec volumio d'ici 2 semaines;

a+
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3103
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 04 Fév 2020 22:17

Volumio c'est vraiment pas mal :bravo: Je l'ai sur un Odroid moi et cette simplicité c'est vraiment du bonheur
manudrz
 
Messages: 1415
Inscription Forum: 28 Déc 2010 0:25
Localisation: 50540
  • offline

Message » 04 Fév 2020 22:44

<hs>
Sous volumio, brutefir en attaquant un minidsp 2x4HD c'est top je trouve.
Le plugin de barbuze est pas mal mais je trouve que son auteur par dans tous les sens. Il a ajouté DRC, mais je trouve que ça fait gadget.
Je préférè passer par une rephase...
Je lui avait proposé un PR pour avoir deux versions du plugin 1 avancée, l'autre simplement brutefir configuré mais c'est pas passé :(
Pour ceux qui veulent tester le filtrage full FIR il existe quelques cartes USB creative qui font l'affaire, le plus compliqué finalement c'est l'amplification.

J'ai aussi tenté une autre approche, j'ai acheté et utilisé un hifiberry digi+ I/O en pensant pouvoir l'utiliser comme un minidsp du pauvre grâce à son entrée.
Ça fonctionne, mais malheureusement il faut préciser en dur la fréquence d’échantillonnage et le driver bloque lorsqu'il ne détecte plus de son.
</hs> :ane:
HoberM
Membre HCFR
Membre HCFR
 
Messages: 1649
Inscription Forum: 27 Jan 2018 16:06
Localisation: Toulouse
  • offline

Message » 06 Fév 2020 14:43

maxidcx a écrit:Donc pour ceux qui ne peuvent ou ne souhaite pas investir dans un dac-dsp de okto, il pourront bricoler les même types de filtres sur un front end raspi :) dailleurs je dois tester avec volumio d'ici 2 semaines;

Tien c'est ce que je lui avait dis au gas d'Okto sur sa version avec Rasp, s'il nous laissait le truc "ouvert" on pourrait filtrer avec, après encore faut t'il avoir le bon nombre de sortie, mais si on peut repiquer des extensions de sortie sur le hard d'origine c'est intéressant oui
Avatar de l’utilisateur
speedbad
Membre HCFR
Membre HCFR
 
Messages: 3639
Inscription Forum: 13 Fév 2005 5:12
Localisation: IdF
  • online

Message » 06 Fév 2020 16:21

maxidcx a écrit:sinon, pour donner des nouvelles, j'ai eu le plaisir d'échanger avec tcli au sujet du dsp et il a prit du temps pour développer une interface linux/alsa qui permet de faire tourner ce moteur sur linux. Donc pour ceux qui ne peuvent ou ne souhaite pas investir dans un dac-dsp de okto, il pourront bricoler les même types de filtres sur un front end raspi :) dailleurs je dois tester avec volumio d'ici 2 semaines;

a+


Salut Maxidcx. Ça c'est intéressant ! :)
Alex_twn
 
Messages: 1093
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 06 Fév 2020 23:52

salut Alex_twn, et ca doit se recompiler sans problèmes sur odroid :)
le lien GitHub, mais il n'y a pas encore de documentation et c'est Beta:
https://github.com/fabriceo/AVDSP

Salut speedbad, j'apprécie aussi les systèmes ouverts :) on va livrer un programme source pour l'accès en usb aux fonctions du dac et de mise a jour du programme dsp. Par contre concernant la possibilité de faire une solution a 16 sorties, y a moyen de bricoler mais pas encore de soluce standard.

Salut HoberM, c'est pas HS dans le sens qu'un DAC avec fonction DSP ca a du pour et du contre (et des limitations) par rapport à une soluce front/rpi/pc. Là il y aura les 2 possibilités, car le dsp virtuel peux aussi tourner dans le raspi ou sur le host, donc on pourra comparer;
Jai déjà une préférence pour le dac-dsp car le traitement est optimisé pour la thd et en évitant la reconversion asrc (pas de SOX), c'est très waf et stable, et on peux relier les autres périphériques (canal/tv/box/cd...)

allez encore 1 semaines de boulot et on sera prêt pour la démo, peut être :P
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3103
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 07 Fév 2020 11:50

Salut Maxidcx,
Merci pour le lien, je vais regarder.
J’ai abandonné l’odroid + volumio pour le moment et suit revenu à une rpi + moode en parvenant à fixer dans le FPGA le comportement bizarre de la rpi en fin de morceau.
Au final c’est mieux car plus compatible avec tout, la rpi étant bien mieux supportée que l’odroid et je trouve moode bien mieux aussi.
Alex_twn
 
Messages: 1093
Inscription Forum: 10 Nov 2008 6:02
Localisation: Taiwan
  • offline

Message » 19 Fév 2020 19:03

Hello
En marge du développement de ce projet , maxidcx vient de passer un aprem à la maison afin de découvrir mon système et le mesurer ( electroniquement parlant ) afin d y placer ultérieurement l okto une fois le dsp intègré et d en juger les capacités et qualités .
En l état , je pense sans trop m avancer que l écoute lui a fort plu :P et qu’il trouve la marge de progression plutôt minime :wink:
A bientot pour les prochains travaux ( et une ecoute multicanale )
CeD

La configuration dans mon profil


JBL Pro • TAD • Fostex • Yamaha Pro • Anthem • Zappiti • Shield Pro • Oppo • PC Madvr • Sony
<< HC-Cocoon >>
Avatar de l’utilisateur
CDGG
Membre HCFR
Membre HCFR
 
Messages: 8913
Inscription Forum: 29 Mai 2007 22:02
Localisation: GRENOBLE
  • offline

Message » 19 Fév 2020 19:16

Connaissant le système précédent et sachant celui-ci encore mieux c'est sur que qu'apporter une amélioration va être un gros challenge.
Ragnarsson
Membre HCFR
Membre HCFR
 
Messages: 1814
Inscription Forum: 25 Mai 2016 20:15
Localisation: Paris, men en dag i mine forfedres land
  • offline

Message » 22 Fév 2020 9:37

Salut
effectivement CDGG m'a reçu sympathiquement et ce fut l'occasion d'écouter une installation vraiment intéressante et comme j'adore la techno ... logie, on a aussi fait quelques mesures électriques pour qualifier sont système source-crossover c'est à dire : USB-Coax (topping D10) coax-volume-dac (preamp AV8802) analogin-dsp-analogout (DME64N avec cartes MY8-ADDA96).
En fait la question est de savoir jusqu'ou il faut aller, jusqu'ou on entend les differences...

Coté Front, avec le trio de 2226+TAD4001+2446+Fostex et les 4x18p300, on est bien équipé :) en plus c'est beauuuu.
l'écoute est impressionnant, on est dans un cocon, enveloppé par les détails avec une image sonore en 3 dimensions, l'impression d'être sur le plateau d'enregistrement, et avec un réalisme des instruments et des voix saisissant.

coté électronique, le DME64N à de bonnes mesures et s'apparente à peu de choses près aux caractéristiques d'une carte audio pro, la Motu8A, qu'on a utilisé pour les mesures.
on pourrait avoir une meilleur niveau de bruit si la sortie de ces cartes (les amplis ops) étaient calibrés pour un gain plus faible, par exemple 4Vrms à 0dbfs au lieu des 12V actuels qui ne sont pas utilisés. L'idéal serait aussi de rentrer en numérique pour éviter la conversion ADC.

alors peut on faire mieux, et sur quels axes ? soyons d'accord sur le fait que ce n'est pas indispensable et qu'à ce stade c'est plus un exercice de style pour aller au bout des choses, et donc du coup la réponse est oui, on peux faire mieux, mais ce sera difficile de l'entendre, seul le proprio saura différentier.
d'ailleurs il en est convaincu puisqu'il va prochainement tester d'autres amplificateurs :hehe:

il y a quelques variables sur lesquelles travailler:
- la tonalité ou la signature sonore des driver : un 2226 ou un TAD1601 ne sonnent probablement pas pareil.
- les non linéarités, la distorsion harmonique ou d'intermodulation de tous les éléments électroniques mis en serie
- le bruit résiduel de chaque maillon qui s'ajoute (racine de la somme des carrés) et qui est multiplié par le gain des amplis
- le jitter, ce truc qui se traduit par une sonorité numérique, moins naturelle
- la gestion du volume qui devrait se faire le plus loin possible dans la chaines source-dsp-dac-ampli pour maximiser le SNR et Sinad...

alors pour ce qui concerne ce topic, on va s'amuser à recréer le crossover pour le pilotage des front et lfe dans le dac Okto, ce qui nécessite l'équivalent de 52 cellules biquad. ca rentre.
mais il ne serait pas cohérent d'avoir un dac avec 2 microvolts de bruit si derriere on met un p5000 qui à -70dbu de bruit résiduel (250uV), il faut adapter l'amplification et le gain aux capacités de la source et à la sensibilité du driver. par exemple un hypex NC500 serait plus adapté.
à suivre !
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3103
Inscription Forum: 25 Avr 2007 10:50
  • offline


Retourner vers Sources et DAC