Auteur Sujet: Routage flux numérique VST HOST  (Lu 17633 fois)

LeChacal619

  • Hero Member
  • *****
  • Messages: 2024
    • E-mail
Routage flux numérique VST HOST
« le: janvier 07, 2014, 23:36:49 pm »
L'utilisation d'une carte audio en ASIO bloque toute communication avec un autre logiciel que celui qui utilise l'ASIO.

Je pense avoir trouvé un moyen de contourner ce problème : l'utilisation de Jack audio pour windows.

En réalité, Jack audio est un pilote ASIO virtual, qui se charge de communiquer les données avec la carte audio. Ainsi, le pilote de la carte audio communique uniquement avec l'application jack;

Mais Jack, lui, peut communiquer avec plusieurs applications utilisant le driver ASIO jack SIMULTANEMENT, et on peut router les flux de n'importe quelle appli vers une autre ou vers la carte audio.

Voici un diagramme que j'ai réussi a faire avec la compilation d'une application hote ASIO sous Visual Studio et l'application Console (hote vst) :



Comme on peut le voir, je peux lire un flux depuis un logiciel ASIO utilisant le driver jackRouter, l'envoyer vers un autre logiciel utilisant lui aussi le driver ASIO jackRouter, et enfin envoyer le flux sortant de ce deuxième logiciel vers les buffers du driver ASIO constructeur de la carte audio ! On peut envisager n'importe quel routage du flux avec un nombre plus important d'applications (duplication des signaux, mixages des signaux, etc.).

Il reste un problème majeur : le pilote ASIO jackrouter ne fonctionne pas :

- sous foobar avec le plugin ASIO (il est présent dans la liste mais la configuration des canaux ne marche pas et à la lecture d'un fichier rien ne se passe puis un message d'erreur indique que le pilote ASIO n'arrive pas a etre utilisé),
- il ne fonctionne pas non plus sous HolmImpulse (non présent dans la liste des drivers ASIO disponibles),
- ni dans windows media player....

En fait je n'ai réussi a le faire fonctionner que sous Console et une application demo basique dont les fichiers sources sont dispos sur le net et que j'ai compilé vite fait pour essayer.... Solutions :

1- Soit il faut programmer un logiciel de lecture musicale et un logiciel de mesure similaire à holmimpulse (rho le bordel)
2- Soit on peut essayer de voir du côté des developpeurs de Jack audio s'ils peuvent faire en sorte que leur driver soit mieux compatible avec les applications qui utilisent des pilotes ASIO....
3- Soit on peut développer un pilote virtuel DirectSound qui fonctionnerai a la fréquence de sampling de jackRouter et qui redirigerai les données via une application fantome qui se connecterait a jack audio et transfèrerai les flux reçu par windows vers l'asio de jackrouter....

A mon avis la solution la plus simple est la 2, la 3 est envisageable, la 1 j'oublierai....  :refl:
« Modifié: janvier 07, 2014, 23:41:23 pm par LeChacal619 »

petoind

  • Administrator
  • Hero Member
  • *****
  • Messages: 7280
    • Conception des enceintes acoustiques
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #1 le: janvier 11, 2014, 19:24:36 pm »
Bonjour

Que donne VB-AUDIO et Virtual Audio Cable ?

Une remarque, sortie le flux numérique du PC par une carte, entrer dans un appareil de sélection/reformatage numérique tel le BEHRINGER SRC 2496, et re entrer dans le PC pour la ligne VSTHost / Convolver, permet de sélectionner de façon ergonomique plusieurs sources numérique et analogique.
Nous avons deux avantages :
- Le SRC met tout le monde au même format numérique. C'est indispensable pour Convolver.
- La sélection de sources est ergonomique, 3 sources numérique (AES/EBU, S/PDIF sur RCA, S/PDIF optique et 1 analogique sur XLR.

Cordialement, Dominique.

LeChacal619

  • Hero Member
  • *****
  • Messages: 2024
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #2 le: janvier 11, 2014, 19:37:07 pm »
Bonjour,

Comme expliqué dans mon mail, la plupart des cartes ne peuvent fonctionner simultanément en analogique et en SPDIF.

en ce qui concerne VAC et VB-AUDIO, cela ne permet (d'après ce que j'ai compris et réussi à faire) que d'envoyer et recevoir un flux sur un pilote virtuel.  Il n'y a donc pas de possibilité de transmettre le flux de ces pilotes virtuels vers les sorties de la carte audio. En effet il faudrait pour cela :

1- que les flux du pilote virtuel soient synchrones avec ceux de la carte son (ce qui n'est pas le cas car les pilotes virtuels tels que VB-AUDIO et VAC utilisent des horloges internes - si je ne dis pas de bêtises synchronisées par l'horloge du processeur)
2- que l'on puisse transmettre les données du pilote virtuel vers la carte son ou le logiciel qui utilise la carte en ASIO (on ne peut pas utiliser un pilote différent en entrée et en sortie sur un VST Host). On ne peut pas non plus copier les données du pilote virtuel vers le logiciel utilisant la carte en ASIO.

Jack-audio résoud ces 2 problèmes :

1- son interface synchrone serveur<->client permet au serveur de se connecter au driver ASIO de la carte. A partir de là, la carte envoie un signal à chaque fois qu'il faut envoyer un bloc de données. Ainsi, la fréquence de sampling traitée par le serveur jack et parfaitement synchronisée avec la fréquence de sampling de la carte son.

2- comme le serveur jack transmet les données vers la carte audio, il n'y a qu'un seul serveur jack pour une seule instance ASIO de la carte son. Les autres logiciels, eux, n'utilisent pas le driver ASIO de la carte son (impossible à utiliser car déjà utilisé par le serveur Jack) mais un driver ASIO virtuel dénommé JackRouter, qui lui peut avoir plusieurs instances.

Les drivers JackRouter sont connectés au serveur Jack : les données sont accessibles par le serveur jack et synchronisées au serveur (donc synchronisés a la carte audio car le serveur Jack est synchronisé a la carte).

Ainsi, le serveur Jack, qui a accès a tout les flux des logiciels et aux buffers de la carte SON, peut transmettre les flux de n'importe quel logiciel vers n'importe quel autre logiciel ou/et vers les buffers ASIO de la carte son.

je vais tenter prochainement d'implémenter un pilote virtuel directsound qui utiliserai le pilote jackrouter (solution 3 du précédent post)

Ainsi on pourrait utiliser une instance DirectSound d'un pilote virtuel, par exemple dénommé JackDS.

Ce pilote virtuel utiliserait le pilote JackRouter comme n'importe quel autre logiciel, et n'aurait qu'à copier les données reçues vers le le pilote JackRouter, qui lui se connecterait au serveur Jack. On aurait ainsi accès au serveur Jack au flux du pilote DirectSound JackDS, et on pourrait ainsi faire communiquer le flux de windows vers des logiciels ASIO et vers la carte ASIO.

La seule chose à faire serait de faire en sorte que le pilote DirectSound se connecte automatiquement au serveur Jack et vérifie en permanence que le JackRouter est bien connecté au serveur. Si ce n'est pas le cas (serveur Jack redémarré ou planté), il faudrait que le pilote DirectSound tente de se reconnecter automatiquement en permanence jusqu'à réussir à rétablir la connection.

Ainsi, dès que le serveur Jack est disponible, le pilote DirectSound serait opérationnel, et si le serveur Jack crash, le pilote DS se stoppera (car il n'aura plus d'appel du serveur Jack pour traiter les données : son horloge sera en quelque sorte "arrêtée"). Il suffira de relancer le serveur Jack, pour que le pilote DirectSound se reconnecte au serveur et reprenne son activité.
« Modifié: janvier 12, 2014, 14:53:15 pm par LeChacal619 »

LeChacal619

  • Hero Member
  • *****
  • Messages: 2024
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #3 le: janvier 12, 2014, 14:43:33 pm »
Up modification du post précédent, j'ai essayé d'expliquer un peu plus en détail ^^

petoind

  • Administrator
  • Hero Member
  • *****
  • Messages: 7280
    • Conception des enceintes acoustiques
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #4 le: janvier 12, 2014, 17:00:38 pm »
Bonjour

L'utilisation de cette interface a pour but de récupérer dans le PC le son numérique qui sort de Foobar, de l'envoyer dans VSTHost pour faire du filtrage et égalisation en phase et amplitude, avant de ressortir par une carte son multicanaux.
Ainsi nous faisons directement dans le PC les fonctions de filtrage et d'égalisation faites dans un DEQ + DCX ou dans un miniDSP.

Il reste une question supplémentaire : Comment sélectionner ergonomiquement deux sources différentes qui arriveraient à l'entrée de VSTHost ?

Cordialement, Dominique

LeChacal619

  • Hero Member
  • *****
  • Messages: 2024
    • E-mail
Re : Re : Routage flux numérique VST HOST
« Réponse #5 le: janvier 12, 2014, 17:23:02 pm »
Bonjour

L'utilisation de cette interface a pour but de récupérer dans le PC le son numérique qui sort de Foobar, de l'envoyer dans VSTHost pour faire du filtrage et égalisation en phase et amplitude, avant de ressortir par une carte son multicanaux.
Ainsi nous faisons directement dans le PC les fonctions de filtrage et d'égalisation faites dans un DEQ + DCX ou dans un miniDSP.

Exactement c'est ce que je vais essayer de faire par l'intermédiaire du pilote DirectSound virtuel + Jack audio.

Il reste une question supplémentaire : Comment sélectionner ergonomiquement deux sources différentes qui arriveraient à l'entrée de VSTHost ?

Ca c'est plus compliqué... Il faut que le flux soit synchronisé. S'il vient d'une source externe (TV) il faut que la carte son puisse être synchronisée sur ce flux, ce qui n'est faisable que si la carte permet de se synchroniser sur le flux numérique (les autres cartes ne permettent pas de récupérer le flux numérique entrant, bien qu'on puisse utiliser le flux numérique sortant). Le prix d'une telle carte augmente considérablement (200€ pour la DELTA 1010LT contre 80€ pour une carte de même qualité de mon point de vue sans système de synchronisation).

Je ne vois pas de façon simple de fonctionner donc avec votre TV sans carte son adéquate (système de synchronisation sur le canal numérique).

Si vous utilisez une telle carte permettant de se synchroniser sur le flux numérique TV, il faudrait garder la TV en permanence allumée, sans quoi votre carte n'aurait plus de signal numérique et ne serait plus synchronisée. Il faudrait alors dans ce cas désactiver tout le DSP (donc l'ASIO de la carte) pour pouvoir le repasser en fonctionnement horloge interne et ensuite relancer tout le système DSP......

Une autre possibilité de récupérer le flux de la TV sans trop de perte et sans synchronisation entre la TV et la carte son, serait de faire une conversion TV => DAC => ADC, mais vu la qualité du DAC de la TV je ne m'y risquerai pas. L'autre possibilité serait d'utiliser un DAC de bonne qualité, qui prendrait un canal numérique en entrée et ressortirai un signal analogique que vous pourriez utiliser ensuite dans les VSTHost.

Vous auriez donc ceci : TV ==> sortie numérique ==> DAC externe ==> ADC carte son ==> VST HOST (via Jack)

Comme pour faire les mesures, vous utiliserez le pc, le signal ernvoyé pour la mesure aura la même fréquence que le signal reçu pour la mesure (vous utilisez la fréquence d'une seule carte audio) donc il n'y aura pas de problème de décalage.

Il faudrait peut être envisager dans ce cas de compenser la réponse engendrée par la conversion DAC externe => ADC carte son (que vous pourriez mesurer en sortant un signal numérique de votre carte son, en passant par le DAC ==> ADC de votre carte son ==> envoyant le flux numérique vers le pilote virtuel DirectSound que j'aurai développé ==> HolmImpulse). Vous auriez une calibration parfaite, et la seule perte de qualité du DAC ==> ADC serait éventuellement le bruit ajouté et/ou une éventuelle distorsion dû a la qualité du filtre de compensation (étant donné que la calibration serait à effectuer sur une perte physique réelle, les pertes seraient similaire a une égalisation IIR, et pour compenser vous pourriez utiliser une compensation IIR, qui compenserait à la fois la phase ET l'amplitude sans engendrer de latence, contrairement a une compensation FIR et qui devrait réaliser une calibration quasi parfaite).

Pour une manière de switcher facilement de source, on pourrait envisager un plugin à 4 canaux in, 2 canaux out, fonctionnant éventuellement de façon autonome, une interface avec 1 bouton SOURCE 1 / SOURCE 2 qui muterait les 2 premiers canaux OU les 2 seconds (quand les 2 premiers sont mutés, on démute les canaux 3-4, et inversement). Il existe peut être déjà des plugins permettant de faire cela, et on pourrait éventuellement utiliser une commande midi pour effectuer le basculement de ce bouton (par exemple l'appui sur un bouton d'une interface midi déclencherait le bouton dans le plugin, ce qui aurait pour avantage de pouvoir basculer les sources avec l'écran du PC en veille par exemple). Ce plugin serait à intercaler entre les sources software/carte son, lesquelles seraient reliés aux canaux du plugin, et le plugin enverrait ensuite les 2 canaux sortants vers console ou un autre VSTHost (ou bien on peut aussi l'intégrer au VSTHost directement !).

La compensation de la réponse DAC ==> ADC serait à effectuer entre le ADC carte son et le plugin qui permet de switcher, pour compenser le signal de la TV mais pas celui du flux numérique lu directement depuis le PC.
« Modifié: janvier 12, 2014, 17:31:35 pm par LeChacal619 »

LeChacal619

  • Hero Member
  • *****
  • Messages: 2024
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #6 le: janvier 12, 2014, 17:48:37 pm »
Un petit schéma peut etre :



On relie tout au serveur Jack, et le serveur fonctionne de façon synchrone avec la carte son (tout les clients envoient des données quand Jack le demande donc quand la carte son le demande).

Au niveau du schéma de routage, on envoie tout les signaux vers l'hote VST, qui traite le signal, et qui envoie le signal traité vers le DAC de la carte son, qui est relié aux amplis eux mêmes reliés aux enceintes (on peut intercaler éventuellement du matériel sur ce chemin ^^).

Si on veut faire une mesure loopback, par exemple pour faire une mesure sans perte, on peut sortir de HolmImpulse (la sortie de HolmImpulse en DirectSound se retrouvera dans les entrées du serveur Jack sous le pilote JackDS) et envoyer le signal vers l'entrée du pilote JackDS (qui se trouve dans la section OUT du serveur Jack, donc à droite). Si on veut mesurer la compensation à apporter pour corriger le DAC externe pour la carte son et l'ADC de la carte son, on envoie le flux de HolmImpulse vers la sortie numérique de la carte son, on relie un cable numérique de la carte vers le DAC, puis on laisse le reste branché tel quel. On récupère alors le flux par l'ADC de la carte son, et on le renvoie vers le pilote JackDS (qui enverra donc le signal dans le pilote DirectSound, qui sera donc l'input de HolmImpulse). Une fois la réponse mesurée, on peut compenser manuellement en intercalant un plugin VST (ou le VSTHost en veillent a ce qu'on ne passe pas par les autres plugins déjà en place !) égaliseur IIR dans le flux du serveur Jack (on sortira donc de HolmImpulse, on ira dans le VST égaliseur, puis on sort du VST égaliseur vers la sortie numérique de la carte son). On essaye de trouver l'égalisation qui compense la perte, et on mesure pour vérifier que le signal est bien compensé. Si besoin on réajuste l'égalisation jusqu'à avoir un signal presque parfait (similaire a celui qu'on aurait avec un loopback numérique, aux distorsions près engendrées par le bruit et le niveau de dynamique du DAC je pense). Une fois la compensation à effectuer trouvée, on intercale cette fois le plugin entre l'ADC de la carte son et l'hote VST (ou on l'intégre dans l'hote VST dans un chemin différent de celui des autres signaux qu'on ne veut pas compenser).
« Modifié: janvier 12, 2014, 18:17:52 pm par LeChacal619 »

petoind

  • Administrator
  • Hero Member
  • *****
  • Messages: 7280
    • Conception des enceintes acoustiques
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #7 le: janvier 13, 2014, 18:30:44 pm »
Bonjour

Je vais ajouter trois points au cahier des charges :
- Le son numérique reste en numérique dans le routage. Non négociable, nous sommes en Hi-Fi !!!
- La solution doit rester "simple" pour pouvoir être adoptée par le plus grand monde.
- Enfin je veux pouvoir sélectionner plusieurs entrées.
C'est je pense le besoin de besoin de beaucoup d'entre nous.

Je vais tester la solution très rapidement sur mon système, avec le matériel que j'ai de disponible chez moi.
Je vais ajouter dans la chaîne la carte son que j'utilise pour la mesure.
Cette carte M-AUDIO FAST TRACK PRO dispose d'une entrée et d'une sortie numérique S/PDIF sur RCA.

La config actuelle : http://petoindominique.fr/php/evolphase.php

Modification :

PC ==> Foobar ==> Resampleur SoX ==> Sortie numérique de Fast track pro.
Je suis sur que ça fonctionne.

Sortie Fast track pro ==> Behringer SRC 2496 ==> Entrée Fast track pro.
Le SRC fait sélecteur de sources, 3 numériques et 1 analogique, et mise au format numérique 24 bits à 96 kHz pour toute les sources. Si besoin de plus d'entrées analogique, un petit préampli passif sait le faire.
C'est le routage.
La même carte Fast track pro peut-elle fonctionner à la fois en entrée et sortie ?
Je le fait actuellement avec la carte Terratec, de part et d'autre VSTHost + Convolver VST.

Entrée numérique Fast track pro ==> PC ==> VSTHost ==> Convolver VST ==> carte son Terratec.
Je ferai l'égalisation dans Convolver VST, étape intermédiaire de vérification avant de faire du filtrage.
But : Vérifier le retard son / image sur la télé.

Carte son Terratec ==> Fibre optique ==> Entrée optique du DEQ 2496.
Le DEQ sera juste utilisée pour son entrée optique. Toutes les corrections seront bypass.

Si la même carte son ne peut pas à la fois faire entrée et sortie, il en faut trois.
Je peux garder HIFACE pour la sortie de Foobar.
La difficulté est de faire fonctionner ça sur un PC avec 3 sorties USB, dont une prise par le disque dur externe...

Vos avis ?

NB : En modification http://petoindominique.fr/php/pcmenu.php
Pendant quelques temps, il y aura des informations redondantes entre les chapitres.

Cordialement, Dominique


LeChacal619

  • Hero Member
  • *****
  • Messages: 2024
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #8 le: janvier 13, 2014, 18:38:42 pm »
Si vous arrivez à utiliser une carte en entréede vvst convoler et une autre en sortie j'aimerai bien avoir votre solution : en ASUS il me semble que c'est impossible,  en Mme ou directsound c'est peut être faisable mais je n'en suis pas sûr

Ps: la terratec c'est la fast track pro ?
« Modifié: janvier 13, 2014, 18:40:44 pm par LeChacal619 »

DanyHell

  • Jr. Member
  • **
  • Messages: 378
Re : Routage flux numérique VST HOST
« Réponse #9 le: janvier 13, 2014, 19:11:07 pm »
bonsoir Domnique,

"La solution doit rester "simple" pour pouvoir être adoptée par le plus grand monde."
c'est mal parti, c'est déjà difficile de vous suivre.. quel est l'objectif en fait ?

"La même carte Fast track pro peut-elle fonctionner à la fois en entrée et sortie ?"
oui sans problème, c'est à priori ce qu'il se passe lorsque vous l'utilisez pour la mesure..

ps: HIFACE c'est le DEQ 2496 ?

petoind

  • Administrator
  • Hero Member
  • *****
  • Messages: 7280
    • Conception des enceintes acoustiques
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #10 le: janvier 13, 2014, 19:33:01 pm »
Terratec aureon 7.1 USB : http://ftp.terratec.de/Audio/Aureon/Aureon7.1USB/Manuals/Aureon_7.1_USB_Manual_Windows_XP.pdf

M-Audio fast track pro : https://www.google.fr/search?q=fast+track+pro&tbm=isch&tbo=u&source=univ&sa=X&ei=Zi_UUp2EB6X30gWBr4DYBA&sqi=2&ved=0CGMQsAQ&biw=1745&bih=867

SRC : http://www.thomann.de/fr/behringer_ultramatch_pro_src_2496.htm?gclid=CN2Kkqrk-7sCFQcTwwod3SoAuA

DEQ : http://www.thomann.de/fr/behringer_deq2496_ultracurve_pro.htm?gclid=CPPY5bbk-7sCFc7JtAod-DoAWQ

Objectif :
Faire de l'égalisation en phase et en amplitude, faire le filtre actif dans le PC pour une chaîne Hi-Fi multi sources.
Foobar ne sais faire l'égalisation qu'avec la même correction sur les deux canaux, et n'accepte pas d'autres sources.
Toute la partie égalisation et/ou filtrage se fait avec VSTHost et ConvolverVST, unique pour toute la chaîne.
Il faut donc réinjecter la sortie de Foobar à l'entrée de VSTHost, ou envoyer dans l'entrée de VSTHost une autre source.

Fonctionnement d'une carte son en entrée et sortie : Si je n'avais pas lu que ce n'était pas toujours possible, je n'en parlerai pas...

DanyHell

  • Jr. Member
  • **
  • Messages: 378
Re : Routage flux numérique VST HOST
« Réponse #11 le: janvier 13, 2014, 19:45:29 pm »
objectif : je pensais que vous le faisiez déjà c'est pour ça que je comprennais pas.. mais jack est effectivement une solution très élégante et performante pour passer des flux entre applis et vers/en provenance de la carte son, c'est très fiable

carte son en entrée et sortie : ça fait belle lurette qu'elles le font toutes, même les plus bas de gamme, mêmes les intégrées sur les portables, les mesures en sont une illustration, on pourrait prendre skype comme exemple aussi (ça marche avec n'importe quelle carte son)

petoind

  • Administrator
  • Hero Member
  • *****
  • Messages: 7280
    • Conception des enceintes acoustiques
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #12 le: janvier 13, 2014, 20:54:50 pm »
J'obtenais un résultat, mais :
- Le son CD avec Foobar n'est corrigé qu'avec la même correction sur les deux canaux, et cela ne permet pas le filtrage.
- Le son télé passait bien par VSTHost et convolver VST.

Ce que je veux c'est faire passer tout les sons par VSTHost, et donc pouvoir ajouter le filtrage.

DanyHell

  • Jr. Member
  • **
  • Messages: 378
Re : Routage flux numérique VST HOST
« Réponse #13 le: janvier 13, 2014, 21:24:16 pm »
la 1ère chose à vérifier serait de savoir si foobar et vstquux sont compatibles avec jack

petoind

  • Administrator
  • Hero Member
  • *****
  • Messages: 7280
    • Conception des enceintes acoustiques
    • E-mail
Re : Routage flux numérique VST HOST
« Réponse #14 le: janvier 13, 2014, 21:48:28 pm »
C'est bien de renvoyer le son Foobar dans l'entrée de VSTHost, mais il faut aussi pouvoir sélectionner d'autres entrées de façon ergonomique, et de mettre tout les flux numérique au même format pour avoir un unique traitement dans ConvolverVST.