Beispiel #1
0
 def index(self, token):
 
   # scale length:
   SL = len(self.notes)
 
   # parse
   root, infix, suffix = trisectToken(token)
   root = self.normalizedNote(root)
   # print "trisection["+token+"]:", root, infix, suffix
  
   # get index of bare note 
   k = self.ring.index(root)
   if k < 0:
     return -1000
  
   # add octave shifts
   if len(infix) > 0:
     octave = int(infix) - 1
   else:
     octave = 0
   octave += count('^', suffix)
   octave -= count('_', suffix)
   k = k + SL*octave
  
   # add semitione shifts
   s = count('+', suffix)
   s -= count('-', suffix)
   k += s
  
   return k
Beispiel #2
0
    def index(self, token):

        # scale length:
        SL = len(self.notes)

        # parse
        root, infix, suffix = trisectToken(token)
        root = self.normalizedNote(root)
        # print "trisection["+token+"]:", root, infix, suffix

        # get index of bare note
        k = self.ring.index(root)
        if k < 0:
            return -1000

        # add octave shifts
        if len(infix) > 0:
            octave = int(infix) - 1
        else:
            octave = 0
        octave += count('^', suffix)
        octave -= count('_', suffix)
        k = k + SL * octave

        # add semitione shifts
        s = count('+', suffix)
        s -= count('-', suffix)
        k += s

        return k
Beispiel #3
0
 def freq(self, token, nSemitoneShifts, octaveNumber):
   # Return frequency of note defined by token
   
   # base calculation
   root, suffix = splitToken(token)
   a = alphaPrefix(root)
   a = self.normalizedNote(a)
   f = self.noteFreq[a]
   
   # apply octave number
   for i in range(0, octaveNumber):
     f = 2*f
   
   # apply transpose register
   factor = pow(self.semitoneFactor, nSemitoneShifts);
   # print "factor:", factor
   f = f*factor
   
   # process upward octave shifts 
   n = 0
   np = numPrefix(token[len(a):])
   if len(np) > 0:
     n = int(np[0:1])-1
   else:
     n = 0
   n += count('^', suffix)   
   for i in range(0, n):
     f = 2.0*f 
     
   # process downward octave shifts 
   n = count('_', suffix)
   if n > 0:
     for i in range(0,n):
       f = f/2.0
       
   # process semitone shifts
   n = count('+', suffix) - count('-', suffix)
   if n > 0:
     for i in range(0,n):
       f = f*self.semitoneFactor
   if n < 0:
     for i in range(0,-n):
       f = f/self.semitoneFactor
       
   return f, root, suffix
Beispiel #4
0
    def freq(self, token, nSemitoneShifts, octaveNumber):
        # Return frequency of note defined by token

        # base calculation
        root, suffix = splitToken(token)
        a = alphaPrefix(root)
        a = self.normalizedNote(a)
        f = self.noteFreq[a]

        # apply octave number
        for i in range(0, octaveNumber):
            f = 2 * f

        # apply transpose register
        factor = pow(self.semitoneFactor, nSemitoneShifts)
        # print "factor:", factor
        f = f * factor

        # process upward octave shifts
        n = 0
        np = numPrefix(token[len(a):])
        if len(np) > 0:
            n = int(np[0:1]) - 1
        else:
            n = 0
        n += count('^', suffix)
        for i in range(0, n):
            f = 2.0 * f

        # process downward octave shifts
        n = count('_', suffix)
        if n > 0:
            for i in range(0, n):
                f = f / 2.0

        # process semitone shifts
        n = count('+', suffix) - count('-', suffix)
        if n > 0:
            for i in range(0, n):
                f = f * self.semitoneFactor
        if n < 0:
            for i in range(0, -n):
                f = f / self.semitoneFactor

        return f, root, suffix