projects
/
minwii.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
xtreme programming step1 : gestion des fichiers xml dans la boîte de dialogue d'ouver...
[minwii.git]
/
src
/
songs
/
musicxmltosong.py
diff --git
a/src/songs/musicxmltosong.py
b/src/songs/musicxmltosong.py
index
1724fc4
..
39df188
100755
(executable)
--- a/
src/songs/musicxmltosong.py
+++ b/
src/songs/musicxmltosong.py
@@
-9,7
+9,7
@@
import sys
from types import StringTypes
from xml.dom.minidom import parse
from optparse import OptionParser
from types import StringTypes
from xml.dom.minidom import parse
from optparse import OptionParser
-from Song import Song
+
#
from Song import Song
# Do4 <=> midi 60
OCTAVE_REF = 4
# Do4 <=> midi 60
OCTAVE_REF = 4
@@
-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.n
om, note.n
ame, 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) :
@@
-170,7
+192,7
@@
def _getNodeValue(node, path, default=_marker) :
else :
return default
else :
return default
-def musicXml2Song(input,
output,
partIndex=0, printNotes=False) :
+def musicXml2Song(input, partIndex=0, printNotes=False) :
if isinstance(input, StringTypes) :
input = open(input, 'r')
if isinstance(input, StringTypes) :
input = open(input, 'r')
@@
-187,6
+209,9
@@
def musicXml2Song(input, output, partIndex=0, printNotes=False) :
if printNotes :
part.pprint()
if printNotes :
part.pprint()
+
+ return part
+
# divisions de la noire
# divisions = 0
# divisions de la noire
# divisions = 0
@@
-223,10
+248,10
@@
def main() :
options, args = op.parse_args()
options, args = op.parse_args()
- if len(args) !=
2
:
+ if len(args) !=
1
:
raise SystemExit(op.format_help())
raise SystemExit(op.format_help())
- musicXml2Song(args[0],
args[1],
partIndex=options.partIndex, printNotes=options.printNotes)
+ musicXml2Song(args[0], partIndex=options.partIndex, printNotes=options.printNotes)