Mercurial > hg > syncopation-dataset
diff Syncopation models/music_objects.py @ 23:df1e7c378ee0
fixed KTH, and WNBD
author | csong <csong@eecs.qmul.ac.uk> |
---|---|
date | Sun, 12 Apr 2015 13:06:17 +0100 |
parents | 2dbc09ca8013 |
children | 08c298f47917 |
line wrap: on
line diff
--- a/Syncopation models/music_objects.py Thu Apr 09 23:49:16 2015 +0100 +++ b/Syncopation models/music_objects.py Sun Apr 12 13:06:17 2015 +0100 @@ -61,7 +61,7 @@ return str(self)[1:-1].replace(" ","") -def velocity_sequence_to_note_sequence(velocitySequence): +def velocity_sequence_to_note_sequence(velocitySequence, nextbarVelocitySequence = None): noteSequence = NoteSequence() @@ -80,8 +80,14 @@ # to set the duration for the last note if( len(noteSequence) > 0): - previousNote = noteSequence[-1] - previousNote.duration = len(velocitySequence) - previousNote.startTime + lastNote = noteSequence[-1] + + if nextbarVelocitySequence == None: + lastNote.duration = len(velocitySequence) - lastNote.startTime + else: + nextNoteStartTime = next((index for index, v in enumerate(nextbarVelocitySequence) if v), None) + lastNote.duration = len(velocitySequence) + nextNoteStartTime-lastNote.startTime + return noteSequence @@ -120,7 +126,6 @@ class Bar: - def __init__(self, rhythmSequence, timeSignature, ticksPerQuarter=None, qpmTempo=None, nextBar=None, prevBar=None): if isinstance(rhythmSequence, NoteSequence): self.noteSequence = rhythmSequence @@ -137,12 +142,15 @@ def get_note_sequence(self): if self.noteSequence == None: - self.noteSequence = velocitySequence_to_noteSequence(self.velocitySequence) + nextbarVelocitySequence = None + if self.nextBar != None: + nextbarVelocitySequence = self.nextBar.get_velocity_sequence() + self.noteSequence = velocity_sequence_to_note_sequence(self.velocitySequence, nextbarVelocitySequence) return self.noteSequence def get_velocity_sequence(self): if self.velocitySequence == None: - self.velocitySequence = noteSequence_to_velocitySequence(self.noteSequence) + self.velocitySequence = note_sequence_to_velocity_sequence(self.noteSequence) return self.velocitySequence def get_binary_sequence(self): @@ -171,7 +179,7 @@ # return the length of a bar in time units (ticks) def get_bar_ticks(self): - return calculate_bar_ticks(self.timeSignature.get_numerator(),self.timeSignature.get_denominator(), self.ticksPerQuarter) + return calculate_bar_ticks(self.timeSignature.get_numerator(),self.timeSignature.get_denominator(), self.tpq) class TimeSignature():