Mercurial > hg > syncopation-dataset
diff Syncopation models/music_objects.py @ 29:7a1730bbf15a
updating files with new text reading code
author | christopherh <christopher.harte@eecs.qmul.ac.uk> |
---|---|
date | Sun, 12 Apr 2015 22:37:56 +0100 |
parents | 08c298f47917 |
children | d9ac6e0d1daf |
line wrap: on
line diff
--- a/Syncopation models/music_objects.py Sun Apr 12 22:34:35 2015 +0100 +++ b/Syncopation models/music_objects.py Sun Apr 12 22:37:56 2015 +0100 @@ -1,5 +1,5 @@ -from basic_functions import ceiling, string_to_sequence, calculate_bar_ticks +from basic_functions import ceiling, string_to_sequence, calculate_bar_ticks, velocity_sequence_to_min_timespan import parameter_setter import rhythm_parser @@ -35,7 +35,7 @@ self.string_to_note_sequence(noteSequenceString) def string_to_note_sequence(self, noteSequenceString): - noteSequenceString = rhythm_parser.discardSpaces(noteSequenceString) + noteSequenceString = rhythm_parser.discard_spaces(noteSequenceString) # try: # Turning "(1,2,3),(4,5,6),(7,8,9)" into ["1,2,3","4,5,6,","7,8,9"] listStrings = noteSequenceString[1:-1].split("),(") @@ -50,15 +50,18 @@ # VelocitySequence is a list of float numbers class VelocitySequence(list): - def __init__(self, velocitySequenceString = None): - if velocitySequenceString != None: - self.string_to_velocity_sequence(velocitySequenceString) + def __init__(self, velocitySequence = None): + if velocitySequence != None: + if isinstance(velocitySequence,basestring): + self.string_to_velocity_sequence(velocitySequence) + elif isinstance(velocitySequence, list): + self+=velocitySequence def string_to_velocity_sequence(self,inputString): self.extend(string_to_sequence(inputString)) def to_string(self): - return str(self)[1:-1].replace(" ","") + return str(velocity_sequence_to_min_timespan(self))[1:-1].replace(" ","") def velocity_sequence_to_note_sequence(velocitySequence, nextbarVelocitySequence = None): @@ -112,7 +115,7 @@ velocitySequence += [0]*(noteSequence[-1].duration-1) # normalising velocity sequence between 0-1 - velocitySequence = [float(v)/max(velocitySequence) for v in velocitySequence] + velocitySequence = VelocitySequence([float(v)/max(velocitySequence) for v in velocitySequence]) return velocitySequence @@ -124,6 +127,12 @@ self[-1].set_next_bar(bar) super(BarList, self).append(bar) + def concat(self, barList): + while(len(barList)!=0): + localbar = barList[0] + self.append(localbar) + barList.remove(localbar) + class Bar: def __init__(self, rhythmSequence, timeSignature, ticksPerQuarter=None, qpmTempo=None, nextBar=None, prevBar=None): @@ -181,6 +190,13 @@ def get_bar_ticks(self): return calculate_bar_ticks(self.timeSignature.get_numerator(),self.timeSignature.get_denominator(), self.tpq) + def to_string(self, sequenceType=None): + if sequenceType==None or sequenceType=="v": + output = "v{"+self.get_velocity_sequence().to_string()+"}" + else: + output = "y{"+self.get_note_sequence().to_string()+"}" + return output + class TimeSignature(): def __init__(self, inputString):