def test_pre_evaluation(): mp = MidiPreEvaluator() mp.eval('#d - - - |') assert mp.subbeat_lengths == [1.0] * 4 mp = MidiPreEvaluator() mp.eval('#d - ef z |') assert mp.subbeat_lengths == [1.0, 1.0, 0.5, 1.0]
def test_relative_tempo_change(): mp = MidiPreEvaluator() mp.eval('#d - t=0.5 ef z |') assert mp.subbeat_lengths == [1.0, 1.0, 0.5, 1.0] assert mp.meta_output == [('T', 0, 120), ('T', 2, 60), ('M', 0, 4, 4, 0)] evaluate('T=120 #d - | t=0.5 - - |', [(63, 0.0, 4.0)]) evaluate('#d - | t=0.5 - - |', [(63, 0.0, 4.0)])
def test_beat_map(): mp = MidiPreEvaluator() mp.eval('a b cd | e f - a |') assert mp.beat_map == {1: [3, 4]} m = MidiEvaluator(pitch_order=tuple('abcdefg'), ignore_velocity=True) m.eval('a b cd | e f - a |') assert m.beat_map == {1: (3, 4)}
def test_chord_pre_evaluation(): mp = MidiPreEvaluator() mp.eval('(ac) - - - |') assert mp.subbeat_lengths == [1.0] * 4 mp = MidiPreEvaluator() mp.eval('c (ac) - - |') assert mp.subbeat_lengths == [1.0] * 4
def test_keysig_insert(): mp = MidiPreEvaluator() mp.eval('K=D #d - t=0.5 ef z |') assert mp.subbeat_lengths == [1.0, 1.0, 0.5, 1.0] assert mp.meta_output == [('K', 0, (2, 0), 0), ('T', 0, 120), ('T', 2, 60), ('M', 0, 4, 4, 0)] mp = MidiPreEvaluator() mp.eval('P=1 K=C #d - t=0.5 ef z | P=2 K=D #d - ef z |') assert mp.meta_output[0] == ('K', 0, (0, 0), 0) assert mp.meta_output[4] == ('K', 0, (2, 0), 1)
def pre_evaluate(source, expected, target='subbeat_lengths'): m = MidiPreEvaluator() m.eval(source) assert len(m.partstates) > 0 if target == 'subbeat_lengths': for i, t in enumerate(m.subbeat_lengths): assert t == approx(expected[i]) elif target == 'subbeat_starts': for i, p in enumerate(m.partstates.values()): for t in p['subbeat_starts']: assert t == approx(expected[i])
def test_subbeat_pre_evaluation(): mp = MidiPreEvaluator() mp.eval('#d - - - |') assert mp.subbeat_starts == [(0.0,), (1.0,), (2.0,), (3.0,)] mp = MidiPreEvaluator() mp.eval('#d - ef z | -g a - (ab) |') assert mp.subbeat_starts == [(0.0,), (1.0,), (2.0, 2.5), (3.0,), (4.0, 4.5), (5.0,), (6.0,), (7.0,)] mp = MidiPreEvaluator() mp.eval('B=8 zg a - (ab) |') assert mp.subbeat_starts == [(0.0, 0.25), (0.5,), (1.0,), (1.5,)] mp = MidiPreEvaluator() mp.eval('#d - ef z | B=8 -g a - (ab) |') assert mp.subbeat_starts == [(0.0,), (1.0,), (2.0, 2.5), (3.0,), (4.0, 4.25), (4.5,), (5.0,), (5.5,)]
def test_polymeters(): mp = MidiPreEvaluator() mp.eval('P=1 c d e | P=2 B=4. efg abc |') assert mp.meta_output == [('T', 0, 120), ('M', 0.0, 3, 4, 0), ('M', 0.0, 6, 8, 1)]
def test_instrument(): mp = MidiPreEvaluator() mp.eval('I=25 K=D #d - t=0.5 ef z |') assert mp.meta_output == [('I', 0, 25, 0, 1), ('K', 0, (2, 0), 0), ('T', 0, 120), ('T', 2, 60), ('M', 0, 4, 4, 0)]