def encode_event(self, event):
        if event == NO_CHORD:
            return 0

        root = chord_symbols_lib.chord_symbol_root(event)
        quality = chord_symbols_lib.chord_symbol_quality(event)

        if quality == chord_symbols_lib.CHORD_QUALITY_MAJOR:
            return root + 1
        elif quality == chord_symbols_lib.CHORD_QUALITY_MINOR:
            return root + NOTES_PER_OCTAVE + 1
        else:
            raise ChordEncodingError('chord is neither major nor minor: %s' % event)
  def encode_event(self, event):
    if event == NO_CHORD:
      return 0

    root = chord_symbols_lib.chord_symbol_root(event)
    quality = chord_symbols_lib.chord_symbol_quality(event)

    if quality == chord_symbols_lib.CHORD_QUALITY_MAJOR:
      return root + 1
    elif quality == chord_symbols_lib.CHORD_QUALITY_MINOR:
      return root + NOTES_PER_OCTAVE + 1
    else:
      raise ChordEncodingError('chord is neither major nor minor: %s' % event)
  def encode_event(self, event):
    if event == NO_CHORD:
      return 0

    root = chord_symbols_lib.chord_symbol_root(event)
    quality = chord_symbols_lib.chord_symbol_quality(event)

    if quality == chord_symbols_lib.CHORD_QUALITY_MAJOR:
      return root + 1
    elif quality == chord_symbols_lib.CHORD_QUALITY_MINOR:
      return root + NOTES_PER_OCTAVE + 1
    elif quality == chord_symbols_lib.CHORD_QUALITY_AUGMENTED:
      return root + 2 * NOTES_PER_OCTAVE + 1
    elif quality == chord_symbols_lib.CHORD_QUALITY_DIMINISHED:
      return root + 3 * NOTES_PER_OCTAVE + 1
    else:
      raise ChordEncodingException('chord is not a standard triad: %s' % event)
    def encode_event(self, event):
        if event == NO_CHORD:
            return 0

        root = chord_symbols_lib.chord_symbol_root(event)
        quality = chord_symbols_lib.chord_symbol_quality(event)

        if quality == chord_symbols_lib.CHORD_QUALITY_MAJOR:
            return root + 1
        elif quality == chord_symbols_lib.CHORD_QUALITY_MINOR:
            return root + NOTES_PER_OCTAVE + 1
        elif quality == chord_symbols_lib.CHORD_QUALITY_AUGMENTED:
            return root + 2 * NOTES_PER_OCTAVE + 1
        elif quality == chord_symbols_lib.CHORD_QUALITY_DIMINISHED:
            return root + 3 * NOTES_PER_OCTAVE + 1
        else:
            raise ChordEncodingError('chord is not a standard triad: %s' % event)
    def testChordSymbolQuality(self):
        # Test major chords.
        quality = chord_symbols_lib.chord_symbol_quality('B13')
        self.assertEqual(CHORD_QUALITY_MAJOR, quality)
        quality = chord_symbols_lib.chord_symbol_quality('E7#9')
        self.assertEqual(CHORD_QUALITY_MAJOR, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Fadd2/Eb')
        self.assertEqual(CHORD_QUALITY_MAJOR, quality)
        quality = chord_symbols_lib.chord_symbol_quality('C6/9/Bb')
        self.assertEqual(CHORD_QUALITY_MAJOR, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Gmaj13')
        self.assertEqual(CHORD_QUALITY_MAJOR, quality)

        # Test minor chords.
        quality = chord_symbols_lib.chord_symbol_quality('C#-9')
        self.assertEqual(CHORD_QUALITY_MINOR, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Gm7/Bb')
        self.assertEqual(CHORD_QUALITY_MINOR, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Cbmmaj7')
        self.assertEqual(CHORD_QUALITY_MINOR, quality)
        quality = chord_symbols_lib.chord_symbol_quality('A-(M7)')
        self.assertEqual(CHORD_QUALITY_MINOR, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Bbmin')
        self.assertEqual(CHORD_QUALITY_MINOR, quality)

        # Test augmented chords.
        quality = chord_symbols_lib.chord_symbol_quality('D+/A#')
        self.assertEqual(CHORD_QUALITY_AUGMENTED, quality)
        quality = chord_symbols_lib.chord_symbol_quality('A+')
        self.assertEqual(CHORD_QUALITY_AUGMENTED, quality)
        quality = chord_symbols_lib.chord_symbol_quality('G7(#5)')
        self.assertEqual(CHORD_QUALITY_AUGMENTED, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Faug(add2)')
        self.assertEqual(CHORD_QUALITY_AUGMENTED, quality)

        # Test diminished chords.
        quality = chord_symbols_lib.chord_symbol_quality('Am7b5')
        self.assertEqual(CHORD_QUALITY_DIMINISHED, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Edim7')
        self.assertEqual(CHORD_QUALITY_DIMINISHED, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Bb/o')
        self.assertEqual(CHORD_QUALITY_DIMINISHED, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Fo')
        self.assertEqual(CHORD_QUALITY_DIMINISHED, quality)

        # Test other chords.
        quality = chord_symbols_lib.chord_symbol_quality('G5')
        self.assertEqual(CHORD_QUALITY_OTHER, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Bbsus2')
        self.assertEqual(CHORD_QUALITY_OTHER, quality)
        quality = chord_symbols_lib.chord_symbol_quality('Dsus')
        self.assertEqual(CHORD_QUALITY_OTHER, quality)
        quality = chord_symbols_lib.chord_symbol_quality('E(no3)')
        self.assertEqual(CHORD_QUALITY_OTHER, quality)
  def testChordSymbolQuality(self):
    # Test major chords.
    quality = chord_symbols_lib.chord_symbol_quality('B13')
    self.assertEqual(CHORD_QUALITY_MAJOR, quality)
    quality = chord_symbols_lib.chord_symbol_quality('E7#9')
    self.assertEqual(CHORD_QUALITY_MAJOR, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Fadd2/Eb')
    self.assertEqual(CHORD_QUALITY_MAJOR, quality)
    quality = chord_symbols_lib.chord_symbol_quality('C6/9/Bb')
    self.assertEqual(CHORD_QUALITY_MAJOR, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Gmaj13')
    self.assertEqual(CHORD_QUALITY_MAJOR, quality)

    # Test minor chords.
    quality = chord_symbols_lib.chord_symbol_quality('C#-9')
    self.assertEqual(CHORD_QUALITY_MINOR, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Gm7/Bb')
    self.assertEqual(CHORD_QUALITY_MINOR, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Cbmmaj7')
    self.assertEqual(CHORD_QUALITY_MINOR, quality)
    quality = chord_symbols_lib.chord_symbol_quality('A-(M7)')
    self.assertEqual(CHORD_QUALITY_MINOR, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Bbmin')
    self.assertEqual(CHORD_QUALITY_MINOR, quality)

    # Test augmented chords.
    quality = chord_symbols_lib.chord_symbol_quality('D+/A#')
    self.assertEqual(CHORD_QUALITY_AUGMENTED, quality)
    quality = chord_symbols_lib.chord_symbol_quality('A+')
    self.assertEqual(CHORD_QUALITY_AUGMENTED, quality)
    quality = chord_symbols_lib.chord_symbol_quality('G7(#5)')
    self.assertEqual(CHORD_QUALITY_AUGMENTED, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Faug(add2)')
    self.assertEqual(CHORD_QUALITY_AUGMENTED, quality)

    # Test diminished chords.
    quality = chord_symbols_lib.chord_symbol_quality('Am7b5')
    self.assertEqual(CHORD_QUALITY_DIMINISHED, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Edim7')
    self.assertEqual(CHORD_QUALITY_DIMINISHED, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Bb/o')
    self.assertEqual(CHORD_QUALITY_DIMINISHED, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Fo')
    self.assertEqual(CHORD_QUALITY_DIMINISHED, quality)

    # Test other chords.
    quality = chord_symbols_lib.chord_symbol_quality('G5')
    self.assertEqual(CHORD_QUALITY_OTHER, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Bbsus2')
    self.assertEqual(CHORD_QUALITY_OTHER, quality)
    quality = chord_symbols_lib.chord_symbol_quality('Dsus')
    self.assertEqual(CHORD_QUALITY_OTHER, quality)
    quality = chord_symbols_lib.chord_symbol_quality('E(no3)')
    self.assertEqual(CHORD_QUALITY_OTHER, quality)