Projets d'informatique musicale
Licence-Maîtrise d'informatique - Université de Caen
Marc Chemillier

  • Contraintes d'harmonisation de choral

    Biblio : TSANG C.P., AITKEN M., « Harmonizing Music as a Discipline of Constraint Logic Programming », Proc. ICMC 91, Montréal, 1991, pp. 61-64.

    Les quatre voix du choral sont représentées par un tableau de 4 lignes et n colonnes, contenant les variables xij (codes midi). On note D1, D2, D3, D4 respectivement les domaines des variables xi1, xi2, xi3, xi4. La ligne du haut xi4 est instanciée (c'est la mélodie à harmoniser). Le problème est d'instancier les 3 autres lignes en respectant les contraintes ci-après. Les "notes de passage" peuvent ne pas être harmonisées (colonnes i = 2, 6 et 10).


    xi4 = 6769 71    71    7271 69    69    7472 71    67    66    67           
    xi3 = 62 62 62     64    64 64 64    69    67 67 67    64    62    62      
    xi2 = 59 57 55    59    57 59 60    62    59 60 62    60    57    59      
    xi1 = 43 42 43    43    45 43 45    54    55 52 55    48    50    55      
    Airi = Vb I    VIb    II VIb II    Vb    I IVb I    IV    V    I      


    On introduit deux séries de variables supplémentaires :

    Une contrainte générale sur (Ai, ri) est de se limiter aux couples suivants : I, Ib, Ic, II, IIb, IV, IVb, IVc, V, Vb, VI, VIb, ou VIIb.

    L'instanciation des variables doit respecter les 2 ensembles de contraintes suivants :

  • Les « régles harmoniques » qui définissent une transduction rationnelle calculant la séquence des Airi à partir de la ligne x1i. Ces règles concernent le premier accord et les trois derniers, ainsi que les enchaînement d'un accord au suivant.
  • Les « contraintes de sélection de notes » qui définissent une transduction rationnelle complétant le tableau des xij à partir de la séquence des Airi. Ces règles portent sur l'enchaînement d'une colonne (xi1, xi2, xi3, xi4) à la suivante (xi+11, xi+12, xi+13, xi+14).


      Règles harmoniques

    1. Le premier accord choisi doit être un accord de tonique I

        A1 = I

    2. A la fin d'une phrase, une cadence doit être choisie
    3. [En cas de plusieurs phrases, la dernière cadence choisie doit être parfaite ou plagale]

        (An-1, rn-1, An, rn) = V-I cadence parfaite, IV-I ou IVc-I cadences plagales, ou V-VI cadence rompue

    4. Le deuxième accord d'une cadence ne doit pas précéder celle-ci

        (An-2, rn-2) différent de (An, rn)

    5. Le premier accord d'une cadence ne doit pas précéder celle-ci
    6. Pas deux accords consécutifs identiques

        (Ai, ri) différent de (Ai+1, ri+1) pour tout i

    7. Pas d'enchainements II-I, VIIb-IV, V-IV, VIb-V

        (Ai, ri, Ai+1, ri+1) différent de II-I, VIIb-IV, V-IV, et VIb-V pour tout i

    8. Pas de renversement c sauf à une cadence

        ri différent de c pour tout i différent de n-1

    9. *** S'il y a le choix entre les renversements vide et b, choisir b
      
      

      Contraintes de sélection de notes

    10. Les ambitus sont limités aux tessitures vocales

        D1 = [41, 62],  D2 = [48, 69],  D3 = [53, 74],  D4 = [60, 81]

    11. Pas de croisements
    12. Les voix voisines doivent rester proches

        xij <= xij+1 <= xij + 12 pour tout i avec j différent de 1,
        xi1 <= xi2 <= xi1 + 16 pour tout i

    13. *** Préférer le mouvement contraire entre basse et soprano

        (xi1 <= xi+11 et xi4 >= xi+14) ou (xi1 >= xi+11 et xi4 <= xi+14) pour tout i

    14. Pas de quintes, octaves, unissons consécutifs

        (xik = xij modulo 12) implique (xi+1k différent de xi+1j modulo 12), et
        (xik = xij+7 modulo 12) implique (xi+1k différent de xi+1j+7 modulo 12) pour tous i, j, k

    15. Pas de mouvements mélodiques interdits dans les voix

        |xi+1j - xij| = 0, 1, 2, 3, 4, 5, 7, 8 ou 9 pour tous i, j

    16. ***Si possible, le mouvement mélodique doit aller à la note la plus proche
    17. Les notes communes entre deux accords consécutifs doivent rester en place

        pour tout i, |xi+1j - xij| <= |z - xij| pour tout z de l'accord Ai+1,
        en particulier si xij est dans l'accord Ai+1, alors xi+1j = xij

    18. La sensible doit monter à la tonique
    19. ***La sus-tonique doit descendre à la tonique si possible

        (xij = 6 ou 9 modulo 12) et (Ai = V) implique (xi+1j = 7 modulo 12) pour tout i

    20. A l'état fondamental, doubler la basse, etc.

        (ri = vide ou c) implique (xi1 = xi2 ou xi3 ou xi4 modulo 12),
        (ri = b) implique (xi1 différent de xi2, xi3 et xi4 modulo 12) pour tout i