def stereo_pan(): synth = WaveSynth() # panning a stereo source: wave = Sample("samples/SOS 020.wav").clip(6, 12).normalize().fadein(0.5).fadeout(0.5).lock() osc = Sine(0.4) panning = wave.copy().pan(lfo=osc).fadeout(0.2) with Output.for_sample(panning) as out: out.play_sample(panning) out.wait_all_played() # panning a generated mono source: fm = Sine(0.5, 0.1999, bias=0.2) wave = synth.triangle(220, 5, fm_lfo=fm).lock() osc = Sine(0.4) panning = wave.copy().pan(lfo=osc).fadeout(0.2) with Output.for_sample(panning) as out: out.play_sample(panning) out.wait_all_played()
Written by Irmen de Jong ([email protected]) - License: GNU LGPL 3. """ import os import time from synthplayer.sample import Sample from synthplayer.playback import Output s1 = Sample("samples/909_clap.wav").normalize() s2 = Sample("samples/909_hi_tom.wav").normalize() s3 = Sample("samples/909_ride.wav").normalize() s4 = Sample("samples/Drop the bass now.wav").normalize() s5 = Sample("samples/909_snare_drum.wav").normalize() s6 = Sample("samples/909_hihat_closed.wav").normalize() s6_soft = s6.copy().amplify(0.2) with Output(mixing="sequential", queue_size=3) as out: print("\nPlaying samples with sequential mixing mode.") print("This takes care of playing samples only if the previous one finished,") print("but you cannot mix any sounds. It's ideal for playback of a single sound source,") print("such as an audio clip or audio stream that comes in chunks.") out.play_sample(s1) out.play_sample(s2) out.play_sample(s3) out.play_sample(s4) out.play_sample(s5) out.play_sample(s5) out.play_sample(s5) out.play_sample(s6) print("\nwaiting till all sounds have played...")