|PROFILE|::PR-INTERLOCK
Arguments: list1 list2 gr [generic-function]
Enchevetrement des notes de la liste <list2> entre les notes de la liste <list1>,
avec un degre <gr> de profondeur variable.
L'interet de ce module reside dans le fait que n'importe quelles que soient
les notes de <list2> chaque fois qu'elles sont enchevetrees entre les notes
de <list1>, le module a le soin de changer la note d'octave de façon
qu'elle puisse etre entre les deux notes de <list1>.
Exemple:
soit un f#1 de <list2> qui devrait etre enchevetree entre une paire
e3 et a3 de <list1>. Le f#1 de <list2> serait, alors, transpose a f#3
pour que la sequence devienne: e3 f#3 a3. Au cas ou la note a etre enchevetree
ne soit pas contenu entre la paire de <list1>, elle sera alors transposee
vers l'octave la plus proche d'une des notes de la paire en question.
Exemple:
Soit le mme f#1 de <list2> qui devrait etre enchevetree entre une paire
g3 et a#3 de <list1>. Le f#1 de <list2> serait, alors, transpose a f#3
pour que la sequence devienne: f#3 g3 a#3. Le f#1 a ete transpose
le plus proche d'une des bornes de cette paire, dans ce cas precis a f#3
qui ete proche de g3.
avec un degre <gr> de profondeur variable.
L'interet de ce module reside dans le fait que n'importe quelles que soient
les notes de <list2> chaque fois qu'elles sont enchevetrees entre les notes
de <list1>, le module a le soin de changer la note d'octave de façon
qu'elle puisse etre entre les deux notes de <list1>.
Exemple:
soit un f#1 de <list2> qui devrait etre enchevetree entre une paire
e3 et a3 de <list1>. Le f#1 de <list2> serait, alors, transpose a f#3
pour que la sequence devienne: e3 f#3 a3. Au cas ou la note a etre enchevetree
ne soit pas contenu entre la paire de <list1>, elle sera alors transposee
vers l'octave la plus proche d'une des notes de la paire en question.
Exemple:
Soit le mme f#1 de <list2> qui devrait etre enchevetree entre une paire
g3 et a#3 de <list1>. Le f#1 de <list2> serait, alors, transpose a f#3
pour que la sequence devienne: f#3 g3 a#3. Le f#1 a ete transpose
le plus proche d'une des bornes de cette paire, dans ce cas precis a f#3
qui ete proche de g3.
<gr> est le niveau de profondeur du processus.
Exemple:
soit <list1> (6000* 4300* 6900* 5900*) et (pour des questions pedagogiques)
<list2> (6100 6300 6500 6600 6800 7000 7200) et <gr> = 1.
Le resultat sera:
(6000* 4900 4300* 6300 6900* 6500 5900*)
Exemple:
soit <list1> (6000* 4300* 6900* 5900*) et (pour des questions pedagogiques)
<list2> (6100 6300 6500 6600 6800 7000 7200) et <gr> = 1.
Le resultat sera:
(6000* 4900 4300* 6300 6900* 6500 5900*)
[le * a ete ajoute pour marquer les notes de <list1>]
Il est possible de remarquer deux choses:
1) C'est la longueur de <list1> qui determine la fin du processus 2) Le c#3 (6100) a ete transpose a c#2 (4900) pour pouvoir etre insere entre les deux notes de la premiere paire de <list1> ->(6000* 4300*)
Si on maintient les memes listes, <list1> et <list2> mais on change
<gr¡> a 2 nous aurons:
(6000* 5400 4900! 4400 4300* 5800 6300! 6000 6900* 7300 6500! 6300 5900*)
<gr¡> a 2 nous aurons:
(6000* 5400 4900! 4400 4300* 5800 6300! 6000 6900* 7300 6500! 6300 5900*)
[le * a ete ajoute pour marquer les notes de <list1> et ! pour marquer les notes deja ajoutes lors du premier processus]
nous percevons que les notes ajoutees sont 5400 (f#2 transposition de f#3 6600
pour pouvoir tre inseree entre 6000 et 4900),
4400 (g#1 transposition de g#3 6800 pour pouvoir inseree entre 4900 et 4300)
et ainsi de suite. C'est-a-dire a chaque niveau du processus le module
lit les notes de <list2> qui n'ont pas ete lues lors de l'operation du niveau precedant.
Au cas ou on aurait finit de lire toutes les notes de <list2> et il aurait encore des paires
a enchevetrer e module lirait circulairement <list2>.
Ce processus est une transcription musicale de l'algorithme nomme <Midpoint-
Displacement>,
utilise pour la construction de courbes fractales.
pour pouvoir tre inseree entre 6000 et 4900),
4400 (g#1 transposition de g#3 6800 pour pouvoir inseree entre 4900 et 4300)
et ainsi de suite. C'est-a-dire a chaque niveau du processus le module
lit les notes de <list2> qui n'ont pas ete lues lors de l'operation du niveau precedant.
Au cas ou on aurait finit de lire toutes les notes de <list2> et il aurait encore des paires
a enchevetrer e module lirait circulairement <list2>.
Ce processus est une transcription musicale de l'algorithme nomme <Midpoint-
Displacement>,
utilise pour la construction de courbes fractales.
NOTE: THIS FUNCTION HAS BEEN RENAMED 'PR-INTERLOCK' DUE TO A NAME CONFLICT WITH AN EXISTING OM FUNCTION