FR 2940483 A1 20100625 FR 0859067 A 20081224 PROCEDE DE GESTION DE FLUX AUDIONUMERIQUES La présente invention se rapporte à un procédé de gestion de flux audionumériques ainsi qu'à un format de fichier audionumérique. Une oeuvre musicale et plus généralement un flux audio peut se présenter sous la forme d'un fichier numérique, par exemple un fichier de type WAV, MP3 ou autre. Pour la suite de la description, un flux audio sous forme d'un fichier numérique est appelé un flux audionumérique. Au moment de la création, le créateur dispose de plusieurs pistes, chacune correspondant à un ou plusieurs instruments et/ou voix. Lors du mixage, le créateur agit sur des caractéristiques acoustiques de chaque piste et regroupe l'ensemble des pistes afin de générer un flux audionumérique unique. Il existe de nombreux documents traitant du mixage si bien que cette partie n'est pas plus détaillée. Même s'il existe des aides pour effectuer ce travail, le mixage nécessite des compétences technique, artistique et musicale pour rendre le flux audionumérique audible. Ce flux audionumérique est ensuite mis à la disposition du public enregistré sur différents supports, par exemple sur un CD. En variante, le flux audionumérique peut se présenter sous la forme d'un fichier informatique qui peut être téléchargé sur un réseau informatique. Le fichier informatique peut avoir différents formats en fonction du logiciel de compression utilisé. Lors de l'écoute du flux audionumérique, le fichier informatique est transformé en signal sonore grâce à un lecteur. Selon un mode d'écoute connu, l'auditeur peut ajuster le volume, la balance et à l'aide d'un équaliseur, ajuster le volume de certaines plages de fréquences. Par conséquent, la marge de manoeuvre de l'auditeur est très réduite. Ainsi, à titre d'exemple, il ne peut pas retirer un ou plusieurs instruments. Pour permettre à l'auditeur de modifier le flux audionumérique et rendre l'écoute interactive, il existe des traitements du signal tel que par exemple décrits dans le document US-5.877.445. Dans ce cas, le flux audionumérique est découpé en tronçons de temps successifs appelés blocs. Chacun de ces blocs peut être traité afin de modifier le signal sonore correspondant, par exemple à l'aide d'un logiciel informatique. Le flux audionumérique est reconstitué en disposant les blocs les uns à la suite des autres. Cette technique offre à l'auditeur un large choix d'intervention. Cependant, cette grande latitude conduit la majorité du temps à un morceau de musique inaudible, ne respectant plus l'ceuvre du créateur. Si l'on cherche à obtenir un flux audionumérique reconstitué audible, il est nécessaire de traiter les bords amont et aval de chaque bloc afin que la fin de chaque bloc puisse coïncider avec le début du bloc suivant. Ce traitement du signal est complexe et les résultats obtenus ne sont généralement pas conformes à l'ceuvre du créateur. De plus, ce traitement du signal est long en temps de calcul et requiert une puissance de calcul importante, qui n'est pas compatible avec la majorité des appareils d'écoute des auditeurs. Aussi, la présente invention vise à pallier les inconvénients de l'art antérieur en proposant un procédé de gestion de flux audionumériques permettant d'obtenir une écoute interactive et audible, ne nécessitant pas un temps de calcul important. A cet effet, l'invention a pour objet un procédé de gestion de flux audionumériques d'une ceuvre musicale, consistant à créer des flux audionumériques appelés pistes d'une même ceuvre musicale, lesdites pistes ayant une durée sensiblement égale à l'ceuvre musicale, chacun desdits flux audionumériques correspondant à un signal sonore, caractérisé en ce qu'il consiste, au moment de la création, à regrouper lesdites pistes en au moins deux ensembles, les pistes et les ensembles étant appelés éléments, à établir des contraintes relatives aux éléments, à vérifier que chaque nouvelle contrainte est compatible avec les contraintes précédentes grâce à un moteur de résolution de contraintes, à encapsuler les pistes et les contraintes dans un fichier informatique unique, et au moment de l'écoute, à choisir les pistes que souhaite entendre l'auditeur en respectant les contraintes et obtenir un signal sonore à partir des pistes choisies. D'autres caractéristiques et avantages ressortiront de la description qui va suivre de l'invention, description donnée à titre d'exemple uniquement, en regard des dessins annexés sur lesquels : - la figure 1 est un schéma illustrant les différentes pistes susceptibles d'être contenues dans une oeuvre musicale, - la figure 2 est un schéma simplifié des différents groupes et pistes d'une oeuvre musicale selon l'invention, - la figure 3 est un tableau illustrant un exemple de contraintes appliquées aux pistes de la figure 2, et - la figure 4 est schéma illustrant l'affichage des pistes lors des choix de l'auditeur préalablement à l'écoute des pistes illustrées sur la figure 2. Sur la figure 1, on a représenté de p1 à p21 des pistes d'une oeuvre musicale. Par oeuvre musicale, on entend toute création musicale quels qu'en soient le genre, la forme, la durée,... Par piste, on entend un signal sonore correspondant à un ou plusieurs instruments, à une ou plusieurs voix ou un mélange d'instruments et/ou de voix. Ces pistes ont une durée sensiblement égale à l'ceuvre musicale. Une oeuvre musicale peut comprendre n pistes, n étant un entier. De manière connue, chaque piste peut être arrangée conformément au souhait du créateur. Lors de la création, les pistes sont regroupées par le créateur en au moins deux ensembles G. les ensembles peuvent correspondre à des groupes G qui peuvent être divisés en sous-groupes 5G qui peuvent être eux-mêmes divisés en sous sous-groupes 55G. A titre d'exemple, comme illustré sur la figure 1, l'ceuvre musicale comprend cinq groupes, dénommés � instruments à cordes � G1, � instruments à vent � G2, � instruments de percussion � G3, � instruments élecroanalogiques � G4, � voix � G5. Les noms des groupes et leurs nombres sont déterminés par le créateur. Selon l'exemple illustré sur la figure 1, le groupe G1 comprend quatre sous-groupes, dénommés �basses� SG1.1, �guitares� SG1.2, �piano� SG1.3 et �instruments à cordes frottées � SG1.4. Ce dernier se divise en un premier sous sous-groupe � violons � SSG1.4.1 et en un second sous sous-groupe � contrebasse � SSG1.4.2. Le groupe G2 se divise en deux sous-groupes � flûtes � 5G2.1 et � saxophones � 5G2.2. Le groupe G5 se divise en deux sous-groupes � solistes � 5G5.1 et � choeurs � 5G5.2. Selon l'exemple illustré sur la figure 1, le sous-groupe SG1.1 comprend les pistes 1 à 3, le sous-groupe SG1.2 les pistes 4 et 5, le sous-groupe SG1.3 la piste 6, le sous sous-groupe SSG1.4.1 les pistes 7 et 8, le sous sous-groupe SSG1.4.2 la piste 9, le sous-groupe 5G2.1 la piste 10, le sous-groupe 5G2.2 les pistes 11 et 12, le groupe G3 les pistes 13 à 15, le groupe G4 les pistes 16 et 17, le sous-groupe SG5.1 la piste 18 et le sous-groupe SG5.2 les pistes 19 à 21. Selon l'exemple illustré sur la figure 1, les pistes sont réparties dans des ensembles selon trois niveaux à savoir des groupes, des sous-groupes et des sous sous-groupes. Toutefois, l'invention n'est pas limitée en nombre de niveaux. Pour la suite de la description, les pistes et les ensembles sont définis comme des éléments. Pour la suite de la description, on entend par élément une piste, un groupe de pistes, un groupe de piste(s) et de groupe(s) ou un groupe de groupes. Un élément père p d'un élément fils e correspond au groupe qui se situe hiérarchiquement au-dessus de l'élément e. Après avoir réparti les pistes en au moins deux ensembles, le créateur définit des contraintes relatives à au moins un élément qui sont répertoriées dans un tableau ou registre. Cette phase de la création est mise en oeuvre notamment sur un ordinateur couplé à un système de reproduction du son tel que des enceintes. Pour la suite de la description de l'invention, celle-ci est faite au regard d'un cas simplifié, illustré sur la figure 2, comprenant deux groupes G1 et 62 comprenant respectivement les pistes p1 à p3 pour G1 et p4, p5 pour G2. Les contraintes peuvent être de différents types. Selon un premier type de contraintes c1, appelée contrainte min/max, le créateur peut fixer pour au moins un ensemble, de préférence chaque ensemble, les nombres minimal et/ou maximal d'éléments de l'ensemble joués de manière simultanée. Les éléments d'un groupe donné comprennent les pistes du groupe ainsi que les groupes du niveau inférieur. Dans le cas d'un regroupement de pistes avec un nombre de niveaux supérieur à un, les contraintes liées aux groupes des différents niveaux doivent être cohérentes. A titre d'exemple, pour le groupe 1, le nombre minimal d'éléments joués simultanément est 0 et le nombre maximal est 2. Pour le groupe 2, le nombre minimal est 1 et le nombre maximal est 2. Selon un deuxième type de contraintes c2, le créateur peut fixer des implications à savoir des éléments qui doivent être joués simultanément. Selon l'exemple illustré, la piste p1 doit être jouée simultanément avec les pistes p4 et p5, la piste p2 doit être jouée avec la piste p4. Les implications peuvent concernées des éléments d'un même ensemble ou de différents ensembles. Les implications peuvent être relatives à des pistes ou à des ensembles de pistes. Ainsi, les pistes d'un premier ensemble (groupe, sous-groupe, sous sous-groupe) doivent être jouées simultanément avec les pistes d'un second ensemble. Selon un troisième type de contraintes c3, le créateur peut prévoir des exclusions à savoir des éléments qui ne peuvent pas être joués de manière simultanée. Ainsi, selon l'exemple illustré la piste p2 est incompatible et ne doit pas être jouée avec la piste p5. Les exclusions peuvent concernées des éléments d'un même ensemble ou de 15 différents ensembles. Les exclusions peuvent être relatives à des pistes ou à des ensembles de pistes. Ainsi, les pistes d'un premier ensemble (groupe, sous-groupe, sous sous-groupe) ne peuvent pas être jouées simultanément avec les pistes d'un second ensemble. Selon un autre type de contrainte dite de forçage, le créateur peut prévoir qu'au 20 moins un élément peut être toujours à l'état actif. Les contraintes d'implication, les contraintes d'exclusion, les contraintes de forçage et les contraintes min/max sont appelées des contraintes de sélection. D'autres contraintes peuvent être envisagées comme par exemple des contraintes peuvent être imposées aux éléments, notamment le volume mini et 25 maxi. Ainsi, il est possible de prévoir une autre série de contraintes dites contraintes de mixage permettant de contrôler les modifications éventuelles opérés par l'auditeur sur les volumes des éléments (pistes/groupes) diffusés. Pour chaque élément, le créateur pourra définir un volume relatif par défaut Vrdéfaut pour un élément donné, à savoir un volume sonore défini par le créateur pour l'élément donné. Le volume relatif Vr d'un élément donné est le volume sonore dudit élément donné susceptible d'être ajusté lors de l'écoute par l'auditeur. Pour la suite de la description, on entend par volume absolu d'un élément la valeur Va(e)=Vr(e).Va(p), Va(e) étant le volume absolu de l'élément e, Vr(e) étant le volume relatif de l'élément e, Va(p) étant le volume absolu de l'élément p qui est le père de l'élément e. Lorsque l'élément n'a pas de père Va(e)=Vr(e). Ainsi, lorsqu'un auditeur modifie le volume d'un élément à savoir le volume relatif d'un élément, le volume absolu dudit élément est calculé ainsi que les volumes absolus des fils dudit élément s'il en a. On entend par volume courant VC, le volume relatif ou le volume relatif par défaut. Ainsi, si l'auditeur a modifié le volume sonore d'un élément donné, le volume courant est égal au volume relatif de l'élément donné. Dans le cas contraire, le volume courant est égal au volume relatif par défaut. Pour chaque piste ou pour certaines, le créateur pourra imposer un volume relatif minimal et/ou un volume relatif maximal. Selon une autre contrainte de mixage, le créateur pourra imposer une contrainte d'équivalence entre au moins deux éléments et définir si cette contrainte d'équivalence est applicable à tous les éléments ou uniquement à ceux sélectionnés par l'auditeur lors de l'écoute. Selon les cas, une contrainte d'équivalence peut s'appliquer même si les éléments contraints ne sont pas sélectionnés lors de l'écoute de l'ceuvre. Selon un premier type de contrainte d'équivalence dite d'équivalence par maintien des rapports, on conserve le rapport entre les volumes sonores d'au moins deux éléments a et b. Ainsi Vc(a)/Vc(b)=Vrdéfaut(a)/Vrdéfaut(b). Ainsi, si l'auditeur modifie le volume sonore de a Vc(a), alors Vc(b)=Vc(a).Vrdéfaut(b)/Vrdéfaut(a). Selon un second type de contrainte d'équivalence dite d'équivalence par maintien des différences, on conserve les différences entre les volumes sonores d'au moins deux éléments a et b. Ainsi Vc(a)-Vc(b)=Vrdéfaut(a)-Vrdéfaut(b). Si l'auditeur modifie le volume sonore de a Vc(a), alors Vc(b)=Vc(a)+Vrdéfaut(b)- Vrdéfaut(a). Ainsi, si un élément est lié à plusieurs autres éléments ou s'il existe plusieurs contraintes d'équivalence liant des éléments communs, il faut propager les calculs. Les contraintes d'équivalence peuvent concerner les volumes d'éléments d'un 10 même groupe ou de groupes différents. Selon une autre contrainte de mixage, le créateur pourra imposer une contrainte de supériorité entre deux éléments et définir si cette contrainte de supériorité est applicable à tous les éléments ou uniquement à ceux sélectionnés par l'auditeur lors de l'écoute. Selon les cas, une contrainte de supériorité peut 15 s'appliquer même si les éléments contraints ne sont pas sélectionnés lors de l'écoute de l'ceuvre. Selon un premier type de contrainte de supériorité dite de supériorité par maintien des rapports, pour les volumes sonores d'au moins deux éléments a et b, on vise à conserver l'inégalité Vc(a)/Vc(b)>Vrdéfaut(a)/Vrdéfaut(b). Ainsi, si 20 l'auditeur modifie le volume sonore de a Vc(a) deux solutions sont envisageables. S'il augmente le volume sonore de a Vc(a), alors le volume sonore de b Vc(b) reste inchangé car l'inégalité est respectée. S'il diminue le volume sonore de a Vc(a) alors il convient de calculer le volume sonore de b Vc(b) afin de respecter l'inégalité et choisir Vc(b)=Vc(a).Vrdéfaut(b)/Vrdéfaut(a). 25 Selon un second type de contrainte de supériorité dite de supériorité par maintien des différences, pour les volumes sonores d'au moins deux éléments a et b, on vise à conserver l'inégalité Vc(a)-Vc(b)>Vrdéfaut(a)-Vrdéfaut(b). Ainsi, si l'auditeur modifie le volume sonore de a Vc(a) deux solutions sont envisageables. S'il augmente le volume sonore de a Vc(a), alors le volume sonore de b Vc(b) reste inchangé car l'inégalité est respectée. S'il diminue le volume sonore de a Vc(a) alors il convient de calculer le volume sonore de b Vc(b) afin de respecter l'inégalité et choisir Vc(b)=Vc(a)+Vrdéfaut(b)-Vrdéfaut(a). si l'auditeur modifie le volume sonore de b Vc(b) deux solutions sont envisageables. S'il augmente le volume sonore de b Vc(b), alors il convient de calculer le volume sonore de a Vc(a) afin de respecter l'inégalité et choisir Vc(a)=Vc(b)+Vrdéfaut(a)-Vrdéfaut(b). S'il diminue le volume sonore de ba Vc(b) alors le volume de a Vc(a) reste inchangé. Ainsi, si un élément est lié à plusieurs autres éléments ou s'il existe plusieurs contraintes de supériorité liant des éléments communs, il faut propager les calculs. Les contraintes de supériorité peuvent concerner les volumes d'éléments d'un même groupe ou de groupes différents. Selon une autre contrainte de mixage, le créateur pourra imposer une contrainte d'infériorité entre deux éléments et définir si cette contrainte d'infériorité est applicable à tous les éléments ou uniquement à ceux sélectionnés par l'auditeur lors de l'écoute. Selon les cas, une contrainte d'infériorité peut s'appliquer même si les éléments contraints ne sont pas sélectionnés lors de l'écoute de l'ceuvre. Selon un premier type de contrainte d'infériorité dite d'infériorité par maintien des rapports, pour les volumes sonores d'au moins deux éléments a et b, on vise à conserver l'inégalité Vc(a)/Vc(b) Selon un second type de contrainte d'infériorité dite d'infériorité par maintien des différences, pour les volumes sonores d'au moins deux éléments a et b, on vise à conserver l'inégalité Vc(a)-Vc(b) S'il diminue le volume sonore de a Vc(a), alors le volume sonore de b Vc(b) reste inchangé car l'inégalité est respectée. S'il augmente le volume sonore de a Vc(a) alors il convient de calculer le volume sonore de b Vc(b) afin de respecter l'inégalité et choisir Vc(b)=Vc(a)+Vrdéfaut(b)-Vrdéfaut(a). Ainsi, si un élément est lié à plusieurs autres éléments ou s'il existe plusieurs contraintes d'infériorité liant des éléments communs, il faut propager les calculs. Les contraintes d'infériorité peuvent concerner les volumes d'éléments d'un même groupe ou de groupes différents. Bien entendu, les contraintes imposées par le créateur doivent être compatibles entre elles. Ainsi, le procédé de l'invention comprend des moyens visant à tester si les contraintes sont compatibles. Ces moyens sont appelés par la suite moteur de résolution de contraintes et seront détaillés ultérieurement. De préférence, lorsque le créateur impose une nouvelle contrainte, le procédé teste grâce au moteur de résolution de contraintes si cette nouvelle contrainte est compatible avec les précédentes. Dans l'affirmative, la nouvelle contrainte est validée et intégrée dans le tableau de contraintes. En cas d'incohérence, un message informe le créateur que cette nouvelle contrainte n'est pas compatible avec les précédentes et elle n'est pas intégrée dans le tableau de contraintes. Lorsque le tableau de contraintes est achevé, les pistes et le tableau de contraintes sont encapsulés dans un fichier informatique unique d'un nouveau type de format. Ce fichier informatique peut être enregistré sur tous supports. En variante, ce fichier informatique peut être stocké dans une base de données et être téléchargé via un réseau informatique. Lorsqu'il veut écouter l'ceuvre musicale, l'auditeur dispose d'un lecteur comprenant le moteur de résolution de contraintes et permettant d'extraire du fichier informatique selon l'invention les pistes de l'ceuvre musicale et le tableau des contraintes. Ce lecteur lui permet de visualiser les différentes pistes, de les choisir en respectant les contraintes imposées par le créateur et enfin de jouer les pistes sélectionnées. Selon un mode de réalisation, ce lecteur est de type virtuel et consiste en un logiciel permettant de visualiser les différentes pistes, de les choisir en respectant les contraintes imposées par le créateur et enfin de jouer les pistes sélectionnées. Cette phase d'écoute est mise en oeuvre notamment sur un ordinateur couplé à un système de reproduction du son tel que des enceintes. L'auditeur peut disposer en complément de moyens connus de l'art antérieur tel qu'un équaliseur, une balance, un réglage du volume ou autre pour modifier le signal sonore global, les flux audionumériques d'au moins une piste et/ou d'au moins un ensemble de pistes. Ces moyens ne sont pas plus détaillés. Avantageusement, les pistes sont affichées en respectant l'arborescence définie par le créateur. Comme illustré sur la figure 4, l'auditeur peut sélectionner les pistes qu'il désire, par exemple en cochant une case associée à chaque piste. La sélection est opérée en respectant les contraintes du créateur. Le moteur de résolution de contraintes permet de vérifier si le choix est possible et de compléter l'action de l'auditeur. Ainsi, à titre d'exemple, si l'auditeur coche la piste n°2, le moteur de résolution de contraintes va cocher la piste n°4 qui est nécessairement jouée avec la piste n°2 et rendre le choix impossible pour la piste n°5 qui ne peut pas être jouée avec la piste n°2. L'auditeur peut s'arrêter à cette sélection et lancer la lecture. Les pistes n°2 et n°4 sont jouées simultanément. Selon un autre cas, l'auditeur peut choisir une autre piste entre la piste n°1 ou n°3. S'il sélectionne la piste n°3, le moteur de résolution de contraintes vérifie si ce choix est possible. Dans l'affirmative, il complète l'action de l'auditeur en rendant le choix impossible pour la piste n°1, deux pistes au maximum du groupe G1 pouvant être jouées simultanément. S'il sélectionne la piste n°1, le moteur de résolution de contraintes vérifie si ce choix est possible. Dans ce cas, le choix de la piste n°1 impose la sélection des pistes n°4 et n°5. Or, la piste n°5 ne peut pas être sélectionnée avec la piste n°2 déjà sélectionnée. Par conséquent, le choix de la piste n°1 est impossible. Un message est donné à l'auditeur lui indiquant que son choix n'est pas possible. En variante, le moteur de résolution de contraintes valide la sélection de la piste n°1 et coche les cases des pistes n°1, n°4 et n°5 et rend impossible la sélection de la piste n°2. A la fin de sa sélection, l'auditeur peut pour chaque piste ajuster le signal sonore en réglant le volume, la balance ou en le traitant grâce à un équaliseur. A la fin du paramétrage, l'auditeur lance la lecture du flux audionumérique, les pistes sélectionnées étant jouées simultanément de manière à obtenir un signal sonore. En variante, lors de l'écoute, l'auditeur peut modifier son choix de pistes. Le moteur de résolution de contraintes permet en temps réel de compléter le choix de l'auditeur en ajoutant ou supprimant des pistes en fonction des contraintes. On note que le procédé de gestion de flux audionumériques selon l'invention permet de rendre l'écoute d'une oeuvre musicale interactive car l'auditeur peut choisir des pistes et agir ainsi sur le signal sonore émis. Selon un autre avantage, le procédé selon l'invention ne nécessite pas une puissance de calcul importante, car il traite des pistes et non des blocs qui doivent être joués successivement, ce qui le rend compatible avec la majorité des appareils d'écoute. Le signal sonore découlant de la lecture des flux audionumériques est parfaitement audible car le choix des pistes est encadré par les contraintes imposées par le créateur. Le moteur de résolution de contraintes est maintenant détaillé. Lors de la phase de création, le moteur de résolution de contraintes doit permettre de valider le choix de contraintes que souhaite imposer le créateur. Lorsque le créateur impose une nouvelle contrainte, le moteur de résolution de contrainte vérifie si cette nouvelle contrainte est compatible avec les contraintes déjà imposées. Pour opérer ce contrôle, toutes les pistes sont mises au même état, de préférence à l'état inactif. En suivant, le moteur de résolution de contraintes vérifie que toutes les pistes peuvent changer d'état et que l'ensemble des contraintes est respecté. Si ce test est concluant la nouvelle contrainte est compatible avec les contraintes déjà imposées et validée dans le tableau des contraintes. Si aucune solution n'a été trouvée pour que toutes les pistes changent d'état alors la nouvelle contrainte n'est pas compatible avec les contraintes déjà imposées. Un message informe le créateur que cette contrainte n'est pas compatible. Lors de la phase d'écoute, le moteur de résolution de contraintes permet de vérifier si le choix de l'auditeur est possible et respecte l'ensemble des 20 contraintes. Soit n pistes qui sont à différents états actif ou inactif définissant une combinaison d'état, le choix de l'auditeur conduit à un changement d'état de la piste i (comprise dans les n pistes). Le moteur de résolution de contraintes vérifie que cette nouvelle combinaison avec ce nouvel état de la piste i est 25 possible et respecte l'ensemble des contraintes. Dans l'affirmative, le changement d'état de la piste i est validé. Si cette combinaison n'est pas possible, deux solutions peuvent être envisagées. La première solution consiste à informer que ce changement d'état n'est pas possible. Selon une solution préférée, ce changement d'état est automatiquement validé, mais le moteur de résolution de contraintes détermine dans un laps de temps donné la combinaison possible intégrant ce changement d'état la plus proche de la combinaison précédente. Une première combinaison est dite la plus proche d'une seconde combinaison si le nombre de pistes à l'état actif de la première combinaison est le plus proche du nombre de pistes à l'état actif de la seconde combinaison. Lors de la phase d'écoute, le moteur de résolution de contraintes permet de mettre à jour les choix possibles après une sélection de l'auditeur. Ainsi, après avoir vérifié que le choix est possible, le moteur de résolution de contraintes coche les pistes qui sont imposées de part ce nouveau choix en raison des implications et rend impossible le choix d'éventuellement certaines pistes de part ce nouveau choix en raison des exclusions. La structure du format de musique interactive selon l'invention est la suivante La Table des Box Le format de fichier IM AF contient plusieurs box qui se basent sur le format de 20 fichier I5O type concernant les médias. On décrit deux conteneurs de Box qui encapsulent les Box Groupes et les Box Contraintes : 'grco' : le Conteneur de Box Groupes ; 'cnco' : le Conteneur de Box Contraintes. 25 Syntaxes et Sémantiques des Box Les box décrites par le format IM AF constituent un sous-ensemble des box définies par le format de fichier I5O type concernant les médias. Dans ce document, nous détaillons deux conteneurs de box. 30 Le Conteneur de Box de Groupe réunit des informations à propos de la composition des groupes. Les groupes permettent d'apporter une structure hiérarchique aux pistes d'un fichier au format IM AF. Le Conteneur de Box de Contraintes permet de rassembler les contraintes de sélection et de mixage appliquées sur les éléments (pistes et 35 groupes) d'un fichier audio au format IM AF. Conteneur de Box de Groupe Nom de la Box : 'grco' Conteneur : Movie Box ('moov') Obligatoire : Oui Quantité : Exactement une Le conteneur de Box de Groupe définit le nombre de groupes contenus dans un fichier. Chaque groupe étant représenté par une Box de Groupe. Ainsi, un fichier peut contenir zéro ou plusieurs Box de Groupe (quantité définie par num groups). / syntaxe aligned(8) class GroupsContainerBox extends Box(`grco') { unsigned int(8) num groups; ] / sémantique num groups - est un entier qui spécifie le nombre de groupes contenus dans un fichier. Box de Groupe Nom de la Box : 'grup' Conteneur : Conteneur de Box de Groupes ('grco') Obligatoire : Non Quantité : Zéro ou plus La Box de Groupe regroupe des informations spécifiques à un groupe particulier. Elle décrit la structure du groupe en établissant la liste des sous-éléments qui le compose. En ce sens, un groupe peut être composé de pistes et/ou de groupes. / sémantique version - est un entier qui décrit la version de la box. flags - est un entier binaire (sur 8 bits) ; les valeurs suivantes sont définies 30 - displaydisable & editdisable indiquent que les informations contenues dans la box ne seront pas affichées par le lecteur excepté group_name. L'utilisateur ne pourra pas les modifier. Pour cette option, la valeur du flag est 0x01. - displayenable & editdisable indiquent que les informations contenues dans la box seront affichées par le lecteur. L'utilisateur ne pourra pas les modifier. Pour cette 35 option, la valeur du flag est 0x02. / syntaxe aligned(8) class GroupBox extends FullBox('grup', version = 0, flags){ string group name; unsigned int(8) group ID; unsigned int(8) numsubElts; unsigned int(8) group subElts ID[num subElts]; ] 1525 16 displayenable & editenable indiquent que les informations contenues dans la box pourront être affichées par le lecteur et modifiées par l'utilisateur. Pour cette option, la valeur du flag est 0x03. Valeur du Flag Affichage Modification 0x01 désactivé désactivé 0x02 activé désactivé 0x03 activé activé groupname - est une chaîne de caractères (UTF-8) qui donne une description compréhensible de la Box Groupe. group_ID - est un entier qui permet d'identifier de façon unique la Box Groupe. numsubElts - est un entier qui donne le nombre d'éléments contenus dans le groupe. groupsubEltsID [numsubElts ] - est un tableau. Chaque case du tableau contient un entier qui représente un identifiant décrivant un élément particulier du groupe. Ces éléments peuvent être des pistes et/ou des groupes. Conteneur de Box de Contraintes Nom de la Box : 'cnco' Conteneur : Movie Box ('moov') Obligatoire : Oui Quantité : Exactement une Le Conteneur de Box de Contraintes contient des informations sur les contraintes appliquées aux éléments qui composent un fichier audio au format IM AF. On distingue deux grandes classes de contrainte : les contraintes de sélection et les contraintes de mixage. Ainsi, cette box donne le nombre de contraintes appartenant à chaque classe. En ce sens, elle pourra contenir zéro ou plusieurs Box Contrainte de Sélection et zéro ou plusieurs Box Contrainte de Mixage. / sémantique numSelectionconstraints - est un entier qui spécifie le nombre de contraintes de 30 sélection contenues dans un fichier. numMixingconstraints - est un entier qui spécifie le nombre de contraintes de mixage contenues dans un fichier. Box Contrainte de Sélection 35 Nom de la Box : 'cnsc' Conteneur : Conteneur de Box de Contraintes ('cnco') Obligatoire : Non Quantité : Zéro ou plus / syntaxe aligned(8) class ConstraintsContainerBox extends Box(`cnco'){ unsigned int(8) numSelectionConstraints; unsigned int(8) num MixingConstraints; ] La Box Contrainte de Sélection contient des informations propres à une contrainte de sélection particulière. Ces contraintes sont applicables sur les éléments qui composent un fichier audio au format IM AF. On en distingue quatre types qui sont : la contrainte min/max, la contrainte d'exclusion, la contrainte de forçage à l'état actif et la contrainte d'implication. Ainsi, le paramètre select_constType permet de distinguer ces différents types. Chaque contrainte est identifiée à l'aide d'un identifiant unique (selectconstlD) et d'une description sommaire (select constDescription). La BOX Contrainte de Sélection décrit donc les paramètres d'une contrainte de sélection particulière en fonction de son type. / sémantique version - est un entier qui décrit la version de la box. select constlD - est un entier qui identifie de façon unique une contrainte de sélection. selectconstDescription - est une chaîne de caractères (UTF-8) qui donne une description de la contrainte de sélection. select constType - est un entier qui identifie le type de la contrainte de sélection. select_constType Signification 0 Contrainte min/max (MINMAX) 1 Contrainte d'exclusion (EXCLU) 2 Contrainte de forçage à l'état actif (NOTMUTE) 3 Contrainte d'implication (IMPLY) / syntaxe aligned(8) class SelectionConstraintBox extends FullBox(`cnsc', version = 0) { unsigned int(8) select constlD; string select constDescription; unsigned int(8) select constType; unsigned int(8) num otherElts; unsigned int(8) slct constOtherEltslD[num othersElts]; if(select constType==0){ // MINMAX unsigned int(8) min numberElements; unsigned int(8) max numberElements; } if(select constType==3){ // IMPLY unsigned int(8) numinfluencedElts; unsigned int(8) slct constlnfluencedEltslD[num influencedElts]; } } min numberElements - est un entier utilisé uniquement par la contrainte min/max (c'est à dire quand selectconstType=O). Ce paramètre permet de spécifier le nombre minimum d'éléments qui peuvent se trouver dans l'état actif simultanément. Ce nombre est appliqué sur un ensemble d'éléments décrit et défini par les paramètres suivants numotherElts & slctconstOtherEltslD. maxnumberElements - est un entier utilisé uniquement par la contrainte min/max (c'est à dire quand selectconstType=O). Ce paramètre permet de spécifier le nombre maximum d'éléments qui peuvent se trouver dans l'état actif simultanément. Ce nombre est appliqué sur un ensemble d'éléments décrit et défini par les paramètres suivants : numotherElts & slctconstotherEltsID. Il est important de noter que la relation suivante sera toujours vérifiée : maxnumberElements ? min numberElements. numotherElts - est un entier utilisé pour définir le nombre d'éléments impliqués dans cette contrainte. slctconstotherEltsID [numothersElts ] - est un tableau. Chaque case de ce tableau est un entier qui décrit un identifiant permettant de désigner les éléments impliqués dans cette contrainte de sélection. Ces éléments peuvent être des pistes et/ou des groupes. numinfluencedElts - est un entier utilisé pour représenter le nombre d'éléments sur lesquels la contrainte est appliquée. Ce paramètre est utilisé seulement par la contrainte d'implication (c'est-à-dire quand select constType=3). slctconstlnfluencedEltsID [numinfluencedElts] - est un tableau. Chaque case de ce tableau est un entier qui représente un identifiant permettant de désigner les éléments sur lesquels la contrainte est appliquée. Ces éléments peuvent être des pistes et/ou des groupes. Ce paramètre est utilisé uniquement par la contrainte d'implication (c'est-à-dire quand select constType=3). La Box Contrainte de Mixage Nom de la Box : 'cnmx' Conteneur : Constraints Container Box ('cnco') Obligatoire : Non Quantité : Zéro ou plus La Box Contrainte de Mixage contient les informations propres à une contrainte de mixage particulière appliquée aux éléments qui composent un fichier audio au format IM AF. On distingue quatre types de contrainte : la contrainte d'équivalence, la contrainte de supériorité, la contrainte d'infériorité ainsi que la contrainte min/max. Le paramètre mix_constType permet de distinguer les différentes types de contrainte. Chaque contrainte est identifiée par un nom (mixconstName), une description sommaire (mixconstDescription) et un identifiant unique (mixconstlD). Une Box Contrainte de Mixage décrit donc les paramètres d'une contrainte de mixage particulière en fonction de son type. / syntaxe aligned(8) class MixingConstraintBox extends FullBox('cnmx', version = o){ unsigned int(8) mix constlD; string mix constDescription; unsigned int(8) mix constType; unsigned int(8) num mixInfluencedElts; unsigned int(8) mx constlnfluencedEltsID[num mixInfluencedElts]; if(mix constType==3){ // only LIMITS unsigned int(8) min volLimit; unsigned int(8) max volLimit; } else{ unsigned int(16) mx valuelnfluenced[num mixInfluencedElts]; } if(mix constType==lIImix constType==2){ // UPPER or LOWER unsigned int(8) num mixOtherElts; unsigned int(8) mxconstOtherEltsID[num mixOtherElts]; unsigned int(16) mx valueOther[num mixOtherElts]; } } / sémantique version - est un entier qui décrit la version de la box. mixconstlD - est un entier qui permet d'identifier de manière unique une contrainte de mixage. mix constDescription - est une chaîne de caractères qui permet de donner une description de la contrainte de mixage. mix constType - est un entier qui permet d'identifier le type de la contrainte de mixage. select_constType Signification 0 Contrainte d'équivalence (EQUIV) 1 Contrainte de supériorité (UPPER) 2 Contrainte d'infériorité (LOWER) 3 Contrainte min/max (LIMITS) min volLimit - est un entier utilisé uniquement par la contrainte min/max (c'est à dire quand mix constType=3). Ce paramètre indique le volume sonore minimal qu'un élément peut prendre. En réalité, une telle limite de volume est de type décimal. Ainsi, cette valeur décimale peut être obtenue à l'aide de l'opération suivante : min volLimit /10 où min_volLimit est compris entre 0 et n (avec n e N ). max volLimit - est un entier utilisé uniquement par la contrainte min/max (c'est à dire quand mix constType=3). Ce paramètre indique le volume sonore maximal qu'un élément peut prendre. En réalité, une telle limite de volume est de type décimal. Ainsi, 20 cette valeur décimale peut être obtenue à l'aide de l'opération suivante : maxvolLimit/100 où maxvolLimit est compris entre 0 et n (avec n e N ). De plus, il est important de noter que la relation suivante sera toujours vérifiée : max volLimit min volLimit. nummixlnfluencedElts - est un entier qui définit le nombre d'éléments sur lesquels la contrainte est directement appliquée. mx constlnfluencedEltsID[nummixlnfluencedElts] - est un tableau. Chaque case de ce tableau est un entier qui représente l'identifiant unique d'un élément. Ces éléments, ainsi désignés, représentent les éléments sur lesquels la contrainte est directement appliquée. Ces éléments peuvent être des pistes et/ou des groupes. nummixotherElts - est un entier utilisé pour définir le nombre d'éléments directement impliqués dans la contrainte. Ce paramètre est utilisé uniquement par les contraintes de supériorité et d'infériorité (c'est à dire quand mixconstType=1 ou mix constType=2). mxconstOtherEltslD [nummixOtherElts ] - est un tableau. Chaque case de ce tableau contient un entier qui représente l'identifiant unique d'un élément. Ces identifiants désignent les éléments directement impliqués dans la contrainte. Ils peuvent être soit des pistes, soit des groupes. Ce paramètre est utilisé uniquement par les contraintes de supériorité et d'infériorité (c'est-à-dire lorsque mixconstType=1 ou mix constType=2). mxvaluelnfluenced [nummixlnfluencedElts] - est un tableau. Chaque case du tableau est un entier utilisé pour définir un coefficient appliqué sur les volumes des éléments sur lesquels la contrainte de mixage est directement appliquée. Ce paramètre est utilisé par la contrainte d'équivalence, la contrainte de supériorité et par la contrainte d'infériorité (c'est-à-dire lorsque mixconstType=O ou mixconstType=1 ou mix constType=2). mxvalueOther [nummixOtherElts ] - est un tableau. Chaque case du tableau est un entier utilisé pour définir un coefficient appliqué sur les volumes des éléments directement impliqués dans la contrainte de mixage. Ce paramètre est utilisé par les contraintes de supériorité et d'infériorité (c'est-à-dire lorsque mixconstType=1 ou mix constType=2). Les conteneurs et les box présentés précédemment font l'objet d'une description X5D (XML Schema Description). Cette description a pour objet de donner le format du fichier XML qui pourra être utilisé pour la description des conteneurs et des box d'un fichier audio au format IM AF. Par défaut, ce fichier contiendra deux conteneurs de box : le conteneur de Box de Groupes (GroupsContainerBox) et le Conteneur de Box de Contraintes (ConstraintsContainerBox). Chacun de ces conteneurs contiendra zero ou plusieurs box en fonction des groupes et des contraintes définis dans le fichier. Pour certain type de contraintes, certaines balises ne seront pas utilisées. L'usage conditionnel de paramètres est défini dans les sections relatives à la Box Contrainte de Sélection et à la Box Contrainte de Mixage. 21 22 15 20 25 30 35 40 Les contraintes de sélection et les contraintes de mixage sont maintenant décrites à l'aide de l'outil de description de contraintes défini dans la norme MPEG-21. 45 La norme MPEG-21 apporte de nouvelles fonctionnalités en introduisant la possibilité de décrire et de définir des contraintes. Les contraintes de limite permettent de décrire une expression logique devant posséder une valeur logique � vraie� afin qu'elle soit appliquée. Une contrainte est 10 fixée entre plusieurs arguments reliés entre eux par des opérations à l'aide d'une notation postfixée : a + b = c se note ab + c =. Les arguments utilisés dans les expressions peuvent être soit des références, soit des valeurs constantes : Type d'Argument Syntaxe de l'Argument Variable Referencée Valeur Constante Les opérations utilisées dans les expressions logiques sont listées dans le tableau suivant : Nom de l'Opération Expression Mathématique Syntaxe de l'Opération Inférieur ou Egal A 25 30 L'implication 35 La contrainte d'implication spécifie que l'état actif d'une piste implique qu'une autre piste soit activée. Cette contrainte est par conséquent établie en empêchant la combinaison impossible de l'état des pistes lors d'une implication (membre gauche actif et membre droit inactif). 10 Item 1.active = true => Item 2.active = true true false L'exclusion La contrainte d'exclusion permet d'indiquer une incompatibilité entre deux pistes. Par conséquent, elle est établie en interdisant deux pistes d'être actives en même temps. Item 1.active = true => Item 2.active = faire true 30 true 35 Les Contraintes de Mixage Les contraintes de mixage établissent des relations entre les volumes des 40 pistes/groupes dans une optique de contrôle de l'interaction sur les volumes. En effet, elles permettent de préciser les possibilités d'interaction de l'auditeur sur les volumes des pistes/groupes d'un même fichier. La contrainte d'équivalence 45 La contrainte d'équivalence permet de conserver des relations numériques entre les volumes des pistes/groupes (champs d'items). Plus spécifiquement, elle vérifie une égalité entre des valeurs de volume liées par des quotients ou des différences. - Equivalence par rapport : Item/ .volC = (Item2.volC)/coeff coeff - Equivalence par différence : Item 1.vol C = Item 2.vol c ù di f diff La contrainte de supériorité Cette contrainte permet de spécifier une comparaison de type supériorité non stricte entre les volumes des éléments d'un même fichier. - Supériorité par rapport : (Iteml.volC)/(Item2.volC) (Iteml.volR)/(Item2.volR) - Supériorité par différence : Item 1.vol c ù Item 2.vol C Item 1.vol R ù Item 2.volR La contrainte d'infériorité Cette contrainte permet de spécifier une comparaison de type infériorité non stricte entre les volumes des éléments d'un même fichier. - Infériorité par rapport : (Iteml.volC)/(Item2.volC) (Iteml.volR)/(Item2.volR) - Infériorité par différence : Item 1.vol c û Item 2.vol C Item 1.vol R û Item 2.volR La contrainte Min/Max La contrainte de mixage min/max permet de borner le volume d'une piste en donnant les valeurs minimales et maximales. min Item.vol c max REVENDICATIONS1. Procédé de gestion de flux audionumériques d'une oeuvre musicale, consistant à créer des flux audionumériques appelés pistes (p1 à p21) d'une même oeuvre musicale, lesdites pistes ayant une durée sensiblement égale à l'ceuvre musicale, chacun desdits flux audionumériques correspondant à un signal sonore, caractérisé en ce qu'il consiste, au moment de la création, à regrouper lesdites pistes en au moins deux ensembles (G), les pistes et les ensembles étant appelés éléments, à établir des contraintes (cl à c3) relatives aux éléments, à vérifier que chaque nouvelle contrainte est compatible avec les contraintes précédentes grâce à un moteur de résolution de contraintes, à encapsuler les pistes (p1 à p21) et les contraintes (c1 à c3) dans un fichier informatique unique, et au moment de l'écoute, à choisir les pistes que souhaite entendre l'auditeur en respectant les contraintes (c1 à c3) et obtenir un signal sonore à partir des pistes choisies. 2. Procédé de gestion de flux audionumériques selon la revendication 1, caractérisé en ce qu'il consiste à fixer pour au moins un ensemble, de préférence chaque ensemble, les nombres minimal et/ou maximal d'éléments de l'ensemble joués de manière simultanée. 3. Procédé de gestion de flux audionumériques selon la revendication 1 ou 2, caractérisé en ce qu'il consiste à fixer des implications entre éléments, lesdits éléments liés devant être joués simultanément. 4. procédé de gestion de flux audionumériques selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il consiste à fixer des exclusions entre éléments, lesdits éléments liés ne pouvant pas être joués de manière simultanée. 5. Procédé de gestion de flux audionumériques selon l'une quelconque des 25 revendications précédentes, caractérisé en ce que lorsque le créateur impose unenouvelle contrainte, le moteur de résolution de contrainte vérifie si cette nouvelle contrainte est compatible avec les contraintes déjà imposées. 6. Procédé de gestion de flux audionumériques selon la revendication 5, caractérisé en ce que le moteur de résolution de contraintes vérifie que toutes les pistes peuvent changer d'état et que les contraintes sont respectées. 7. Procédé de gestion de flux audionumériques selon l'une quelconque des revendications précédentes, caractérisé en ce que, lors de la phase d'écoute, le moteur de résolution de contraintes vérifie si une combinaison d'états de pistes déterminée par l'auditeur est possible et respecte l'ensemble des contraintes. 8. Procédé de gestion de flux audionumériques selon la revendication 7, caractérisé en ce que si le changement d'état d'une piste choisi par l'auditeur ne respecte pas l'ensemble des contraintes, le changement d'état de ladite piste est automatiquement validé et en ce que le moteur de résolution de contraintes détermine dans un laps de temps donné une combinaison possible intégrant ce changement d'état la plus proche de la combinaison avant ce changement d'état. 9. Procédé de gestion de flux audionumériques selon l'une quelconque des revendications précédentes, caractérisé en ce que le moteur de résolution de contraintes met à jour les choix possibles après une sélection de l'auditeur.