def main(): pyaud = pyaudio.PyAudio() stream = pyaud.open(format=pyaudio.paInt16, channels=2, rate=44100, input_device_index=1, input=True) last_note = last_vol = last_time = 0 while True: t = timing.get_time() rawsamps = stream.read(SAMPLE_SIZE) samps = numpy.fromstring(rawsamps, dtype=numpy.int16) event = '' midi_note = analyse.musical_detect_pitch(samps, min_note=28.0) if midi_note: midi_note += OCTAVE_CORRECTION latest_note = notes.midi_to_note(midi_note) latest_vol = analyse.loudness(samps) attacked = latest_vol - last_vol > ATTACK_THRESHOLD if latest_note != last_note or attacked: if latest_vol > MINIMUM_VOLUME: event = {'note': latest_note, 'time': t} last_time = t last_note = latest_note last_vol = latest_vol elif last_note: last_note = None print event sys.stdout.flush()
def main(): pyaud = pyaudio.PyAudio() stream = pyaud.open(format=pyaudio.paInt16, channels=2, rate=44100, input_device_index=1, input=True) last_note = last_vol = last_time = 0 while True: t = timing.get_time() rawsamps = stream.read(SAMPLE_SIZE) samps = numpy.fromstring(rawsamps, dtype=numpy.int16) event = "" midi_note = analyse.musical_detect_pitch(samps, min_note=28.0) if midi_note: midi_note += OCTAVE_CORRECTION latest_note = notes.midi_to_note(midi_note) latest_vol = analyse.loudness(samps) attacked = latest_vol - last_vol > ATTACK_THRESHOLD if latest_note != last_note or attacked: if latest_vol > MINIMUM_VOLUME: event = {"note": latest_note, "time": t} last_time = t last_note = latest_note last_vol = latest_vol elif last_note: last_note = None print event sys.stdout.flush()
sample_size = int(paramaters.sample_size) if not available > sample_size: time.sleep(0.01) continue rawsamps = stream.read(available) samps = numpy.fromstring(rawsamps, dtype=numpy.int16, count=sample_size) event = '' midi_note = analyse.musical_detect_pitch(samps, min_note=28.0) if midi_note: midi_note += paramaters.octave_correction * 12 latest_note = notes.midi_to_note(midi_note) latest_vol = analyse.loudness(samps) attacked = latest_vol - last_vol > paramaters.attack_threshold if latest_note != last_note or attacked: if latest_vol > paramaters.minimum_volume: event = {'note': latest_note, 'time': t} last_time = t last_note = latest_note last_vol = latest_vol elif last_note: last_note = None