Mercurial > hg > syncopation-dataset
changeset 2:031e2ccb1fb6
Added rhythm parser and parameter setter
author | Chunyang Song <csong@eecs.qmul.ac.uk> |
---|---|
date | Fri, 20 Mar 2015 18:28:08 +0000 |
parents | b2da092dc2e0 |
children | 1c99053c55cb |
files | Syncopation models/BasicFuncs.py Syncopation models/BasicFuncs.pyc Syncopation models/KTH.py Syncopation models/LHL.py Syncopation models/LHL.pyc Syncopation models/PRS.py Syncopation models/ParameterSetter.py Syncopation models/ParameterSetter.pyc Syncopation models/RhythmParser.py Syncopation models/SG.py Syncopation models/TMC.py Syncopation models/TMC.pyc Syncopation models/TOB.py Syncopation models/TimeSignature.pkl Syncopation models/WNBD.py Syncopation models/WNBD.pyc Syncopation models/clave.txt Syncopation models/design/composition.svg Syncopation models/design/gui design.svg Syncopation models/design/gui design2.svg Syncopation models/main.py Syncopation models/rhythmbase/clave.txt |
diffstat | 22 files changed, 2140 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Syncopation models/BasicFuncs.py Fri Mar 20 18:28:08 2015 +0000 @@ -0,0 +1,163 @@ +# This python file is a collection of basic functions that are used in the syncopation models. + +import math + +# The concatenation function is used to concatenate two sequences. +def concatenate(seq1,seq2): + return seq1+seq2 + +# The repetition function is to concatenate a sequence to itself for 'times' number of times. +def repeat(seq,times): + new_seq = list(seq) + if times >= 1: + for i in range(times-1): + new_seq = concatenate(new_seq,seq) + else: + #print 'Error: repetition times needs to be no less than 1.' + new_seq = [] + return new_seq + +# The subdivision function is to equally subdivide a sequence into 'divisor' number of segments. +def subdivide(seq,divisor): + subSeq = [] + if len(seq) % divisor != 0: + print 'Error: rhythmic sequence cannot be equally subdivided.' + else: + n = len(seq) / divisor + start , end = 0, n + for i in range(divisor): + subSeq.append(seq[start : end]) + start = end + end = end + n + return subSeq + + +# The ceiling function is to round each number inside a sequence up to its nearest integer. +def ceiling(seq): + seq_ceil = [] + for s in seq: + seq_ceil.append(int(math.ceil(s))) + return seq_ceil + +# The find_divisor function returns a list of all possible divisors for a length of sequence. +def find_divisor(number): + divisors = [1] + for i in range(2,number+1): + if number%i ==0: + divisors.append(i) + return divisors + +# The find_divisor function returns a list of all possible divisors for a length of sequence. +def find_prime_factors(number): + prime_factors = find_divisor(number) + + def is_prime(num): + if num < 2: + return False + if num == 2: + return True + else: + for div in range(2,num): + if num % div == 0: + return False + return True + + for i in range(len(prime_factors)-1,0,-1): + if is_prime(prime_factors[i]) == False: + del prime_factors[i] + + return prime_factors + +# The min_timeSpan function searches for the shortest possible time-span representation for a sequence. +def get_min_timeSpan(seq): + min_ts = [1] + for d in find_divisor(len(seq)): + segments = subdivide(seq,d) + if len(segments)!=0: + del min_ts[:] + for s in segments: + min_ts.append(s[0]) + if sum(min_ts) == sum(seq): + break + return min_ts + +# get_note_indices returns all the indices of all the notes in this sequence +def get_note_indices(seq): + note_indices = [] + + for index in range(len(seq)): + if seq[index] != 0: + note_indices.append(index) + + return note_indices + +# The get_H returns a sequence of metrical weight for a certain metrical level (horizontal), +# given the sequence of metrical weights in a hierarchy (vertical) and a sequence of subdivisions. +def get_H(weight_seq,subdivision_seq, level): + H = [] + #print len(weight_seq), len(subdivision_seq), level + if (level <= len(subdivision_seq)-1) & (level <= len(weight_seq)-1): + if level == 0: + H = repeat([weight_seq[0]],subdivision_seq[0]) + else: + H_pre = get_H(weight_seq,subdivision_seq,level-1) + for h in H_pre: + H = concatenate(H, concatenate([h], repeat([weight_seq[level]],subdivision_seq[level]-1))) + else: + print 'Error: a subdivision factor or metrical weight is not defined for the request metrical level.' + return H + +# The get_subdivision_seq function returns the subdivision sequence of several common time-signatures defined by GTTM, +# or ask for the top three level of subdivision_seq manually set by the user. +def get_subdivision_seq(timesig, L_max): + subdivision_seq = [] + + if timesig == '2/4' or timesig == '4/4': + subdivision_seq = [1,2,2] + elif timesig == '3/4' or timesig == '3/8': + subdivision_seq = [1,3,2] + elif timesig == '6/8': + subdivision_seq = [1,2,3] + elif timesig == '9/8': + subdivision_seq = [1,3,3] + elif timesig == '12/8': + subdivision_seq = [1,4,3] + elif timesig == '5/4' or timesig == '5/8': + subdivision_seq = [1,5,2] + elif timesig == '7/4' or timesig == '7/8': + subdivision_seq = [1,7,2] + elif timesig == '11/4' or timesig == '11/8': + subdivision_seq = [1,11,2] + else: + print 'Time-signature',timesig,'is undefined. Please indicate subdivision sequence for this requested time-signature, e.g. [1,2,2] for 4/4 meter.' + for i in range(3): + s = int(input('Enter the subdivision factor at metrical level '+str(i)+':')) + subdivision_seq.append(s) + + if L_max > 2: + subdivision_seq = subdivision_seq + [2]*(L_max-2) + else: + subdivision_seq = subdivision_seq[0:L_max+1] + + return subdivision_seq + + # The split_by_bar function seperates the score representation of rhythm by bar lines, + # resulting in a list representingbar-by-bar rhythm sequence, + # e.g. rhythm = ['|',[ts1,td1,v1], [ts2,td2,v2], '|',[ts3,td3,v3],'|'...] + # rhythm_bybar = [ [ [ts1,td1,v1], [ts2,td2,v2] ], [ [ts3,td3,v3] ], [...]] +# def split_by_bar(rhythm): +# rhythm_bybar = [] +# bar_index = [] +# for index in range(len(rhythm)): +# if rhythm[index] == '|': + +# return rhythm_bybar + +# def yseq_to_vseq(yseq): +# vseq = [] + +# return vseq + + +# # testing +# print find_prime_factors(10) \ No newline at end of file
--- a/Syncopation models/KTH.py Sun Oct 05 21:52:41 2014 +0100 +++ b/Syncopation models/KTH.py Fri Mar 20 18:28:08 2015 +0000 @@ -5,7 +5,7 @@ ''' ## Problems! Note indices, post bar -from basic_functions import get_min_timeSpan, get_note_indices, repeat +from BasicFuncs import get_min_timeSpan, get_note_indices, repeat # To find the nearest power of 2 equal to or less than the given number def roundDownPower2(number):
--- a/Syncopation models/LHL.py Sun Oct 05 21:52:41 2014 +0100 +++ b/Syncopation models/LHL.py Fri Mar 20 18:28:08 2015 +0000 @@ -3,7 +3,7 @@ Institution: Centre for Digital Music, Queen Mary University of London ''' -from basic_functions import concatenate, repeat, subdivide, ceiling +from BasicFuncs import concatenate, repeat, subdivide, ceiling terminal_nodes = [] # Global variable, storing all the terminal nodes from recursive tree structure in time order
--- a/Syncopation models/PRS.py Sun Oct 05 21:52:41 2014 +0100 +++ b/Syncopation models/PRS.py Fri Mar 20 18:28:08 2015 +0000 @@ -3,7 +3,7 @@ Institution: Centre for Digital Music, Queen Mary University of London ''' -from basic_functions import repeat, subdivide, ceiling, get_min_timeSpan +from BasicFuncs import repeat, subdivide, ceiling, get_min_timeSpan def get_cost(seq,next_seq): seq = get_min_timeSpan(seq) # converting to the minimum time-span format
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Syncopation models/ParameterSetter.py Fri Mar 20 18:28:08 2015 +0000 @@ -0,0 +1,90 @@ +''' +Author: Chunyang Song +Institution: Centre for Digital Music, Queen Mary University of London +''' + +# Set the parameters: subdivision_seq, weight_seq, L_max, strong_beat_level + +L_max = 5 + +# {'key': time-signature} : +# {'value': [subdivision_seq, theoretical beat-level represented by index in the subdivision_seq list]} +timesigBase = { + '2/2': [[1,2,2,2,2],1], + '3/2': [[1,3,2,2,2],1], + '4/2': [[1,2,2,2,2],1], + '2/4': [[1,2,2,2,2],1], + '3/4': [[1,3,2,2,2],1], + '4/4': [[1,2,2,2,2],2], + '5/4': [[1,5,2,2,2],1], + '7/4': [[1,7,2,2,2],1], + '3/8': [[1,3,2,2,2],1], + '5/8': [[1,5,2,2,2],1], + '6/8': [[1,2,3,2,2],1], + '9/8': [[1,3,3,2,2],1], + '12/8':[[1,2,2,3,2],2], +} + + +def addTimesig(timesig, subdivision_seq, beat_level): + if isTSValid(timesig,subdivision_seq,beat_level): + if timesig in timesigBase: + print 'This time-signature is existed already.' + else: + timesigBase[timesig] = [subdivision_seq, beat_level] + writeTimesig() + +def updateTimesig(timesig, subdivision_seq, beat_level): + if isTSValid(timesig,subdivision_seq,beat_level): + if timesig in timesigBase: + print 'Original settings for', timesig, ':',timesigBase[timesig] + timesigBase[timesig] = [subdivision_seq, beat_level] + print 'Changed into:',timesigBase[timesig] + writeTimesig() + +def isTSValid(timesig, subdivision_seq, beat_level): + isValid = False + if ('/' not in timesig) or (not timesig.split('/')[0].isdigit()) or (not timesig.split('/')[1].isdigit()): + print 'Error: invalid time-signature. Please indicate in the form of fraction, e.g. 4/4, 6/8 or 3/4.' + elif subdivision_seq != [s for s in subdivision_seq if isinstance(s,int)]: + print 'Error: invalid subdivision sequence. Please indicate in the form of list of numbers, e.g [1,2,2,2,2].' + elif beat_level >= len(subdivision_seq): + print 'Error: beat-level exceeds the range of subdivision sequence list.' + else: + isValid = True + return isValid + +def writeTimesig(): + import cPickle as pickle + timesigFile = open('TimeSignature.pkl', 'wb') + pickle.dump(timesigBase, timesigFile) + timesigFile.close() + +def readTimesig(): + import cPickle as pickle + timesigFile = open('TimeSignature.pkl','rb') + data = pickle.load(timesigFile) + return data + timesigFile.close() + +def viewTimesigBase(): + data = readTimesig() + for timesig, settings in data.items(): + print timesig, settings + +def set_L_max(number): + L_max = number + +def get_subdivision_seq(timesig): + if timesig in readTimesig(): + return timesigBase[timesig][0] + else: + print 'Error: the subdivision sequence for this time-signature is not defined.' + return None + +def get_beat_level(timesig): + if timesig in readTimesig(): + return timesigBase[timesig][1] + else: + print 'Error: the subdivision sequence for this time-signature is not defined.' + return None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Syncopation models/RhythmParser.py Fri Mar 20 18:28:08 2015 +0000 @@ -0,0 +1,76 @@ +''' +Author: Chunyang Song +Institution: Centre for Digital Music, Queen Mary University of London +''' + +# Parse the rhythm file and return a list of Bar objects + +import ParameterSetter + +class Bar: + + def __init__(self, rhythm_seq, subdivision_seq, beat_level): + self.rhythm_seq = rhythm_seq + self.subdivision_seq = subdivision_seq + self.beat_level = beat_level + + def makeBar(self): + return [self.rhythm_seq, self.subdivision_seq, self.beat_level] + + +current_timesig = '' +Piece = [] + +def readRhythm(fileName): + try: + f = file(fileName) + + bar = f.readline() + + # While the current line has contents + while len(bar) > 0: + rhythm_seq = [] + + info = bar.split(';') + + if isInfoValid(info): + for i in info: + if i[0] == 't': + current_timesig = i[i.find('{')+1:i.find('}')] + elif i[0] == 'q': + rhythmString = i[i.find('{')+1:i.find('}')] + rhythm_seq = map(int,rhythmString.split(',')) + else: + print 'Error: %s is not recognisable. Please check this rhythm file: %s.' %(i[0], fileName) + + #Piece.append(Bar(rhythm_seq, subdivision_seq, beat_level).makeBar()) + else: + break + + bar = f.readline() + + return Piece + except: + print 'Unexpected error.'#, sys.exc_info()[0] + raise + +def isInfoValid(info): + # If two parts of information is not seperated by ; + # if 't' in info and 'q' in info: + # print 'Error: time-signature and rhythm sequence needs ";" to seperate. Please check this rhythm file: %s.' %fileName + # Piece = None + # break + # elif '{' not in info and '}' not in info: + # print 'Error: information needs to be enclosed by "{ }". Please check this rhythm file: %s.' %fileName + # Piece = None + # break + # else: + return True + +# To check whether the given time-signature is existed; if not then requires user to add in the new time-signature +#def checkTimesig(input): + + +# TESTING +print readRhythm("rhythmbase/clave.txt") +
--- a/Syncopation models/SG.py Sun Oct 05 21:52:41 2014 +0100 +++ b/Syncopation models/SG.py Fri Mar 20 18:28:08 2015 +0000 @@ -4,7 +4,7 @@ ''' -from basic_functions import get_H, get_min_timeSpan +from BasicFuncs import get_H, get_min_timeSpan def get_syncopation(seq, subdivision_seq, weight_seq, L_max, rhythm_category): syncopation = None
--- a/Syncopation models/TMC.py Sun Oct 05 21:52:41 2014 +0100 +++ b/Syncopation models/TMC.py Fri Mar 20 18:28:08 2015 +0000 @@ -4,7 +4,7 @@ ''' -from basic_functions import get_H, ceiling, get_min_timeSpan +from BasicFuncs import get_H, ceiling, get_min_timeSpan # The get_metricity function calculates the metricity for a binary sequence with given sequence of metrical weights in a certain metrical level. def get_metricity(seq, H):
--- a/Syncopation models/TOB.py Sun Oct 05 21:52:41 2014 +0100 +++ b/Syncopation models/TOB.py Fri Mar 20 18:28:08 2015 +0000 @@ -4,7 +4,7 @@ ''' -from basic_functions import ceiling, find_divisor, get_min_timeSpan +from BasicFuncs import ceiling, find_divisor, get_min_timeSpan # This function calculates the syncopation value for TOB model. def get_syncopation(seq):
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Syncopation models/TimeSignature.pkl Fri Mar 20 18:28:08 2015 +0000 @@ -0,0 +1,132 @@ +(dp1 +S'2/4' +p2 +(lp3 +(lp4 +I1 +aI2 +aI2 +aI2 +aI2 +aaI1 +asS'3/2' +p5 +(lp6 +(lp7 +I1 +aI3 +aI2 +aI2 +aI2 +aaI1 +asS'3/4' +p8 +(lp9 +(lp10 +I1 +aI3 +aI2 +aI2 +aI2 +aaI1 +asS'12/8' +p11 +(lp12 +(lp13 +I1 +aI2 +aI2 +aI3 +aI2 +aaI2 +asS'3/8' +p14 +(lp15 +(lp16 +I1 +aI3 +aI2 +aI2 +aI2 +aaI1 +asS'2/2' +p17 +(lp18 +(lp19 +I1 +aI2 +aI2 +aI2 +aI2 +aaI1 +asS'6/8' +p20 +(lp21 +(lp22 +I1 +aI2 +aI3 +aI2 +aI2 +aaI1 +asS'5/4' +p23 +(lp24 +(lp25 +I1 +aI5 +aI2 +aI2 +aI2 +aaI1 +asS'4/2' +p26 +(lp27 +(lp28 +I1 +aI2 +aI2 +aI2 +aI2 +aaI1 +asS'7/4' +p29 +(lp30 +(lp31 +I1 +aI7 +aI2 +aI2 +aI2 +aaI1 +asS'5/8' +p32 +(lp33 +(lp34 +I1 +aI5 +aI2 +aI2 +aI2 +aaI1 +asS'4/4' +p35 +(lp36 +(lp37 +I1 +aI2 +aI2 +aI2 +aI2 +aaI2 +asS'9/8' +p38 +(lp39 +(lp40 +I1 +aI3 +aI3 +aI2 +aI2 +aaI1 +as. \ No newline at end of file
--- a/Syncopation models/WNBD.py Sun Oct 05 21:52:41 2014 +0100 +++ b/Syncopation models/WNBD.py Fri Mar 20 18:28:08 2015 +0000 @@ -3,8 +3,9 @@ Institution: Centre for Digital Music, Queen Mary University of London ''' -from basic_functions import repeat, get_note_indices +from BasicFuncs import repeat, get_note_indices +# To find the product of multiple numbers def cumu_multiply(numbers): product = 1 for n in numbers: @@ -15,6 +16,7 @@ syncopation = None num_beats = cumu_multiply(subdivision_seq[0:strong_beat_level+1]) # num_beats is the number of strong beats + if len(seq)%num_beats != 0: print 'Error: the length of sequence is not subdivable by the subdivision factor in subdivision_seq.' else: @@ -60,6 +62,6 @@ nextnote_index = note_indices[i+1] total += measure_pernote(note_indices[i],nextnote_index) - syncopation = float(total) / len(note_indices) + #syncopation = float(total) / len(note_indices) - return syncopation + return total
--- a/Syncopation models/clave.txt Sun Oct 05 21:52:41 2014 +0100 +++ b/Syncopation models/clave.txt Fri Mar 20 18:28:08 2015 +0000 @@ -1,1 +1,2 @@ -son; 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0; 4/4; mono; 2 +|1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0;'4/4' +|1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0;'4/4' \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Syncopation models/design/composition.svg Fri Mar 20 18:28:08 2015 +0000 @@ -0,0 +1,606 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1260" + height="765" + id="svg3999" + version="1.1" + inkscape:version="0.48.2 r9819" + sodipodi:docname="composition.svg"> + <defs + id="defs4001" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="651.40769" + inkscape:cy="287.63456" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1236" + inkscape:window-height="797" + inkscape:window-x="39" + inkscape:window-y="2" + inkscape:window-maximized="0" /> + <metadata + id="metadata4004"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-287.36218)"> + <text + sodipodi:linespacing="125%" + id="text3767" + y="538.15533" + x="360.69235" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px" + y="538.15533" + x="360.69235" + id="tspan3769" + sodipodi:role="line" /></text> + <rect + ry="0" + rx="16.225515" + y="535.91711" + x="239.29541" + height="32.890137" + width="117.40916" + id="rect3903" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.72483671;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="307.04614" + y="543.93628" + id="text3905" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + x="307.04614" + y="543.93628" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + id="tspan3907">Add Bar</tspan></text> + <text + sodipodi:linespacing="125%" + id="text3761-6" + y="656.98975" + x="213.82579" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px" + y="656.98975" + x="213.82579" + id="tspan3763-2" + sodipodi:role="line">Time-signature: </tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70770591;stroke-opacity:1" + id="rect3765-1" + width="132.54497" + height="25.52512" + x="380.89713" + y="656.41852" + rx="0" /> + <text + sodipodi:linespacing="125%" + id="text3767-5" + y="657.51514" + x="396.75983" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px" + y="657.51514" + x="396.75983" + id="tspan3769-6" + sodipodi:role="line">2/4</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70277411;stroke-opacity:1" + id="rect3771-8" + width="26.096935" + height="25.889765" + x="488.03195" + y="656.41852" /> + <path + sodipodi:type="star" + style="opacity:0.98999999;fill:#000000;stroke:#000000;stroke-opacity:1" + id="path3773-7" + sodipodi:sides="3" + sodipodi:cx="503" + sodipodi:cy="192.09448" + sodipodi:r1="13.892444" + sodipodi:r2="6.9462218" + sodipodi:arg1="-0.52807445" + sodipodi:arg2="0.5191231" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 515,185.09448 -5.96891,10.44615 -5.96891,10.44616 L 497,195.59448 l -6.06218,-10.3923 12.03109,-0.0539 z" + transform="matrix(0.68676146,0,0,0.72928915,154.95264,527.99476)" + inkscape:transform-center-x="0.021349695" + inkscape:transform-center-y="2.5132459" /> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="552.85956" + y="653.10809" + id="text4265" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4267" + x="552.85956" + y="653.10809" + style="font-size:21.23117828px">or</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="205" + y="710.36218" + id="text4269" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4271" + x="205" + y="710.36218" /></text> + <text + sodipodi:linespacing="125%" + id="text3761-6-5" + y="654.43927" + x="586.40173" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px" + y="654.43927" + x="586.40173" + id="tspan3763-2-2" + sodipodi:role="line">Subvision sequence: </tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.38355601;stroke-opacity:1" + id="rect4294" + width="32.876015" + height="32.890137" + x="791.29541" + y="651.91711" + rx="4.5433445" + ry="0" /> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="213.82579" + y="721.03638" + id="text4308" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4310" + x="213.82579" + y="721.03638" + style="font-size:21.23117828px">Tatum: 1/ </tspan></text> + <rect + rx="0" + y="723.41852" + x="314.89713" + height="25.52512" + width="132.54497" + id="rect4312" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70770591;stroke-opacity:1" /> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="327.71646" + y="720.59137" + id="text4314" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4316" + x="327.71646" + y="720.59137" + style="font-size:21.23117828px">16</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.8597151;stroke-opacity:1" + id="rect4322" + width="165.16982" + height="32.890137" + x="755.89716" + y="593.91711" + rx="22.825863" + ry="0" /> + <text + transform="scale(0.97040516,1.0304974)" + sodipodi:linespacing="125%" + id="text4324" + y="598.27899" + x="863.51453" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan4326" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="598.27899" + x="863.51453" + sodipodi:role="line">Duplicate</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.79475152;stroke-opacity:1" + id="rect4341" + width="141.15112" + height="32.890137" + x="563.91583" + y="594.91711" + rx="19.506567" + ry="0" /> + <text + transform="scale(0.97040516,1.0304974)" + sodipodi:linespacing="125%" + id="text4343" + y="599.24945" + x="656.3844" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan4345" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="599.24945" + x="656.3844" + sodipodi:role="line">Remove</tspan></text> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="218.97829" + y="782.17181" + id="text4358" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4360" + x="218.97829" + y="782.17181" + style="font-size:21.23117828px">Current Bar: </tspan></text> + <rect + style="opacity:0.98999999;fill:#0000d4;fill-opacity:0;stroke:#000000;stroke-width:1.18038225;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4362" + width="753.64178" + height="190.31403" + x="204" + y="778.36218" + rx="17.968319" /> + <rect + rx="18.794174" + y="490.72192" + x="188.35974" + height="552.28052" + width="788.28052" + id="rect4364" + style="opacity:0.98999999;fill:#0000d4;fill-opacity:0;stroke:#000000;stroke-width:2.05648279;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <rect + ry="0" + rx="19.506567" + y="998.91711" + x="515.91583" + height="32.890137" + width="141.15112" + id="rect4366" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.79475152;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="606.92053" + y="991.29272" + id="text4368" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + x="610.30011" + y="991.29272" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + id="tspan4370">Save as </tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.99114859px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 228,851.36218 701.41612,0" + id="path4372" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4374" + d="m 228,875.36218 701.41612,0" + style="fill:none;stroke:#000000;stroke-width:0.99114859px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99114859px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 228,895.36218 701.41612,0" + id="path4376" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4378" + d="m 228,915.36218 701.41612,0" + style="fill:none;stroke:#000000;stroke-width:0.99114859px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 228,850.36218 0,66" + id="path4380" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4382" + d="m 248,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 268,850.36218 0,66" + id="path4384" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4386" + d="m 288,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 308,850.36218 0,66" + id="path4388" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4390" + d="m 328,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 348,850.36218 0,66" + id="path4392" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4394" + d="m 368,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 388,850.36218 0,66" + id="path4396" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4398" + d="m 408,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 428,850.36218 0,66" + id="path4400" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4402" + d="m 448,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 468,850.36218 0,66" + id="path4404" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4406" + d="m 488,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 508,850.36218 0,66" + id="path4408" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4410" + d="m 528,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 548,850.36218 0,66" + id="path4412" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4414" + d="m 628,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 648,850.36218 0,66" + id="path4416" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4418" + d="m 668,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 688,850.36218 0,66" + id="path4420" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4422" + d="m 708,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 728,850.36218 0,66" + id="path4424" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4426" + d="m 748,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 768,850.36218 0,66" + id="path4428" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4430" + d="m 788,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 808,850.36218 0,66" + id="path4432" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4434" + d="m 828,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 848,850.36218 0,66" + id="path4436" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4438" + d="m 868,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 888,850.36218 0,66" + id="path4440" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4442" + d="m 908,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 928,850.36218 0,66" + id="path4444" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4450" + d="m 568,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 588,850.36218 0,66" + id="path4452" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4454" + d="m 608,850.36218 0,66" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4488" + y="599.73566" + x="248.86272" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px" + y="599.73566" + x="248.86272" + id="tspan4490" + sodipodi:role="line">Select Bar: </tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70770591;stroke-opacity:1" + id="rect4492" + width="132.54497" + height="25.52512" + x="378.89713" + y="598.41852" + rx="0" /> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70277411;stroke-opacity:1" + id="rect4494" + width="26.096935" + height="25.889765" + x="486.03195" + y="598.41852" /> + <path + sodipodi:type="star" + style="opacity:0.98999999;fill:#000000;stroke:#000000;stroke-opacity:1" + id="path4496" + sodipodi:sides="3" + sodipodi:cx="503" + sodipodi:cy="192.09448" + sodipodi:r1="13.892444" + sodipodi:r2="6.9462218" + sodipodi:arg1="-0.52807445" + sodipodi:arg2="0.5191231" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 515,185.09448 -5.96891,10.44615 -5.96891,10.44616 L 497,195.59448 l -6.06218,-10.3923 12.03109,-0.0539 z" + transform="matrix(0.68676146,0,0,0.72928915,152.95265,469.99475)" + inkscape:transform-center-x="0.021349695" + inkscape:transform-center-y="2.5132459" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 356,808.36218 37,0" + id="path4498" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:28.30823708000000138px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" + x="449.3671" + y="503.92758" + id="text3795" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + id="tspan3797" + x="449.3671" + y="503.92758">Composition Panel</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.38355601;stroke-opacity:1" + id="rect4294-3" + width="32.876015" + height="32.890137" + x="841.56201" + y="650.91711" + rx="4.5433445" + ry="0" /> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.38355601;stroke-opacity:1" + id="rect4294-0" + width="32.876015" + height="32.890137" + x="891.56201" + y="650.91711" + rx="4.5433445" + ry="0" /> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Syncopation models/design/gui design.svg Fri Mar 20 18:28:08 2015 +0000 @@ -0,0 +1,432 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1052.3622" + height="744.09448" + id="svg2" + version="1.1" + inkscape:version="0.48.2 r9819" + sodipodi:docname="gui design.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="672.7506" + inkscape:cy="423.32172" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1379" + inkscape:window-height="838" + inkscape:window-x="530" + inkscape:window-y="0" + inkscape:window-maximized="0" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-308.2677)"> + <rect + style="opacity:0.98999999000000005;fill:none;stroke:#000000;stroke-width:1.337;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" + id="rect2985" + width="753.31415" + height="477.23138" + x="266.89438" + y="363.54309" + rx="33.123104" + ry="34.960182" /> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.72483671;stroke-opacity:1" + id="rect3755" + width="117.40916" + height="32.890137" + x="338.63147" + y="749.41803" + rx="16.225515" + ry="0" /> + <text + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0000d4;fill-opacity:1;stroke:none;font-family:Sans" + x="473.30325" + y="590.03131" + id="text3757" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + x="473.30325" + y="590.03131" + style="font-size:21.23117828px;text-align:center;text-anchor:middle;fill:#0000d4" + id="tspan3805">Measure Syncopation</tspan></text> + <text + sodipodi:linespacing="125%" + id="text3761" + y="685.52722" + x="305.99515" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px" + y="685.52722" + x="305.99515" + id="tspan3763" + sodipodi:role="line">Model: </tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70770591;stroke-opacity:1" + id="rect3765" + width="132.54497" + height="25.52512" + x="390.33875" + y="683.82635" + rx="0" /> + <text + sodipodi:linespacing="125%" + id="text3767" + y="684.11182" + x="406.48941" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px" + y="684.11182" + x="406.48941" + id="tspan3769" + sodipodi:role="line">LHL</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70277411;stroke-opacity:1" + id="rect3771" + width="26.096935" + height="25.889765" + x="497.47357" + y="683.82635" /> + <path + sodipodi:type="star" + style="opacity:0.98999999;fill:#000000;stroke:#000000;stroke-opacity:1" + id="path3773" + sodipodi:sides="3" + sodipodi:cx="503" + sodipodi:cy="192.09448" + sodipodi:r1="13.892444" + sodipodi:r2="6.9462218" + sodipodi:arg1="-0.52807445" + sodipodi:arg2="0.5191231" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 515,185.09448 -5.96891,10.44615 -5.96891,10.44616 L 497,195.59448 l -6.06218,-10.3923 12.03109,-0.0539 z" + transform="matrix(0.68676146,0,0,0.72928915,164.39426,555.40257)" + inkscape:transform-center-x="0.021349695" + inkscape:transform-center-y="2.5132459" /> + <text + sodipodi:linespacing="125%" + id="text3777" + y="438.55078" + x="467.77954" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0000d4;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px;text-align:center;text-anchor:middle;fill:#0000d4" + y="438.55078" + x="467.77954" + sodipodi:role="line" + id="tspan3821">Generate rhythm</tspan></text> + <text + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="470.87473" + y="484.34186" + id="text3781" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + id="tspan3783" + x="470.87473" + y="484.34186" + style="font-size:21.23117828px">or</tspan></text> + <rect + rx="0" + y="628.50537" + x="389.33875" + height="25.52512" + width="132.54497" + id="rect3785" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70770591;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" + x="508.3844" + y="390.31915" + id="text3795" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + id="tspan3797" + x="508.3844" + y="390.31915">Syncopation Toolkit</tspan></text> + <rect + ry="0" + rx="12.633319" + y="747.41803" + x="516.63147" + height="32.890137" + width="91.415726" + id="rect3833" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.63958704;stroke-opacity:1" /> + <text + transform="scale(0.97040516,1.0304974)" + sodipodi:linespacing="125%" + id="text3835" + y="748.20734" + x="579.44379" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan3837" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="748.20734" + x="582.82336" + sodipodi:role="line">Save as </tspan></text> + <text + transform="scale(0.97040516,1.0304974)" + sodipodi:linespacing="125%" + id="text3869" + y="749.17767" + x="409.41177" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan3871" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="749.17767" + x="409.41177" + sodipodi:role="line">Measure</tspan></text> + <path + inkscape:connector-curvature="0" + id="path3891" + d="m 279.71307,578.36218 399.45817,0" + style="fill:none;stroke:#000000;stroke-width:0.75380325px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path3893" + d="m 283,814.36218 721.9865,0" + style="fill:none;stroke:#000000;stroke-width:1.01341391px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="302" + y="832.36218" + id="text3895" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="302" + y="832.36218" + id="tspan3899">author, institution, copyright...</tspan></text> + <rect + ry="0" + rx="16.225515" + y="533.41803" + x="446.63147" + height="32.890137" + width="117.40916" + id="rect3903" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.72483671;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="520.70587" + y="539.57037" + id="text3905" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + x="520.70587" + y="539.57037" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + id="tspan3907">Browse...</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1.01341391px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 283,412.36218 721.9865,0" + id="path3911" + inkscape:connector-curvature="0" /> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.72483671;stroke-opacity:1" + id="rect3913" + width="117.40916" + height="32.890137" + x="543.63147" + y="681.41803" + rx="16.225515" + ry="0" /> + <text + transform="scale(0.97040516,1.0304974)" + sodipodi:linespacing="125%" + id="text3915" + y="685.13104" + x="620.66364" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan3917" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="685.13104" + x="620.66364" + sodipodi:role="line">Explain</tspan></text> + <path + inkscape:connector-curvature="0" + id="path3919" + d="m 283,416.36218 721.9865,0" + style="fill:none;stroke:#000000;stroke-width:1.01341391px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.75380325px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 680.44216,415.63309 0,399.45817" + id="path3926" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="860.15234" + y="591.36218" + id="text3947" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3949" + x="860.15234" + y="591.36218">Display</tspan><tspan + sodipodi:role="line" + x="860.15234" + y="641.36218" + id="tspan3951">Panel</tspan></text> + <g + transform="translate(13,-9)" + id="g4007"> + <rect + ry="0" + rx="19.77331" + y="486.34555" + x="289.67914" + height="34.828163" + width="143.08127" + id="rect4009" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.82340407;stroke-opacity:1" /> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="374.00424" + y="494.83429" + id="text4011" + sodipodi:linespacing="125%"><tspan + id="tspan4013" + sodipodi:role="line" + x="374.00424" + y="494.83429" + style="font-size:21.23117828px;text-align:center;text-anchor:middle">Compose</tspan></text> + </g> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="305.99515" + y="631.18457" + id="text4512" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4514" + x="305.99515" + y="631.18457" + style="font-size:21.23117828px">Rhythm: </tspan></text> + <text + sodipodi:linespacing="125%" + id="text4529" + y="539.96655" + x="310.11716" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px" + y="539.96655" + x="310.11716" + id="tspan4531" + sodipodi:role="line">MIDI:</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.72483671;stroke-opacity:1" + id="rect4533" + width="117.40916" + height="32.890137" + x="544.63147" + y="625.41803" + rx="16.225515" + ry="0" /> + <text + transform="scale(0.97040516,1.0304974)" + sodipodi:linespacing="125%" + id="text4535" + y="628.84747" + x="621.69452" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan4537" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="628.84747" + x="621.69452" + sodipodi:role="line">Browse...</tspan></text> + <rect + rx="0" + y="536.59961" + x="359.72751" + height="25.52512" + width="78.847549" + id="rect3785-9" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.54583991;stroke-opacity:1" /> + <g + transform="matrix(0.51226407,0,0,1,436.06716,45.60255)" + id="g4007-3"> + <rect + ry="0" + rx="19.77331" + y="486.34555" + x="289.67914" + height="34.828163" + width="143.08127" + id="rect4009-0" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.82340407;stroke-opacity:1" /> + </g> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="611.1748" + y="539.93158" + id="text4512-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4514-4" + x="611.1748" + y="539.93158" + style="font-size:21.23117828px">Parse</tspan></text> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Syncopation models/design/gui design2.svg Fri Mar 20 18:28:08 2015 +0000 @@ -0,0 +1,587 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1052.3622" + height="744.09448" + id="svg3037" + version="1.1" + inkscape:version="0.48.2 r9819" + sodipodi:docname="gui design2.svg"> + <defs + id="defs3039" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="533.46975" + inkscape:cy="476.62951" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1440" + inkscape:window-height="852" + inkscape:window-x="-3" + inkscape:window-y="0" + inkscape:window-maximized="0" /> + <metadata + id="metadata3042"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-308.2677)"> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:1.42536926;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2985" + width="772.68378" + height="542.57593" + x="90.973335" + y="321.09619" + rx="0" + ry="39.747078" /> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70770591;stroke-opacity:1" + id="rect3765" + width="132.54497" + height="25.52512" + x="111.78729" + y="583.02972" + rx="0" /> + <text + sodipodi:linespacing="125%" + id="text3767" + y="583.3869" + x="118.41238" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:15px" + y="583.3869" + x="118.41238" + id="tspan3769" + sodipodi:role="line">Rhythm score</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70277411;stroke-opacity:1" + id="rect3771" + width="26.096935" + height="25.889765" + x="218.92212" + y="583.02972" /> + <path + sodipodi:type="star" + style="opacity:0.98999999;fill:#000000;stroke:#000000;stroke-opacity:1" + id="path3773" + sodipodi:sides="3" + sodipodi:cx="503" + sodipodi:cy="192.09448" + sodipodi:r1="13.892444" + sodipodi:r2="6.9462218" + sodipodi:arg1="-0.52807445" + sodipodi:arg2="0.5191231" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 515,185.09448 -5.96891,10.44615 -5.96891,10.44616 L 497,195.59448 l -6.06218,-10.3923 12.03109,-0.0539 z" + transform="matrix(0.68676146,0,0,0.72928915,-114.15719,454.60598)" + inkscape:transform-center-x="0.021349695" + inkscape:transform-center-y="2.5132459" /> + <text + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" + x="334.6926" + y="338.1142" + id="text3795" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + id="tspan3797" + x="334.6926" + y="338.1142">Syncopation Toolkit</tspan></text> + <path + inkscape:connector-curvature="0" + id="path3893" + d="m 124.44855,837.56559 721.9865,0" + style="fill:none;stroke:#000000;stroke-width:1.01341391px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="347.44855" + y="858.56555" + id="text3895" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="347.44855" + y="858.56555" + id="tspan3899">author, institution, copyright...</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1.01341391px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 114.44855,359.56559 721.9865,0" + id="path3911" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3919" + d="m 114.44855,363.56559 721.9865,0" + style="fill:none;stroke:#000000;stroke-width:1.01341391px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.60953158;stroke-opacity:1" + id="rect4009" + width="78.405975" + height="34.828163" + x="118.12769" + y="378.54895" + rx="10.835421" + ry="0" /> + <text + sodipodi:linespacing="125%" + id="text4011" + y="390.22748" + x="162.18417" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="390.22748" + x="165.56375" + sodipodi:role="line" + id="tspan4013">Open </tspan></text> + <g + transform="matrix(0.51226407,0,0,1,-9.48429,169.80596)" + id="g4007-3"> + <rect + ry="0" + rx="19.77331" + y="486.34555" + x="289.67914" + height="34.828163" + width="143.08127" + id="rect4009-0" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.82340407;stroke-opacity:1" /> + </g> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="145.85217" + y="660.45911" + id="text4512-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4514-4" + x="145.85217" + y="660.45911" + style="font-size:21.23117828px"><<Pre</tspan></text> + <g + id="g3225" + transform="matrix(0.64452614,0,0,1,564.20215,167.80596)"> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.82340407;stroke-opacity:1" + id="rect3227" + width="143.08127" + height="34.828163" + x="289.67914" + y="486.34555" + rx="19.77331" + ry="0" /> + </g> + <text + sodipodi:linespacing="125%" + id="text3229" + y="658.51825" + x="780.63837" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:21.23117828px" + y="658.51825" + x="780.63837" + id="tspan3231" + sodipodi:role="line">Next>></tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1.67899835px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 259.79856,480.36218 0,86" + id="path3235" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3237" + d="m 832.24777,480.36218 0,86" + style="fill:none;stroke:#000000;stroke-width:1.67899835px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="131" + y="773.36218" + id="text3239" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3241" + x="131" + y="773.36218" + style="font-size:20px">Syncopation for the current bar:</tspan></text> + <rect + style="opacity:0.98999999;fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1.54018879;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3243" + width="574.60986" + height="33" + x="258.43835" + y="579.36218" + rx="6.0292158" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="475" + y="451.36218" + id="text3245" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3247" + x="475" + y="451.36218" + style="font-size:20px">Bar: </tspan></text> + <rect + ry="0" + rx="16.225515" + y="655.6214" + x="271.08002" + height="32.890137" + width="117.40916" + id="rect3262" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.72483671;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="339.80026" + y="658.15686" + id="text3264" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + x="339.80026" + y="658.15686" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + id="tspan3266">Duplicate</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.72483671;stroke-opacity:1" + id="rect3268" + width="117.40916" + height="32.890137" + x="431.08002" + y="655.6214" + rx="16.225515" + ry="0" /> + <text + transform="scale(0.97040516,1.0304974)" + sodipodi:linespacing="125%" + id="text3270" + y="658.15686" + x="504.67978" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan3272" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="658.15686" + x="504.67978" + sodipodi:role="line">Insert</tspan></text> + <rect + ry="0" + rx="16.225515" + y="655.6214" + x="591.08002" + height="32.890137" + width="117.40916" + id="rect3274" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.72483671;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="669.55908" + y="658.15686" + id="text3276" + sodipodi:linespacing="125%" + transform="scale(0.97040516,1.0304974)"><tspan + sodipodi:role="line" + x="669.55908" + y="658.15686" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + id="tspan3278">Remove</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.71250141;stroke-opacity:1" + id="rect3765-1" + width="134.34735" + height="25.52512" + x="112.58297" + y="514.41852" + rx="0" /> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70277411;stroke-opacity:1" + id="rect3771-1" + width="26.096935" + height="25.889765" + x="221.52017" + y="514.41852" /> + <path + sodipodi:type="star" + style="opacity:0.98999999;fill:#000000;stroke:#000000;stroke-opacity:1" + id="path3773-8" + sodipodi:sides="3" + sodipodi:cx="503" + sodipodi:cy="192.09448" + sodipodi:r1="13.892444" + sodipodi:r2="6.9462218" + sodipodi:arg1="-0.52807445" + sodipodi:arg2="0.5191231" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 515,185.09448 -5.96891,10.44615 -5.96891,10.44616 L 497,195.59448 l -6.06218,-10.3923 12.03109,-0.0539 z" + transform="matrix(0.68676146,0,0,0.72928915,-111.55913,385.99479)" + inkscape:transform-center-x="0.021349695" + inkscape:transform-center-y="2.5132459" /> + <rect + rx="0" + y="718.02972" + x="216.78729" + height="25.52512" + width="132.54497" + id="rect3328" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70770591;stroke-opacity:1" /> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="231.76712" + y="715.362" + id="text3330" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3332" + x="231.76712" + y="715.362" + style="font-size:20px">LHL</tspan></text> + <rect + y="718.02972" + x="323.92212" + height="25.889765" + width="26.096935" + id="rect3334" + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.70277411;stroke-opacity:1" /> + <path + inkscape:transform-center-y="2.5132459" + inkscape:transform-center-x="0.021349695" + transform="matrix(0.68676146,0,0,0.72928915,-9.15719,589.60598)" + d="m 515,185.09448 -5.96891,10.44615 -5.96891,10.44616 L 497,195.59448 l -6.06218,-10.3923 12.03109,-0.0539 z" + inkscape:randomized="0" + inkscape:rounded="0" + inkscape:flatsided="false" + sodipodi:arg2="0.5191231" + sodipodi:arg1="-0.52807445" + sodipodi:r2="6.9462218" + sodipodi:r1="13.892444" + sodipodi:cy="192.09448" + sodipodi:cx="503" + sodipodi:sides="3" + id="path3336" + style="opacity:0.98999999;fill:#000000;stroke:#000000;stroke-opacity:1" + sodipodi:type="star" /> + <text + sodipodi:linespacing="125%" + id="text3338" + y="737.36218" + x="134" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:20px" + y="737.36218" + x="134" + id="tspan3340" + sodipodi:role="line">Model:</tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.8673262;stroke-opacity:1" + id="rect3342" + width="168.10727" + height="32.890137" + x="408.67905" + y="713.6214" + rx="23.23181" + ry="0" /> + <text + transform="scale(0.97040516,1.0304974)" + sodipodi:linespacing="125%" + id="text3344" + y="714.44031" + x="508.80188" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan3346" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="714.44031" + x="508.80188" + sodipodi:role="line">Model tutorial</tspan></text> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="118.41238" + y="604.73578" + id="text3348" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3350" + x="118.41238" + y="604.73578" + style="font-size:15px">Binary sequence</tspan></text> + <text + sodipodi:linespacing="125%" + id="text3352" + y="496.36218" + x="110" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:18px" + y="496.36218" + x="110" + id="tspan3354" + sodipodi:role="line">Time-signature: </tspan></text> + <rect + style="opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.9013148;stroke-opacity:1" + id="rect3342-5" + width="181.54094" + height="32.890137" + x="657.94635" + y="380.91711" + rx="25.088293" + ry="0" /> + <text + transform="scale(0.97040516,1.0304974)" + sodipodi:linespacing="125%" + id="text3344-6" + y="391.582" + x="771.854" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan3346-3" + style="font-size:21.23117828px;text-align:center;text-anchor:middle" + y="391.582" + x="771.854" + sodipodi:role="line">Save rhythm as</tspan></text> + <text + sodipodi:linespacing="125%" + id="text3380" + y="825.36218" + x="129" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:20px" + y="825.36218" + x="129" + id="tspan3382" + sodipodi:role="line">Syncopation for the entire piece:</tspan></text> + <text + sodipodi:linespacing="125%" + id="text3387" + y="403.36218" + x="199" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + style="font-size:20px" + y="403.36218" + x="199" + id="tspan3389" + sodipodi:role="line">*.midi/.txt</tspan></text> + <text + sodipodi:linespacing="125%" + id="text3391" + y="614.43988" + x="268.86493" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve" + transform="scale(0.97040516,1.0304974)"><tspan + style="font-size:15px;fill:#ff2a2a" + y="614.43988" + x="268.86493" + id="tspan3393" + sodipodi:role="line">give examples for both mode, and notification if input is invalid</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 522,452.36218 29,0" + id="path3395" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 467.5,772.36218 29,0" + id="path3395-0" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 469.5,826.36218 29,0" + id="path3395-4" + inkscape:connector-curvature="0" /> + <rect + style="opacity:0.98999999;fill:#ff2a2a;fill-opacity:0;stroke:#000000;stroke-width:1.32440054;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3522" + width="749.66852" + height="275" + x="102.3315" + y="428.36218" + rx="10.632164" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 271,277.09448 0,20" + id="path3524" + inkscape:connector-curvature="0" + transform="translate(0,308.2677)" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 267,224.09448 554,0" + id="path3526" + inkscape:connector-curvature="0" + transform="translate(0,308.2677)" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:WinSongTTF;-inkscape-font-specification:WinSongTTF" + x="276" + y="534.36218" + id="text3530" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3532" + x="276" + y="534.36218">/</tspan></text> + <text + transform="scale(0.97040516,1.0304974)" + xml:space="preserve" + style="font-size:28.30823708px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;font-family:Sans" + x="134.90025" + y="771.64551" + id="text3534" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3536" + x="134.90025" + y="771.64551" + style="font-size:15px;fill:#ff2a2a">Explain why this syncopation is none</tspan></text> + </g> +</svg>
--- a/Syncopation models/main.py Sun Oct 05 21:52:41 2014 +0100 +++ b/Syncopation models/main.py Fri Mar 20 18:28:08 2015 +0000 @@ -1,5 +1,11 @@ +''' +Author: Chunyang Song +Institution: Centre for Digital Music, Queen Mary University of London -def syncopation_perbar(seq, model, timesig = None, subdivision_seq = None, weight_seq = None, L_max = 5, prebar_seq = None, postbar_seq = None, strong_beat_level = None): +''' + + +def sync_perbar_permodel(seq, model, timesig = None, subdivision_seq = None, weight_seq = None, L_max = 5, prebar_seq = None, postbar_seq = None, strong_beat_level = None): syncopation = None if seq == None or model == None: @@ -10,15 +16,18 @@ else: while subdivision_seq == None: - from basic_functions import get_subdivision_seq + from BasicFuncs import get_subdivision_seq subdivision_seq = get_subdivision_seq(timesig, L_max) - # polyrhythm detection: + # The get_rhythm_category function is used to detect rhythm category: monorhythm or polyrhythm. + # For monorhythms, all prime factors of the length of minimum time-span representation of this sequence are + # elements of its subdivision_seq, otherwise it is polyrhythm; + # e.g. prime_factors of polyrhythm 100100101010 in 4/4 is [2,3] but subdivision_seq = [1,2,2] for 4/4 def get_rhythm_category(): rhythm_category = 'mono' - from basic_functions import get_min_timeSpan, find_prime_factors + from BasicFuncs import get_min_timeSpan, find_prime_factors for f in find_prime_factors(len(get_min_timeSpan(seq))): - if not (f in subdivision_seq): # if one of the prime factors of this sequence is not in subdivision_seq + if not (f in subdivision_seq): rhythm_category = 'poly' break return rhythm_category @@ -50,36 +59,45 @@ import TOB syncopation = TOB.get_syncopation(seq) elif model == 'WNBD': - import WNBD # based on normalising per bar so far, should be normalising whole rhythm... + import WNBD if strong_beat_level == None: if timesig == '4/4': strong_beat_level = 2 else: strong_beat_level = 1 syncopation = WNBD.get_syncopation(seq, subdivision_seq, strong_beat_level, postbar_seq) + else: print 'Error: undefined syncopation model.' return syncopation +# def syncopation_all(rhythm, model, timesig, subdivision_seq = None, weight_seq = None, L_max = 5, strong_beat_level = None): +# syncopation = 0 +# # Chope rhythm into seq +# # ... -#def syncopation(rhythm, model, timesig, subdivision_seq = None, weight_seq = None, L_max = 5, strong_beat_level = None): +# for (seq_perbar in seq): +# sync_perbar = syncopation_perbar(seq_perbar,model, timesig, subdivision_seq, weight_seq, L_max, strong_beat_level) +# if sync_perbar != None: +# syncopation = syncopation + sync_perbar +# return syncopation ### TESTING -clave = [1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0] -bf = [0,0,0,1,0,0,0,0,0,0,1,0] -rhythm = [0,1,0,1,0,1,0,1] -classic1 = [1,0,1,1]*3 + [1,0,0,0] -classic2 = [1,0,0,1]*3 + [1,0,0,0] -shiko = [1,0,1,1,0,1,1,0] -rumba = [1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0] -soukous = [1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0] -gahu = [1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0] -bossanova = [1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0] +# clave = [1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0] +# bf = [0,0,0,1,0,0,0,0,0,0,1,0] +# rhythm = [0,1,0,1,0,1,0,1] +# classic1 = [1,0,1,1]*3 + [1,0,0,0] +# classic2 = [1,0,0,1]*3 + [1,0,0,0] +# shiko = [1,0,1,1,0,1,1,0] +# rumba = [1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0] +# soukous = [1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0] +# gahu = [1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0] +# bossanova = [1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0] -classic12 = [1,0,0,1,1,1,1,0,0,1,1,1] -soli = [1,0,1,0,1,0,1,0,1,1,0,1] +# classic12 = [1,0,0,1,1,1,1,0,0,1,1,1] +# soli = [1,0,1,0,1,0,1,0,1,1,0,1] -print syncopation_perbar(seq = clave, model = 'TMC', timesig = '4/4') +# print sync_perbar(seq = clave, model = 'WNBD', timesig = '4/4')