Brevet FR2765370A1 — publié le 19981231

La présente invention a trait d'une façon générale aux systèmes et procédés de traitement d'images. On connaît déjà dans la technique de nombreux procédés destinés à appliquer à des images numérisées des traitements bien définis. Il s'agit en particulier de tous les équipements équipant les studios de production et de post-production vidéo. Toutefois, un trait commun à tous ces procédés réside en ce que, leur influence sur l'image étant bien définie, ils ne peuvent être appliqués durablement sans provoquer inévitablement un phénomène de lassitude de l'observateur, dûe aux évolutions nécessairement répétitives de l'image. Or il peut être souhaitable dans certaines applications de proposer à l'observateur une séquence d'images qui, tout en étant attrayante sur le plan esthétique, puisse se prolonger dans le temps pratiquement sans limite sans qu'aucun caractère répétitif ne soit ressenti par le spectateur.20 Il peut s'agir notamment d'applications de publicité, dans lesquelles une image de départ représentative d'un produit ou service à promouvoir est transformée tout en présentant au moins de temps à autre une trace des couleurs et/ou des formes de l'image initiale.25 I1 peut s'agir également d'applications culturelles, dans lesquelles des images vont évoluer en fonction de certaines caractéristiques d'une musique diffusée, sans néanmoins présenter le caractère répétitif des caractéristiques musicales qui elles, sont répétitives de30 facon inhérente (rythme de base, phrases musicales, etc...). La diffusion de telles images pourra être effectuée sur grand écran au cours de concerts ou dans les boîtes de nuit. Pour satisfaire à de tels besoins, la présente invention propose un système de traitement d'images pour produire des images animées à évolution aléatoire, comprenant une unité centrale de traitement, une mémoire vidéo comportant MxN emplacements de pixels formant une image, et un dispositif d'affichage, chaque pixel présentant une valeur de couleur comprise dans un 5 intervalle déterminé, caractérisé en ce qu'il comprend en outre: - une mémoire contenant une pluralité d'algorithmes, - des moyens de sélection d'au moins l'un des algorithmes contenus dans la mémoire, - des moyens pour appliquer aux algorithmes des paramètres de fonctionnement, - des moyens de traitement pour appliquer séquentiellement ledit algorithme sélectionné à des valeurs courantes de couleurs de pixels contenues dans la15 mémoire vidéo, et pour engendrer des valeurs de couleurs de pixels modifiées, - des moyens pour afficher en succession sur le dispositif d'affichage des images ayant les valeurs de couleurs de pixels séquentiellement modifiées, et20 - des moyens pour ajuster les valeurs des paramètres de fonctionnement de telle sorte que l'algorithme sélectionné opère des transformations d'image restant perpétuellement aléatoires. Des aspects préférés, mais non limitatifs, du système selon l'invention sont les suivants: - au moins certains des algorithmes établissent des valeurs de couleurs de pixels modifiées en fonction des valeurs de couleurs courantes des pixels et de leurs voisins immédiats.30 - lesdits voisins immédiats sont constitués par quatre voisins en contact avec le pixel considéré le long de ses quatre bords. - lesdits voisins immédiats sont constitués par huit voisins en contact avec le pixel considéré le long de ses quatre bords ou au niveau de ses coins. - la mémoire vidéo est apte à mémoriser une pluralité de valeurs de couleurs de pixels virtuels situés en dehors du champ de l'image affichée et adjacents audit champ. - lesdits pixels s'étendent le long de deux bords opposés dudit champ de l'image affichée. - lesdits pixels s'étendent le long des quatre bords de l'image affichée. - le système comprend en outre des moyens de mémorisation d'une image fixe constituée d'une pluralité de pixels possédant des valeurs de couleurs, et les moyens de traitement comprennent des moyens pour combiner les valeurs de couleurs de pixels de l'image fixe avec les valeurs de couleurs de pixels traitées par l'algorithme sélectionné.15 - le système comporte des moyens pour stocker une pluralité de palettes de couleurs en association avec une pluralité d'images fixes respectives. - le système comprend des moyens périphériques d'entrée pour l'introduction manuelle d'au moins certains des paramètres de fonctionnement, et les moyens d'ajustement sont aptes à ajuster les valeurs desdits paramètres introduits manuellement. le système comprend en outre des moyens pour appliquer aux images traitées par les moyens de traitement des effets visuels prédéterminés. - les moyens de sélection sont également aptes à sélectionner successivement différentes palettes de couleurs constituant chacune un sous-ensemble des couleurs pouvant être engendrées par le système. - le système comprend des moyens pour appliquer à l'image en cours de traitement une fonction de fondu à chaque sélection d'une nouvelle palette de couleurs. - le système comprend en outre des moyens d'acquisition d'un signal sonore et de traitement du signal sonore acquis pour délivrer en sortie des paramètres de fonctionnement des algorithmes. - le système comprend des moyens de commande automatique de gain aptes à délivrer des paramètres de fonctionnement représentatifs de niveaux sonores relatifs, indépendamment du niveau global du signal sonore. 5 les moyens d'acquisition sonore comprennent un convertisseur analogique/numérique et les moyens de traitement sonore comprennent des moyens de filtrage numérique pour décomposer le signal sonore converti en une pluralité de bandes de fréquences.10 - les moyens de filtrage sont des filtres itératifs en treillis. - les moyens de traitement sonore comprennent des moyens pour délivrer en sortie des paramètres de fonctionnement représentatifs des niveaux sonores dans15 chacune des bandes de fréquences. - les niveaux sont choisis dans le groupe comprenant les niveaux moyens, les niveaux efficaces et les niveaux de crête. - les moyens de traitement sonore sont aptes à délivrer des données graphiques bidimensionnelles représentatives de certaines caractéristiques du signal sonore, et le système comprend en outre des seconds moyens de traitement d'images aptes à intégrer lesdites données graphiques aux images en cours de traitement par les25 premiers moyens de traitement. - lesdites données graphiques sont représentatives d'un ensemble de différents niveaux du signal en fonction du temps dans un intervalle de temps donné. - ledit intervalle de temps correspond au contenu d'une mémoire tampon dans lequel un nombre déterminé d'échantillons sonores sont stockés en succession. - lorsque le signal sonore comporte deux canaux, lesdites données graphiques sont organisées selon une table bidimensionnelle, l'une des dimensions étant représentative de la partie commune des signaux entre les deux canaux et l'autre dimension étant représentative de la différence entre les signaux des deux canaux. - les moyens de sélection sont aptes, en l'absence d'un signal sonore, à simuler des paramètres de fonctionnement issus d'un signal sonore. D'autres aspects, buts et avantages de la présente invention apparaîtront mieux à la lecture de la description détaillée suivante d'une forme de réalisation préférée de celle-ci, donnée à titre d'exemple et faite en référence aux listages et aux dessins annexés, sur lesquels: le listage A donne un exemple d'un algorithme mis en oeuvre dans le système de traitement de la présente invention, le listage B donne un exemple d'un autre algorithme mis en oeuvre dans le système et influencé par des paramètres sonores, le listage C illustre la combinaison d'une image en cours de traitement avec une image fixe, le listage D illustre la possibilité de recourir à l'une parmi une pluralité d'image pour le traitement, le listage E illustre notamment la boucle principale du programme, incluant la sélection d'algorithme en fonction d'événements provenant en particulier d'un clavier, le listage F illustre l'accès par le système à différentes palettes de couleurs, le listage G donne un exemple d'un effet visuel appliqué à une image en cours de traitement, le listage H illustre un sous-programme d'acquisition sonore, le listage I illustre un sous-programme d'extraction de paramètres sonores, le listge J illustre l'utilisation de ces paramètres sonores dans le traitement d'images, la figure 1 est un schéma-bloc d'un système de traitement d'images selon l'invention, la figure 2 est un schéma synoptique d'un traitement d'images effectué conformément à la présente invention, les figures 3a et 3b illustrent deux modes de transformation d'un pixel d'une image en fonction des pixels voisins, la figure 4 illustre la réponse mathématique de la transformation de la figure 3b, la figure 5a illustre une image pourvue d'un premier type de marquise pondératrice, la figure 5b illustre une image pourvue d'un second type de marquise pondératrice, la figure 6 illustre la courbe de réponse temporelle d'un filtre utilisé dans un module de traitement sonore selon l'invention, la figure 7 est un schéma synoptique d'une partie du module de traitement sonore, la figure 8 illustre les courbes de réponse en fréquence des deux filtres illustrés sur la figure 7, la figure 9 illustre les courbes de réponse en fréquence de deux filtres d'un autre type, et la figure 10 est un schéma synoptique du traitement par bandes de fréquences du module de traitement sonore. En référence tout d'abord à la figure 1, on a illustré schématiquement une plateforme informatique susceptible d'effectuer un traitement d'images selon l'invention. Elle comprend de façon classique en soi une unité centrale de traitement à microprocesseur 100, une mémoire vive 102, une mémoire morte 104, une unité de stockage de masse 106 telle qu'un disque dur. Ii est prévu un circuit d'entrée/sortie 108 auquel sont reliés un convertisseur analogique/numérique susceptible de convertir un signal sonore analogique en données numériques, un ou plusieurs périphériques d'entrée 112 (clavier, souris, etc...) et une carte vidéo 114 comportant une mémoire vidéo et dont la sortie est reliée à un écran de visualisation 116, par exemple à rayons cathodiques ou à cristaux liquides. Il peut s'agir par exemple d'une plateforme Macintosh PowerPC (marques déposées) fabriquée par la société Apple Computer, Inc, equipée de moyens de gestion de sons tels que le programme SoundManager (Marque déposée). Cette machine est programmée de manière à engendrer, de façon automatique et le cas échéant entièrement autonome, des images numériques colorées et animées en temps réel, en appliquant aux pixels d'une image contenue en mémoire des transformations calculées pouvant être paramétrées par l'utilisateur et/ou par un signal sonore, par exemple un signa 1 analogique stéréo de musique. Le programme comporte une pluralité d'algorithmes de transformation sélectionnables individuellement ou par groupes, en fonction soit des commandes de l'utilisateur, soit du signal musical, soit encore de façon aléatoire par le programme lui-même. Dans le cas d'un pilotage par un signal sonore, et comme on le verra en détail plus loin, un traitement est appliqué à ce signal de manière à en extraire des évènements de caractéristiques fréquentielles et/ou temporelles déterminées, représentés par des valeurs numériques (soit des valeurs codées sur N bits, soit des valeurs logiques de type "0" ou 1". En référence maintenant à la figure 2, on a désigné par la référence Il une image courante, actuellement affichée. De façon conventionnelle, cette image est constituée par un réseau de MxN pixels en couleurs ayant chacun une valeur de couleur codée sur N bits, par exemple 8 bits dans le cas d'une image en 256 couleurs. Selon le principe de base de la présente invention, et comme on va le voir plus loin, on applique à tous les pixels de cette image une transformation calculée, à l'aide d'un moteur de transformation T2, pour obtenir une image transformée I3 qui va être affichée sur l'écran 116. Cette image est alors réinjectée en amont du processus pour constituer une nouvelle image Il sur laquelle une nouvelle transformation va être appliquée. 5 En répétant ces opérations de façon cyclique, par exemple de 25 à 100 fois par seconde, on va ainsi obtenir une image animée, comme on le décrira en détail plus loin. C'est au niveau du moteur de transformation T2 qu'un algorithme bien déterminé va être utilisé pour effectuer la transformation. De préférence, au moins certains de ces algorithmes sont des automates cellulaires, comportant des étapes de calcul inspirées des modélisations connues en matière de biologie cellulaire. De façon optionnelle, le moteur de transformation T2 de l'image Il est également capable de prendre en compte lors des transformations le contenu d'une image fixe notée I2. Il peut s'agir par exemple d'une image contenant un logo publicitaire dans des tonalités de couleurs bien déterminées.20 Le traitement effectué dans le moteur de transformation est tel qu'au moins de temps à autre, des formes et des couleurs caractéristiques de cette image fixe soient reconnaissables dans l'image animée I3 obtenue.25 En outre, cette transformation basée sur deux images Il et I2 peut avantageusement être utilisée pour effectuer une dégradation progressive d'une image de départ, l'image Il étant dans ce cas utilisée comme agent de transformation.30 Selon un aspect de la présente invention, chaque pixel de l'image à traiter Il est considéré comme une cellule autonome à laquelle l'algorithme sélectionné va être individuellement appliqué dans le moteur T2 pour lui donner une nouvelle valeur de couleur. La logique algorithmique mise en oeuvre est telle que l'évolution de chaque pixel ou cellule de l'écran est influencé dans son évolution par les cellules voisines. Dans un premier cas, et comme illustré sur la figure 3a, le pixel traité est influencé par les huit pixels qui l'entourent, à savoir des pixels Nord, Nord-Est, Est, Sud- Est, Sud, Sud-Ouest, Ouest et Nord-Ouest (voir listage A, lignes 227 à 235). Dans le cas de la figure 3b, dans le but notamment de simplifier les opérations de calcul que doit effectuer le système, on utilise seulement quatre pixels voisins, à savoir les pixels Nord, Sud, Est et Ouest (voir listage A, lignes 227 à 235). On observera ici que les paramètres utilisés pour qu'un pixel voisin influe sur un pixel traité peuvent être non seulement sa valeur de couleur, mais également, notamment, sa position relative par rapport au pixel traité, sa position absolue dans l'image, et l'écart entre la valeur de couleur du pixel voisin et celle du pixel traité. 20 Par ailleurs, on comprend que le recours à des informations relatives à quatre ou huit pixels voisins pour le traitement d'un pixel pose des problèmes dès que le pixel à traiter se trouve au bord de l'écran. En effet, les coordonnées relatives des pixels voisins d'un pixel traité, telles qu'illustrées sur la figure 4 des dessins, variant de 0 à M-1 (colonne) et de 0 à N-1 (rangée), le traitement devrait alors mettre en jeu des pixels ayant des coordonnées soit égales à -1, soit égales à M ou N, qui n'existent pas dans l'image.30 Une solution à ce problème consiste à stocker dans la mémoire vive des pixels périphériques (pixels "virtuels"), qui ne sont pas affichés mais qui sont utilisés pour le calcul des pixels périphériques de l'image affichée d, notés P(m,0), P(m,N-1), P(0,n) et P(M-l,n), avec m et n35 variant respectivement entre 0 et M-1 et encre 0 et N-1. Une première solution concrète consiste à créer une marquise rectangulaire de pixels virtuels, entourant complètement l'image, comme illustré sur la figure 5a. Ces pixels sont identifiés par P(m,-1), P(m,N), P(-l,n) et 5 P(M,n), avec m variant entre -1 et M et n variant entre -1 et N. Une autre solution concrète peut consister à ne créer une marquise de pixels virtuels qu'au niveau des bords supérieur et inférieur de l'image, soit P(m,-1) et P(m,N),10 tandis que l'image se reboucle sur elle-même le long de ses bords latéraux. Cette solution est modélisée sur la figure 5b (l'univers de l'image est cylindrique), et l'on comprend qu'un pixel P(0,n) a pour voisin de gauche P(M- 1, n), tandis qu'un pixel P(M-l,n) a pour voisin de droite P(0,n). Bien entendu, cette solution est aisément transposable au cas o l'image se reboucle sur elle-même seulement au niveau de ses bords supérieur et inférieur. On observera ici que le listage A, lignes 227 à 235, permet de gérer ces situation par l'application de paramètres appropriés. Enfin une troisième solution, non illustrée, peut Consister à placer l'image dans un univers sphérique, o l'image se reboucle sur elle-même à la fois au niveau de ses bords latéraux d'une part, et au niveau de ses bords25 supérieur et inférieur d'autre part. Dans ce cas, un pixel P(0,n) a pour voisin de gauche P(M-l,n), tandis qu'un pixel P(M-l,n) a pour voisin de droite P(0,n). De même, un pixel P(m,0) a pour voisin sus-jacent P(m,N-1), tandis qu'un pixel P(m,N-1) a pour voisin sous- jacent P(m,0).30 On va décrire ci-dessous un exemple non limitazif d'un algorithme cellulaire pouvant être appliqué à une image courante conformément à la présente invention. Cet algorithme cellulaire, dit de "Voting", consiste à déterminer l'état nouveau d'une cellule en fonction de l'état de ses huit pixels voisins (voir figure 3a). Chaque pixel peut prendre seulement l'un parmi deux états "0" ou "1", à savoir un état allumé et un état éteint. Cet algorithme consiste à additionner les valeurs des huit pixels voisins et la valeur du pixel traité, ce qui aboutit à une somme comprise entre 0 et 9, et à diviser cette somme par deux. Si le résultat de cette division, arrondi par défaut, est supérieur ou égal à quatre, alors la nouvelle valeur du pixel est '1H (pixel allumé). Dans le cas contraire, cette nouvelle valeur est "0" (pixel éteint). L'image monochrome obtenue, qui évolue naturellement dans le temps est utilisée pour traiter l'ensemble de l'image Il, par exemple en combinant selon toute opération appropriée la valeur booléenne "0O ou "1" de chaque pixel de l'image monochrome avec les valeurs de couleurs des pixels correspondants de l'image à traiter Il. Naturellement, on prévoit que l'évolution de l'image monochrome traitante, c'est-à-dire utilisée pour le traitement de l'image Il, soit suffisamment lente pour être perceptible à l'oeil humain sans effort, et en même temps suffisamment rapide pour éviter que l'image restituée n'apparaisse trop stable. On constate qu'au bout d'une certaine durée, la structure de l'image monochrome tend à se stabiliser, pour ainsi stabiliser, de façon indésirable, le traitement appliqué séquentiellement à l'image Il. Plus précisément, on constate avec un tel algorithme que que la structure de l'image tend vers une certaine entropie, o l'application de l'algorithme ne modifie plus perceptiblement la structure de l'image. Pour éviter ce phénomène de stase, on prévoit alors de régénérer l'algorithme de temps à autre en donnant au:: pixels de l'image monochrome traitante une nouvelle valeur initiale, fixée aléatoirement pour chaque pixel. Un exemple d'un autre algorithme, appelé "moinoing', est donné dans le listage A. Selon un autre aspect de l'invention, et comme évoqué plus haut, chaque image obtenue par le processus de transformation, en étant réinjectée en tant qu'image source Il, conditionne la construction et l'aspect final de l'image suivante. On obtient ainsi des évolutions à caractère progressif, sans pour autant compromette le caractère aléatoire de ces évolutions. Par ailleurs, comme déjà évoqué, une image fixe I2 telle qu'un logotype peut être utilisée, chacun des pixels ou cellules de cette image formant un ensemble à structure stable dans le temps, qui influe sur le contenu des images engendrées par le système en induisant une rémanence algorithmique. On se référera à cet égard aux parties de listages suivantes: - annexe D, ligne 3: définition du nombre d'images fixes mémorisables; - annexe E, ligne 37: définition d'un tableau mémorisant les images fixes; - annexe E, ligne 48, définition du nombre d'images fixes réellement mémorisées; - annexe E, ligne 47: définition de l'index de l'image fixe courante; - annexe E, lignes 345-347: transmission de l'image fixe courante aux algorithmes, en l'espèce à l'algorithme appelé "mandala"; - annexe C: utilisation d'une fonction FillRectImg(...) pour la recopie partielle d'une image sur une autre. On observera par ailleurs que, lorsque des algorithmes de type cellulaire ou génétique sont utilisés, le programme est concu cour appliquer à ces algorithmes des valeurs de paramètres d'évolution oui sont maintenus dans les étroites gammes requises pour que les phénomènes d'évolution d'images observés soient satisfaisants. En effet il a été observé que lorsque les valeurs de ces paramètres étaient idadéquates, les images obtenues peuvent évoluer rapidement soit vers une stabilité spatiale excessive (image monochrome dans les cas extrêmes, soit au contraire vers un désordre excessif (brouillard de pixels sans cohésion de couleurs). Selon un autre aspect de la présente invention, lorsque l'utilisateur, à l'aide du clavier ou autre périphérique d'entrée 112, applique au système ses propres paramètres, alors ces paramètres sont systématiquement recalculés pour se situer dans des fourchettes adéquates10 pour éviter les phénomènes ci-dessus (voir annexe E, lignes 415 à 532). A propos des paramètres opératoires du système de traitement d'images, ils peuvent être de différents types comme on l'a déjà évoqué dans ce qui précède. Ces15 différents types sont: - les paramètres de sélection d'algorithmes, appliqués au moteur de traitement T2 par le sélecteur S; ces paramètres peuvent être choisis par l'utilisateur ou, de façon organisée ou aléatoire, par la machine;20 - les paramètres de modification de l'échelle temporelle d'exécution des algorithmes; ces paramètres sont en général fixés par le programme de telle manière que l'effet visuel ne soit ni trop lent, ni trop rapide pour l'oeil;25 - les paramètres de modification des palettes de couleurs courantes; ces paramètres peuvent être fixés par l'utilisateur et/ou par le programme, avec de préférence une évolution dynamique; - les paramètres permettant au moteur de transformation T2 de prendre en compte ou non l'image fixe additionnelle 12; ils sont en général fixés par l'utilisateur, mais peuvent évoluer dynamiquement, sous le contrôle du programme, au cours du traitement; les paramètres susceptibles d'appliquer aux images engendrées, outre les transformations algorithmiques décrites, des effets spéciaux prédéterminés tels que les effets de gelée, de rideau, etc... De tels effets sont illustrés notamment en annexe E. lignes 561 à 617. Comme on l'a indiqué, l'ensemble des paramètres de fonctionnement subit dans tous les cas un traitement destiné à éviter d'une part la répétitivité des images engendrées, et d'autre part les phénomènes asymptotiques amenant une stabilité temporelle ou spatiale excessive ou au contraire les phénomènes de chaos. Ainsi, même dans les cas extrêmes ou aucun paramètre n'est fixé par l'utilisateur, le programme s'affecte par lui-même les jeux de paramètres nécessaires à son fonctionnement dans les conditions précitées. En résumé de ce qui précède, le traitement d'images peut être guidé par l'utilisateur, mais le programme fixe prioritairement les paramètres qui garantissent le caractère aléatoire, sur des durées prolongées, des images engendrées. Comme on l'a indiqué ci-dessus, un certain nombre d'effets préprogrammés peuvent en outre être appliquées aux images pendant le traitement. Ces traitements peuvent intervenir soit au niveau du moteur de transformation T2, soit au niveau du moteur de transformation T1 dont on décrira plus loin les autres fonctions.25 Outre les effets classiques de gelée, de rideaux, de miroirs et analogues, on peut utiliser par exemple des effets mettant en jeu la fonction connue dite de "Warp (voir en particulier annexe E, lignes 585 à 884). Ainsi, un effet de "Warp" dégradé horizontal consiste à réallouer chaque cellule de l'image affichée en fonction de la palette de couleurs couramment sélectionnée. Pl us précisément, on effectue un calcul sur chaque pixel de la rangée zéro (rangée supérieure) de l'image pour lui fixer une valeur de couleur qui est proportionnelle à son numéro35 de colonne (de 0 à M-i), et qui varie par exemple, dans le cas d'une palette de 256 couleurs, de 0 pour le pixel le plus à gauche jusqu'à 255 pour le pixel le plus à droite. On recopie ensuite les valeurs obtenues sur les pixels des lignes suivantes. Ainsi cet effet prédéterminé, qui est effectué au niveau du moteur de transformation Tl, va pouvoir subir les transformations requises en faisant notamment intervenir une image fixe I2. Un autre effet, de transformation d'une image en son négatif, est illustré en annexe G. Par ailleurs, on a également évoqué dans ce qui précède la possibilité d'utiliser des palettes de couleurs différentes pour produire les images. Dans une forme de réalisation de base, il s'agit de palettes de 256 couleurs. Mais il est bien entendu que, selon la puissance de la plateforme informatique utilisée, un travail en milliers, voire en millions de couleurs, peut être envisagé. Le système permet de programmer à volonté des palettes de 256 couleurs, appartenant chacune à une palette générale de 16 millions de couleurs (codage sur 24 bits). De facon préférée, une palette déterminée peut être activée en association avec une image fixe déterminée I2, ceci afin qu'à ladite image I2, constituée par exemple par un logotype d'une marque à promouvoir, soit associée une gamme de couleurs spécifique reprenant les couleurs de la marque et des couleurs voisines, s'y mariant harmonieusement. Ainsi les couleurs spécifiques utilisées par une entreprise dans sa communication peuvent intervenir de façon prédominante dans les images engendrées. Concrètement, l'unité de stockage de masse de l'appareil va mémoriser une pluralité d'images fixes auxquelles seront respectivement associées les palettes de couleurs correspondantes. On observera ici que, d'une façon générale, le passage d'une palette de couleurs à une autre s'effectue de préférence progressivement, via un algorithme dit de "fondu" connu en soi, ceci afin d'éviter des changements trop brusques dans la colorimétrie générale des images. L'annexe F indique (lignes 199 et suivantes) une fonction "next-cmap" permettant de changer de palette, en passant à un numéro de palette décalé d'un nombre "offset". En outre, l'annexe E, lignes 548 à 558 illustre un changement de palette provoqué par une action de l'utilisateur sur le clavier. Par ailleurs, à propos du fondu entre deux palettes successivement sélectionnées, l'annexe F illustre: - en ligne 12, une palette cible appelée "targetcmap" mémorisant l'état final recherché pour la palette; en ligne 11, une palette "currentcmap" définissant la palette actuellement utilisée; et - en ligne 7 (bas de page), une fonction d'interpolation INTERPOLE(s,d,p); - en ligne 15, une variable "palette compteur"définissant le nombre d'étapes pour passer de la palette en cours à la palette cible; et - en lignes 276 à 295, une routine de fondu appelée "fading", qui est appelée à partir de différentes parties du programme pour réaliser la fonction de fondu entre palettes en utilisant la fonction INTERPOLE. Comme on l'a également évoqué plus haut, il est particulièrement avantageux que le système de traitement d'images selon l'invention puisse être influencé, dans son30 déroulement, par des informations caractéristiques d'une source sonore, par exemple un signal musical stéréophonique, appliquée à l'entrée du convertisseur analogique/numérique 110. L'acquisition de cette source est de préférence, dans la plateforme informatique décrite plus haut, traitée par les fonctionnalités du module logiciel "Sound Manager" (marque déposée) faisant partie du système d'exploitation de ce type de machine. Le programme chargé d'extraire de la source les paramètres influant sur le traitement d'image comprend: - un premier module, noté SndLib (voir annexe H), destiné à l'initialisation et au paramétrage du Sound Manager, notamment en matière de fréquence d'échantillonnage, de nombre de canaux, de la résolution de l'échantillonnage, etc..., ainsi qu'à l'acquisition proprement-dite des échantillons sonores, ceci en tâche de fond; - un second module, noté FilterLib (voir annexe I), chargé d'effectuer sur ces échantillons les traitements nécessaires à l'obtention des paramètres représentatifs. De façon classique en soi, les échantillons obtenus par le premier module sont stockés temporairement dans une mémoire tampon, capable par exemple d'accumuler 1024 échantillons successifs. Le module SndLib comprend principalement cinq routines: - une routine SoundInit (annexe H, lignes 50 à 187) de fixation des paramètres d'acquisition sonore, à savoir * fréquence d'échantillonnage (11,025, 22, 050 ou 44,1 kHz); À résolution des échantillons (8 bits ou 16 bits); * nombre de canaux (1: source monophonique, 2: source stéréophonique). - une routine SoundStart (annexe H, lignes 188 à 196) d'activation de l'acquisition; - une routine SoundSton (annexe H, lignes 189 à 205) d'arrêt de l'acquisition; - une routine SoundTest (annexe H. lignes 206 à 222) permettant de délivrer en sortie la valeur (codée sur huit bits) du plus grand échantillon contenu dans la mémoire tampon; - une routine SoundCleanuo (annexe H, lignes 223 à 272) de restauration, permettant de ramener le Sound Manager dans son état précédant son utilisation. De façon classique en soi, la mémoire tampon stocke les échantillons d'une source monophonique dans l'ordre de leur apparition; dans le cas d'une source stéréophonique, les échantillons des canaux gauche et droit sont stockés de façon entrelacée. Dans son principe, le programme d'acquisition et de traitement sonore a pour objet de décomposer par filtrage numérique le signal acquis en P bandes de fréquences, avec par exemple P=10, et d'évaluer dans chacune de ces bandes différents paramètres, en particulier les valeurs de crête du signal et ses valeurs moyennes. La définition des variables d'entrée délivrées par la carte d'acquisition sonore et des variables calculées à partir de ces variables d'entrée figure à l'annexe I. Ces variables calculées sont ensuite utilisées pour engendrer des informations associées à certains événements musicaux et caractéristiques de leur positionnement fréquentiel dans le spectre audible, et temporel. Parmi ces variables calculées, on prévoit que certaines soient évaluées automatiquement et systématiquement par le système, tandis que d'autres sont évaluées à la demande, en fonction des desiderata de l'utilisateur. Les variables calculéess automatiquement ont pour objet d'agir, via le sélecteur S, sur l'un et ou sur l'autre des moteurs de transformation T1 et T2, et plus précisément sur le déclenchement d'effets prédéterminés (notamment de l'effet "Warp" décrit plus haut), sur le changement d'algorithme, sur le changement de palettes de couleurs, etc... (A propos du changement de palette, l'annexe B donne, en ligne 149, un exemple d'un changement de palette provoqué par le dépassement d'un certain niveau sonore.) La procédure d'obtention automatique des variables calculées est nommée MvCallBack() et figure à l'annexe J. Elle opère en tâche de fond et délivre les variables figurant aux lignes 28 à 44 de l'annexe I, à savoir: - QAGC: contrôle automatique de gain; - aRMS: valeur quadratique moyenne; - qPeak: valeur de crête; - aLevelBar: valeur gRMS après pondération temporelle; - aPeakBar: valeur gPeak après pondération temporelle; adBLevBar: conversion logarithmique de gLevelBar; - adBPeakBar: conversion logarithmique de gPeakBar; - adB AGCLev: somme de gdBLevBar et de gAGC; adB AGCPeak: somme de gPeakBar et de gAGC; et pour un traitement tenant compte de la stéréophonie: - cLMeter: valeur quadratique moyenne du canal gauche; - aRMeter: valeur quadratique moyenne du canal droit; - aLPeak: valeur de crête moyenne du canal gauche; - aRPeak: valeur de crête moyenne du canal droit; - aPhase: corrélation gauche/droite. La procédure MvCallBack() met en oeuvre notamment les traitements cidessous: - commande automatique de gain (AGC) (annexe J, lignes 236 à 258): il s'agit d'une commande automatique de gain destinée à prendre en compte de facon égalitaire les petites variations d'amplitude du signal et les grandes variations, ceci afin de rendre certains algorithmes indépendants du niveau d'entrée du signal sonore; ce traitement délivre par exemple un nombre réel compris entre 1 et 10, dont la valeur est inversement proportionnelle au niveau moyen du signal, établi sur une constante de temps assez longue et typiquement de 2 secondes; on notera que ce traitement s'effectue sur le signal avant décomposition en P bandes de fréquences, c'est-à-dire sur l'ensemble du spectre couvert;5 - calcul de valeurs auadratiaues movennes (RMS) (annexe J,lignes 265-306): ce traitement a pour objet de délivrer les valeurs quatratiques moyennes du signal, notées gRMS[1] à gRMS[10], dans chacune des dix bandes de fréquence, et intervient donc en aval du filtrage10 numérique; on rappellera ici qu'une valeur quadratique moyenne d'un ensemble d'échantillons est la racine carrée de la moyenne de la somme des carrés des valeurs des échantillons individuels. - calcul de valeurs de crêtes (Peak) (annexe J, lignes 265-299): ce traitement permet de produire dix valeurs numériques gPeak[l1 à gPeakrlOl qui correspondent à la valeur de l'échantillon le plus grand dans chaque bande de fréquences après décomposition spectrale, pour l'échantillon couramment stocké dans le tampon20 d'acquisition. Ces dix valeurs peuvent elles-mêmes donner lieu, grâce à une pondération temporelle plus courte que précédemment (constante de temps de l'ordre de 0,1 seconde), à d'autres types de valeurs, indiquées plus bas; - calcul de diverses autres variables: Les lignes 308 à 338 de l'annexe J explicitent le calcul de certaines variables énumérées plus haut, et notamment: a) variables liées aux valeurs RMS: * aLevelBar: valeur efficace (RMS) pondérée en temps; * GdBLevelBar (voir annexe J, lignes 324 à 326) : variation logarithmique de la variable Leve]Ir; À gdB AGCLev (voir annexe J, ligne 328): variation logarithmique de LevelBar après pondération par le traitement AGC décrit plus haut.35 (La pondération en temps précitée a pour objet d'éviter que des variations trop rapides du signal (présence de nombreux transitoires) ne parasitent le déroulement de certains algorithmes de traitement d'image sur le plan visuel. Sa constante de temps est de préférence voisine de 0,3 seconde.) Les variables ci-dessus sont bien représentatives de la puissance moyenne du signal sonore dans chacune des bandes de fréquence. b) variables liées aux valeurs Peak: À gPeakBar (voir annexe J, lignes 308 à 310): valeur efficace pondérée en temps; À gdBPeakBar (voir annexe J, lignes 312 à 316): variation logarithmique de la variable LevelBar; * gdB AGC Peak (voir annexe J, lignes 318 à 320) : variation logarithmique de PeakBar après pondération par le traitement AGC décrit plus haut. L'ensemble des opérations ci-dessus est effectué de préférence pour chaque ensemble d'échantillons stockés dans la mémoire tampon; dans le cas o celle-ci accueille 1024 échantillons et o la fréquence d'échantillonnage est choisie égale à 44,1 kHz, ces traitements sont effectués en une durée égale ou inférieure à 23,22 millisecondes. Le module de traitement sonore peut également être concu pour calculer périodiquement une variable notée aMaxActiv, constituant un indice compris encre 1 et 10 et représentatif de la bande de fréquences dans laquelle l'activité sonore est la plus importante. Cette "activité sonore" est préférentiellement déterminée en évaluant la différence entre l'une des valeurs obtenues par la fonction RMS et la valeur correspondante obtenue par la fonction Peak (voir notamment annexe J, ligne 334). Cet indice peut être calculé par exemple toutes les 4 secondes, et utilisé comme l'un des paramètres appliqués par l'unité S à l'un ou l'autre des moteurs de transformation T1 et T2. Bien entendu, outre les paramètres ci-dessus qui sont systématiquement élaborés par le module de traitement sonore, d'autres paramètres peuvent être élaborés à la demande, et notamment lorsque certains algorithmes particuliers de traitement d'images sont mis en oeuvre. Par exemple, on peut prévoir que les valeurs de couleurs d'un sousensemble de pixels de l'image dépendent directement des valeurs de certains paramètres sonores, pondérées et ajustées de façon appropriée, de telle sorte que la représentation visuelle de la structure sonore ne soit pas excessivement explicite. On observera ici que ces autres paramètres sont de préférence mis en jeu non pas au niveau du moteur de transformation T2, mais au niveau du moteur de transformation Tl. En d'autres termes, ils influent non pas sur le déroulement de l'algorithme en cours, mais sur le contenu de l'image I3 obtenue, pour former une image modifiée Il en amont du cycle de traitement suivant par T2. Une autre fonction pouvant être mise en oeuvre à l'aide du module de traitement sonore est une fonction de Lissajou, utilisable avec un signal musical stéréophonique (voir annexe J, lignes 343 à 362). Plus précisément, cette fonction a recours à un tableau de valeurs de taille égale par exemple à une fraction de la taille de l'image (MxN). Chaque emplacement de ce tableau est rempli avec une valeur comprise entre -1 et +1, chaque valeur correspondant à une représentation polaire du signal stéréophonique, centrée sur le centre géométrique du tableau. L'axe vertical du système de coordonnées partant de ce centre géométrique représente la partie commune aux canaux gauche et droit, et l'axe horizontal représente la différence entre les signaux de ces canaux. Pour obtenir un effet harmonieusement réparti dans l'espace bidimensionnel du tableau et de l'image, l'échelle de l'axe vertical est comprimée par rapport à celle de l'axe horizontal, car les différences entre les signaux des deux canaux sont en général plus importantes que leur partie commune. De préférence, les valeurs de ce tableau une fois rempli sont utilisées pour injecter, au niveau du moteur de traitement Tl, un nuage de points dans l'image en cours de traitement. Une autre fonction encore du module de traitement sonore peut être une fonction d'oscilloscope (voir annexe J, lignes 366-389), selon laquelle un tableau, semblable à10 celui décrit ci-dessus, est rempli avec des valeurs numériques comprises entre -1 et +1 et qui correspondent à une représentation temporelle du signal analogique tel que numérisé et transféré dans le tampon d'acquisition. Concrètement, cette fonction peut être incorporée à la fonction de lecture du tampon d'acquisition, qui est modifiée de telle sorte que chaque valeur utilisée pour remplir le tableau est constituée par la valeur d'échantillon la plus élevé dans un groupe de x échantillons, avec X égal au nombre d'échantillon stockés dans le tampon d'acquisition divisé par le nombre d'emplacements du tableau à remplir. On va maintenant décrire en détail différentes possibilités pour effectuer le filtrage numérique destiné à subdiviser le signal sonore numérisé en P bandes de fréquences. Pour des raisons liées essentiellement aux temps de calcul sur des plateformes informatiques d'un coût abordable, on prévoit d'effectuer une décomposition multicadences, de préférence à l'aide de filtres F.I. R.30 d'ordre 13. La réponse impulsionnelle d'un tel filtre est représentée sur la figure 6 des dessins. Un tel filtre est utilisé dans une structure en treillis permettant d'obtenir, au cours d'une même étape de filtrage, deux bandes de fréquences complémentaires adjacentes. Cette35 structure en treillis est illustrée schématiquement sur la figure 7. On fait travailler ce filtre à la moitié de la fréquence d'échantillonnage du module d'acquisition sonore, de façon à éviter de calculer des points superflus.5 Les caractéristiques en fréquence d'un tel filtre sont illustrées sur la figure 8, tandis que ses caractéristiques en décibels sont illustrés sur la figure 9. De façon avantageuse, on utilise la structure en treillis décrite cidessus de façon itérative: chaque étape de filtrage subdivisant la bande concernée en deux sous-bandes, l'étape de filtrage suivante est appliquée à la sous-bande de fréquences les plus basses pour à nouveau la séparer en deux, etc... Cette itération est illustrée15 sur la figure 10 des dessins. elle permet de délivrer les P bandes de fréquences notées Band[l] à Band[P]. Ces opérations de filtrage sont indiquées en annexe J, lignes 276 à 291. bien entendu, la présente invention n'est nullement limitée aux formes de réalisation décrites et représentées, mais l'homme du métier saura y apporter toute variante ou modification conforme à son esprit. fl-A 2765370 165.v oid moinoing(TheBoard 'Gen_6oard, vnt whicho,,e, Tlie.6ord I-ortg. int frome,. 166. Int copskeydown, Int motif. int opt&on) 167 { 168 int x,y; 169 int posx, posy; ?70 171 int tnso,ec,no,ne,so,se.tenp, 172., doublet ongle; 174 ThicBoord Bor-ig, Bdcst. 1 75: 176: B orLg - Gcn BodCO. Cchone]; 177. Bdest - Cen_.Boord[ -h1ch.oe1; 178 L I79 i f (capskeydow::) ( ItO if (SoundLev 2071i f[-ra[raid(Ger-Board[Warp..fi h[ic..hLCh-ooó]. z0O. Wor-p.warp_Start.x,Warp.warp.Strta-y. 209'; Worp..arpstopox, Worp.worpstopy). 210. break; Z12. 3 i( 2 L4 2 15 MS îelseif dSoutdLev90) next.cfnp(l); 216! 1 216: 21. f (matif 2) 1 219 odangle= (double_t) (frnme % 360)' (MP P) 150.0)); 221i 221.. pos.x Ccos(S,0'angle) ' (XSIZE., Z); 222 posy (sin(S.0ongle)) ' (SZE>>; 223) 225. for (y. 0; y 235 se = (B.ortg)t((x *).), ((y 1) - 1) ( xSIZE. 1iG)j. 23G 7237'. r. Col). (rn&I). ('-.&') À Cn .1).,"&l). ',,,.13. r'.,- :1) À-.|..h.l) À- 3E1 tamp, c-n.s.c.o, 2.40:tmp . ,, 241:. 252 r.- îtch(ovtto::)( Z43 ca.. O 244. ': ((t.- 5) trp. t Z45: els- te" -. So.ndLev4. 246 rco, Z47:. n - 2- R-z 248t case 1: 249 iF (!C(nol) && (c&61) && (se&1))) 250 temp -. SoundLev/4;//- speed Z51. break; 2;53 case Z 254 te-p 5; 255 temap (c.o-e. SouindLev); 256 temp / 6; ZS7 tf (temp 261 if Ct 26Z etise temp.- SorndLev/2; 263 break; 2G4. 2 6G Z67. 26. s.itcli (mCotf) Z69- case 1 270-* temp.- ((Iorg)C(x+S) * (y-l) (XSIZE 16)])>6; 271' break; 272. 2733 case 2: 274ó temp *- ((1.orig)C(Moduto((x. posx),XSIZE)) - 22765 (Modulo((y * posy),YSIZE) * 1) (XSIZE. LG)])>.:4; 276- break; _77 i 279::' 2o0 temp &- OCFF; 2Sta1 (Bdest)[Cx. 8). (y * 1) (XSIZE * 16)] - (temv), zsz i! 2S j 283') 62'void SoundRideCTheSoaord iGenBoard, jnt -hichone, The-Board iorig, int frome, 63 int Copskey. doan) 64Z! itnt x.Y: / Couteur de balayage 66 Short MyPulse; // Voariable de niveau general 67, sort Erreur, 0. // Varabtle de testliaocottof Oscillo 69 doIible-t peokvolue;/ Voraoble de stockagec de la varlrerc, 'ete /69 in posx, posxo y a/ aribe de Positon des piCs dc la rosaCce musiCalec doubtet Tab[32]. Il Réserve tableau Oscillo 7 ' 73 int s.e.c; // variahles tempornires de stockngrc 74 // duL pixel cible et dI ses vutst,,r : 76! tnt temp; / vrariables temponroirceS dc somme intcrmédinire 7i X// et de resultat 7 8 79: g0 ' / les pointetlers Borig et 8_dest s'echangent d'un eppel de la foction sur t'autre 81S i / Double-Buffering 82. 83" ThecBoard B.orig. Bdest; - B1_orig. GenBoard[O. whiclone]; 86! B8_dest - Cef,_Boord[l - which-one]. 9:. // Mtni Noyou Sonore 92 ' 93 if C(SoundLev 94/ de 45'... 96- switch(R X 6) ( / / Choix aléatoire 97 case e: 98 firllvrap(GenBoordCWarp.whiclh.hichone]. // Wap Rideau vertical 99z: Worp.arp.start.x, Warp.warp.starty, Warp.warp._stopx, Warpaworp.stopy); 101 break; 103 case 1: 104 FillhrampCGenBoardrWarp. mhich.hi ch.one], // Warp Rideau howqsontal Warp.warpstart.x, Warp.morpstart.y. 106. Warp.-arpstopx, Warp..arpstopy); 107. break; o 109 case 2: fl[_grid(GqnBoard[Warp.whch whiclune]. // Werp Oamier 111 * Waep.wnrpstartx, Worp.$arrtstnrt.y. 112 'worp..arpstop.x. Warp.woarpstopy). 113. break; IS1 e.case 3: 11C' f ttl_dist(Ce_..Board[Warp.whilchwhicloneJ.//;.arp Croix 117 'Warpppstaotx, Warp arp_.statty, 118 Warp.warp _stOp.xWorp.warpstop.y). 119. break; s. IZI- case 4: 12'2F f'll.rand(Ger. Boaordrwarp.hich_-hchone], // Warp Flou 1Z3., Worp.warpstort_.x, Warp.worp.start_.y. 124 Oiarp.wOr'pstopx.Warp..arpstopy). IZS break; 126:' tZ17 case 5: t29 x - (R - CXSIZE">Z)) & (-3); / / ralle de la vignette alci. 129:: :: Filt.RectImg(I..uriU, Ce..BordfWarp..hlîch.h h_ o lrel. 131 (RSCXSTZE-x)); CR%(YSTZE.-x)). 117:nrp -nrpstnrt_ x.(R%(Wnrr molp ctorlrl q.-rf)anr..) 13.i: -erp wn. *':"c-.v(Rg%(earp._nrr 'trr *v *rr'r 7.,';, '' v. x)). 31 r,, " ) 1h r *::;. "", r rIl;: !36*i, I35 139, '' 'I lrand"Cen.onr-'(Z-*op.rlrCh Ir.h ch_n..n]. /.arp w.-p_star't_, ia4rp.warp_start.y, 141 arp w r_ op _;rp, arp_ stopy), 42 4 / 143. 1-4 : 146. // Si l'attaque du son exeedent Lin angle 147, // de 90'.. 148: 149: else if (SoundLev > 90)) next_.cap(l); 151. 152 S - 153 // Reclamation aupres de la librairie FilterLib 154 // d'un tobleau de 32 valetrs representatîves de I oscillOScope liG rf (Oscîllosco;eCTab, 32)) [ 57! LogOut('[ER]: Oscilloscope Error-\r. -ab'); 151'. ex8t(1); 159'} 160. 1GZ:: // Reclamotior du ntveaou gzncral sonorc (-> Myf'utse) 163 ' 164 n SnlndTest(&MyPls se); 167 // Dessin dc la rosace musicnle 168! // sur 10 bondes spectrales (réparties sur uqn angle de 90') for (x.O.x 192 / elle contient la somme des valeurs des pixels choisis. 193 ' temp.-.yPulse>>3; // - On y aditioinc le nivcau sonore (multiplie par 8). 194 temp >>- 2; // - On divise temp par 4 t95*- t,3)s! 196-. 197 // Oit additionne a temp la voleur du tableau Oscillascou. dont l',,dice 19S // est proportionnel d la distance du pixel cible ae centre ZOO2 teamp, 15.0'(trab[(nt)(Csqrt(yy. xx)-Z40)3Z/240)]). 201: 202:! 203!.// St temp est nul (absence de source sunUoe) et I fu1! touu let 100 tests environ 204 / / le pixel ctble est iffecte d'i.ne valeur aleatoaire (ffet dc n.elge) 205: G iF ((terap -- O) &&!(R1007) temv. 64 (R N 5). 207: ZIO;: temp &. xfF; // On rojuste temp sur un octet Z 12 213 / Et on recOpie so valeur symetriquement sur les quatre quadrants 214. 215 (8_dest)[(x - a) (y * 1) ' (XSIZE 16)1. te"",. 216:- (Bdest)[(XS(ZE * S) - (C * I) * (y. t) * (XSTZF. fRl] - tep: 217 (Bdest)[(XSlZE - 8) - (x 1) * (YSIZE I - (y 1)) ' (XSlZE 16)J - temp. 218!: (Bdest)[(x *) (YsIZE t - (y. 1)) * (xsl/ À l()J - t:-, ZO I co y cO v o r- 22 Cl, c ci A,,.c H (PUno9SjUI1qD1,! '>lu'qDlo,,u})'jUrf-fO1tu p}o^À'6 (dowD. lia1 'q. - I)d-. 1j ploA:Z !CUSd. JUL4 'uswo J0L4) 'E wJ-ai. pJOog;qLJ)sa6OW-:U. g ( t'(sd..ID(j 'b*. S0P-4) PS.p pJO0gIjj aWu-J6o5t-;q:. JOt:))dd .,4):u:.s wve ui saa.6Joq4 xow sa6oep ajqwou // ' 3:vol-xvw- WnN au'jap# E :StlS)Sd^O0. SuOp xoi SJa!L2j a aaJqwou // 0S' S3DVWNYVxn-N auljBp:.z a.:4)I I,n,p wCou Iep xow Jnan6uol // 001 H/NDNI-XVI-Hlvd aIljap#:q OL-9T 3li:// 2 l// Tnclude$ 3 ?/ / Fichiers Algos Crophiques 6- 7:include defs.h- 8 ':sinclude "ftil. h 9 i nclude PtxRouts. h :.^include îCroov.h- 11ct nclude -Image.h- 12,,include -coloremaph- 13:i Mnclude "SoundingAlgos.h- 14 S:tnclude -Utls.h' S1 include "Cenet t k. h 16 Cinclude 'Sperms.h" 17::include 'sofflerie.h' 15. #include -strobo.h- '. 21il/ Fichiers Algos Encrypto 23 '#inClude -Protect.h- 26.1/ Fichiers Algos Sons 2S!:iinclude 'FilterLib.h' 29 #include CrooverSndlib.h' , 32 // 33 l// Variobles globoales 34.,// 35. 36 The.Board TheScreen[4]; // Reservation des pointeurs de buffers graphiques J 37 The Boord TheImageCNUMMAXLOAOED]: // Reservotion des pointeurs de CroovPics 38, 39:chor checkIlll]- - 3141592653-; ,chor check2Cll]- 5S97932384; 41-char check3[lJ]- - 626433s327-; 42 chor check4 [ll]- 9962321927'; 44.char Psn(100]; // Reservation du Product Serial Numbcr chor MsnCleO] -; // Reservation du Machine Serial Ntumber 46i 47 tjnt current_iaoge. 0; // Index de la CroovPic couronte 4*5,nt image.aoxnum. 1; / / No-bre de GroovPtcs charges en RA4 49 int hich_one 0; / Pointeur de double- buffering o. 51,tnt SoundLev - O; 52. int 'TabLink; 53_ S4.exter,, int cur'entcmap[25G ' 3]; // Reservation de lao ConvC(no courant: S55 56 -// -.--.-................................................ ........DTD: $? //.... -_.. _......... _._._.___...................................... .....DTD: ! 59. G6.-:od init(void) 6 1 f 6Z:' Ptr base address; 63 SysEnvRec Thismac; 64 CGDHandle themonitor; GS5: Rect 'rr; 66:? 67.: tnt i.j; 6S. 69 5printfCcheckl. MERDúEERDE); :: sprintf(checkZ. 'ERDEME4RDE-); 71 SprintF(check3. -MERDEMERDE-); 7. sprintf(check4, -MERDúEMRODE"); 71" 4 sraOnd(ttieCULULL)) //" el.t,alsoto du c 1 " "'". 77 LogOut("[v5C] LraunCh:n.:th, amcZ:ng CroovcrC \r",'-). 7& eD:n rtGraff(&qd thePort), L, lnG tfonts(). F'lushúven:s(ev*-ryEvenz ' osasa5' - dmtkoask, O), 53::nxttmndows(-). 54'. Inett#enus() TEInt t(), 56f InitDialogstOL); S7., InitCursor(); 881. cxApplZoneQ); 89 hideCursorj); Cr More4astersC); 91;i More#4aster"S); E- 2 9Z H 4re'asters(); 93- Uoreosters() 94 3 9) 9' 96- // AlloCation meémOire des quotre buffers graphiqucs 97' 9 for (i. C; I * * 99 TheSCreen[I. (hcSBoard)mallocC(XSI2Eú16)'(YSIZto2)). lo0 If CT(he_ScreenE[]. NULL) | 102 LogOutC'(t[ER]) AllocOcton des ecrOns: meoirc nsuffsanc.\r- '-); 103: exit(l) 104 J ? 106. fo (j - 0; j 118.:} * 119; ' I 121- 123:. // Purge mémoire de lo premiére plage grophique CroovPic 1ZSfor (j - 0; j 134: exit(1); // QuicLOraw obligatoire- _. 136' 137:Z the_.monitor = CetainDov[ce(); 139- SetDepth(the. monitor. 8. O. 0); 142 // Calcul en ventilation de l'adresse eCron 43 // pour Centrer l'ecran Croover en fonction de la résolu:ion 1 4: _ 145. base.odd,'ess. (*'(''themo'itOr) gdPMalQ),boseAdd; 146 fb.stride - (('(''themonttor).gdPMop).ro.Bytes & Ox3FfF). 147- rr - &C''C'the-_monitor).gdPMap).bounds: g149 fb.p * ((uchor') bosc.aoddress) ((rr->bottom - rr.>top - YSJZE) ' b s1rtdc)/2Z ISO: fb.p.(rr->right - rr->lcft - XSIZE) / 2; ISl: fb. -idth = XSIZE; 152 fb.feight - YSIZE; // Fenétre de fond pour roFfroachissement Ftnder 156: 157z Ne-Windo.(O, rr. '\p-. 1, 0, (windo.Ptr) -10. O O); 158t 159' 160. X/ Purge de l'ecron 16.: for (i - rr->top rr-Icft. bottom) rd. IG13 ((Cuchor') baseoaddres-).i) *,5, 3, 1J 77// Affîchoagdu cel.Itr 6' :6' to- (t - 0, i 174 '(fbp - 2 - (1 - 2) ' fs St"{de) À . :'. (fb.p * (XSîZú * 1) * (J - 2) ' fOStrîde) - O; 176" J i re!! 17ti 179. 1U// Calcul du machine Serial Numier 18lt Mochine.. Seri al.Number(Msn); 182 2 194 ChaP//r Cecul due Pnroduct SPinl); umbe r 1925 ProductA Sri.umb.r nt)LivoCheck(nsn). b)Psn) ! 9: I // Chorgementon et Affchsge de ' ge de pnsenttioI i 9t 19 7 ' nit.crapîQ 19!' ChoKDePPHC"GRLOAO. IG' The. Image[O], fsn, Psn); 19Z.: A ?fi cheE c rc..n The_Image[O]. fb); 02197 M, Pncmps()); Z04 199': 205: // Antiocation du tableaunt de lienoges 202' Tmbg-inmx (ntm Canitc( imges(The.Ioe numsn, Psn);t 209 iF (TnbLink -= NULL) ( 210 LogOutC'( ERR]: Allocation du TobLink; menoire irisuffisante_\r. -ab'); 2ii exit(1); 2 11 212.,t 214215.: // Chargement du tableou de lier 216:' 217 iF (1) { 21S' 219 FILE 'dir; 2ZO' 221 int i, compteur, O; 222: 223 {nt temp - 0; 2Z4 2265 For (i - 0; i . Fclaose(dir); 237: 233 J 239' 241; 242- 243 / illittailisation du mudule de sutvt 2" 245' nit:_testnlveousonore(); t45. 24S // Initiolisation de la SoundLib 249:Vv' 253 > 5.. 255 If (SoundStort()) ( 7S6 LogOut('[E;RU Sou,, dS:,t[ rr'o,'r"'b") ZS"'} sg -'' //o A?'r:cfii_. d-:' l:'--';:?' "-,'0v,O'- 2GO 2G?I/ ---.................................................. 2G& il/ #eoîn() 269 [://---. __ __ __ __......................................... .....DTD: -70' - -------_.......... 271"vold mcin() t 272. int x. key: 273L int frome; O; r:' - 4 291 tnt current_print - 0. 292 int current_algo - 1; 293; 294' irt waitCounter - 0; 295 int countKeyPressed - 0: 296 int volueKeyPresscd - 0; 297Z Z98 int ArePicsCmopsLinked - 0; 299" int oldcurrentimcge - 0; 300. 301 long tickKount - 0; 302Z 303" 304: // Poramètres de tailttles et positions des écrons 306 Worp.worpstartx = 0; 307' Worp.warp._stop._x - XSIZE; : Worp.,worpstorty 0 e; 309_ Warp.-orpstopo y YSIZE; 311': 31Z_: // Iritiatlisations 313-. 314-'- init(); 315-. InitSperms(); 316_ 317_ f(illrand(TheScreenC-hich.onej. 318- Warp.warp_stortx. Worp..arpstart_y. 319 Worp..orp_stop_x. W'orp.orpstopy); 321 fillrand(TheScreen[Z.whichone]. 322zz Warp.worp_stort._x, WCrp..orp_start_y, 3Z3 Worp.- orpstop_-. woarp.arp.stop.y); 324 ' 326 // 3Z7: // Govcle Principole 3257 // 3Z9: 330' 3311 vhtle (1) { 332. SoundtestC&LyPulse); // ventilation du niveou so-,ore 333- 334: 335 // Gestion des liens CroovC.ops CroovPies 337 if CC ArePicsC.op$Ltnked.. 1) L& C old.current-,acoc ' currenttmgc)) 1 33R if ( Tob.Link[currentimcgc] -1) next-maopC(R). 339 cisc given.cpa( TobLink[currenti.age]); 340) 341:' 342 old.cljrrentimaoge - current.image:; 344. switchCa[go. encourt) [ 3:5 case algo.mondolo: 346' ffandoaln#The Screen,_hi ch.nne, Thc t-a rcirerrnt.finoe\.ann mox nu], 347 fro.e, copsk.y_do-n, curecnt_prrt%3. Ce.'. o:qC!J.l). 14S5 breok, 346 rc_.9 350 ccsc lc g.oSoundrt:dc: 351. SoundRtc'(Thc5 crccro.wht achOnc.Ihcle:cCrct..ac 3SZ. f'ra.', copskey.do-,r). 353 b-eck 355 case cagouLsso;cou $6. LtssoCh. L SC ree nn wh-chone, Thcrto.ag[ci--cnttn,% I. _moZnum]. 357i: frrae, copskey.do-n); S:: break, 359: 360 case algoa.oinoing: 361: moinotngCTheScreen. -htchone, Tiecmage[current_-toge S iage..oxnuJ 362 frome, copskeydo-n, current_prtnt%3, ci. rrentotago%4); 363'' break; 366ti 365 case cigos7erms: 366 Sperms(heScreen TheIm.oge, -htch.or., TheImage:'curenti.age N imfgemOxf 367 frrame, copskeydo-wn. current.print%3, current.algoaZ); 365x break; 369: 370. Case a lg.osoffleri e: 3712 souffLerie(TheScreen, The.Irage..htilchone. 372 frcame, capskey.Ido-n, current-.prints2, curesntc1.go%3); 373 break; 3 74 375: ccsc algostrobo: 376 stroboCrhe-Sceen. ThcImage..hichon,:. 377 frc,an, capskcy.do-n. currvnt.prtnt:2. current- cl.o")); 377:i 3 78 break; 3EO. case alro mind: 371.mindmode(The.SCreen. hich.one, 1he.laga[current.i- age Ni.agc ax.vumr], 38Z Fraeo.. ccpskey._don, curentprintN3, current_a[goN4); 33 3 break; 384 a 36. 387l 33s 3 9t 390" / speed variatia, 392 ii.l 39Z2, if (speedbeat=speed 0) 393. speed speedbase 394 (speed. bentsize) 395 lsin(2.0 ' MPI ' fraome / speed-beat-speed); 39G elC se 397 2 speed - speed.base: 399 el Warp..hich-.hichone. hichane - 1-.hich_one: 400", f'rome+.; 401- 4 Ot 402 // Fade vers ta nouvelle palette 403; 404 fading().: 405: 4 e6 ir 4a6 407 // Routine de hardeopy vers l'ccran (par bloc dc 24 lig.es) 409e AfficheEcran(TheScreen(hich-one]. fb): 4W10 412i 413, f SoundLcv test.ntveausonore((int)MyPu[Se); 4 ii1 getKey 416 kcy bomgetkeyC6caaskey.do-n, &cmdkey.do-.n 6&shFtky.do-n, Lnptkey.du- n. &ctrlkey.do-*) 417- 418 e (C#ritcPPflaO)) C 419 WritePP. fIa. 0; 420 -rîta.fb.ppm(&fb.currentc.ap); 421.. 423, , if (!ccpskcy.do*n) SaundLev. specd; 424 I 425 iF (key! - 1) 427- seitch (keyj t c28 429 // Touche 9-0 PN 430 case OxSc: 431 i f (cadkeydou-fs) 432 CctCouantedKey(9, &Current.prent. &c-re.timage, -.a4.. nu.); 433 break; 435 case OxSb: 43G *f (cmdkey.do-n) 417! Cctenunt nkqyCfl RC(,rretqte nt.?,'H'"q Imq" t-,rain{ '.n11.") À-"nl 43& b'ea k, 440. c '.:O'5) 441 %, (cmdy cyic-n) 4;2,1 'c:Coun:,.:r. Jocdy'7, 'Currrn:_pr:n:,.CUqfC'_. . ó:--.C.a.laf'u'). 443 ": be, 444.: 445, Cm.e OA59: 446:, f (Cmdkey .u-r) 447: CetCountecr.cy'6. &currcntprirnt, eU--a'C:. a*_nu.". 448 break; 449: 450 case 0,57: 451. i f (cadkeydo-n) 452 CetCountedKey(5, &current_print, &curre t.image.î.age_.asnu.); 453, break; 454:: 455:j 3case exS6: lIt 456. iF (cmdkeydo'n) 457i GetCotuntedKey(4, &current. print, &currentimage. ifag a_*nuf); 458 break; 459! 460ç) case Ox55: 461 if (c.dkey_do-n) 462i CetCountedKey(3. &current-print, &current. image, ioagnmaxnun); 463 3 464 else { 465i waitCounter - Z; // Vitesse Minime 466 - 467 break; 46S 469j Case es54: ó70:] tif (cmdkeydown) 471. CetCountcdKey(2. &cilrrentprint, &currentmoge, îmage.marnum); 472: 473 else 474' waitCounter - 1; // Vitesse Moindre 475) 476: break; 477: 478 case 0x53: 479i if (c.dkeydo-n) 4&!0 CGetCountedKey(1, &currentprint, &curreut.-image. imageox_nuo); 481 E 482 else 483E waitCounter - e0; / Vitesse MOxi.um 4845j I 4855 break; 486g 487E case 0Y.52: 48S-'L: if (cmdkeydo-n) 4S9;: GetCountedKey(0. &currentprint, &currenttmage, iage _maxnum); 490E 491. // Remplissage ftou (PN e) 492 clse 493 i fitL-rondCThe. ScreenCwhichone]. 494 Worp.*arpstartx. Warp..arpstar t.y, 495: Warp.arpstopx, Warp.woarp._stopy); 496E, 497_ fillrond(The. Screen(2 which_one). 495:. Warp.warpstartx, Warp.warpstarty, 499j Warp.warpstopx, Warp.norp_Stopy); 500 I 501:- break: 503i 504. // findMode (F12) 505! case 0x6F: 5066 if ( ctrtkeydown M& aptkeydo.n && cmdkeydo-n & shfttey.do-n) 507 al go_1encaurt. atgomind; 08a Warp., aorp_startx. O; 509j Waorp.arpstOp_x. XSIZE; 510ii Worp.-arpstarty. 0; 511S: Warp. _arpstop_y - YSIZE; s:zE;) 51s3 51 break; 15 516! // Pause 517 7 case 0Z4: 518. if (atgo_anCourt -algostrobo) break; 19 520i - aitCounter - 3; / Pause I Vitesse NulLte 521 i 52Z break; SZ3 i 524ii / CmapsPicsLink 525i case ex32: 52Z6. ArcPscsCmopsL:nkcd. i - ArePicsCmapsLtnked. 527:. break; S2S SZ9 7/ Sauve Code (Fi!) 530, case 0x67: 53l Write _PPfa3 E ', 53-. break; 534 i 535:/ I/ 536,, / / xt (ESC) 53'- case ex35: 539: 540i LogOutC('[(MSC]: fHopelessty quiting the a:tounding CrooverC.-\r,. 'ob); 541 Z 54'2:SoundCleonupO); 543 FlushEvents(everyEvent - osM4ask - diskmask. 0); 544: jInitCursor(); S45;, exit(e); 546 break; 54.7 54 ' 549. /1 Recule palette (Home) 550 ' t i case 0x73: g52 nextcmap(- 1): 553 3 break; SSS, 6 // Avance palette (End) 556,' '7: case Ox77: i553 next cmop(1); break: 561 // 7ecue image (Page 7p) 56Z 563. case Ox74: 564 ' currentimage - Modulo(currentioge - I, tsagemanum) 5651 break; 566::: 567 / Avancrie image (Page dorn) 561 - 569,, case Cx79: 570- currentimage. Modulo(currentimaoge -, i geo num) 57 i break; 573 // Duptication Horizontale (Curseur droit) 575" case Ox?C: 576,6" dedoublement(The.Screenlwhichone],0); 577. break; 57t 5798 /D uplication Verticale (Curseur bas) se,' i case ex70: 582, didoubleraent(TheScreen[. hichone], l.); t3.' break; 5955 I Rideau Horizontal (Curseur gauche) $75 case ex7B: 565 (tfitlheramp(TrheScreenfwhich.one], 589: Woarp.. arpstartx.Worp.warpstarty, 5908 Warp.-arp.stopx. Warp..arp.stopy); 591.break; 5936 // Rideau Verstica l (Curseur ho.t) 595. case Os7E: 596:- fttl-vraip(TheScreent[hichone]. 597* Worpaorpstartx., Warp.woarp_s tarty, 69 7 warp.-arp.stop.x, Warpwarp_stopy); 599i break; O' 601; // ReCmplissage damier (HELP) 603':'. 60412 case Ox72: S-, FiIt.grîd(Thc_ScreenL..hi{ch.one). 606 Wearp.orp.start._x, Warp..arpstart.y. 6e; Warp.waorpstopx, worp.oarp_stop_y). 601, break; 6e9. 6t10- / Remplissage dist (SUPR) 6111E 61Z: case 0x75: 613.J i fl t_d i.st(Thle. Soteen [.h J, h_one]. 614i Worp.worp_stort_x,Worp..orpstort_y, 615, Worp.-arp_stop_x. worp -orpstop.y), 616 6 break: C17,: 6t19:: / *aRP vigrette (CuD. ESPACE) GZ t ' case 0( 3!': 6'2 -F I.( ^yoO- t 51,: À À, '. ( x.qI:,)) c, (-3), G256'::i;;C. Rcct (T$hemIag[RN;imaoge_arax _n4.m]:', C'_CCS-c! C. aoc]. 6Z6: (R%(XSI2E-x)),(RX(TS1ZE-x)). G27. ar -arp_start._x.(RCX(warp nar-ps:op_-Aarp., arp.starCt-,)) G28. arp w-rpstarty.(R%(Warp.arp _top.y-arp -orpstoety.x)) 629:, x). ú31 632 / Alga Strobo (ESPACE) 633" 634. else 635:r lgo-en-court algostrobo: 636 Warp.warp.stortx. e; 637? Warp.-arp.stopx - XSZ2E; - 63S;,9 *crp -crpStcrty - 0; 640 9 Wcrp-, rp-stopy- YSI2E; 642 i b;eak; 643 // AMgo Tunnel (F6) 644 (6) 646' case 0x61: 6 46i 6 4 7- 0algoen court.igoSoundRide; 647. Wap rp,_rstort-x = XSIZE/2; 649 Worp..orps.op- - XS12E; 6491! WarP.arpStarty. YSIZE/Z; 6 50', wcrp._crpstort- - S2ÉZ S0!' Worp worp stopy. YSIZE; 651 break 652 i 653% / Algo Lissajouc (FS) 658 -s.... 659i Worp._orpstorty.; 660 Worp'worpstop-y. YSIZE; 66[i! break; 663 "/ Alga SouFflerie (FI) 664 '. 665 case Cx7A: 666 oLgoencourt. atgosouff[erie; 667 Warp.warpStortx 0; 6689 Warp.varp.stopx - XSIZE; 669: Warp.woarpstorty. 0; 6701 Worp.-arpstopy. YSIZE; 672;i current_îaIgoa.; 6 73 667743.e" if (ctr[keydo.n) current_îaga - 1; 6Z75.-' c'se if (optkeydo.n) currentalgo_ 0 6756 else if (cmdkey_down) Current_aLgo - 2; 676:, 6778 break; 681- Il Souffleri inte,'-modcs (TA8) 682r 6*a32 case Ox30: 64 3 Current-print.. 685 break; 68as Case 00Oc: GSS' o naLgavCourt- otgosouffleric; 6GS- Woarp. orp_stort_X, 0; 690 Worp..orpsto_x XSZE: 691 Warp.-orpstrty. 0; 692G Warp _arp.stoy = YSZE; 693.curent-oIo 90 6934 Current_print.1; 695 4 break; 696" G697 Case exed: 69S Lgoaencourt - [gosouffeie 699 Wcarp.-arp_start; 7699 Warp.warD-Stopx. XSrZE O. Warp.worpstorty. 0; 702i Worp.*arp_stopy YSIZE; 703.' current_oaIgo. 1; 704 current_prtint - 0; 705 break; 706 "* 707 Case exOO: 7ii otgoencourt. algo sauffîerie; s Warp.warp-startx -; Wlorp.-arp-so- S2 709 in Warp.asOp_= XSIZ, 7 L-Ptnr_ 0. L.. ''arp.-arp_stov_y A Y'ZE current_nlo 0 713 Currenta[ro O. 714 n. Ctt'rret.PP n.. 1 7-1S breck. 71::f 17. CCse Oa.: lZogaenco,-t = a:go souff[erl,, ::arp.- arp-sar-- - 0; 719 Warp -arap5o 7 20 _worprp.- XS!ZE; 72Z I Worp. orpsta-t. y. 0. 72 Warp'.arp-stop-y YS1IZE; 7Z23 Currentalgo - o 724 I currentprtnt - 0; 724 _p it o 725.. break; 7271 case Ox06: 7Zf ala.goaen.court aIgosoufflerie: Warp.aorpstortx. 0; /33 7zg9 Werp,-orp_stop_x. XSIZE; 730! War,worp_stcarty * ; 731. Warp_-rpstapy - YSIZE; 73Z- currentelgo. Z; 7333 currentprint 1: 734 break; 736. case 0A07: 737 oagoerncourt. otgo_soufflerie; 738 Warp.Worpstortx - O; 739 Warp.worp_stop_x XSIZE; 740i wWarp.-arpstarty s 0; 741 Warp.-arp_stop_y - YS1ZE; 742i cu'rentclgo - 2; 743 current_p,'rnt O-; 744: i break; 7c 4. 746_ 747 / Algo Sperms (FZ) 749 case Ox76: 750 oaigo_.ern_court* aigo.sperms; 751" Warp. warpstart_x O; 752i Warp..orpstopx - XSIZE; 753 Warpwarp_starty - O; 754 Warp.. arpstopy - YSIZE; 755- currentalgo..; 756, break; 758? 759 // Iage off (F13) 761. case Ox69: 762 currentprint. 0; 763 3 break; 766 / Image on (F14) 768& case Ox6b: 769 currentprint - 1; 770? break; 77Z2 773 / / Image ayoving (F15) 774. 775 case Ox71: 776 currentprint = 2; 777_ break; 7O': I Algo aranic (F3) 782 case 0.78: 73 - aoigo-en-court. agao_.andala. 784. Warp.warp_stcarts - O; 75. Worp.-oarpstop_x. XSIZE/2; G, Worp.-arpstoat_y. 0; 7&7:. Warp..orpstopy - YSIZE/Z; 78&i currentaolgo-.; 790!. if (ctrtkey.do.n) currentrago - 1; 791- else if (optkeydo.-n) current_oaiga O; 792 iese if (cmdkey. do.n) current_.ago Z. 793:: 794. break; 796 case OxOe: 797 aligoan.court. algo_.Ondala; 79d. Worp.-arpstoart_x 0; 799: Worp. woarpstop_x.- XS.ZE/2; 800 Warp..orp_start_y O; SOI n'rp..arp.Sovy * YS1ZE/2. ú02: cu?'ent_ago. 2. B;):3 currentpt nt n 1. 504: brcok ú J5 &aS 806 ccse OZf: S07: oigoan_cousrt. algo_manduto; 0O8 Worp -orpstorcs. e d09 éarp..orpStopx. XIZE/2; 810; o'rp.-orps..at_y - 0; 8 1 I Warp warpstopy rÀ YSIZE/2, &l2 currentalgo. O d813 currentprtnt. O 14- break; 616, case 0x11: 817 atlgoencourt - oigomandata; 18.. Warp.orp_startx. e; Sl9- Warp..arp. stopx - XSIZE/2; E -40 dZO. Werp.wcrp.$tQrty * 0; 821 Warp _zrp.sttopy - YSIZE/2; S22: CUrrentGigo O; 523 currentprtnt - Z; t24 break; S25. z2 5 S26. case OxOZ: 827o;go-en-court. algo._.ondolo; SZ58- Warp.orpstart. x; 829-Warp..-rpstopx. XSIZE/2; 830i! Warp.wa-rp-strt-y O; 331. Worp -crpstopy. YSIZE/Z; 83Z!i currentla = 1; S33 current_print - 1; 834 ibreak; t3S.j S36- case Oxe3: S37 0 -algoencourt - atgo.mondalo; 68358 Warp.. oarp_stortx - 0; S39- Warp.-orpstop.- - XSrZE/2; 84.0 Worp.warp_storty O; 841 Wsrp.warp. stopy. YS:ZE/Z; 84Z2 currentalgo l; 843i current_prtnt. O 844 break; S45 846 case OxOS: &47a otgo_en_court - algoasndato; 848 Warp.-orpstort_x. 0; 849-. Warp. warpstop_x - XSIZE/2; 850. Warp..arp_starty. O; &S1u Worp.-ap_stop_y - YSIZE/Z; 852- Current_elgo 1i 853 currentprint 2; t54 break; sss " S56 case Ox08: 857: otgaencourt = algo_.ondata; &58- Warp.warp._start_x - O; 59- Warp.worpstop _x XSI2E/2; &60 Warp..arpstarty 0; 861_ Warp..rp.stop_y. YSIZE/2; 862. currentoalga 2; $63_ currentprint - i; 864. break; SG5 866- case OxO9: 67 ol goen.couet algo_.nndola; 86& Warp..oarp_start_- O; 869. Worp.- arp_stop_x - XSIZE/Z; 870 Warp..arpstort_y 0; S71- Warp..arpstopy. YSIZE/2; &7Z: Cuil,'e, ,talgo2; &73 Current_prit - O; 874 break &75' 876 cose OxOb: 377: olgo_en_court * agoamondaol: 878- Warp.,arpostart_x O; 579. Warp..,orpstop_x =XSIZE/Z; 880: Woarp.-orpstort_y 0; 881 Worp.-arpStopy. YSIZE/Z; t82 current_oaigo Z; t83, current_prtnt - 2; 3S54 break; a5s &&G!; SG. 587% / Pulse white (PN *) 388! 889i Case 0x4e: S902; pu[se_ócmp wht(,. $91 brea:; S93. 594. // Plsec b;ac (, - ) 395:: S96. coe- *J45: 9 7:" tl rrr:_ S99 900. 901 /I Plair Cmcp (P';-,,u-) 903., case O?47 904 plaoncopC), S: break; 907., g8 // Loop Cmep (PN =) 909cse Ox: 910!-: case OsSI: E41 911 tlOopo..ccp(); 9!2: break; 4: 915 // Loop Ca (PN /) 916.; 9;7:: case Ox4b: 9. ?s ioop..cmap2() 920 break; 920:i 92:. // Groy Cmcp CP; *) 923. 925: " case 0D43: 926. 92: ' 9g,' ycma;,(); 9267- break; 928:; 929 Y/ Invert Scfecn (PN) 931 Case Ox41: 9)Z';, lnver toc rd( Th-S creen[-h% ch _on]): 93 break; 934; 936' // Invert Image (PN únter) 937..' 93891 Case 0x4C: 9 j9e Invert8gord(TheImage[currentimage imagcmaxnUm]): 94j break; 942 r 943 / / Stock Cmap (cSckSpoce) 94 65 Case 0t33: 946 bt[ack'.curapC); 947 break; 951 // Ago M4oinolng (F4) 9523 case 0x63: 953! 954 aigaencourt - olga.moinoing 954 Waarp..rarp_start_*0; 955.Worp.rarp_stop_S. XSIZE; G" earp.-arpstoty - 0; 957. Worp.or?_stop_y YSIZE; current_ at go..; g 960.if (ctrelkey-do-n) Currentaigo O; 9621 aselse tF (optkeydon) currentalga. 1 962 -else if (cmdkey.don) Current_oalga o; 9G) 'te j stkylo 2 9G4clse _f' Cshftkcydo.n) current _oalgo.; 9G6! 965 break; 96? ' case 01G6: 969 [g. O_en_Court. _gomainotng* Warp.warp.stort_ 0; 9702: Warp. aorpstop.,. XSZZ; 9!: Worp.-carpsarty 0; 97Z Warp..arpstopy yS2E; 973 - -0 SZ; current_clgo 0; 974t Currentprtnt - 1; 976. break; 9 76 977: case Oto;: 978 aigoancourt. algooinoing; 9,9 9?9 '. Warp.-arpstot.x. 0. 930 Warp.warp-stop-x oXSIZE; 931: Worp. orp_start_y 0. O 953 Warp arP.StOU.y W "5 g93 ' ?C. rrentalgn. n, 9" Curren:.prrLt =;) '' 955S break, J; case UiCi ralga_an tour:. = 'go_monong,. S59çt W'P 'ar>-$:cr:ax - 0, 990 e',arp wrp Sto). x. *'rP.P'a.p-start-y - O: 99 - I9o-p -ap.. stopl y - 0, 99] Curent_clgtl =C 994 Current-print - 2. 996: break; 9 9 6: t c 997i case xio0; 994':o lg0oen acourt. calgooinotng; tOoG Warp.farpstartx -; zeooî Worp.eOrpstopx. XSIZE; 0Warp. wOrpstort_y * ; ) 2765370 E- 42 0023 Warp.-arpstop y. YSIZE; 1OO3: currentalgo 1: 1004 Currentprlnt 1; leO5: break 1006:: 1007' case Ox20: 1008o 9ogoencourt - aigo..oinoing aWrp. arpstartX 0; îo0e: *arp.- crpstopx. XS12E; 1011o: Warp.worpstort_ y. 0; Warp.. arpstop_y - YS2E; lO:3;, current.aLga. 1: !4 cwIrrent_print * 0; lOS1015 break; 1017 Case 0x22: 101S o|goen_court aIgo=motnoang; 1019 Worp.warpstocrt_x. 0; zo1020 Warp.warp- stopx. XSIZE; oz1021 Worp.worp_start_y - 0; O12Z Wrp.-apstopy - YSIZE; z1023 cuirrento. algo1; 1024;currentprint. 2; 1Zs5 break; 102G6 1027 case 0x04: 1028 otgoencourt. aogo_moinoing; 1029 Worp.-arpstortx - g; 1030i Worp.warpstopx - XSIZE; 1031 Worp. worpstorty - O; 1032 Warp.warpstopy. 1S12E; 1033 current _a-go * 2; 1034 current.print. 1 1035i break: 1037 case Ox2G: 1035 a1egoenCourt. algomoinoing; 1039 Worp. .arpstoartx - 0; 1040i Worp.-orp_stop_x - XSIZE; 1041 Worp..orp_start_y. O; 1042 Worp..arp stop y. YSIZE; 0le434 Currentalgo - 2; 10441 Currentprtnt. 0; 1045i break; 1046i 1047i case Ox25: 1049 OIgoenCourt C a tgo.bonoing; 104gi9 Warp."arp-stort _x 0; 1050 Warp.. orp_stopx - XSIZ[; 1051: Worp.-orpstorty 0; lOS1052 Worp.arpstopy - YSIZE; 1053 current.argo - 2; 1054 Currentprint = 2; 1055 break; les7? case Ox2d: lOSt oga_ en_court. algo_moinaoing; 1059 Warp.-arpstortx O; 1060 Warp.warp stop x X1SZE; 1061: - Woarp.arpstort_y. 0; 1063' Warp.arp_stop_y YSIZE; 10563: Currentalgo À 3; OG64 currentprtnt *; 1065 break; 1066: 1067 case 0x2e: 1068 Oalgoen court. algo. oinoing; 1069 Worp.-arpstartx - O; 1070! Warp. warpstop_ XSIZE; î7zl i Worp.worp-stort-y - ; 1072i Worp..orp_stopy - yS[ZE; 1073: current_oalgo = 1074 Currentprtt * O, 1075. brea; 07G 1077.: case 0x*b: 107: algoen.coî,r: À otg q ojoi nOr !079 V;.rp m orp_,s.rx " arp 'o?ostop_x. Xs:ZE 051 w rporpsor_ y - 0, 1OS.2 sorp.aorp-_stopy * Ys-; L083 Currentaogo * 3. 1054 cct;, ' Current_,r:nt = z. lO85:6 break; 1092 default: 10891i break; 109!: 1eq90[ S 601 { 96I01 E601 OLSS9L3 EJQOl!-4Db ÂJ kW1) D)9l:t F-i 1%Zinclude -defs.h' 2i#t(inctude 'colormap.h 3:.nctlude Utils.h" ó inc1ude 'FtlterLib. h" 6 idefine maxcmaps 200 7/ nombre max de palettes occe$sibles 7. 8':stotic int Icmops - O; n/ ombfre de palettesla.'gees 9::static int thecmaps[maxcmaps]Z5G ' 3], // les palettes chargegs le ll.:int currentcmap[256 ' 3]. / P/e.tte coureite eMporotrc IZ. int torgetcmaopEZS5G ' 3]. // Palette f.turc tFmio'oulIe 13'int cirrentcmap_idx - 0; / / Index de In palette cournnte 14. 1.Sînît polet. te_.Compteur À 0; // nombre d'etupes retotatcs 0avt-t lu(le CuO.tuLt 16 i 17,C 199Évoid next.Cemap(int offset) ZOO.: ( ZOû1 int i' Zoz '. 203i curterltcmap__idx - Modulo(currentcmapi.dx + offset. ncmops); 204: 205 for (. 0: i ZS5 Clarrentcmap[3 i.] . zseà6 INTERPOLECciarrent-crap[' i * O], target.caop[3 ' - 01 faCteur); Za7 Currentc.apf3 *.] 288! INTERPOLE(ct..rentcmp[ ' i 1], tar'gt_Cmnap[Jl 1] J 8'!) CurrentCmap[3 À. o t] À 291i lNTERPOLECcurrent_.cmp[3 - t +. torget'cmap[j À ZJ. facteur); 293 Setcmap-to-screen(rcrrentc.amnp). 294.. 295 k clFtne WS*AP(a,b) { n.. b-n,.-, 2:dreFt, ODFC(n.t,) [.' (n -. F) S*.P(n,!) i 4 adcfmn,'tAXCo(b).r b) ' o b) #dI.. fn5:'*'.t';(u.h) -(.À h) -) 7 #dfe:NTERPOLE(sd,:) (d - v ' (d - s)) g9rdefireFORn f]c*,.t),\ > G--t 4. vo.d InvertBoard(TheB-oard Bdest) 6 int i, j. t; ? for (j. O; j 10.t - (8-.dest)[(i) (.) (xSIZE 16)J. 11 (tdest)[CL,) (. 1) (XSIE I G)J 55 t, t3'} H - 4i z2!// 3 // SoundLb.ópp :// 6 Librairie de support son pour PPC et 66k. &:/1 Pour Sound manage" 3.x 9 I:/ :// Pierre de d oe eau(pmx) 2 1z 07 juin 19o6. 13/ i T'// 07 juin 1996: 19 - - - -- - -- - -- -- -- -- -- --- --- --- -- --- - - ---- - ------- --- - --- - -- - --- --- ---- -- -- -- --- - - -- - - -- - - ---..... ( 22:// Includes ZS::5iFndôF __SNDoSUPPORYT_ 26 4 7;,! 48 ps$Cal -oid 44yRceCo-p (SPBPtr înPara.Ptr); 49: -- -- - -- - -- - - / / -- -.......................................... ....................................DTD: 51!i// - Soun,:nit s2i/................................................ ............................................... :4O0SE- Soundlnit(uns S2 theEfro- - SPBO.en0tv.C%.LL, Sl rltcrm,$ston. tSoundlefS.".m S3: if (C:hCrror '- noErr) return kSndlntt; $G:. Y// nstolle les porametres, 37L aS8i longte.p-oRate: &9. thefrror - SPBSetDeviccXnfo (gSoundRcfNue.siSompleRate. Cvoid)&longtep): g9:1 if (thcError!- noErr) 94 2 92 rettJrr krtoteirr; 94 tongtemp- 'NONE' theError - SPSetDevice:nfo (gSoundRefNumsiCompressionTypc, (void)Llon:emp); 97i! 97 // if (theError!noEr) PAS DO'EREUR,. se. Imen indisonbtc 9S // retur,, -43; 10. irittenmpaoChn.. lS: 1 theError - SPBSet0evicclnfo (gSoundRefNura.sNumberChonnels (void ')LIntvcmp); 102: Jf (theError!noErr) 103 return kChonE,'; isttemp-c$i ze; 106 thcError SPESetOevicc!nFo (gSo. ldRcfNum".iSompleSZc,("otd) úInttc"v) 107, if (thcError!- no-rr) os: return kSizcErr; 109 if(oSizc-.l) l inttemp-1; ill:! theError - SP0SetoevicrInfo (gSoundRcfNunsSifT.osCo PleentOnOff*(v id) tinrtcap); 112: 1131 intteep-1l 114 thcError a SPOSetDeviCcInfo (0SoundRcfNiî,${iLeveclctcr0n0ff. (vOid) &inttemp); , /16 if (thcError! noEEr) PAS D'ERREUR.. seulement indispolibltC. 117 // retrn -43; 1lZ 119: i nt tec-i-O; : theError - SPeSetOeviceinfo (gSoundRefNum.SiACCOnOff. (void -) úintte.p); * 121î: lZ i// if (theError!. nEofrr) PAS O'ERgEUR,. seuleaent indisponible. 123 // return -44; 1Z4 1 125. // Lit les porowetres de la carte. 127. theError - SPBCetOeviceInfo (gSoundRefNum.siSompletotc. (void ') &gSo0plcRotc); !12Z. if (theError!- noErr) 129i: return kSndlnit: o' 132 theError - SPBGetDevicelnfo (gSoundRefNur., siSaapleSize. (void) &qSa.pleSize); 133 if (thaError!- noErr) 134 return kSndlnit; * 135: 136e 137 thcError - SPBCet0evicctnfo (gSoundRcfNumsiNu.bcrChonnes. (woid).gLNuaberOfChonels); 138 if (theError -!. noErr) 139- return kSndlInit; % 141 thcError - SPBCetOcviccInfao CgSoundRcfNum. si0eviCBurfcl'Infof (-aid) &Igntcrnotluffer) 142.. if (theError ?- noErr) 143-: return kSndtnit; 14 4 gSoeplesreoSi zeC(aLength'gNueberOfChonnel(CSonP IeSi Ze 161.:} liel '; 16'. gReodBuff.g8ufFerHondle(gwhichReodsuffcr]; 1C3 for (index-O index èu "yReCordCo.>letronRout:P.tr.: -SZ(oIl'::o"oy.:cco;'}. -i6,: (uyRecordCo.,le:tonRo,:ti n-0:.&-JL) :! *. 'return kSndlnî:; - 3 7C g;ccordStruCt->tnRef:'ur. Sou.d!et *ur. :7' gRecordStruct->coun:. g.Soa lCeaeoS-. gRecordStruct->nrlI|seconds - C 173 gRecordstruct->buffcrLeng-.-. gSampleAreSaize; ! c?.]. gRecordStruct->oufferPtr - çgufferHcndle[0. :7S.gRcCOrdStruca >coapI[e:ionut:tne a êyRecordaom7et IaonRout nP:. s,:: gRecordStruct->înterrup:Rou:îte - n:l; 77 gRecordStruct->error - 0 17Z: gRecordStruct->rrnusedl - O, 1i 79 lai, gRecordStruct-> uscrLong - 0; 112?. H-3 a, 183 MvCalB/rckI.nit(); ii return noErr; ;:, 1S7- l6S. // 189:11 * SoundStort 1 9o0 // --. --. -.......... -q. .....................................DTD: 192 i!OSEúr SoundStortcvoid) 19).. ( 194 return SPSRecord (g^ccodStrîact treu); I 196: 199T // -------------- - - - - - - - - - - - - - - ---.................. .................................DTD: 198.// - SoundStop 1 9s9::/ / -... --. -....... . ". -........._ _.........................................DTD: 200.: 201.-OSErr SoundStop(void) 202 o ( 203 'r eturn SP8Stop; ecording (gSoundcvfNu.); 204 J zo5,} 205:: 206 /1- 207?:/ ' Soundlcst Z0O I/-/----............................................................ 2es. 210:OSEr- SoundTest(short' aPecokValue) 211;,( 2zlz:: short recordingStat; 213. unsigned long otoattSa-ples. nuaberOFSomples, totalMSec. nu.berOfmScc; 214 L OSErr err. norre: 215: 216 È iF (gSoandRefNum!- O) 217 err - SP0Cet;ecordingStatus (gSoundRcfNu.. &recordingStat, aPeakValue, 218zi &totoalSomples. LnuberOfScamplcs. tqtol4Sec. &numberOf'Sec); 220, return err; 221 J, 222: z z].-:-' 2 23.'./-/ -.-............. ......-.................................... 224-// SoundCleanup z Z5/.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.. ..............................DTD: zz6 2Z7?OSEre SoundCleonup(void) 2Zz{ 2Z9 OSErr theError; 230 short index. recordin5Stat. -eterlcvel 231 unsigned long totalSamples. nu.berOfSo.ples. totalmSec. numberOf4Scc: 23Z.2 Z33' // check each global to ake sure they -ere allocated bcforc disposxng of the. 234. 235- iF (gSound;efJur.!- 0) 2 36; Z37: 'heError SPgCettecordingStatus (gSoundRefNu>. &reCordingStat. &Amterlevel 236, &totaclSapleS. &nu.berOfSamp1es. &totolmSec. LnuaberOf>Sec): 239:. If (theError!. noErr) 240; return -1; 242 jf (recordingStot > O) f 243:i Z44.- // cke sure thot recording hos stopped before r close the sound driver 245: 246., thefrror - SP5StopRecording (gSoundRefNum): 47-:; if (thefrror!-. noErr) 248 " return -Z; 249:i} Z50 251: thefrror SPBCloseOevice (gSoundtcfNi.); 2SZ: tif (theError!. noErr) Z53: rcturn -3; Ss 255,) :$6^.. :z6 7? ' oSe fl*,C E: 53 for (index. 2 r. "*%ua a''rs-; *- m-il u: J:ppS*tLL.O'ClUPic Cg5;1ffrrln vEandczJ) vl&,: g=duf,'cr-cndlCencv -:'LL 2;Có i 2v4: 765 i. f (gtecordStruct *-. l 2.66.; DisposeP:r ((Ptr) gtcoCStruCt); 2686 gXeOdSuff - NULL; 269: Z70: return 0; Z71. 273 h/ __ ______ ____ ____ __________________ _____........... - -_-____._.______ H- 4 274ii// - HyReComp 275 -- - --.. -....... _......................- - z 76. 277:pascal void HyRecComp (SPBPtr inParomPtr) 275St 2 79 OSE rr err.O0; 280 extern void AlyC LB lc k(void); 281.- 282a.f (gRecordStruct->error milliseconds - 0: 293 gRecordSteuCt->Count gSocpleAreoSize: 294 gRecordStruCt->bufferLength - gSao.pleAreoSi2e; 295 gRecordStruct->buffecrPtr - 'guffcrHondtcfgWhlchReóordBfwfe]; 296" gRecordStruct->intcrruptRoutinc nil; 297j gRecordStruct-> error - O; 298ô gRecordStruct->unusedl - 0: 299' 300- 301. err - SPORecord (gRecordStruct, true); // vueuc up onother record 303 if (err) 304 OcbugStr ('\pSP6Record died in RelCo-pletion. CoiLtbock-): 306 ú gSemtophore - I; 307: 308.} 3 09 310o // ------------------------......................................... .....--.-._ -......._.-.....,.-.._...DTD: 31 1::// EOF 312;// --------............_................ -- - -- - - -, - - - - - - -- - - - - - - - - - : 6o I -:iFndeF __FILTER 2:define _-FILTER-- 4 #:FndeF -_800LEAN : inclsde 6 aiendlf 7-:#define _BOOLEAN_ 9 'fdeF __cplusplus e xternC { 11d: endiF j 2. 13.// Size oF Electro Encphalogramme !!dcftne kElectroSize 500 16:; 1; '.// Nutmber of rnalysis bonds la J 20.-deFine NbBande 10 22 i seconds For* gHxACti. 21,// Refresh T:m secondsr 23.'define RefreshMox 4 24, //#ifildec __FILTER__ 26' //adfine _FILTER 2a extern doubletgAGC; / Auto C otr 29: exter,doub le t9RMS[l o a r entern double/ Root Mean Square 30." eXtern double_t gPeokrt]; // P eak Value 321 extern doubt _t // RMS with time pondertion, (-0.3 s) 32': extern doubtet gdBLevbkor-î. //t gLevelr ti onderatio 0. s) 33. extern doubletgdBLarCCl11]; g r A 367 extern doublet gdBlACPCe[j // gPeakBoar ith log crAGC ve - tgdBPeakaor[11]: 3 5!-, extern doublet gd oer-r[]; / / gheilog AGC 036! extern gdoAle t gPea kIl 0 // gPev[or o A/ 38:/ extern double t gR od _ 0 3 7 e s t e r,e; 46- e,doubl extern ent g Corr[Rt]; 38 I eter, double 397J eendobe t EleCtroclla][kElectroS( ze]; 540// extern doublet gLPMeter 0.; // e ot 4// extern doublet gRhseter 0.0; bt// CMS R I/ // extern doubet gLPek - 0.0; k L 46 1/ extern doub etgRPeok 0.0; 44 extern doub[e_tgPhose 0.; / CorrelatioC L/R 650./externdo0 b g oLHo [d e.0 Co 46i//eAterndo,,b[tg Ro d. O 6g /:'endif r7_FLE- 4 7:: 48 extern int g Hxc;/n tos 61:: este r,, id tncr int gStep; 6Z: I ester, i in t 63 este r,, O En -I s a o f b S L:: grempo;// etos externint l r dou be tIxtern intgPu[se; / /en cours 54:ieXtern boolSEStrreo/ nt Flag OSCIlsterOsCpCbt $5i extern boo[ gtfighRes;/ 6bt uniainfn S69: /U.:w//endir f $9 i/ Prototypes Go::: 6l.! exter. voidyo acinttvod; 6Z!i extern v o Q80k-l(lidd 63!;M C LSikv i) externOEr Llssa}ou(doublet.- H Feb, doublet' Vro. ntSe. 64 * externO E rSt soed ut!,I a._o.i t sz) 6 Sr 6stLs eCobet IIrb nt stz:-); 66 i#(Fde F --CP [usplus 6a ii#endi F 69": /ei"efndjf // _FILTER__ o p- N _ LO - CO " II :. 0 _ t4a -. *, _ ' _ *_ t'-.,- -. L. ,_ e...,..,o -,,V m. À,)v';i \ D._s io " G $- C. o v,"x. _,w i +CD OV_ o, 4 -o nD "" wE -C -e çuee_ 4.;VL>vvJtV|9vvév-ôviv U X "- zl o _ L _ ç ç c az O *; -Le_ _vi* t4_-._ oe-L 4w-_ *-u ..- 1 o,ci..%-o e' 1v m4'. c- t Ee", wt-ev... t.>4. n, _,,_,..= v..., c.sWqa Wu Ovv_v v v v 0} 4, s wJ ezcg 11 X1. 'Cla 44.t-'.c.4..4o 6c -L o ao.:,:,s o,-,, v B B 8 w0e a aC4e e v 4 > - là ç eL 1 s J n nn oo "V V....,.......... o. -. _ t--.-. --*........,-.-'O, '........ _ o - ''..... * n*t. r, r-.. Ol rl -l - '4 --= 4 '=1 O:::::4.: ::: :: r i,-4. *:-::::-..l.t f- !4N NNr:N N::N N:N N N a O C nN 0 m - 0000--- on s" vv oo on Kr or so ov -' - C -- -..!!VS'.. AJ> > ososQ>Ooeoooeooo-----N. a y N py 'Y H _ _ Q __ # __ H _ __ _ _ __s _rX_ " _ w_ __. __.nt *! o1e NN 1 N e o e -N r e 4. t4. O f g $ 2765370 f -2 //3 Peak mete,' 238. I.peok - scale; 239, - r_peok - scae; 240, // úmS meter Z41 24 2; 1.eter - scole sqrt(l_.eter / gBufFStze) Z43:' mete' - scale sqcrt(r..metc/ g6t4ffsizc). Z44 Z4S5 46 if ([_pcak. rpeok > 300,0) 247. ne.-_ACCC65535.0 / (Iperk, rpecok) 248i else 249,teACC - 1.0; 250s tIf (newACC>25. 0) 251,, ne._ACC Z5.0; 252 / AGC estimation Z53 Z54 if (ne. _ACC 271, for (i - 0; i 27?2 Calcul[i] - Amor[k][i]; Z73 274 // Store New Starting Buffer 276Z for (i - n. j e; i . r..) Zt3- // Hilbert Half Bond F.IR.R, evatottion 2S4 285.. Hilb. coef[l] ' (Calcul[i * I] * Coalculi - 1). coef[Zrl * (CatclI3i À Cnlcul[i 3]) A' Center. coefiO] CnIculLi]; 2&/:, 2SS // High Pass / oow Poss Fitter 2S9 Zff:: HighPass - (Hilb - Center) /};Norm; 291. Ca[cull[] - (Hilb. Center) / LNor; 292.- Z93 // RMS & Peak value Z9S theLevel.- HighPass ' HighPoss; 296 if (HtghPoss > gPeak[k]) 297Z gPeak(k] - HighPass; 9lS,?- if (-HighPass > gPeok[k]) 99: gPeok[k] - -HighPass; o)0 02 gPeoLCk] /327GS.0; ) JOI. v R M S.aluc 0ql;S;L] J. *. nlc! Surt Ct',Lrv-1... 13.;,S h. J /I P"uk a ettr vutu" 1J! qPokuar;k] * qPc *-31 - 3 321: 32zz // Log Level meter value (R'4S -ith time ponderCtion). 323- 3z24 gdBLevoar[k] - (kdBRange 20- ZO ' loglC(gLeve18ar[k])) I kdBangoe; 3Z5' 326. if (gdBLevBar[k] 328 g96B.ACCLevYk] - (kdSRonge - 20 * 1ogIO(gAGC gLenel8arEk])) I kd8Rnnge. 330 if (gdBAGCLev[k] 336::} 337i 33S8 g5tep - (gStep,) % kElectrcSize; 339I) 341// ----------------------------- Lissojou -------------- 342s 3430:SErr Lissajou(double.t' Hrab, doublet' v-rTob. int si2e) 344'{ 345_ int i.j.n.,index; 346.- int aver-Hjoaver-V; 347i 348a if (size > gBuffSize) returni -43; 349 n - geuffSize / size; 350a 351:: for (i - 0. index - O; i 357' I 358 i ITabCi] - (scatle ' overH) / (3276&.0 ' n); 359 VToab[i] - (scale ' averV) / (32768.0 ' n); 360t i 361ti return noErr; 362.} 363- 364.. ---------_----- ____--_____- Osctlloscape. __..__.__._._..,,,,_.,_., 365S 366!!0SErr Oscilloscope(doublet' H.Tah. int sire) 367-. 3685 int step; 369 int i.j; 370,- int index - 0; L371' tt tempppeok.npeak; 372,- 373i if (size > gBuffStze) retttrn - 43; 374 step - gBuffSize / sire; 3 75 31s'i 376. For (i - 0; i . ppaok) ppeak - temp; 380O: if (teup -sipeak) 383.HTab[i] . (scole ' ppeok) / 32763.0; 384i else 35.' HTob[il] - (scule ',speak) / 32768.0; 387_ 3S9 return noErr; REVENDICATIONS 1. Système de traitement d'images pour produire des images animées à évolution aléatoire, comprenant une unité centrale de traitement (100), une mémoire vidéo (114) comportant MxN emplacements de pixels formant une image, et un dispositif d'affichage (116), chaque pixel présentant une valeur de couleur comprise dans un intervalle déterminé, caractérisé en ce qu'il comprend en outre: - une mémoire (102) contenant une pluralité d'algorithmes, - des moyens (100; 112) de sélection d'au moins l'un des algorithmes contenus dans la mémoire, S15 - des moyens (100) pour appliquer aux algorithmes des paramètres de fonctionnement, et - des moyens de traitement (100) pour appliquer séquentiellement ledit algorithme sélectionné à des valeurs courantes de couleurs de pixels contenues dans la mémoire vidéo, et pour engendrer des valeurs de couleurs de pixels modifiées, - des moyens (100, 114) pour afficher en succession sur le dispositif d'affichage des images ayant les valeurs de couleurs de pixels séquentiellement modifiées, et - des moyens (100) pour ajuster les valeurs des paramètres de fonctionnement de telle sorte que l'algorithme sélectionné opère des transformations d'image restant perpétuellement aléatoires. 2. Système selon la revendication 1, caractérisé en ce qu'au moins certains des algorith-s s établissent des valeurs de couleurs de pixels modifées en fonction des valeurs de couleurs courantes des pixels et de leurs voisins immédiats. 3. Système selon la revendication 2, caractérisé en ce que lesdits voisins immédiats sont constitués par quatre voisins en contact avec le pixel considéré le long de ses quatre bords. 4. Système selon la revendication 2, caractérisé en ce que lesdits voisins immédiats sont constitués par huit voisins en contact avec le pixel considéré le long de ses quatre bords ou au niveau de ses coins. 5. Système selon l'une des revendications 2 à 4, caractérisé en ce que la mémoire vidéo est apte à mémoriser une pluralité de valeurs de couleurs de pixels virtuels situés en dehors du champ de l'image affichée et adjacents audit champ. 6. Système selon la revendication 5, caractérisé en ce que lesdits pixels s'étendent le long de deux bords opposés dudit champ de l'image affichée. 7. Système selon la revendication 5, caractérisé en ce que lesdits pixels s'étendent le long des quatre bords de l'image affichée. 8. Système selon l'une des revendications 1 à 7, caractérisé en ce qu'il comprend en outre des moyens (102) de mémorisation d'une image fixe (I2) constituée d'une pluralité de pixels possédant des valeurs de couleurs, et en ce que les moyens de traitement (100) comprennent des moyens pour combiner les valeurs de couleurs de pixels de l'image fixe avec les valeurs de couleurs de pixels traitées par l'algorirhmie sélectionner. 9, Système selon la revendication 8, caractérisé en ce qu'il comporte des moyens (102) pour stocker une pluralité de palettes de couleurs en association avec une pluralité d'images fixes respectives (I2). 10. Système selon l'une des revendications 1 à 9, caractérisé en ce qu'il comprend des moyens périphériques d'entrée (112) pour l'introduction manuelle d'au moins certains des paramètres de fonctionnement, et en ce que les moyens d'ajustement (100) sont aptes à ajuster les valeurs desdits paramètres introduits manuellement. 11. Système selon l'une des revendications 1 à 10, caractérisé en ce qu'il comprend en outre des moyens (100) pour appliquer aux images traitées par les moyens de traitement des effets visuels prédéterminés. 12. Système selon l'une des revendications 1 à 11, caractérisé en ce que les moyens de sélection (100; 112) sont également aptes à sélectionner successivement différentes palettes de couleurs constituant chacune un sous-ensemble des couleurs pouvant être engendrées par le système. 13. Système selon la revendication 12, caractérisé en ce qu'il comprend des moyens (100) pour appliquer à l'image en cours de traitement une fonction de fondu à chaque sélection d'une nouvelle palette de couleurs. 14. Système selon l'une des revendications 1 à 13, caractérisé en ce qu'il comprend en outre des moyens (108, 110) d'acquisition d'un signal sonore et de traitement (100) du signal sonore acquis pour délivrer en sortie des para:mtres de fonctionnement des algorhrmes. 15. Système selon l'une des revendications 1 à 14, caractérisé en ce qu'il comprend des moyens de commande automatique de gain (100) aptes à délivrer des paramètres de fonctionnement représentatifs de niveaux sonores relatifs, indépendamment du niveau global du signal sonore. 16. Système selon l'une des revendications 14 et 15, caractérisé en ce que les moyens d'acquisition sonore comprennent un convertisseur analogique/numérique (110) et en ce que les moyens de traitement sonore comprennent des moyens de filtrage numérique (100) pour décomposer le signal sonore converti en une pluralité de bandes de fréquences. 17. Système selon la revendication 16, caractérisé en ce que les moyens de filtrage (100) sont des filtres itératifs en treillis. 18. Système selon l'une des revendications 16 et 17, caractérisé en ce que les moyens de traitement sonore comprennent des moyens (100) pour délivrer en sortie des paramètres de fonctionnement représentatifs des niveaux sonores dans chacune des bandes de fréquences. 19. Système selon la revendication 18, caractérisé en ce que les niveaux sont choisis dans le groupe comprenant les niveaux moyens, les niveaux efficaces (gRMS[k]) et les niveaux de crête (gPeak[k]). 20. Système selon l'une des revendications 14 à 19, caractérisé en ce que les moyens de traitement sonore (100) sont aptes à délivrer des données graphiques bidimensionnelles représentatives de certaines caractéristiques du signal sonore, et en ce qu'il comprend en outre des seconds moyens de traitement d'images aptes à intégrer lesdites donnees graphiques aux images en cours de traitement par les premiers moyens de traitement. j la différence entre les signaux des deux canaux. 24. Système selon l'une des revendications 14 à 23, caractérisé en ce que les moyens de sélection (100) sont aptes, en l'absence d'un signal sonore, à simuler des paramètres de fonctionnement issus d'un signal sonore.