Advertisement
JoelSjogren

Untitled

May 24th, 2016
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.37 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.                     slept = True
  34.            
  35.             if old_note(j):
  36.                 print('old', j.note)
  37.                 if j.note-60 in tones:
  38.                     tones.remove(j.note-60)
  39.                     slept = True
  40.        
  41.         if not slept:
  42.             time.sleep(0.01)
  43.  
  44. def open_piano():
  45.     piano_id = 'CASIO USB-MIDI MIDI 1'
  46.  
  47.     in_ = mido.open_input(piano_id)
  48.     out = mido.open_output(piano_id)
  49.    
  50.     for i in in_.iter_pending():  # Some kind of cleanup
  51.         pass
  52.    
  53.     return in_, out
  54.  
  55. if __name__ == '__main__':
  56.  
  57.     in_, out = open_piano()
  58.    
  59.     sine_interaction(in_, out)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement