Advertisement
JoelSjogren

Untitled

May 24th, 2016
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. import mido
  2. import time
  3. import sys
  4. import listen
  5.  
  6. def new_note(x):
  7. return x.type == 'note_on' and x.velocity != 0
  8.  
  9. def old_note(x):
  10. return x.type == 'note_off'
  11.  
  12. def note_after(pos):
  13. if pos < 0:
  14. pos = 0
  15. for i, j in enumerate(track[pos:]):
  16. if new_note(j):
  17. return pos+i, j.note
  18. return 100000, None
  19.  
  20. def sine_interaction(in_, out):
  21. tones = []
  22.  
  23. while True:
  24.  
  25. slept = False
  26.  
  27. for j in in_.iter_pending():
  28. if new_note(j):
  29. print('new', j.note)
  30. if j.note-60 not in tones:
  31. tones.append(j.note-60)
  32. listen.play_abk_tones(tones, time=0.2, cq=2**(1/10))
  33.  
  34. if old_note(j):
  35. print('old', j.note)
  36. if j.note-60 in tones:
  37. tones.remove(j.note-60)
  38.  
  39. if not slept:
  40. time.sleep(0.01)
  41.  
  42. def open_piano():
  43. piano_id = 'CASIO USB-MIDI MIDI 1'
  44.  
  45. in_ = mido.open_input(piano_id)
  46. out = mido.open_output(piano_id)
  47.  
  48. for i in in_.iter_pending(): # Some kind of cleanup
  49. pass
  50.  
  51. return in_, out
  52.  
  53. if __name__ == '__main__':
  54.  
  55. in_, out = open_piano()
  56.  
  57. sine_interaction(in_, out)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement