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):