Sage et les gammes

Bonjour.

Je suis conduit à vouloir compter et donner explicitement les possibilités d'indexage des notes de la gamme (i.e. entre deux toniques, toutes les possibilités de permuter les notes à l'intérieur, indépendamment en montant et en descendant) , et pour cela, je voulais faire tourner un programme sous Sage. D'après un rapide calcul, il y a plus d'un demi-million de possibilités...

Etant en dehors de chez moi et de l'université, j'ai voulu utiliser Sage online, mais le temps de calcul est trop long pour la version en ligne.

Y a-t-il une bonne âme qui voudrait bien faire tourner le programme sur sa propre machine et ensuite renvoyer le fichier texte de la réponse de la machine?

Le programme est en pièce jointe du message.

Merci d'avance!

Réponses

  • Sinon, c'est sûrement convertible très facilement dans un autre language... Il n'y a que de la programmation bébête dans ce programme.
  • Salut,

    Je veux bien essayer de faire le calcul en Python, mais peux-tu expliquer un peu plus précisément ce que tu cherches à énumérer ? Est-ce simplement les $7!$ permutations de $\{do,ré,mi,fa,sol,la,si\}$ ? (je ne pense pas, car ça fait beaucoup moins qu'un demi-million de possibilités...).
  • Merci pour ta réponse.

    En fait, je suis en train d'étudier avec un (célèbre) violoniste indien le système des Ragas.
    Il veut donner une illustration de la diversité de ce qui peut se construire comme gammes à partir uniquement du mode majeur.

    On part de do par exemple, et on termine sur do. Les notes au milieu sont permutées. Donc dans un sens (en montant par exemple), il y a $6!$ possibilités. Mais le truc c'est qu'en montant et en descendant, on autorise une permutation différente. Par exemple Do Ré Mi Fa La Sol Si Do Fa La Si Sol Mi Ré Do. Donc si on veut avoir toutes les gammes (avec la montée et la descente), ça donne $(6!)^2$ gammes possibles en partant uniquement du mode majeur.

    Après, ce n'est qu'une des façons d'obtenir une gamme à partir de do majeur. Par exemple, on peut enlever une, deux, trois notes, ou jouer une, deux trois notes un quart de ton en dessus ou en dessous... Ceci uniquement à partir du mode majeur! En Inde, ils ont 72 modes officiels, et à partir de ceux-ci, on peut construire une quantité astronomique de gammes!
  • OK, je comprends un peu mieux ! Merci. Et la note de base (le Do dans ton exemple) peut être n'importe laquelle des 7 ? Le motif est bien de la forme $xSxTx$, où $x \in Notes$ et $S,T$ sont des permutations a priori différentes de $Notes \setminus \{x\}$ ?
  • Non, il faut commencer et finir par Do.

    Il y a toujours un bourdon, en musique indienne, qui impose le ton principal. D'ailleurs, les notes indiennes sont "flottantes". Elles se nomment Sa Ri Ga Ma Pa Da Ni, et le Sa (équivalent du Do ici) varie en fonction du musicien. Si un chanteur veut chanter sur la, le Sa aura aura une fréquence multiple de 440 Hz, s'il préfère chanter sur Do, le Sa aura la fréquence du Do.
  • Merci pour ces compléments intéressants.

    Voici un code Python qui n'est pas forcément optimal, mais qui fonctionne.
    import os
    
    def inserer_elt(Liste,Elt):
        R = []
        for i in range(len(Liste)+1):
            q = Liste[:]
            q.insert(i,Elt)
            R.append(q[:])
        return R
    
    def permut(S):
        if len(S) == 1:
            return [ S]
        L,R = permut(S[1:]), []
        [R.extend(inserer_elt(list,S[0])) for list in L]
        return R
    
    notes = ['ré','mi','fa','sol','la','si']
    P = permut(notes)
    os.chdir("C:\\Python33\\Gammes")
    fichier = open("gammes.txt", 'w')
    
    result, ctr = [], 1
    for x in P:
        for y in P:
            gamme = [ctr, 'do'] + x + ['do'] + y + ['do']
            result.append(gamme)
            fichier.write(str(gamme) + '\n')
            ctr += 1
    
    fichier.close()
    

    Le fichier qui en résulte fait plus de 50 Mo donc je ne peux pas le mettre en pièce jointe sur le forum... Je mets quand même les 100 premières lignes du fichier pour te donner une idée :
    [1, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do']
    [2, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'ré', 'fa', 'sol', 'la', 'si', 'do']
    [3, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'fa', 'ré', 'sol', 'la', 'si', 'do']
    [4, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'fa', 'sol', 'ré', 'la', 'si', 'do']
    [5, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'fa', 'sol', 'la', 'ré', 'si', 'do']
    [6, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'fa', 'sol', 'la', 'si', 'ré', 'do']
    [7, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'fa', 'mi', 'sol', 'la', 'si', 'do']
    [8, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'ré', 'mi', 'sol', 'la', 'si', 'do']
    [9, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'mi', 'ré', 'sol', 'la', 'si', 'do']
    [10, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'mi', 'sol', 'ré', 'la', 'si', 'do']
    [11, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'mi', 'sol', 'la', 'ré', 'si', 'do']
    [12, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'mi', 'sol', 'la', 'si', 'ré', 'do']
    [13, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'fa', 'sol', 'mi', 'la', 'si', 'do']
    [14, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'ré', 'sol', 'mi', 'la', 'si', 'do']
    [15, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'ré', 'mi', 'la', 'si', 'do']
    [16, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'mi', 'ré', 'la', 'si', 'do']
    [17, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'mi', 'la', 'ré', 'si', 'do']
    [18, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'mi', 'la', 'si', 'ré', 'do']
    [19, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'fa', 'sol', 'la', 'mi', 'si', 'do']
    [20, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'ré', 'sol', 'la', 'mi', 'si', 'do']
    [21, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'ré', 'la', 'mi', 'si', 'do']
    [22, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'la', 'ré', 'mi', 'si', 'do']
    [23, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'la', 'mi', 'ré', 'si', 'do']
    [24, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'la', 'mi', 'si', 'ré', 'do']
    [25, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'fa', 'sol', 'la', 'si', 'mi', 'do']
    [26, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'ré', 'sol', 'la', 'si', 'mi', 'do']
    [27, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'ré', 'la', 'si', 'mi', 'do']
    [28, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'la', 'ré', 'si', 'mi', 'do']
    [29, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'la', 'si', 'ré', 'mi', 'do']
    [30, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'fa', 'sol', 'la', 'si', 'mi', 'ré', 'do']
    [31, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'mi', 'sol', 'fa', 'la', 'si', 'do']
    [32, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'ré', 'sol', 'fa', 'la', 'si', 'do']
    [33, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'ré', 'fa', 'la', 'si', 'do']
    [34, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'fa', 'ré', 'la', 'si', 'do']
    [35, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'fa', 'la', 'ré', 'si', 'do']
    [36, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'fa', 'la', 'si', 'ré', 'do']
    [37, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'sol', 'mi', 'fa', 'la', 'si', 'do']
    [38, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'ré', 'mi', 'fa', 'la', 'si', 'do']
    [39, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'ré', 'fa', 'la', 'si', 'do']
    [40, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'fa', 'ré', 'la', 'si', 'do']
    [41, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'fa', 'la', 'ré', 'si', 'do']
    [42, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'fa', 'la', 'si', 'ré', 'do']
    [43, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'sol', 'fa', 'mi', 'la', 'si', 'do']
    [44, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'ré', 'fa', 'mi', 'la', 'si', 'do']
    [45, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'ré', 'mi', 'la', 'si', 'do']
    [46, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'mi', 'ré', 'la', 'si', 'do']
    [47, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'mi', 'la', 'ré', 'si', 'do']
    [48, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'mi', 'la', 'si', 'ré', 'do']
    [49, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'sol', 'fa', 'la', 'mi', 'si', 'do']
    [50, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'ré', 'fa', 'la', 'mi', 'si', 'do']
    [51, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'ré', 'la', 'mi', 'si', 'do']
    [52, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'la', 'ré', 'mi', 'si', 'do']
    [53, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'la', 'mi', 'ré', 'si', 'do']
    [54, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'la', 'mi', 'si', 'ré', 'do']
    [55, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'sol', 'fa', 'la', 'si', 'mi', 'do']
    [56, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'ré', 'fa', 'la', 'si', 'mi', 'do']
    [57, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'ré', 'la', 'si', 'mi', 'do']
    [58, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'la', 'ré', 'si', 'mi', 'do']
    [59, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'la', 'si', 'ré', 'mi', 'do']
    [60, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'fa', 'la', 'si', 'mi', 'ré', 'do']
    [61, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'mi', 'sol', 'la', 'fa', 'si', 'do']
    [62, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'ré', 'sol', 'la', 'fa', 'si', 'do']
    [63, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'ré', 'la', 'fa', 'si', 'do']
    [64, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'la', 'ré', 'fa', 'si', 'do']
    [65, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'la', 'fa', 'ré', 'si', 'do']
    [66, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'la', 'fa', 'si', 'ré', 'do']
    [67, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'sol', 'mi', 'la', 'fa', 'si', 'do']
    [68, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'ré', 'mi', 'la', 'fa', 'si', 'do']
    [69, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'ré', 'la', 'fa', 'si', 'do']
    [70, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'la', 'ré', 'fa', 'si', 'do']
    [71, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'la', 'fa', 'ré', 'si', 'do']
    [72, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'la', 'fa', 'si', 'ré', 'do']
    [73, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'sol', 'la', 'mi', 'fa', 'si', 'do']
    [74, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'ré', 'la', 'mi', 'fa', 'si', 'do']
    [75, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'ré', 'mi', 'fa', 'si', 'do']
    [76, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'mi', 'ré', 'fa', 'si', 'do']
    [77, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'mi', 'fa', 'ré', 'si', 'do']
    [78, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'mi', 'fa', 'si', 'ré', 'do']
    [79, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'sol', 'la', 'fa', 'mi', 'si', 'do']
    [80, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'ré', 'la', 'fa', 'mi', 'si', 'do']
    [81, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'ré', 'fa', 'mi', 'si', 'do']
    [82, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'fa', 'ré', 'mi', 'si', 'do']
    [83, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'fa', 'mi', 'ré', 'si', 'do']
    [84, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'fa', 'mi', 'si', 'ré', 'do']
    [85, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'sol', 'la', 'fa', 'si', 'mi', 'do']
    [86, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'ré', 'la', 'fa', 'si', 'mi', 'do']
    [87, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'ré', 'fa', 'si', 'mi', 'do']
    [88, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'fa', 'ré', 'si', 'mi', 'do']
    [89, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'fa', 'si', 'ré', 'mi', 'do']
    [90, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'la', 'fa', 'si', 'mi', 'ré', 'do']
    [91, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'mi', 'sol', 'la', 'si', 'fa', 'do']
    [92, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'ré', 'sol', 'la', 'si', 'fa', 'do']
    [93, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'ré', 'la', 'si', 'fa', 'do']
    [94, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'la', 'ré', 'si', 'fa', 'do']
    [95, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'la', 'si', 'ré', 'fa', 'do']
    [96, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'mi', 'sol', 'la', 'si', 'fa', 'ré', 'do']
    [97, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'ré', 'sol', 'mi', 'la', 'si', 'fa', 'do']
    [98, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'ré', 'mi', 'la', 'si', 'fa', 'do']
    [99, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'ré', 'la', 'si', 'fa', 'do']
    [100, 'do', 'ré', 'mi', 'fa', 'sol', 'la', 'si', 'do', 'sol', 'mi', 'la', 'ré', 'si', 'fa', 'do']
    
  • Merci! Je présenterai cette partie de l'ensemble des possibilités et expliquerai qu'à la main, il faudrait 3 mois pour tout écrire à raison de 4 gammes par minutes, sans dormir ni manger!

    Bon après, toutes les solutions combinatoires ne sont pas exploitables musicalement...
Connectez-vous ou Inscrivez-vous pour répondre.