Skip to content
This repository has been archived by the owner on Nov 6, 2018. It is now read-only.

Guitar #13

Open
Karduin opened this issue Jan 29, 2018 · 8 comments
Open

Guitar #13

Karduin opened this issue Jan 29, 2018 · 8 comments

Comments

@Karduin
Copy link
Collaborator

Karduin commented Jan 29, 2018

@parmentelat
Bonjour Thierry,
Sujet qui intéresse, étant moi aussi guitariste et bassiste.
Sur le schéma les notes sur les cordes à vides ne sont pas représentées.
C'est volontaire ou c'est un peu plus difficile ?
J'ai rajouté un petite explication pour les non musiciens, si tu pense que ce n'est pas utile n’hésite pas à le supprimer. ;-)

@PapiSido
Copy link
Collaborator

Intéressant!!
Je ne suis pas guitariste, même plutôt à l'autre bout de la chaîne: musique ancienne et flute à bec, un peu de musique irlandaise aussi , mais intéressé aux questions musicales ( modes, tempéraments etc..). J'avais commencé des choses en java (cf mon repository ) et j'envisageais javascript + WebAudioAPI ( un autre MOOC qui malheureusement a démarré à peu prés en même temps que le MOOC Python, et qui du fait s'est trouvé relégué au second plan). Donc je vous suis et si vous acceptez d'autres types de musique, je jouerai quelques "partitions" aussi

@parmentelat
Copy link
Owner

@Karduin : j'ai intégré ton explication directement dans le README
Je n'ai pas sous-titré les cordes à vide parce que je n'y ai pas pensé en fait;
non ça ne paraît pas trop difficile, et ce serait en effet pertinent si on ou voulait traiter d'autres gammes..

@PapiSido : c'est un sujet essentiellement utilitaire; en fait je m'apprêtais à dessiner ça à la main lorsque je me suis aperçu que c'était assez simple à faire avec matplotlib et que ça ferait une illustration. Dans l'état c'est très basique, mais si ça inspire il ne faut pas hésiter à proposer des améliorations, ou des supports pour d'autres instruments...

@Karduin
Copy link
Collaborator Author

Karduin commented Jan 30, 2018

Je vais essayer avec pygame, dans un premier temps sur 12 cases.
J'ai bricolé un mini set d'images que je met à disposition.

  • fretboard_12.png : Manche 12 cases
  • root_dot.png : Fondamentale
  • dot.png : autre note

@Karduin
Copy link
Collaborator Author

Karduin commented Jan 30, 2018

J'ai ajouté une squelette de classe (voir gamme.py).

@Karduin
Copy link
Collaborator Author

Karduin commented Feb 3, 2018

ça marche pas trop mal...
J'aime pas trop ce passage dans le code..

            if idx > 11 : # Si j'arrive au bout du tuple je retourne au début
                idx = idx - 12 # Il doit y avoir plus pythonique...

Sinon voila pour l'utilisation

gamme1 = gamme('majeure', (0, 2, 2, 1, 2, 2, 2, 1))
print(gamme1.nom)

majeure

gamme1.inter()

1/2 ton
1 ton
1 ton
1/2 ton
1 ton
1 ton
1 ton
1/2 ton

gamme1.tone("C")
print(gamme1.myScale)

('C', 'D', 'E', 'F', 'G', 'A', 'B')

mi = corde("E")
mi.cases()
print(mi.caseNote)

('E', 'F', 'G', 'A', 'B', 'C', 'D')

print(mi.caseNumber)

(0, 1, 3, 5, 7, 8, 10)

@Karduin
Copy link
Collaborator Author

Karduin commented Feb 4, 2018

Voila une version fonctionnelle avec pygame.

J'ai corrigé certaines incohérences. Cela fonctionne (enfin à priori) avec n'importe quelle gamme et n'importe quelle corde.

Pour le moment je ne gère pas la 12éme case, mais comme ce n'est qu'une répétition de ce qui est déjà fait et en supposant que l'on prenne un manche standard sur une électrique de 22 cases en ajoutant 12 à la liste des cases on s'en sort.

        for myItem in allCases:
            if myItem in self.toneUsed:
                self.startNote = myItem
                break
            if idx > 11 : # Si j'arrive au bout du tuple je retourne au début
                idx = idx - 12 # Il doit y avoir plus pythonique...

Ces deux extraits ne me paraisse pas très pythonique , si quelqu'un passe par là et à une idée...
Peut on faire comme une compréhension de liste avec un tuple ?

@parmentelat
Copy link
Owner

J'ai un peu bidouillé ça; plutôt que de modifier ton fichier, j'en ai créé un autre 'music.py' parce que ça faisait beaucoup de changements. C'est juste pour montrer quelques angles d'améliorations possibles.

Quand j'aurai plus de temps je reprendrai le notebook pour utiliser ce code-là, et/ou pour utiliser les clés clavier de pygame pour voir aussi d'autres gammes, et en option montrer le nom des notes...

On passe son temps à faire des calculs modulo 12, donc ta réponse c'est idx = idx % 12

@Karduin
Copy link
Collaborator Author

Karduin commented Feb 6, 2018

Merci, je vais prendre le temps de décortiquer ce que tu as fait pour bien comprendre.
Effectivement il y a pas mal de petites améliorations possibles.
une variation autour de gamme.py... petite blague musicale ;-)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants