Modérateurs: Modération Forum Home-Cinéma, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 67 invités

Tout ce qui concerne les logiciels lié au HC sur ordinateur (PC, Mac, Linux...)
Règles du forum
Avant de poster, merci de prendre connaissance des règles du forum : à lire avant de poster

PCHC avec Avisynth+ & pixel shaders

Message » 14 Avr 2022 15:32

Vous n'imaginez pas tout ce qu'on peut faire avec Usine ;)

https://www.youtube.com/watch?v=ZaovoouXfUw

Le site YT de ce créateur est une mine d'or pour voir les possibilités de ce soft ...
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 15 Avr 2022 8:23

Emmanuel Piat a écrit:>Si j'ai bien compris clip ou clp c'est la source chargée d'origine donc sans modification ... Alors que Last correspond à la vidéo à l'instant T des traitements qu'on lui applique

oui c'est ça. Et clip correspond à la nature de clp, ce dernier étant un param qu'on peut nommer comme on veut. On pourrait écrire "image" à la place de "clp". Donc clip décrit la nature de clp (tout comme int, bool, float servent aussi à décrire la nature des autres paramètres d'une fonction).

>J'ai un bug concernant la compréhension des fonctions SetMTMode ou GetMTMode ...
Ce n'est plus utilisé avec avisynth+

Voir section 3 ici pour les nouveaux usages du MT avec avisynth+ :
http://avisynth.nl/index.php/AviSynth+

Ok, voilà pourquoi cela n'apparait que dans ton programme principal, car en appelant des fonctions Avisynth+ laisse actif le multithreading et les plugins/filtres appelés piochent dans le nombre de thread qu'ils sont capables d'exploiter :bravo: .

Au final, qu'est-ce qui fait la différence entre ces 2 lignes :

Code: Tout sélectionner
# MT Configuration
SetFilterMTMode("AvsFilterSource",3)
SetFilterMTMode("MT_MULTI_INSTANCE",3) # second parameter can be 2 or 3


Merci

PS : Vraiment bien Usine, j'ai envoyé l'info à une connaissance pour pourrait peut-être, être fortement intéressé par la chose :love: :bravo: .
Esscobar
 
Messages: 7946
Inscription Forum: 27 Sep 2016 18:10
Localisation: 86 - Châtellerault
  • offline

Message » 15 Avr 2022 12:41

Emmanuel Piat a écrit:>ss = UHD==true ? 2:1

J'avoue que celle-là est un peu raide si on n'a jamais programmé en C ...

Voici une autre manière de l'écrire qui est + explicite :

UHD == true ? ss = 2 : ss = 1

qui se lit ainsi :

si UHD == true alors ss = 2 sinon ss = 1

D'ailleurs une question vis-à-vis de l'optimisation du code. Est-ce qu'il y a un avantage à utiliser cette écriture plutôt que le traditionnel If/else/elseif ? De même est-ce que l'appel de fonction est plus efficace qu'un seul et unique programme principal ?

Je me demande d'ailleurs si la fonction switch case est prise en compte ? :wtf:
Esscobar
 
Messages: 7946
Inscription Forum: 27 Sep 2016 18:10
Localisation: 86 - Châtellerault
  • offline

Message » 15 Avr 2022 17:10

>Au final, qu'est-ce qui fait la différence entre ces 2 lignes :

Tu fais bien de pointer ce truc car ce qui est écrit ds le script est incorrect. Il faut mettre :

SetFilterMTMode("AvsFilterSource",3)
SetFilterMTMode("DEFAULT_MT_MODE",3) # second parameter can be 2 or 3

La 2e ligne définit le comportement MT de TOUS les filtres compilés (fcts internes du moteur de avisynth+ et dll) pour lesquels on n'a pas spécifié un comportement MT particulier. Les "Source filters" sont exclus de ce setting. Le comportement est spécifié par le 2e param. On met souvent 2 car c'est compatible avec bcp de filtres mais il y a une grosse conso de mémoire. Le mode 3 consomme bcp moins de mémoire, mais la compatibilité est moins large ... Le mieux est de tester pour voir comment la charge se répartie sur les threads ... On peut aussi écrire MT_MULTI_INSTANCE à la place de 2 et MT_SERIALIZED à la place de 3.

La 1ère ligne définit le comportement MT du source filter qui est utilisé. Il faut toujours mettre 3 pour celui-là.
Dernière édition par Emmanuel Piat le 15 Avr 2022 23:50, édité 2 fois.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 15 Avr 2022 17:17

>D'ailleurs une question vis-à-vis de l'optimisation du code. Est-ce qu'il y a un avantage à utiliser cette écriture plutôt que le traditionnel If/else/elseif ? De même est-ce que l'appel de fonction est plus efficace qu'un seul et unique programme principal ?

Il ne doit pas y avoir bcp de diff et c'est pas ça qui fera gagner du CPU.

>Je me demande d'ailleurs si la fonction switch case est prise en compte ?

Ca ne fait pas parti du langage d'avisynth+.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 15 Avr 2022 17:50

Usine ne se prête pas nativement à une automatisation pour lancer un workspace particulier, ce qui empêche de lancer au démarrage de Windows un BMS qui s'active en tâche de fond pour processer un flux audio (2.0, 5.1, 7.1, ...) dès que ce dernier est présent (via MPC-HC, via un jeu, via un navigateur internet ou une appli de streaming etc.).

Cependant on peut facilement le faire avec une macro. J'utilise AutoIT pour faire mes macros car c'est une appli gratuite qui a l'avantage de pouvoir compiler des macros en .exe. Donc après il suffit de mettre l'exécutable de la macro dans la liste de prog qui se lancent au démarrage de Windows. Pour des trucs hyper basiques, AutoIt reste un langage assez accessible. Il est dispo là :

https://www.autoitscript.com/site/

Une fois qu'il est installé, il permet de créer des macros avec un format .au3
Et si on fait ensuite un clic droit sur le fichier .au3, on peut le compiler en un .exe

Voici un exemple de script hyper basique pour lancer Usine, charger un workspace puis minimiser Usine :

Code: Tout sélectionner
AutoItSetOption ("MouseCoordMode", 2 )
Run("D:\Documents\PCHC\Usine HH5 Win64 5.1.211124\Usine.exe","D:\Documents\PCHC\Usine HH5 Win64 5.1.211124")
Sleep(2000)
WinWaitActive("Usine", "", 10)
MouseMove (238,92,0)
MouseClick("left")
Sleep(100)
Send("Bass Managment.wkp{ENTER}")
Global $hWnd = WinWait("Usine", "", 10)
WinSetState($hWnd, "", @SW_MINIMIZE)


Il faut bien sûr adapter les chemins et le nom du workspace à ce que vous aurez chez vous ...

Pour que le traitement audio ds le(s) rack(s) se lance automatiquement une fois qu'un workspace est chargé dans Usine, il faut modifier les settings par défaut d'Usine en créant un fichier Additional-setup.ini qui contiendra les 2 lignes suivantes :

mastervolume=0
auto play at startup=1

La 1ère ligne permet de créer des workspaces dont le master volume est à 0 dB par défaut au lieu de -6 (j'ai cherché pdt longtemps pourquoi une fois que le BMS était activé, le niveau baissait de 6 dB ...). La 2e ligne permet de lancer l'exécution d'un workspace dès qu'il est chargé. Pour les détails de la mise en oeuvre de Additional-setup.ini voir ici :
http://brainmodular.com/manuals/hh5/en/ ... ride-setup

Additional-setup.ini doit être placé dans le dossier où le workspace est sauvé. Par défaut c'est ds le sous-dossier "Config/Default Devices".
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 15 Avr 2022 19:19

Pour une raison que j'ignore Usine refuse de processer le flux audio qd il est lancé via la macro ... Très bizarre.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 15 Avr 2022 22:19

J'ai essayé avec Pulover's Macro Creator (PMC) : même punition ...
Comme ce dernier est en fait un front end de AutoHotkey, ce sera le même chose avec ce dernier.
AutoIt et AutoHotkey/PMC ont des langages très ressemblant ...

Voici une nouvelle macro d'autoIt compilable en .exe qui fonctionne. Je fais afficher un popup d'information (en mode modal...) pdt 1 sec avant de charger le workspace. Ne me demandez pas pourquoi ça fonctionne. Vous pouvez diminuer la durée d'affichage du popup si vous voulez en mettant une valeur inférieure à 1 ds les param de la fonction MsgBox.

Code: Tout sélectionner
#include <MsgBoxConstants.au3>
AutoItSetOption ("MouseCoordMode", 2 )
Run("D:\Documents\PCHC\Usine HH5 Win64 5.1.211124\Usine.exe","D:\Documents\PCHC\Usine HH5 Win64 5.1.211124")
Sleep(2000)
WinWaitActive("Usine", "", 3)
$sText = WinGetTitle("[ACTIVE]")
MsgBox($MB_SYSTEMMODAL+$MB_ICONINFORMATION, "", "Bass Managment System activation",1)
WinActivate($sText, "")
MouseMove (238,92,0)
MouseClick("left")
Sleep(150)
Send("Bass Managment.wkp{ENTER}")
$hWnd = WinWaitActive($sText, "", 10)
WinSetState($hWnd, "", @SW_MINIMIZE)
Dernière édition par Emmanuel Piat le 17 Avr 2022 7:17, édité 1 fois.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 15 Avr 2022 23:18

Voici qq infos sur comment je fais mon downmix 2.0 avec la SERAPH8 pour du monitoring au casque. Ca fonctionne aussi pour des enceintes stéréo (à condition d'avoir de gros moniteurs capables d'encaisser le flux LFE ...).

Comme toutes les consoles audio, le mixer de la SERAPH8 possède une sortie Master stéréo :
Les 48 canaux mono internes de la CS peuvent être sommés en se dispatchant + ou - entre L et R de la sortie Master. Ca permet donc à un ingé son d'écouter n'importe quelle source monophonique transitant ds la CS en la plaçant où il veut ds le champ stéréophonique de ses moniteurs.
Cette balance entre droite et gauche est fait par un panpot.
Autrement dit, il y a 48 panpots, un par canal interne. Chacun peut prendre une valeurs entre -100 (canal envoyé uniqt sur Master L), 0 (canal envoyé sur L et R de manière égale) et +100 (canal envoyé uniqt sur R).

Là où il faut faire attention pour mettre en place un downmix, c'est qu'un panpot modifie l'intensité de la répartition sur L et R du master selon une loi donnée. Ceci est nécessaire pour donner l'illusion à l'ingé son que l'intensité de la source est inchangée lorsqu'elle se déplace ds le champ stéréophonique entre la droite et la gauche. Il y a plus d'info ici si vous voulez creuser ce point : http://www.rs-met.com/documents/tutorials/PanRules.pdf

Sur la SERAPH8, on peut vérifier que si on balance un signal à 0 dBFS ds un canal monophonique :
- avec un panpot à -100, le signal sur retrouve uniqt sur Master L avec un niveau à +3 dBFS,
- avec un panpot à +100, le signal se retrouve uniqt sur Master R avec un niveau à +3 dBFS,
- avec un panpot à 0, le signal se retrouve sur Master L et Master R avec un niveau à 0 dBFS.

Si on fait parvenir les 8 signaux à 0 dBFS pour R, L, C, LFE, SL, SR, BL, BR de MPC-HC sur 7 canaux monophiques de la CS, le downmix 2.0 doit respecter la répartition suivante pour Master L et R en dBFS :

Code: Tout sélectionner
      L | R
L     0 |-oo
R   -oo | 0
C    -3 |-3
LFE  +7 |+7
BL   -3 |-oo
BR  -oo |-3
SL   -3 |-oo
SR  -oo |-3


Si on normalise le max à 0 dBFS plutôt que 7 dBFS, on a :

Code: Tout sélectionner
      L | R
L    -7 |-oo
R   -oo |-7
C   -10 |-10
LFE   0 | 0
BL  -10 |-oo
BR  -oo |-10
SL  -10 |-oo
SR  -oo |-10


Or d'après ce que j'ai dit, on a :
canal monophonique à 0 dB avec PAN à 0 => Master L | R = 0 | 0
canal monophonique à 0 dB avec PAN à -100 => Master L | R = +3 | 0
canal monophonique à 0 dB avec PAN à +100 => Master L | R = 0 |+3

Voici donc les valeurs des faders (gains) et des panpots qu'il faut appliquer à chaque canal pour obtenir un downmix 2.0 correct :

Code: Tout sélectionner
   GAIN | PAN
L   -10 |-100 => génère L | R = -7  |-oo
R   -10 | 100 => génère L | R = -oo |-7
C   -10 | 0   => génère L | R = -10 |-10
LFE   0 | 0   => génère L | R =   0 | 0
BL  -13 |-100 => génère L | R = -10 | 0
BR  -13 | 100 => génère L | R =   0 |-10
SL  -13 |-100 => génère L | R = -10 | 0
SR  -13 | 100 => génère L | R =   0 |-10
Dernière édition par Emmanuel Piat le 16 Avr 2022 6:42, édité 2 fois.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 15 Avr 2022 23:24

Évidemment, lors de la somme des 8 canaux, la sortie Master peut clipper à 0 dBFS qd la bande son envoie du très lourd.

Il faut donc un peu descendre les 2 faders de Master. Si on les met à -2 dB, les clips sont très très rares. A -2.5 dB, je n'en vois plus en pratique.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 15 Avr 2022 23:43

Le fait d'avoir 48 canaux qui peuvent être sommés permet de faire des trucs amusants qd on est en phase de test.

Par exemple, actuellement, j'ai 14 canaux qui arrivent sur Master L et R :

1) 7 qui sont les sorties de MPC-HC : c'est le signal "d'origine" du BRD que je downmix en 2.0 via les faders/pot.
2) 7 qui sont les sorties du bass Managment : c'est le signal processé par Usine que je downmix aussi en 2.0.

Je peux donc comparer les 2 au casque en mutant les 14 canaux 7 par 7.

La bascule entre le deux se fait à l'aide d'un simple clic de souris car il y a 3 boutons sur le mixer de la CS qui permettent d'avoir accès instantanément à 3 config pré-enregistrée du mixer.

On peut aussi faire la même chose en écoutant le downmix du signal 7.1 traité par Usine et en mettant le BMS sur off dans le panneau de commande du patch. Dans ce cas, Usine fait un bypass : on retrouve donc sur ses sorties le signal envoyé par MPC-HC.

En downmix 2.0, on peut donc vérifier que le BMS est complètement transparent quelles que soient la pente du filtre et la fréq de coupure.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 16 Avr 2022 0:01

En activant le mode SOLO au niveau des canaux monophoniques ds le mixer de la CS, je peux aussi écouter individuellement chacune des 14 voies sur la sortie Master.

Dans ce cas, avec les config des panpots, les canaux monophoniques .1 (LFE ou LFE+SUB) et C ressortent correctement au centre lors de leur écoute ...

C'est intéressant d'écouter uniqt le LFE (ou le SUB+LFE d'Usine) au casque ... Ca permet de comprendre la "philosophie" de ce canal et comment le bass managment le renforce.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 16 Avr 2022 18:17

Emmanuel Piat a écrit:
Code: Tout sélectionner
      L | R
L     0 |-oo
R   -oo | 0
C    -3 |-3
LFE  +7 |+7
BL   -3 |-oo
BR  -oo |-3
SL   -3 |-oo
SR  -oo |-3

Bonjour Emmanuel

Pour ma part si je passe un bruit rose dans l'enceinte gauche et que je regarde le SPL, si je désire le même niveau en centrale virtuelle (car je n'ai pas d'enceinte centrale) pour ce même bruit blanc (en signaux corrélés donc) je dois mettre -4 dB du canal central sur L et R :wink: .
Esscobar
 
Messages: 7946
Inscription Forum: 27 Sep 2016 18:10
Localisation: 86 - Châtellerault
  • offline

Message » 17 Avr 2022 7:24

La pièce et sa captation omni peuvent jouer. Une salle n'est pas un casque ...

J'ai reçu ma 2e CS. Elle a été immédiatement reconnue par Windows. Côté horloge, une CS est configurée en maitre et l'autre en esclave. Les deux sont reliées par une petite nappe pour l'horloge et la comm des data en bi-directionnel (8 canaux ds chaque sens) :
https://www.thomann.de/fr/marian_syncbuskabel.htm

L'ensemble des E/S est reconnu comme un tout dans Windows. Dans le setup des 2 CS, j'ai autorisé Windows à gérér un flux WDM multicanal (8 canaux) uniqt sur la CS maître. Concernant Usine, je ne suis pas parvenu pour l'instant à lui faire envoyer un flux audio en asio sur les 2 cartes en simultanée. Le fiux qui arrive sur la carte esclave "grésille" qd on l'écoute. Pour contourner ce problème, je fais communiquer Usine uniquement avec la CS maitre en asio et j'utilise ensuite le bus de comm interne des CS pour envoyer en mode synchrone les données dont j'ai besoin sur la 2e CS. Ca fonctionne parfaitement.

Donc ds ma phase de test logiciel actuelle, j'ai 8 canaux actifs en WDM multichannel sur la CS1 pour MPC-HC, 8 entrées ASIO sur la CS1 pour Usine, 15 sorties ASIO sur la CS1 pour Usine et 7 canaux d'échange de la CS1 vers la CS2. Usine filtre le signal 7.1 pour créer 7 canaux de graves additionnels pour des boomers qui iront en appuis aux enceintes. L'extrême grave des boomers est également filtré et additionné en mono sur le LFE avec un gain de -10dB. J'ai aussi ajouté un filtre subsonic numérique sur le LFE par sécurité.

Le mixer/routeur de la CS gère les échanges et réalise en plus le downmix stéréo pour le casque plus 2 ou 3 bricoles liées aux spécificités de ma config (il n'y aura que 2 boomers d'appui à l'arrière, donc il faut un downmix supplémentaire pour ça). 15 sorties analogiques sont utilisées.

Après vérif des voies au casque, tout semble fonctionner. J'ai maintenant une bonne maitrise d'Usine et je trouve que ce soft est hyper bien pensé.
Dernière édition par Emmanuel Piat le 17 Avr 2022 8:52, édité 2 fois.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 17 Avr 2022 7:56

... Autrement dit, mon nouveau (2e) PCHC est quasi terminé.

Il me restera à ajouter la gestion des délais ds Usine une fois que j'aurais fini de mettre en place ma nouvelle config audio (ce qui va prendre qq semaines/mois ...). J'ai 2 BMS accessibles ds Usine (celui de ma future install audio et un autre compatible avec mon install actuelle). Je vais donc pouvoir swapper de PC. Il faut également que j'améliore le post-traitement des DVD (basse priorité)... Le restant ne bougera plus.

Pour information, je n'utilise pas d'interface utilisateur sophistiquée sur le PCHC. Ce PC est un PC basique sous Windows et j'utilise depuis tjrs Ant Movie Catalog pour avoir une BdD de toutes mes galettes/mkv. Ca me suffit amplement.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10418
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline


Retourner vers Logiciel PC Home-cinéma

 
  • Articles en relation
    Dernier message