Abstraction / Application


La construction des abstractions se réalise en partant d'un objet concret dans lequel on rend variable un autre objet. Si cet autre objet apparaît dans l'objet initial, il sera rendu variable, sinon le résultat sera une fonction constante, qui rend le même résultat quel que soit l'argument sur lequel elle est appliquée.

De manière interne, le processus d'abstraction utilise un mécanisme de détection d'occurrence qui consiste à identifier un objet dans un autre objet et à le remplacer par une nouvelle variable.

Deux mécanismes de détection d'occurrences sont actuellement utilisés :

- Un mécanisme de détection d'occurrence strict, pour les objets « complexes », c'est à dire plus complexes qu'une note simple. Dans ce cas les objets sont identifiables seulement s'ils sont syntaxiquement équivalents, c'est à dire s'ils ont exactement la même structure. Ce mécanisme est utilisé pour les arbres de type SÉQ, MIX, TRANSP, etc. mais aussi les abstractions : cela signifie qu'une abstraction elle-même peut être rendue variable.

- Le mécanisme de détection d'occurrence pour les notes simples est moins strict. Il est possible en effet de rendre variable une note dans une autre note même si ces deux notes ne sont pas exactement identiques, c'est à dire si elles n'ont pas la même hauteur, vélocité, durée ou canal MIDI. Par exemple :

- abstraire une note de hauteur 60 dans une note de hauteur 72 donne comme résultat une fonction qui transpose de 12 (la différence entre 72 et 60).
- abstraire une note de durée 1 seconde dans une note de durée 2 secondes donne comme résultat une fonction qui dilate les durées d'une facteur 2 (le coefficient multiplicatif entre 1 et 2).

Pour les notes, la différence des hauteurs conduira à la création d'une opération de transposition, la différence des vélocités conduira à la création d'une opération d'atténuation, la différence des durées conduira à la création d'une opération d'expansion ou compression et la différence des canaux MIDI conduira à la création d'une opération de transposition des canaux.

Ce mécanisme ne fonctionne que si les notes considérées ont la même couleur. Par exemple abstraire une note rouge dans une note bleue donne une fonction constante comme résultat.

Les abstractions et applications peuvent aussi être définies dans le constructeur de Règles ou la fabrique.