| Spatialisation du doublage (stéréo) | |
|
|
Auteur | Message |
---|
valoulef Délégué de la tasse bleue
Nombre de messages : 1791
Age : 35
Localisation : Condate
Date d'inscription : 01/08/2011
| Sujet: Spatialisation du doublage (stéréo) Lun 10 Juin 2013 - 15:31 | |
| Il me semblait qu'AGS gérait la spatialisation de l'audio, c'est-à-dire qu'il ajustait la balance stéréo selon la position du personnage qui parle. Cela dit je me suis peut-être trompé, car si j'ai bien cherché (ce qui n'est pas toujours le cas, je sais, mais pour le coup je n'ai vu aucune option de ce type et j'ai fait des tests) ce n'est pas le cas. J'ai vu qu'il existait la fonction Panning qui permet de le faire manuellement, et visiblement c'est tout nouveau puisque c'est compatible avec les versions AGS 3.2 et supérieur. Donc ça doit être possible de spatialiser le doublage en codant une fonction basée sur celle-là, ce que je ne suis pas sûr de faire, quoique ça peut être intéressant. Mais seulement peut-on agir sur le comportement des sons "speechs" qui sont gérés de manière un peu particulière, sans complexifier le système de doublage que je trouve très pratique ? Et y'aurait-il une autre solution à côté de laquelle je serais passé ? _________________ Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Spatialisation du doublage (stéréo) Lun 10 Juin 2013 - 16:23 | |
| Tu ne confonds pas avec la méthode SetRoomLocation ? J'avoue que j'ignore s'il y a un moyen de récupérer le canal sur lequel est diffusé le doublage. S'il y en a un, je pense en effet qu'il est tout à fait faisable de le spatialiser. S'il n'existe aucun moyen de le récupérer en revanche, ça me semble beaucoup plus compromis. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
valoulef Délégué de la tasse bleue
Nombre de messages : 1791
Age : 35
Localisation : Condate
Date d'inscription : 01/08/2011
| Sujet: Re: Spatialisation du doublage (stéréo) Lun 10 Juin 2013 - 16:27 | |
| Hum selon l'aide, SetRoomLocation agit sur le volume. Je ne sais pas s'il agit aussi sur la stéréo mais Panning le fait effectivement. Je suis surpris, je pensais qu'AGS gérait ça nativement. Bon, si c'est pas possible, c'est pas très grave. _________________ Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Spatialisation du doublage (stéréo) Lun 10 Juin 2013 - 17:31 | |
| En tout cas à part Panning comme tu dis, je n'ai pas souvenir d'avoir traduit un passage où il était question de gérer automatiquement l'équilibrage du doublage. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Spatialisation du doublage (stéréo) Lun 10 Juin 2013 - 20:01 | |
| Ce post du forum anglophone suggère que les Voix sont jouées sur le channel numéro 2. Ça date peut-être d'avant la refondation du système audio mais ça vaut le coup d'essayer en combinaison avec SetRoomLocation (qui joue bien sur la stéréo aussi, il me semble) ou panning. Sinon, ça peut valoir le coup de demander sur le forum anglophone... L'autre option, bien sur, c'est de tricher pour les cas où les positions relatives des personnages sont fixes : Si tu as un dialogue où A est toujours à gauche de l'écran et B toujours à droite, tu peux faire un son stéréo balancé à gauche pour les phrases dites par A, et à droite pour celles dites par B. |
|
| |
valoulef Délégué de la tasse bleue
Nombre de messages : 1791
Age : 35
Localisation : Condate
Date d'inscription : 01/08/2011
| Sujet: Re: Spatialisation du doublage (stéréo) Lun 10 Juin 2013 - 20:39 | |
| - Billbis a écrit:
- Ce post du forum anglophone suggère que les Voix sont jouées sur le channel numéro 2. Ça date peut-être d'avant la refondation du système audio mais ça vaut le coup d'essayer en combinaison avec SetRoomLocation (qui joue bien sur la stéréo aussi, il me semble) ou panning.
Donc jouer sur System.AudioChannels[2], c'est ça ? EDIT : Alors j'ai essayé de repérer le canal concerné en faisant un truc comme ça : - Code:
-
AudioChannel *canala = System.AudioChannels[0]; AudioChannel *canalb = System.AudioChannels[1]; AudioChannel *canalc = System.AudioChannels[2]; AudioChannel *canald = System.AudioChannels[3]; AudioChannel *canale = System.AudioChannels[4]; AudioChannel *canalf = System.AudioChannels[5]; AudioChannel *canalg = System.AudioChannels[6]; AudioChannel *canalh = System.AudioChannels[7]; canala.Volume = 0; canalb.Volume = 0; canalc.Volume = 0; canald.Volume = 0; canale.Volume = 0; canalf.Volume = 0; canalg.Volume = 0; canalh.Volume = 0; ... et comme le son reste au même volume, j'en déduis qu'il n'est sur aucun d'entre eux. J'ai essayé jusqu'à 10 mais le jeu crashait car les canaux 8-10 n'existent pas. A priori, il n'y a donc pas moyen de le récupérer, ou alors ma manip est bidon, ce qui est possible... - Billbis a écrit:
L'autre option, bien sur, c'est de tricher pour les cas où les positions relatives des personnages sont fixes : Si tu as un dialogue où A est toujours à gauche de l'écran et B toujours à droite, tu peux faire un son stéréo balancé à gauche pour les phrases dites par A, et à droite pour celles dites par B. Certes, mais le jeu se basera beaucoup sur les dialogues, et sera donc probablement assez gourmand à ce niveau là. Donc régler chaque enregistrement un par un en plus de tout le boulot que ça demandera, ça risque d'être un peu compliqué, d'autant qu'il n'est pas exclus qu'on ne puisse pas prévoir à l'avance à quel endroit certaines répliques seront prononcées, même s'il est vrai que je n'ai pas encore en tête une situation pour laquelle ce serait le cas (ou peut-être que si, lorsqu'un PNJ changera de place en cours de jeu par exemple)... _________________ Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Spatialisation du doublage (stéréo) Mar 11 Juin 2013 - 6:44 | |
| - valoulef a écrit:
- Donc jouer sur System.AudioChannels[2], c'est ça ?
Zut, cette propriété n'est pas référencée dans l'aide française (même si elle apparaît dans les exemples). Je vais corriger ça. Elle n'est pas référencée non plus sur le fichier agsdefn que Billbis et moi avons traduit EDIT : en fait si, on l'a déjà traduit. Je ne sais pas pourquoi il ne pointe pas vers l'aide dans le colorateur syntaxique.Re-EDIT : C'est bon, c'est corrigé. - Billbis a écrit:
- Ce post du forum anglophone suggère que les Voix sont jouées sur le channel numéro 2. Ça date peut-être d'avant la refondation du système audio mais ça vaut le coup d'essayer en combinaison avec SetRoomLocation (qui joue bien sur la stéréo aussi, il me semble) ou panning.
- valoulef a écrit:
- J'ai essayé jusqu'à 10 mais le jeu crashait car les canaux 8-10 n'existent pas. A priori, il n'y a donc pas moyen de le récupérer, ou alors ma manip est bidon, ce qui est possible...
Normalement ce n'est pas sur les cinq derniers canaux (ou du moins c'est une façon de comprendre l'aide) : - Aide AGS fr a écrit:
- Priorités des canaux
AGS possède actuellement un système audio à 8 canaux, ce qui signifie que jusqu'à 8 sons peuvent être joués à la fois. Avec les réglages par défaut pour les Types Audio, un canal est réservé au doublage, un à la musique et un pour les sons ambiants ; ce qui vous en laisse 5 disponibles pour les effets sonores. - valoulef a écrit:
- ou alors ma manip est bidon, ce qui est possible...
Où as-tu placé ton code ? Il va de soi qu'il doit être exécuté avant qu'un son soit joué dessus pour qu'il fasse effet. Mais de toute façon : - Aide AGS fr a écrit:
- NOTE : Cette commande n'affecte que le son en cours de lecture sur le canal. Lorsqu'une nouvelle séquence est lancée sur ce canal, elle sera jouée à son volume par défaut (DefaultVolume).
En revanche je ne vois pas de telle note concernant Panning, ça vaut peut-être le coup d'essayer en passant 100 ou -100 pour détecter le bon canal. Bonne chance ! _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
valoulef Délégué de la tasse bleue
Nombre de messages : 1791
Age : 35
Localisation : Condate
Date d'inscription : 01/08/2011
| Sujet: Re: Spatialisation du doublage (stéréo) Mar 11 Juin 2013 - 12:44 | |
| - Kitai a écrit:
- Où as-tu placé ton code ? Il va de soi qu'il doit être exécuté avant qu'un son soit joué dessus pour qu'il fasse effet.
Evidemment, je l'ai placé juste avant l'execution des répliques, au moment d'une interaction avec un Hotspot - Kitai a écrit:
Mais de toute façon : - Aide AGS fr a écrit:
- NOTE : Cette commande n'affecte que le son en cours de lecture sur le canal. Lorsqu'une nouvelle séquence est lancée sur ce canal, elle sera jouée à son volume par défaut (DefaultVolume).
En revanche je ne vois pas de telle note concernant Panning, ça vaut peut-être le coup d'essayer en passant 100 ou -100 pour détecter le bon canal.
Ah flûte ! En fait j'ai d'abord essayé avec Panning mais je me disais que j'allais être plus franchement fixé avec Volume = 0. Du coup avec Panning je n'ai pas dû essayer tous les canaux, mais ça ne faisait aucun effet pour au moins les 4 ou 5 premiers. _________________ Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Spatialisation du doublage (stéréo) Mar 11 Juin 2013 - 13:29 | |
| Il y a toujours la possibilité qu'aussi bien Panning que Volume soit remis à 0 lors d'une nouvelle lecture. Tu peux donc tenter quelque chose comme ça : - Code:
-
function repeatedly_execute_always() { int i = 0; while (i < System.AudioChannelCount) { if (System.AudioChannels[i].IsPlaying) System.AudioChannels[i].Volume = 0; i++ } } Si tu entends toujours le doublage, c'est que y'a sûrement pas moyen d'accéder au canal sur lequel il joue. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
valoulef Délégué de la tasse bleue
Nombre de messages : 1791
Age : 35
Localisation : Condate
Date d'inscription : 01/08/2011
| Sujet: Re: Spatialisation du doublage (stéréo) Mar 11 Juin 2013 - 14:28 | |
| Il y a un problème avec ta ligne 4 :
GlobalScript.asc(227): Error (line 227): must have an instance of the struct to access a non-static member
(et évidemment je ne vois pas d'où ça vient) _________________ Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
|
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Spatialisation du doublage (stéréo) Mar 11 Juin 2013 - 17:14 | |
| A mon avis, Kitai a légèrement oublié qu'AGS ne chainait pas les fonctions ainsi. Il faut d'abord assigner le résultat de System.AudioChannels vers un pointeur, comme tu l'avais fait au début, avant d'appliquer Volume sur ce pointeur. - valoulef a écrit:
- Donc régler chaque enregistrement un par un en plus de tout le boulot que ça demandera
Régler la balance d'un fichier audio avant importation de demande pas tellement plus de boulot que l'enregistrement et la mise en forme de ces même fichiers audio. C'est facilement modifiable avec Audacity, par exemple. Le problème de cette solution, c'est bien plus le cas des dialogues où la position des personnages n'est pas prédéfinit. |
|
| |
valoulef Délégué de la tasse bleue
Nombre de messages : 1791
Age : 35
Localisation : Condate
Date d'inscription : 01/08/2011
| Sujet: Re: Spatialisation du doublage (stéréo) Mar 11 Juin 2013 - 17:44 | |
| - Billbis a écrit:
- A mon avis, Kitai a légèrement oublié qu'AGS ne chainait pas les fonctions ainsi.
L'élève serait-il en train de dépasser le maître ? - Billbis a écrit:
Régler la balance d'un fichier audio avant importation de demande pas tellement plus de boulot que l'enregistrement et la mise en forme de ces même fichiers audio. C'est facilement modifiable avec Audacity, par exemple. Le problème de cette solution, c'est bien plus le cas des dialogues où la position des personnages n'est pas prédéfinit. En soi, non. Mais repérer à chaque fois l'emplacement des personnages, spéculer sur une balance, tester, recommencer, et gérer ça sur chaque dialogue pour si peu, ça m'enchante pas. Enfin cela dit c'est pas tout à fait exclus non plus, mais je sais pas trop si ça vaut le coup. D'autant qu'encore une fois, certaines répliques pourront venir de différents endroits, et je n'ai pas très envie de multiplier les fichiers sons inutilement... _________________ Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Spatialisation du doublage (stéréo) Mar 11 Juin 2013 - 20:41 | |
| Bon, j'ai testé sur mon PC (avec AGS 3.2.2 bêta fr) et il s'avère que c'est le canal numéro 0 qui joue les fichiers de doublage (eg. EGO1.WAV). Ça ne marche effectivement pas si je modifie Volume juste avant la commande Say, mais ça marche si je le fais dans repeatedly_execute_always. Tu peux donc y gérer ta spatialisation, en détectant quel personnage est en train de parler grâce à la propriété Speaking des personnages (tu peux faire une fonction Character* GetSpeakingCharacter() où tu itères la propriété sur chaque personnage du jeu). Attention toutefois, ça ne marchera pas pour la commande SayBackground (mais pour le coup tu peux "overrider" cette commande). Ça donnerait quelque chose comme ça : - Code:
-
// ATTENTION, je n'ai pas testé ce code
/// Retourne le personnage qui est actuellement en train de parler ou NULL s'il n'y en a aucun Character* GetSpeakingCharacter() { int i = 0; while (i < Game.CharacterCount) { if (character[i].Speaking) return character[i]; i++; } return null; }
function repeatedly_execute_always() {
AudioChannel* canal = System.AudioChannels[0]; if (canal.IsPlaying) { Character* perso = GetSpeakingCharacter(); if (perso != null) { // Un calcul un peu simpliste int panning = perso.X - player.X; if (panning < -100) panning = -100; else if (panning > 100) panning = 100; if (canal.Panning != panning) canal.Panning = panning; } } } - Billbis a écrit:
- A mon avis, Kitai a légèrement oublié qu'AGS ne chainait pas les fonctions ainsi.
En effet, j'ai fait du zèle. Plus précisément, il semble que AGS ne tolère pas qu'on "chaîne" (comme tu dis ) à partir d'une propriété statique. En revanche pas de soucis pour les propriétés non-statiques : - Code:
-
System.AudioChannels[0].Volume = 0; // Crashe AudioChannel canal = System.AudioChannels[0]; Display("Type numero %d", canal.PlayingClip.Type); // Ne crashe pas De la même façon : - Code:
-
struct Chien { static import attribute Object* Os; import Object* get_Os(); Object* Nonos; };
function Waf() { Display("Le nom de l'os : %s", Chien.Os.Name); // Crashe Chien rex; Display("Le nom du nonos : %s", rex.Nonos.Name); // Ne crashe pas } J'ignore pourquoi c'est comme ça...EDIT : En fait si, je pense savoir. Comme on le voit sur la structure personnelle ci-haut, les propriétés statiques sont des attributs : en "réalité", c'est une fonction qui est appelée lorsqu'on réfère à une propriété statique. On sait qu'AGS ne chaîne pas les fonctions, ça paraît donc "normal" qu'il ne chaîne pas les propriétés statiques. Maintenant la question est "pourquoi AGS ne chaîne-t-il pas les fonctions comme le fait par exemple Javascript ?"..._________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Dernière édition par Kitai le Mer 12 Juin 2013 - 6:47, édité 1 fois (Raison : En fait je sais) |
|
| |
valoulef Délégué de la tasse bleue
Nombre de messages : 1791
Age : 35
Localisation : Condate
Date d'inscription : 01/08/2011
| Sujet: Re: Spatialisation du doublage (stéréo) Mar 11 Juin 2013 - 20:49 | |
| Merci beaucoup Kitai de te donner autant de mal, je vais me pencher sur la question et je te tiens au courant _________________ Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Spatialisation du doublage (stéréo) Ven 14 Juin 2013 - 13:30 | |
| Ok, je me disais que je ferais bien un module pour ton problème, parce que ça me semblait facile. Seulement voilà, qu'est-ce que j'apprends ? La propriété Speaking ne retourne true que lorsque le personnage a une SpeechView !. Voilà qui est bien triste, parce que ça compromet sérieusement la détection du personnage qui parle. La seule façon de contourner que je vois pour le moment est de définir une vue de dialogue pour tous les personnages... Mais c'est pas l'idéal. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
valoulef Délégué de la tasse bleue
Nombre de messages : 1791
Age : 35
Localisation : Condate
Date d'inscription : 01/08/2011
| Sujet: Re: Spatialisation du doublage (stéréo) Ven 14 Juin 2013 - 13:43 | |
| J'avais aussi envisagé de créer un module un peu plus tard, mais si tu veux t'y coller tu feras surement ça plus efficacement et mieux que moi Effectivement ce n'est pas vraiment idéal, même si dans mon cas, il y aura bien une SpeechView à chaque fois (normalement). D'ailleurs comme c'est quelque chose de conçu pour le doublage, je pense que ce sera logiquement associé à une speechview dans la plupart des cas (pas seulement dans le mien). Sinon à tout hasard, y'a pas moyen de coder ça avec une fonction qui commencerait avec quelque chose comme ça : If ((character.Say("texte")) || (character.SayAt("texte", nimporte.x, nimporte.y))) etc... Tu fois ce que je veux dire avec mon code théorique stupide ? En gros vérifier qu'une des commandes est appelée, quelque soit les arguments... Je dis peut-être n'importe quoi mais bon. _________________ Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Spatialisation du doublage (stéréo) Ven 14 Juin 2013 - 14:00 | |
| Ça ça serait vraiment cool, que AGS soit un langage aussi performant. Mais on ne peut même pas passer des fonctions en tant qu'arguments dans AGS (mais il existe un plugin pour Lua que j'aimerais bien tester un de ces jours). Donc on ne peut malheureusement pas faire ça, non, et surtout il faut aussi prendre en charge les dialogues automatisés, qui eux ne font pas appel à la commande Say. Si tu utilises des speechviews, n'oublie pas de les changer en même temps si jamais tu changes des vues normales via ChangeView. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
Contenu sponsorisé
| Sujet: Re: Spatialisation du doublage (stéréo) | |
| |
|
| |
| Spatialisation du doublage (stéréo) | |
|