Publicité

Annonce

Réduire
Aucune annonce.

Python et la musique

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • #46
    Effectivement, PowerPoint ou son équivalent LibreOffice seront plus orienté page à l'italienne. À la limite, le module Draw de LibreOffice s'en approcherait plus. L'insertion de texte est facilité par F2 puis clic souris (moins efficace que le double clic ou le Ctrl-Enter. Les liaisons sont aussi moins efficaces (clic sur le connecteur parmi 12, liaison d'un point d'accroche à un autre, et le lien reste sur ce point d'accroche, même si ce n'est pas pertinent).

    Cela surprend de voir un PDF aussi long, mais pourquoi pas, vu que c'est prévu pour une lecture à l'écran.

    J'ai cru reconnaître ta triade préférée.
    http://www.sinerj.org/~loyer/piano/

    It's never too late to learn to play the piano. (tip of the day)

    Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

    Commentaire


    • #47
      Envoyé par Alain44 Voir le message
      Il y a une vidéo d'utilisation de Scapple ici (7 minutes):
      https://www.literatureandlatte.com/v...ctionSmall.mp4
      Merci Alain, je vais la regarder. Par ailleurs, j'aime bien Scrivener, c'est un excellent outil. Sur le PC, pour ses exportations PDF, j'aime bien HelpNDoc.

      Commentaire


      • #48
        Ca vient, je finalise le PDF et je le poste. J'ouvrirai un sujet spécifique sur les bases de la Set Theory dans la mesure où celle-ci peut-être appréhendée sans ordinateur, avec juste une feuille de papier et de quoi noter. Ensuite, à voir. Est-ce qu'on fait un sujet différent avec Pyhon/Music21, Open Music et Opusmodus, où on prend les trois ce qui permet de comparer les différences et similitudes de fonctions ?

        Commentaire


        • #49
          Envoyé par deb76 Voir le message
          Est-ce qu'on fait un sujet différent avec Pyhon/Music21, Open Music et Opusmodus, où on prend les trois ce qui permet de comparer les différences et similitudes de fonctions ?
          Juste mon petit point de vue: si possible garder un sujet séparé pour chaque, + un sujet sur la comparaison.
          J'aime bien les sujets séparés, quitte à faire référence avec un petit lien à une explication située dans un des autres sujets.
          Mais ce n'est que mon petit avis.

          En effet on s'aperçoit que ces sujets "un peu marginaux" au départ, suscitent de nombreux commentaires... Il est plus facile de regrouper ensuite, que de séparer ensuite. (question d'entropie de départ )
          Roland RD2000, Nord Piano 2 HP, KORG PA900
          FocusRite Scarlett 6i6, Lucas Nano 300, 2xMonitors CM30,
          MacBookPro + Logic Pro X + divers VSTs (AU), Zoom Q2n, Boss VE-5

          Cheminer ou arriver: quel est mon but ? La musique est un chemin infini...

          Commentaire


          • #50
            (Entropie? Une détente adiabatique conduirait plutôt à éparpiller des contributions initialement rassemblées... mais je m'égare. :oups)

            @deb76, fais au mieux. Ton approche me semblait pas mal : on part des notions "de base" de la Set Theory, et la programmation ne sert que pour illustrer. Après, si les réactions portent plus sur le codage, reprendre sur le fil ad'hoc est toujours possible.
            http://www.sinerj.org/~loyer/piano/

            It's never too late to learn to play the piano. (tip of the day)

            Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

            Commentaire


            • #51
              Envoyé par floyer Voir le message
              (Entropie? Une détente adiabatique conduirait plutôt à éparpiller des contributions initialement rassemblées... mais je m'égare. :oups)
              HS: Je pensais à l'entropie en tant que mesure d'un désordre initial. Fin du HS.
              Désolé pour le HS.
              Roland RD2000, Nord Piano 2 HP, KORG PA900
              FocusRite Scarlett 6i6, Lucas Nano 300, 2xMonitors CM30,
              MacBookPro + Logic Pro X + divers VSTs (AU), Zoom Q2n, Boss VE-5

              Cheminer ou arriver: quel est mon but ? La musique est un chemin infini...

              Commentaire


              • #52
                Bonjour, j'ai donc ouvert un sujet sur Initiation à la Set Theory et fait un PDF sur les bases de la Set Theory et auquel j'ai ajouté d'autres documents autour du jazz, du classique et du contemporain.
                Pour le texte sur les Bases de la Set Theory, j'ai mis plus de temps que prévu car je l'ai rédigé avec l'éditeur en Latex texmaker que m'a fait découvrir floyer. Je ne maitrise pas totalement les différentes possibilités de mise en page (article, communication, livre, chapitre de livre) que je trouve assez capricieuses et ce même en utilisant l'Assistant. Dès que je change, je me heurte à des erreurs récurrentes. Mais bon, comme il y en a une qui fonctionne bien, je l'ai utilisée.
                Le texte et le sujet ouvert sont ici :

                Commentaire


                • #53
                  Un petit essai des graphes polaires sous Matplot lib.

                  Il convient de charger les définitions suivantes :

                  Code:
                  import matplotlib.pyplot as plt
                  import math
                  
                  def show_chord(ech):
                      fig = plt.figure()
                      ax = fig.add_axes([1.0, 1.0, 1.0, 1.0], polar=True)
                      ax.set_theta_zero_location("N")
                      ax.set_ylim(-1,1)
                      ax.set_yticks([])
                      ax.set_xticks([])
                      for i in range(12):
                          ax.text((12-i)*2*math.pi/12,1.2, str(i),
                                  horizontalalignment='center')
                   
                      ech.append(ech[0])
                      ax.plot(list(map(lambda ch: 2*math.pi*(12-ch)/12,ech)),
                              [1] * len(ech))
                      
                  
                      plt.show()
                  Ensuite, il suffit de taper show_chord( [1, 2, 7] ) ou {1,2,7} représente un accord dans la set-theory pour obtenir :



                  On notera que le sens appliqué par le grapheur est le sens trigonométrique (anti-horaire), si bien que la fonction qui calcule les angles commence par inverser la classe de hauteur (12-ch) ou (12-i).

                  Les labels (0..11) sont mis à la main (boucle autour de ax.text). On peut aussi utiliser les fonctions du grapheur pour mettre des graduations, mais cela crée des lignes pointillées depuis le centre.

                  PS: L'accord est évidemment choisi complètement au hasard.
                  Dernière modification par floyer, 08 janvier 2017, 18h42.
                  http://www.sinerj.org/~loyer/piano/

                  It's never too late to learn to play the piano. (tip of the day)

                  Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

                  Commentaire


                  • #54
                    Là, je suis devant ce superbe cercle et j'en bave d'envie car je n'obtiens rien. Déjà, show_chord( [1, 2, 7] ) c'est bien comme ceci : def show_chord([1, 2, 7]): ? car je me heurte à un message qui me signale une erreur de syntaxe...
                    J'ai vérifié avec d'autres graphes avec matplotlib.pyplot et ça fonctionne.
                    Sinon, pour ce que j'en vois, c'est vraiment excellent. Je suppose qu'il est possible comme avec Open Music d'insérer plusieurs ECH ?

                    Commentaire


                    • #55
                      IL faut entrer (copier/coller) et exécuter le programme, ce qui crée une fonction show_chord ensuite, dans la fenêtre IPython, taper show_chord( [1,2,7] ) sans le def.

                      Je viens de voir que je me suis emmêlé les pinceaux avec les images. Dans le message précédent, je remets à jour la copie d'écran, qui contient dans la fenêtre de droite la commande à taper.

                      --

                      Pour plusieurs ECH :

                      Code:
                      import matplotlib.pyplot as plt
                      import math
                      
                      def show_chord(ech):
                          fig = plt.figure()
                          ax = fig.add_axes([0.0, 0.0, 1, 1], polar=True)
                          ax.set_theta_zero_location("N")
                          ax.set_theta_direction(-1)
                      
                          ax.set_ylim(-1,1)
                          ax.set_yticks([])
                          ax.set_xticks([])
                          for i in range(12):
                              ax.text(i*2*math.pi/12,1.2, str(i),
                                      horizontalalignment='center')
                         
                          ech.append(ech[0])
                          ax.plot(list(map(lambda ch: 2*math.pi*ch/12, ech)),
                                  [1] * len(ech))
                      
                          plt.show("png")
                          
                      def show_chord2(liste_ech):
                          fig = plt.figure()
                          ax = fig.add_axes([1.0, 1.0, 1.0, 1.0], polar=True)
                          ax.set_theta_zero_location("N")
                          ax.set_theta_direction(-1)
                          
                          ax.set_ylim(0,1)
                          ax.set_yticks([])
                          ax.set_xticks([])
                          for i in range(12):
                              ax.text(i*2*math.pi/12,1.2, str(i),
                                      horizontalalignment='center')
                       
                          
                          for ech in liste_ech:
                              ech.append(ech[0])
                              ax.plot(list(map(lambda ch: 2*math.pi*ch/12, ech)),
                                      [1] * len(ech))
                          
                          plt.show()
                      Là, cela donne :




                      Tu notes que la fonction show_chord2 prends comme paramètre, non plus une liste d'entiers, mais un liste de listes. Cela permet de taper show_chord2( [[1,2,7], [0,1,6]] )


                      EDIT/PS: On notera la nouvelle ligne ax.set_theta_direction(-1) dans la partie "code" qui passe en trigonométrique inverse (sens horaire). Du coup, il n'y a plus de 12-ch ou 12-i. (Les images ne sont pas à jour à ce niveau).

                      PS2 : La ligne ax = fig.add_axes([1.0, 1.0, 1.0, 1.0], polar=True) place la figure en coordonnées 1.0, 1.0, qu'importe, c'est recadré ensuite (mais si tu a un graphe avec des sous-graphe, il faudra utiliser les deux premiers nombres pour placer les sous-graphes les uns par rapport aux autres), ensuite 1.0, 1.0 donne la taille. On peut réduire pour avoir des cercles plus petits.

                      PS3: Si cela t'intéresse, une option de sauvegarde dans un fichier permettrait d'inclure des cercles chromatiques dans tes fichiers LaTeX. Je devrais pouvoir le coder facilement. Et quitte à modifier, trier les membres d'un ECH éviterait des accords croisés si l'on tappe show_chord( [ 0,3,9,6] ) par exemple.
                      Dernière modification par floyer, 08 janvier 2017, 23h20.
                      http://www.sinerj.org/~loyer/piano/

                      It's never too late to learn to play the piano. (tip of the day)

                      Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

                      Commentaire


                      • #56
                        Ca fonctionne avec les deux programmes tant sur Mac que sur le PC avec Anaconda Navigator. Merci et bravo. Pédagogiquement, c'est vraiment intéressant de pouvoir créer des représentations circulaires ainsi.
                        Sinon,
                        IL faut entrer (copier/coller) et exécuter le programme, ce qui crée une fonction show_chord ensuite, dans la fenêtre IPython, taper show_chord( [1,2,7] ) sans le def.
                        N'étant pas habitué à Python, je n'aurais pas pensé à cette façon de faire.
                        Tu notes que la fonction show_chord2 prends comme paramètre, non plus une liste d'entiers, mais un liste de listes. Cela permet de taper show_chord2( [[1,2,7], [0,1,6]] )
                        Oui, c'est excellent. Je viens de tester avec 5 ECH et c'est bien pratique.
                        On notera la nouvelle ligne ax.set_theta_direction(-1) dans la partie "code" qui passe en trigonométrique inverse (sens horaire). Du coup, il n'y a plus de 12-ch ou 12-i. (Les images ne sont pas à jour à ce niveau).
                        Je ne connais pas assez Python pour l'avoir remarqué par moi-même, mais j'en comprends bien le sens, on a sur certains calculs avec Open Music et Opusmodus le même renversement avec -1.
                        Si cela t'intéresse, une option de sauvegarde dans un fichier permettrait d'inclure des cercles chromatiques dans tes fichiers LaTeX. Je devrais pouvoir le coder facilement.
                        Ah oui, cela serait effectivement très pertinent.
                        Et quitte à modifier, trier les membres d'un ECH éviterait des accords croisés si l'on tappe show_chord( [ 0,3,9,6] ) par exemple.
                        Qu'entends-tu par là exactement, par éviter des accords croisés ? Car pour ma part, cela ne me gêne pas d'avoir des figures différentes à partir du moment où elles se différencient par les couleurs. C'est pour moi un plus. Mais une seconde possibilité comme tu le soulignes pourrait-être aussi intéressante.

                        Commentaire


                        • #57
                          Si tu tapes show_chord( [0,3,9,6] ) tu comprendras . Le problème est qu'un ECH est "mathématiquement" un ensemble et l'ordre dans lequel les membres sont listés ne doit pas avoir d'influence. Ici, au lieu de tracer un carré comme on s'y attend, on a un polygone croisé.

                          Il y a dans Python la notion d'ensemble (différente de celle de liste), mais cela obligerait à une conversion en liste avant affichage... pas sûr que cela aide.

                          Je vois ce soir pour la sauvegarde en PNG... ou mieux (pour LaTeX), PDF.
                          http://www.sinerj.org/~loyer/piano/

                          It's never too late to learn to play the piano. (tip of the day)

                          Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

                          Commentaire


                          • #58
                            Envoyé par floyer Voir le message
                            Si tu tapes show_chord( [0,3,9,6] ) tu comprendras . Le problème est qu'un ECH est "mathématiquement" un ensemble et l'ordre dans lequel les membres sont listés ne doit pas avoir d'influence. Ici, au lieu de tracer un carré comme on s'y attend, on a un polygone croisé.
                            Il y a dans Python la notion d'ensemble (différente de celle de liste), mais cela obligerait à une conversion en liste avant affichage... pas sûr que cela aide.
                            Effectivement, et contrairement à Open Music qui trace bien un carré, ce que je viens de vérifier.

                            Je vois ce soir pour la sauvegarde en PNG... ou mieux (pour LaTeX), PDF.
                            Les deux sont intéressants et surtout en Latex. Mais déjà, la sauvegarde en PNG cela serait bien car comme tu as pu le voir avec le PDF sur la Set Theory, où j'ai inséré du code Latex mais aussi des PNG, avec la fonction "\includegraphics" la qualité des illustrations est respectée, et en plus on peut régler leur taille avec le paramètre scale.

                            Commentaire


                            • #59
                              Ci-joint une version modifiée. Il y a l'option fichier="nom de fichier". matplotlib s'adapte au type de fichier (PNG, PDF... selon l'extension). il y a aussi l'option taille=XXX qui permet de faire varier la taille. Ces options sont optionnelles : pas de fichier => pas de sauvegarde, pas de taille => taille par défaut (1).

                              Ainsi, tu peux taper :

                              affiche_liste_ech([[1,2,7], [0,1,6] , [1,3,7]],fichier="d:/essai.png", taille=0.5)
                              affiche_liste_ech([[1,2,7], [0,1,6] , [1,3,7]],fichier="d:/essai.png")
                              affiche_liste_ech([[1,2,7], [0,1,6] , [1,3,7]])


                              Je n'ai pas mis deux variantes (plusieurs ech ou un seul).

                              Ceci dit, tu peux aussi remplacer la ligne :

                              def affiche_liste_ech(liste_ech, fichier=None, taille=1):

                              par

                              def affiche_liste_ech(*liste_ech, fichier=None, taille=1):

                              Avec l'étoile en plus, il faudra taper affiche_liste_ech([1,2,7], [0,1,6] , [1,3,7]) : au lieu d'un unique paramètre liste de listes, tu as plusieurs paramètres listes... plus pratique en général, mais ne permet pas de l'utiliser avec une liste de listes qui serait produite par une boucle par exemple.

                              Code:
                              import matplotlib.pyplot as plt
                              import math
                                
                              def affiche_liste_ech(liste_ech, fichier=None, taille=1):
                                  fig = plt.figure()
                                  ax = fig.add_axes([0.0, 0.0, taille, taille], polar=True)
                                  ax.set_theta_zero_location("N")
                                  ax.set_theta_direction(-1)
                                  
                                  ax.set_ylim(0,1)
                                  ax.set_yticks([])
                                  ax.set_xticks([])
                                  for i in range(12):
                                      ax.text(i*2*math.pi/12,1.2, str(i),
                                              horizontalalignment='center')
                                  
                                  for ech in liste_ech:
                                      ech = ech.copy()
                                      ech.sort()
                                      ech.append(ech[0])
                                      ax.plot(list(map(lambda ch: 2*math.pi*ch/12, ech)),
                                              [1] * len(ech))
                              
                                  if fichier != None:
                                      fig.savefig(fichier, bbox_inches='tight')
                              PS: On note le copy() qui copie la liste... au cas où le programme appelant souhaite ne pas voir son paramètre modifié, et surtout, sort() pour afficher un carré avec [0,3,9,6].
                              http://www.sinerj.org/~loyer/piano/

                              It's never too late to learn to play the piano. (tip of the day)

                              Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

                              Commentaire


                              • #60
                                C'est excellent. Et cette ligne affiche_liste_ech([[1,2,7], [0,1,6] , [1,3,7]],fichier="d:/essai.png", taille=0.5) me suffit amplement car on peut tout faire avec, elle permet de choisir la dimension du cercle (hyper pratique), le nombre d'ECH à insérer, y compris un seul. J'ai fait le test pour le carré, avec sort() et s'affiche bien le carré.
                                En plus, comme je n'ai toujours pas résolu l'implémentation de Music21 sur les Mac (à cause de ce foutu password que je n'arrive pas à contourner avec Sierra), le programme tourne aussi bien sur Mac sans Music21 et le PC, bien entendu, où est installé Music21. Et très honnêtement, je trouve très intéressant de pouvoir aussi se passer de Music21, c'est plus généraliste, plus ouvert à d'autres utilisateurs.
                                Ah si, juste une petite chose, la sauvegarde en png ne s'effectue pas car j'ai un message d'erreur Permission denied : 'd:/essai.png' mais c'est normal je n'ai pas de disque D. Comment puis-je changer le chemin pour la sauvegarde .

                                En tout cas bravo. Je vais l'utiliser dans mes tutos et indiquer que tu en es l'auteur.
                                D'ailleurs, à ce rythme là, tu avoir plusieurs programmes qui ont toutes les chances d'intéresser ceux qui s'intéressent à la Set Theory. Ca mériterait que tu le fasses savoir, connaître.
                                Dernière modification par Invité, 10 janvier 2017, 00h30.

                                Commentaire

                                Chargement...
                                X