projects
/
minwii.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
commentaires--
[minwii.git]
/
src
/
app
/
musicxml.py
diff --git
a/src/app/musicxml.py
b/src/app/musicxml.py
index
7eedf53
..
49e1984
100755
(executable)
--- a/
src/app/musicxml.py
+++ b/
src/app/musicxml.py
@@
-47,15
+47,12
@@
FR_NOTES = {'C' : u'Do',
_marker = []
class Part(object) :
_marker = []
class Part(object) :
-
- requiresExtendedScale = False
- scale = [55, 57, 59, 60, 62, 64, 65, 67, 69, 71, 72]
- quarterNoteLength = 400
-
+
def __init__(self, node, autoDetectChorus=True) :
self.node = node
self.notes = []
self.repeats = []
def __init__(self, node, autoDetectChorus=True) :
self.node = node
self.notes = []
self.repeats = []
+ self.distinctNotes = []
self._parseMusic()
self.verses = [[]]
self.chorus = []
self._parseMusic()
self.verses = [[]]
self.chorus = []
@@
-66,6
+63,7
@@
class Part(object) :
def _parseMusic(self) :
divisions = 0
previous = None
def _parseMusic(self) :
divisions = 0
previous = None
+ distinctNotesDict = {}
for measureNode in self.node.getElementsByTagName('measure') :
measureNotes = []
for measureNode in self.node.getElementsByTagName('measure') :
measureNotes = []
@@
-83,7
+81,13
@@
class Part(object) :
previous.addDuration(note)
continue
previous = note
previous.addDuration(note)
continue
previous = note
+
self.notes.extend(measureNotes)
self.notes.extend(measureNotes)
+
+ for note in measureNotes :
+ if not distinctNotesDict.has_key(note.midi) :
+ distinctNotesDict[note.midi] = True
+ self.distinctNotes.append(note)
# barres de reprises
try :
# barres de reprises
try :
@@
-94,6
+98,9
@@
class Part(object) :
barline = Barline(barlineNode, measureNotes)
if barline.repeat :
self.repeats.append(barline)
barline = Barline(barlineNode, measureNotes)
if barline.repeat :
self.repeats.append(barline)
+
+ self.distinctNotes.sort(lambda a, b : cmp(a.midi, b.midi))
+
def _findChorus(self):
""" le refrain correspond aux notes pour lesquelles
def _findChorus(self):
""" le refrain correspond aux notes pour lesquelles
@@
-273,37
+280,10
@@
class Note(Tone) :
self._duration = self.duration + note.duration
self.divisions = 1
self._duration = self.duration + note.duration
self.divisions = 1
-# @property
-# def midi(self) :
-# mid = DIATO_SCALE[self.step]
-# mid = mid + (self.octave - OCTAVE_REF) * 12
-# mid = mid + self.alter
-# return mid
-
@property
def duration(self) :
return self._duration / self.divisions
@property
def duration(self) :
return self._duration / self.divisions
-# @property
-# def name(self) :
-# name = '%s%d' % (self.step, self.octave)
-# if self.alter < 0 :
-# alterext = 'b'
-# else :
-# alterext = '#'
-# 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
-
@property
def column(self):
return self.scale.index(self.midi)
@property
def column(self):
return self.scale.index(self.midi)