Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import mido
- import time
- import sys
- import listen
- def new_note(x):
- return x.type == 'note_on' and x.velocity != 0
- def old_note(x):
- return x.type == 'note_off'
- def note_after(pos):
- if pos < 0:
- pos = 0
- for i, j in enumerate(track[pos:]):
- if new_note(j):
- return pos+i, j.note
- return 100000, None
- def sine_interaction(in_, out):
- tones = []
- while True:
- slept = False
- for j in in_.iter_pending():
- if new_note(j):
- print('new', j.note)
- if j.note-60 not in tones:
- tones.append(j.note-60)
- listen.play_abk_tones(tones, time=0.2, cq=2**(1/10))
- if old_note(j):
- print('old', j.note)
- if j.note-60 in tones:
- tones.remove(j.note-60)
- if not slept:
- time.sleep(0.01)
- def open_piano():
- piano_id = 'CASIO USB-MIDI MIDI 1'
- in_ = mido.open_input(piano_id)
- out = mido.open_output(piano_id)
- for i in in_.iter_pending(): # Some kind of cleanup
- pass
- return in_, out
- if __name__ == '__main__':
- in_, out = open_piano()
- sine_interaction(in_, out)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement