def test_b_in_c_sharp_maj(self): alteration = get_note_alteration_in_key('B', ('C#', 'maj')) self.assertEqual('^', alteration)
def test_f_in_gmaj(self): alteration = get_note_alteration_in_key('F', ('G', 'maj')) self.assertEqual('^', alteration)
def test_e_in_dmaj(self): alteration = get_note_alteration_in_key('E', ('D', 'maj')) self.assertEqual('', alteration)
def test_e_in_d_flat_phr(self): alteration = get_note_alteration_in_key('E', ('Db', 'phr')) self.assertEqual('__', alteration)
def test_f_in_gmaj(self): alteration = get_note_alteration_in_key('F', ('G', 'maj')) self.assertEqual('^', alteration)
def test_f_in_dmix(self): alteration = get_note_alteration_in_key('F', ('D', 'mix')) self.assertEqual('^', alteration)
def test_b_in_cdor(self): alteration = get_note_alteration_in_key('B', ('C', 'dor')) self.assertEqual('_', alteration)
def test_e_in_cmin(self): alteration = get_note_alteration_in_key('E', ('C', 'min')) self.assertEqual('_', alteration)
def test_b_in_cdor(self): alteration = get_note_alteration_in_key('B', ('C', 'dor')) self.assertEqual('_', alteration)
def test_e_in_b_flat_maj(self): alteration = get_note_alteration_in_key('E', ('Bb', 'maj')) self.assertEqual('_', alteration)
def test_f_in_dmix(self): alteration = get_note_alteration_in_key('F', ('D', 'mix')) self.assertEqual('^', alteration)
def test_b_in_fmaj(self): alteration = get_note_alteration_in_key('B', ('F', 'maj')) self.assertEqual('_', alteration)
def test_b_in_c_sharp_maj(self): alteration = get_note_alteration_in_key('B', ('C#', 'maj')) self.assertEqual('^', alteration)
def test_e_in_dmaj(self): alteration = get_note_alteration_in_key('E', ('D', 'maj')) self.assertEqual('', alteration)
def test_b_in_fmaj(self): alteration = get_note_alteration_in_key('B', ('F', 'maj')) self.assertEqual('_', alteration)
def test_c_in_cmaj(self): alteration = get_note_alteration_in_key('C', ('C', 'maj')) self.assertEqual('', alteration)
def test_e_in_b_flat_maj(self): alteration = get_note_alteration_in_key('E', ('Bb', 'maj')) self.assertEqual('_', alteration)
def test_f_in_c_sharp_lyd(self): alteration = get_note_alteration_in_key('F', ('C#', 'lyd')) self.assertEqual('^^', alteration)
def test_e_in_cmin(self): alteration = get_note_alteration_in_key('E', ('C', 'min')) self.assertEqual('_', alteration)
def test_e_in_d_flat_phr(self): alteration = get_note_alteration_in_key('E', ('Db', 'phr')) self.assertEqual('__', alteration)
def test_f_in_c_sharp_lyd(self): alteration = get_note_alteration_in_key('F', ('C#', 'lyd')) self.assertEqual('^^', alteration)
def demo_play_sporting_nell(bpm=90, instrument='Acoustic Grand Piano'): player = snap.SingleNoteAbcPlayer() player.setup_synth() player.select_instrument(instrument) # Setup sequencer over existing player sequencer = fluidsequencer.FluidSequencer(player._handle) sequencer.beats_per_minute = bpm beat_length = sequencer.ticks_per_beat print("BPM: {0}".format(sequencer.beats_per_minute)) print("TPB: {0}".format(sequencer.ticks_per_beat)) print("TPS: {0}".format(sequencer.ticks_per_second)) dest = sequencer.add_synth(player._synth) ticks = sequencer.ticks + 10 abc_key = 'Dmix' half_bar1 = 'ADED' bar1 = 'ADED A2dc' bar2 = 'ABAG EFG2' midi_note = None for i in range(0, 3): for simple_note in half_bar1: norm_key = abcparser.normalize_abc_key(abc_key) alteration = musictheory.get_note_alteration_in_key(simple_note, norm_key) abc_note = alteration + simple_note midi_note = abc2midi.get_midi_note(abc_note) event = fluidevent.FluidEvent(player._handle) event.dest = dest[0] event.note(0, midi_note, 127, int(beat_length * 0.25)) sequencer.send(event, ticks) ticks += int(beat_length / 4) print('Waiting 4 beats...') time.sleep(60 / bpm * 4) print('Sending event in the past') event = fluidevent.FluidEvent(player._handle) event.dest = dest[0] event.note(0, midi_note, 127, int(beat_length * 0.25)) #sequencer.send(event, ticks) sequencer.send(event, 10) # time.sleep(60 / 90 * 2) # # try: # player._lock.acquire() # player._synth.noteoff(player._midi_channel, midi_note) # finally: # player._lock.release() # # del sequencer # print('Deleted sequencer') print('Waiting 2s...') time.sleep(2) del sequencer del player._driver del player._synth
def test_c_in_cmaj(self): alteration = get_note_alteration_in_key('C', ('C', 'maj')) self.assertEqual('', alteration)
def demo_play_sporting_nell(bpm=90, instrument='Acoustic Grand Piano'): player = snap.SingleNoteAbcPlayer() player.setup_synth() player.select_instrument(instrument) # Setup sequencer over existing player sequencer = fluidsequencer.FluidSequencer(player._handle) sequencer.beats_per_minute = bpm beat_length = sequencer.ticks_per_beat print("BPM: {0}".format(sequencer.beats_per_minute)) print("TPB: {0}".format(sequencer.ticks_per_beat)) print("TPS: {0}".format(sequencer.ticks_per_second)) dest = sequencer.add_synth(player._synth) ticks = sequencer.ticks + 10 abc_key = 'Dmix' half_bar1 = 'ADED' bar1 = 'ADED A2dc' bar2 = 'ABAG EFG2' midi_note = None for i in range(0, 3): for simple_note in half_bar1: norm_key = abcparser.normalize_abc_key(abc_key) alteration = musictheory.get_note_alteration_in_key( simple_note, norm_key) abc_note = alteration + simple_note midi_note = abc2midi.get_midi_note(abc_note) event = fluidevent.FluidEvent(player._handle) event.dest = dest[0] event.note(0, midi_note, 127, int(beat_length * 0.25)) sequencer.send(event, ticks) ticks += int(beat_length / 4) print('Waiting 4 beats...') time.sleep(60 / bpm * 4) print('Sending event in the past') event = fluidevent.FluidEvent(player._handle) event.dest = dest[0] event.note(0, midi_note, 127, int(beat_length * 0.25)) #sequencer.send(event, ticks) sequencer.send(event, 10) # time.sleep(60 / 90 * 2) # # try: # player._lock.acquire() # player._synth.noteoff(player._midi_channel, midi_note) # finally: # player._lock.release() # # del sequencer # print('Deleted sequencer') print('Waiting 2s...') time.sleep(2) del sequencer del player._driver del player._synth