Pyo to świetna biblioteka muzyczna Python-a stworzona przez kanadyjską firmę AJAX STUDIO. Podobno najlepsza do tworzenia skryptów DSP. Od kilku dni ją przeglądam i mój zachwyt jest coraz większy.
Spis treści:
Prosty monitor Midi
PYO Tables
Randi, Mix, Biquad
Linki
Oscylator sinusoidalny
Sine(self, freq=1000, phase=0, mul=1, add=0)
freq – Frequency in Hertz. Sampled at audio-rate.
phase – Phase in radians. Sampled at audio-rate.
NOTE: phase values should be within the range +-8pi. If your phase values are larger then simply use .mod(2pi) to wrap them.
mul – Output will be multiplied by this value.
add – This value will be added to the output.
Zaczynamy od prostego oscylatora z modulacją i ADSR
from pyo import * s = Server().boot() mod = Sine(freq=6, mul=50) f = Adsr(attack=.9, decay=.2, sustain=.8, release=2, dur=7, mul=.5) a = Sine(freq=mod + 440, mul=f).out() f.play() s.start() s.gui(locals())
Poniżej mój pierwszy syntezator oparty o moduły ChenLee i Lorenz-a (cokolwiek to znaczy)
#!/usr/bin/env python # encoding: utf-8 """ Control window. The ctrl() method (defined in PyoObject) shows a slider window with which the user can set the value of the object's attributes. If an audio object is given at a particular argument, the attributes will not appear in the ctrl window. """ from pyo import * s = Server(duplex=0).boot() s.start() a = ChenLee(pitch=0.001, chaos=1, stereo=True, mul=.5, add=.5) b = ChenLee(pitch=1, chaos=a, mul=.5) c = Lorenz(pitch=.003, stereo=True, mul=.2, add=.2) d = Lorenz(pitch=[.4, .38], mul=c).out() a.ctrl(title="ChenLee A") b.ctrl(title="ChenLee B") c.ctrl(title="Lorenz A") d.ctrl(title="Lorenz B") b.out() s.gui(locals())
Program wypisuje aktualne wejścia i wyjścia MIDI, po wybraniu portu wypisuje numer i wartość kontrolera. Źródło: 02_midi_ctl_scan.py
Linki:
pyo 0.9.0 documentation
Pyo tutorials
Pyo getting started
Pyo doc. controls