02-bandpass-filters.py - Narrowing a bandpass filter bandwidth. — Pyo 1.0.4 documentation

Pyo 1.0.4 documentation

# 02-bandpass-filters.py - Narrowing a bandpass filter bandwidth.

This example illustrates the difference between a simple IIR second-order bandpass filter and a cascade of second-order bandpass filters. A cascade of four bandpass filters with a high Q can be used as a efficient resonator on the signal.

    from pyo import *

    s = Server().boot()

    # White noise generator
    n = Noise(0.5)

    # Common cutoff frequency control
    freq = Sig(1000)
    freq.ctrl([SLMap(50, 5000, "lin", "value", 1000)], title="Cutoff Frequency")

    # Common filter's Q control
    q = Sig(5)
    q.ctrl([SLMap(0.7, 20, "log", "value", 5)], title="Filter's Q")

    # Second-order bandpass filter
    bp1 = Reson(n, freq, q=q)
    # Cascade of second-order bandpass filters
    bp2 = Resonx(n, freq, q=q, stages=4)

    # Interpolates between input objects to produce a single output
    sel = Selector([bp1, bp2]).out()
    sel.ctrl(title="Filter selector (0=Reson, 1=Resonx)")

    # Displays the spectrum contents of the chosen source
    sp = Spectrum(sel)

    s.gui(locals())