def pwm(): from matplotlib import pyplot as plot synth = WaveSynth(samplerate=1000) pwm_lfo = Sine(0.05, amplitude=0.49, bias=0.5, samplerate=synth.samplerate) s1 = synth.pulse(4, amplitude=0.6, duration=20, pwm_lfo=pwm_lfo) plot.figure(figsize=(16, 4)) plot.title("Pulse width modulation") plot.ylim([-35000, 35000]) plot.plot(s1.get_frame_array()) plot.show() with Output(nchannels=1) as out: synth = WaveSynth() lfo2 = Sine(0.2, amplitude=0.48, bias=0.5) s1 = synth.pulse(440/6, amplitude=0.5, duration=6, fm_lfo=None, pwm_lfo=lfo2) out.play_sample(s1) # s1.write_wav("pwmtest.wav") out.wait_all_played()
def echo_sample(): synth = WaveSynth(samplerate=44100) lfo = Linear(1, -0.0001, min_value=-99999) s = synth.pulse(220, .5, fm_lfo=lfo).fadeout(.2) with Output(s.samplerate, s.samplewidth, s.nchannels) as out: e = s.copy().echo(1, 4, 0.5, 0.4) # echo out.play_sample(e) e = s.copy().echo(1, 30, 0.15, 0.5) # simple "reverberation" (simulated using fast echos) out.play_sample(e) out.wait_all_played()
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_plot(): from matplotlib import pyplot as plot plot.title("Various waveforms") synth = WaveSynth(samplerate=1000) freq = 4 s = synth.sawtooth(freq, duration=1) plot.plot(s.get_frame_array()) s = synth.sine(freq, duration=1) plot.plot(s.get_frame_array()) s = synth.triangle(freq, duration=1) plot.plot(s.get_frame_array()) s = synth.square(freq, duration=1) plot.plot(s.get_frame_array()) s = synth.square_h(freq, duration=1) plot.plot(s.get_frame_array()) s = synth.pulse(freq, duration=1, pulsewidth=0.2) plot.plot(s.get_frame_array()) 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()