#!/usr/bin/python3 import scipy.io.wavfile as wav import numpy as np import sys def compute_sweep(T, Fs=48000, F0=100): F1=Fs//2 b=np.log((F1+F0)/F0)/T a=F0/b n=np.arange(T*Fs) t = n/Fs y=0.9*np.sin(2*np.pi*a*(np.exp(b*t)-b*t-1)) return y def compute_sequence(T, Fs=48000, F0=100): noise = compute_sweep(1, Fs, F0) zeros = np.zeros(Fs) sine = compute_sweep(T, Fs, F0) sequence = np.concatenate([zeros, noise, zeros, sine, zeros, noise, zeros]) return np.round(32768*sequence).astype('int16') if __name__ == '__main__': filename = sys.argv[1] Fs = 48000 seq = compute_sequence(60, Fs=Fs) wav.write(filename, Fs, seq)