Advertisement
Guest User

Untitled

a guest
Jul 13th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. from pynput import keyboard
  2. import time
  3. import pyaudio
  4. import wave
  5. import math
  6.  
  7. CHUNK = 8192
  8. FORMAT = pyaudio.paInt16
  9. CHANNELS = 1
  10. RATE = 44100
  11. WAVE_OUTPUT_FILENAME = "output.wav"
  12.  
  13.  
  14.  
  15. class MyListener(keyboard.Listener):
  16. def __init__(self):
  17. super(MyListener, self).__init__(on_press=self.on_press, on_release=self.on_release)
  18. self.key_pressed = None
  19.  
  20.  
  21. def on_press(self, key):
  22. if key == keyboard.Key.cmd_l:
  23. self.p = pyaudio.PyAudio()
  24. self.frames = []
  25.  
  26. self.stream = self.p.open(format=FORMAT,
  27. channels=CHANNELS,
  28. rate=RATE,
  29. input=True,
  30. frames_per_buffer=CHUNK,
  31. stream_callback = self.callback)
  32.  
  33. print ("Stream active? " + str(self.stream.is_active()))
  34. self.key_pressed = True
  35.  
  36. def on_release(self, key):
  37. if key == keyboard.Key.cmd_l:
  38. self.key_pressed = False
  39.  
  40. def callback(self,in_data, frame_count, time_info, status):
  41. if self.key_pressed == True:
  42. #stream_queue.put(in_data)
  43. print("record")
  44. self.frames.append(in_data)
  45. return (in_data, pyaudio.paContinue)
  46.  
  47. elif self.key_pressed == False:
  48. #stream_queue.put(in_data)
  49. self.frames.append(in_data)
  50. return (in_data, pyaudio.paComplete)
  51.  
  52. else:
  53. return (in_data,pyaudio.paContinue)
  54.  
  55.  
  56.  
  57. class yesno_generator:
  58. def __init__(self,pattern_length):
  59. self.pattern_length = pattern_length
  60. self.limit = math.pow(2,pattern_length)-1
  61. self.step = 0
  62. def begin(self):
  63. if self.step =< self.limit:
  64.  
  65.  
  66. def generate_patter(self):
  67. pattern = bin(self.step)[2:].zfill(sef.length)
  68.  
  69.  
  70.  
  71.  
  72. listener = MyListener()
  73. listener.start()
  74. started = False
  75.  
  76.  
  77.  
  78. while True:
  79. time.sleep(0.1)
  80. if listener.key_pressed == True and started == False:
  81. started = True
  82. listener.stream.start_stream()
  83. print ("Start stream - Key is down")
  84.  
  85. # elif listener.key_pressed == True and started == True:
  86. #print("stream has started and key is still down")
  87. #print("Stream is active? " + str(listener.stream.is_active()))
  88. #print("Stream is stopped? " + str(listener.stream.is_stopped()))
  89. #print("Stream is time? " + str(listener.stream.get_time()))
  90.  
  91. elif listener.key_pressed == False and started == True:
  92. print("Key has been released")
  93. listener.stream.stop_stream()
  94. listener.stream.close()
  95. print("stream has been closed")
  96. listener.p.terminate()
  97.  
  98. wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
  99. wf.setnchannels(CHANNELS)
  100. wf.setsampwidth(listener.p.get_sample_size(FORMAT))
  101. wf.setframerate(RATE)
  102. wf.writeframes(b''.join(listener.frames))
  103. wf.close()
  104.  
  105. started = False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement