Affichage des noms de note de français. pprint plus verbeux (affichage partie / refrain).
[minwii.git] / src / songs / musicxmltosong.py
index 1724fc4..0d4bb99 100755 (executable)
@@ -20,6 +20,15 @@ DIATO_SCALE = {'C' : 60,
                'G' : 67,
                'A' : 69,
                'B' : 71}
                'G' : 67,
                'A' : 69,
                'B' : 71}
+
+FR_NOTES = {'C' : u'Do',
+            'D' : u'Ré',
+            'E' : u'Mi',
+            'F' : u'Fa',
+            'G' : u'Sol',
+            'A' : u'La',
+            'B' : u'Si'}
+
 _marker = []
 
 class Part(object) :
 _marker = []
 
 class Part(object) :
@@ -81,13 +90,16 @@ class Part(object) :
     def iterNotes(self) :
         "exécution de la chanson avec l'alternance couplets / refrains"
         for verse in self.verses :
     def iterNotes(self) :
         "exécution de la chanson avec l'alternance couplets / refrains"
         for verse in self.verses :
+            print "---partie---"
             repeats = len(verse[0].lyrics)
             if repeats > 1 :
                 for i in range(repeats) :
                     # couplet
             repeats = len(verse[0].lyrics)
             if repeats > 1 :
                 for i in range(repeats) :
                     # couplet
+                    print "---couplet%d---" % i
                     for note in verse :
                         yield note, i
                     # refrain
                     for note in verse :
                         yield note, i
                     # refrain
+                    print "---refrain---"
                     for note in self.chorus :
                         yield note, 0
             else :
                     for note in self.chorus :
                         yield note, 0
             else :
@@ -96,7 +108,7 @@ class Part(object) :
         
     def pprint(self) :
         for note, verseIndex in self.iterNotes() :
         
     def pprint(self) :
         for note, verseIndex in self.iterNotes() :
-            print note.name, note.midi, note.duration, note.lyrics[verseIndex]
+            print note.nom, note.name, note.midi, note.duration, note.lyrics[verseIndex]
         
         
 
         
         
 
@@ -136,6 +148,16 @@ class Note(object) :
         name = '%s%s' % (name, abs(self.alter) * alterext)
         return name
     
         name = '%s%s' % (name, abs(self.alter) * alterext)
         return name
     
+    @property
+    def nom(self) :
+        name = FR_NOTES[self.step]
+        if self.alter < 0 :
+            alterext = 'b'
+        else :
+            alterext = '#'
+        name = '%s%s' % (name, abs(self.alter) * alterext)
+        return name
+    
 
 class Lyric(object) :
     
 
 class Lyric(object) :