PYO – muzyczna biblioteka dla Pythona

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


Prosty monitor Midi


Randi, Mix, Biquad

Tables

Linki:

pyo 0.9.0 documentation
Pyo tutorials
Pyo getting started
Pyo doc. controls

PYO

Dodaj komentarz