Jump to content
Sign in to follow this  
  • entries
    5
  • comments
    10
  • views
    4,404

Génération de structures de hauteurs à partir d'une série avec gen-chord2

Stephane Boussuge

1,251 views

La fonction GEN-CHORD2 d'Opusmodus peut se révéler très utile pour la génération de structures harmoniques.

 

 

En voici un petit exemple.

Nous commençons par générer une série qui nous servira de base pour la génération de nos accords.

(setf row (rnd-row :type :pitch))

 

Voici pour commencer l'utilisation la plus simple de gen-chord2.

Quand le paramètre :offset n'est pas précisé la fonction déplace la fenêtre dans la série

du nombre de pas correspondant au parametre taille (size) de l'accord.

(setf chords1 (gen-chord2 8 4 row))

 

Voici maintenant un exemple avec l'utilisation de :offset pour garder des notes communes entre les accords.

Un offset de '(2 3) aura pour effet de conserver sur des accords de 4 sons, 1 et 2 notes commune alternativement,

permettant ainsi une transition plus douce d'accord en accord.

La fonction commence par effectuer un offset (déplacement de la fenetre) de 2 dans la série et

génère un accord de 4 sons puis se déplace de 1 dans la série,

ressort l'accord de 4 sons correspondant à sa position et ainsi de suite.

(setf chords2 (gen-chord2 8 4 row :offset '(2 3)))

 

Utilisation des transpositions.

Même chose que précédement mais avec des transposition aléatoire des accords entre -6 et +6 demi-tons.

Tout d'abord, création d'une liste de valeurs de transpositions:

(setf transpo-val (rnd-sample 8 (gen-integer -6 6)))

 

Puis utilisation de la liste dans la fonction:

(setf chords3 (gen-chord2 8 4 row :offset '(2 3) :transpose transpo-val))

 

Ajout d'une contrainte de tessiture avec :ambitus

(setf chords4 (gen-chord2 8 4 row :offset '(2 3) :transpose transpo-val :ambitus '(c4 c5)))

 

Voici maintenant une partition utilisant la structure que nous venons de créer.

Utilisation des accords comme base de mapping pour une application

sur un contour mélodique:

Contour basé sur un vecteur.

(setf vecteur (gen-white-noise 200))
(setf smooth-vect (vector-smooth 0.63 vecteur))

 

Contour mélodique (on transforme le vecteur en notes)

(setf contour (vector-to-pitch '(g3 c6) smooth-vect))

 

Longueurs

Choix aléatoire de 24 mesures dans une liste de mesures pré-définies:

(setf len (rnd-sample 24 '((s s s s q -q)
                           (e e q s s s s s s s s)
                           (h)
                           (s s q s s s s)
                           (q q e e q -q)
                           )))

 

Assemblage OMN

(setf melo (make-omn            
            :pitch contour
            :length len
            ))

 

Application de la progression d'accords

(setf melo.map (tonality-map (mclist chords4) melo))

 

Contrainte de tessiture:

(setf melo.amb (ambitus '(g3 c6) melo.map))

 

Accompagnement piano

Création d'une liste de figures possibles:

(setf fig '((h c2 e3c4g4)(q c2 e3c4 g3e4 e3c4)(e c4 e3 g3 c3 h c2)))

 

Choix aléatoire de 24 figures parmi cette liste

(setf rchoice (rnd-sample 24 fig))

 

Récupération de la structure des mesures de la mélodie:

(setf mspan (get-span melo.amb))

 

Application de la structure de mesures sur l'accompagnement

(setf acc (length-span mspan rchoice))

 

Application de la structure harmonique sur l'accompagnement

(setf accmp.map (tonality-map (mclist chords4) acc))

 

Définition du score:

(def-score etude           
           (:key-signature 'atonal
            :time-signature (get-time-signature melo.map)
            :tempo 123
            :layout (violin-layout 'violin))

(violin
 :omn melo.amb
 :channel 1
 ;:port 0
 :sound 'gm
 :program 'violin)

(piano
 :omn accmp.map
 :channel 2
 ;:port 0
 :sound 'gm
 :program 'acoustic-grand-piano))

 

Voila, en espérant que ce petit exemple vous a donné des idées.

Vous trouverez en pièce jointe à ce post ce fichier au format .opmo

 

SB.



3 Comments


Recommended Comments

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×