File: 03_rec_and_loop.py

package info (click to toggle)
python-pyo 1.0.6-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 52,332 kB
  • sloc: python: 135,133; ansic: 127,822; javascript: 16,116; sh: 395; makefile: 389; cpp: 242
file content (36 lines) | stat: -rw-r--r-- 820 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env python
# encoding: utf-8
"""
This script records any number of buffers and loop them.

Call r.play() (as many times as you want) to record a buffer from the input mic.

"""
from pyo import *

s = Server(duplex=1).boot()

buffer_length = 1  # seconds

objs = []


def cp():
    # make a copy of the table.
    t2 = t.copy()
    # start looping the copied table.
    f = Fader(fadein=0.1, mul=0.5).play()
    pl = Osc(t2, freq=1.0 / buffer_length, interp=4, mul=f).out()
    # save a references to these audio objects to keep them alive.
    objs.extend([t2, f, pl])


mic = Input([0, 1])

# the table for the recording.
t = NewTable(length=buffer_length, chnls=2)
r = TableRec(mic, table=t, fadetime=0.1)
# once the recording is done, cp() is called.
tr = TrigFunc(r["trig"], function=cp)

s.gui(locals())