Example #1
0
    def test_1(self):
        midi = Midi(60)
        expected = '''<pitch>
  <step>C</step>
  <octave>4</octave>
</pitch>
'''
        self.assertEqual(expected, midi.get_pitch_rest().to_string())
Example #2
0
    def test_5(self):
        midi = Midi(58, accidental=Accidental(mode='sharp'))
        expected = '''<pitch>
  <step>A</step>
  <alter>1</alter>
  <octave>3</octave>
</pitch>
'''
        self.assertEqual(expected, midi.get_pitch_rest().to_string())
Example #3
0
    def test_4(self):
        midi = Midi(59, accidental=Accidental(mode='enharmonic_2'))
        expected = '''<pitch>
  <step>A</step>
  <alter>2</alter>
  <octave>3</octave>
</pitch>
'''
        self.assertEqual(expected, midi.get_pitch_rest().to_string())
Example #4
0
    def test_3(self):
        midis = {
            'flat': [Midi(value, accidental=Accidental('flat', force_show=True)) for value in range(60, 72)],
            'sharp': [Midi(value, accidental=Accidental('sharp', force_show=True)) for value in range(60, 72)]
        }
        sf = SimpleFormat(midis=midis['flat'] + midis['sharp'])
        for chord in sf.chords:
            chord.add_harmonic(5)
        self.score.set_time_signatures(times={1: [12, 4]})
        sf.to_stream_voice().add_to_score(self.score)

        xml_path = path + '_test_3.xml'
        self.score.write(xml_path)
Example #5
0
    def add_midi(self, val):
        if val == 0:
            raise ValueError('midi with value 0 can not be added.')

        if not isinstance(val, Midi):
            val = Midi(val)

        self._midis.append(val)
        return val
Example #6
0
    def mirror(self, pivot=None):
        if pivot is None:
            pivot = self.chords[0].midis[0]
        elif not isinstance(pivot, Midi):
            pivot = Midi(pivot)
        else:
            pass

        for midi in [m for ch in self.chords for m in ch.midis]:
            transposition_interval = (pivot.value - midi.value) * 2
            midi.transpose(transposition_interval)
Example #7
0
    def _set_midis(self, midis):
        def _is_value(x):
            try:
                float(x)
                return True
            except (ValueError, TypeError):
                return False

        def _is_midi(x):
            if isinstance(x, Midi):
                return True
            else:
                return False

        if midis is None:
            midis = []
        else:
            try:
                midis = list(midis)
            except TypeError:
                midis = [midis]

        self._midis = []
        for m in midis:
            if _is_midi(m):
                self._midis.append(m)
            elif _is_value(m):
                self._midis.append(Midi(m))
            elif isinstance(m, list) or isinstance(m, tuple):
                tmp = []

                for midi in m:
                    if _is_midi(midi):
                        tmp.append(midi)
                    elif _is_value(midi):
                        tmp.append(Midi(midi))
                    else:
                        raise TypeError
                self._midis.append(tmp)
            else:
                raise TypeError
Example #8
0
    def optimal_range(self, val):
        if not val:
            val = [None, None]
        if not hasattr(val, '__iter__'):
            raise TypeError('{} must be an iterator.'.format(val))
        if not len(val) == 2:
            raise TypeError('{} must have two elements.'.format(val))
        for index, x in enumerate(val):
            if x and not isinstance(x, Midi):
                val[index] = Midi(x)

        self._optimal_range = val
Example #9
0
    def test_chord_midi(self):
        chord = TreeChord(Midi(63, accidental = Accidental(mode='sharp')), quarter_duration=2)
        tree_note = chord.notes[0]
        tree_note.update_duration(divisions=1)

        result = '''<note>
  <pitch>
    <step>D</step>
    <alter>1</alter>
    <octave>4</octave>
  </pitch>
  <duration>2</duration>
</note>
'''
        self.assertEqual(tree_note.to_string(), result)
Example #10
0
    def midis(self, values):
        try:
            values = list(values)
        except TypeError:
            values = [values]

        output = []
        for midi in values:
            if not isinstance(midi, Midi):
                output.append(Midi(midi))
            else:
                output.append(midi)

        for midi in output:
            if midi.value == 0 and len(values) > 1:
                raise ValueError('midi with value 0 must be alone.')

        output = sorted(output, key=lambda midi: midi.value)

        self._midis = output
Example #11
0
    def test_2(self):
        midi = Midi(0)
        expected = '''<rest/>
'''
        self.assertEqual(expected, midi.get_pitch_rest().to_string())
Example #12
0
 def test_8(self):
     midi = Midi(61)
     expected = 'C#4'
     self.assertEqual(expected, midi.__name__)
Example #13
0
 def test_6(self):
     midi = Midi(59)
     expected = 'B3'
     self.assertEqual(expected, midi.__name__)
Example #14
0
 def test_7(self):
     midi = Midi(58)
     expected = 'Bb3'
     self.assertEqual(expected, midi.__name__)
Example #15
0
 def test_9(self):
     midi = Midi(61.5)
     expected = 'D-4'
     self.assertEqual(expected, midi.__name__)
Example #16
0
 def test_12(self):
     midi = Midi(60.5, accidental=Accidental(mode='flat'))
     expected = 'Db-4'
     self.assertEqual(expected, midi.__name__)
Example #17
0
 def test_11(self):
     midi = Midi(60.5, accidental=Accidental(mode='sharp'))
     expected = 'C+4'
     self.assertEqual(expected, midi.__name__)