def harmonics(): synth = WaveSynth() freq = 1500 num_harmonics = 6 h_all = synth.harmonics(freq, 1, [(n, 1/n) for n in range(1, num_harmonics+1)]) even_harmonics = [(1, 1)] # always include fundamental tone harmonic even_harmonics.extend([(n, 1/n) for n in range(2, num_harmonics*2, 2)]) h_even = synth.harmonics(freq, 1, even_harmonics) h_odd = synth.harmonics(freq, 1, [(n, 1/n) for n in range(1, num_harmonics*2, 2)]) h_all.join(h_even).join(h_odd) import matplotlib.pyplot as plot plot.title("Spectrogram") plot.ylabel("Freq") plot.xlabel("Time") plot.specgram(h_all.get_frame_array(), Fs=synth.samplerate, noverlap=90, cmap=plot.cm.gist_heat) plot.show()
def bias(): from matplotlib import pyplot as plot synth = WaveSynth(samplerate=1000) waves = [synth.sine(2, 4, 0.02, bias=0.1), synth.triangle(2, 4, 0.02, bias=0.2), synth.pulse(2, 4, 0.02, bias=0.3, pulsewidth=0.45), synth.harmonics(2, 4, [(n, 1 / n) for n in range(1, 8)], 0.02, bias=0.4), synth.sawtooth(2, 4, 0.02, bias=0.5), synth.sawtooth_h(2, 4, 7, 0.02, bias=0.6), synth.square(2, 4, 0.02, bias=0.7), synth.square_h(2, 4, 7, 0.02, bias=0.8), synth.white_noise(frequency=100, duration=4, amplitude=0.02, bias=0.9)] for wave in waves: plot.plot(wave.get_frame_array()) plot.title("All waveforms biased to levels above zero") plot.show()
def demo_tones(): synth = WaveSynth() with Output(nchannels=1, mixing="sequential", queue_size=2) as out: for wave in [synth.square_h, synth.square, synth.sine, synth.triangle, synth.sawtooth, synth.sawtooth_h]: print(wave.__name__) for note, freq in list(notes[4].items())[6:]: print(" {:f} hz".format(freq)) sample = wave(freq, duration=0.4).fadein(0.02).fadeout(0.1) out.play_sample(sample) print("pulse") for note, freq in list(notes[4].items())[6:]: print(" {:f} hz".format(freq)) sample = synth.pulse(freq, duration=0.4, pulsewidth=0.1).fadein(0.02).fadeout(0.1) out.play_sample(sample) print("harmonics (only even)") for note, freq in list(notes[3].items())[6:]: print(" {:f} hz".format(freq)) harmonics = [(n, 1/n) for n in range(1, 5*2, 2)] sample = synth.harmonics(freq, 0.4, harmonics).fadein(0.02).fadeout(0.1) out.play_sample(sample) print("noise") sample = synth.white_noise(frequency=440, duration=1.5).fadein(0.1).fadeout(0.1) out.play_sample(sample) out.wait_all_played()