#!/usr/bin/python import math import os import sys import time import pyaudio p = pyaudio.PyAudio() sample_rate=44100 stream = p.open( format=pyaudio.paInt16, channels=1, rate=sample_rate, output=True ) stream.start_stream() i = 1 f = 0 l = 0 while i < len(sys.argv): if sys.argv[i] == '-f': i += 1 f = float(sys.argv[i]) elif sys.argv[i] == '-l': i += 1 l = float(sys.argv[i])/1000 elif sys.argv[i] == '-D': i += 1 time.sleep(float(sys.argv[i])/1000) if f != 0 and l != 0: print(f, l) # https://stackoverflow.com/questions/974071/python-library-for-playing-fixed-frequency-sound num_samples = int(sample_rate * l) rest_frames = num_samples % sample_rate s = lambda i: 0.25 * math.sin(2 * math.pi * f * i / sample_rate) samples = (int(s(i) * 0x7F + 0x80) for i in range(num_samples)) # write several samples at a time for buf in zip( *([samples] * sample_rate) ): stream.write(bytes(buf)) # fill remainder of frameset with silence stream.write(b'\x80' * rest_frames) f = 0 l = 0 i += 1