Sintetizador

Un sintetizador completo en unas 200 líneas: examples/audio/synth.py.
python examples/audio/synth.pyTócalo con el ratón en el piano o con las teclas del ordenador: A W S E D… son las teclas blancas y negras de una octava, y Z y X bajan y suben la octava. Los tres botones de arriba cargan presets (Bass, Lead, Pad).
Cómo está hecho
Sección titulada «Cómo está hecho»El patch es una cadena de módulos del motor:
MIDI in → 2 osciladores → mezclador → filtro → amplificador → distorsión → chorus → delay → reverb → altavoces ↑ ↑ └ envolvente┘midi_in convierte engine.note_on() en un tono y una puerta; la envolvente abre el filtro y el
amplificador en cada nota. El panel guarda un diccionario de valores y una función, put, que
envía cada uno al módulo que controla:
def put(self, key, value): self.values[key] = value if key in ("cutoff", "resonance"): self.engine.set(self.vcf, key, value) elif key in ("attack", "decay", "sustain", "release"): self.engine.set(self.env, key, value) ...La vista está hecha de perillas agrupadas en secciones, un
osciloscopio y un espectro
que leen engine.scope() y engine.spectrum(), un vúmetro,
un fader para el volumen y un piano
cuyos eventos note_on/note_off van al motor. pz.frames() redibuja la ventana en cada
fotograma para que las pantallas se muevan.