def filtered_saw(delay, note, amp, dur=1.): t = pyo.SawTable(order=15).normalize() dur *= 2. env = pyo.Fader(fadein=.02, fadeout=0.02, dur=dur * 0.9, mul=amp).play(dur=2.5 * dur, delay=delay) adsr = pyo.Adsr(attack=dur * 0.05, decay=0.05 * dur, sustain=0.3, release=dur * 0.7, dur=dur * 0.9, mul=amp).play(dur=2.5 * dur, delay=delay) osc = pyo.Osc(t, freq=pyo.midiToHz(note), mul=adsr).mix(1) rev = pyo.Freeverb(osc, size=1., damp=0.5, bal=1., mul=env).play(dur=2.5 * dur, delay=delay) # rev.out(delay=delay, dur=dur) eq = pyo.Biquad(rev, freq=800, q=1., type=0).play(dur=2.5 * dur, delay=delay) eq.out(delay=delay, dur=dur) # eq = None return osc, env, rev, eq
def create_synth_sawtooth(self): '''Create a sawtooth wave synthesizer as a sum of sines using the PYO SawTable module (which internally calls HarmTable).''' self.log.debug('creating sawtooth synth [additive]') t = pyo.SawTable(order=self.nharmonics, size=self.tsize) return pyo.Osc(table=t, mul=0, freq=[FREQ_C4, FREQ_C4])
def __init__(self): self.env = pyo.Adsr(attack=.01, decay=.6, sustain=.0, release=.6, dur=1, mul=.5) sq = pyo.SawTable() self.osc = pyo.Osc(table=sq, mul=self.env, freq=440) self.lowpass = pyo.MoogLP(self.osc, 1000, self.env) self.lowpass.out()
def __init__(self): super().__init__() self.sine = pyo.CosTable([(0, 0), (100, 1), (1000, .25), (8191, 0)]) self.square = pyo.SquareTable() self.saw = pyo.SawTable() self.synth = pyo.NewTable(8192 / 44100) self.pointer = pyo.Sig(0) self.morph = pyo.TableMorph(self.pointer, self.synth, [self.sine, self.square, self.saw]) self.osc = pyo.Osc(self.synth, 440) self.filter = pyo.Biquad(self.osc) self.verb = pyo.WGVerb(self.filter).mix(2)