03-complex-resonator.py - Filtering by mean of a complex multiplication.¶
ComplexRes implements a resonator derived from a complex multiplication, which is very similar to a digital filter.
It is used here to create a rhythmic chime with varying resonance.
from pyo import *
import random
s = Server().boot()
# Six random frequencies.
freqs = [random.uniform(1000, 3000) for i in range(6)]
# Six different plucking speeds.
pluck = Metro([0.9, 0.8, 0.6, 0.4, 0.3, 0.2]).play()
# LFO applied to the decay of the resonator.
decay = Sine(0.1).range(0.01, 0.15)
# Six ComplexRes filters.
rezos = ComplexRes(pluck, freqs, decay, mul=5).out()
# Change chime frequencies every 7.2 seconds
def new():
freqs = [random.uniform(1000, 3000) for i in range(6)]
rezos.freq = freqs
pat = Pattern(new, 7.2).play()
s.gui(locals())