Repository navigation
Expand file tree
/
Copy pathexamples.py
More file actions
109 lines (79 loc) · 2.83 KB
/
Copy pathexamples.py
File metadata and controls
109 lines (79 loc) · 2.83 KB
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import keyboard
import librosa
import soundfile
import numpy as np
from pynthlib import pynth as pt
if __name__ == "__main__":
# OVERTONES
out = 0.5 * pt.Sin(200)
for i in range(5):
out += 0.1 * pt.Sin(100*i)
pt.drawgraph(out)
pt.showsound(out, t2=0.1, sec=True)
out.play(5*pt.SR)
# SAMPLES, VOCAL REMOVER
input("Next example - vocal remover (press any key):")
sample, sr = librosa.load("pop.wav", mono=False)
l = pt.Wave(sample[0, :])
r = pt.Wave(sample[1, :])
pt.SR = sr
out = 0.5 * (0.5*l - 0.5*r) + 0.5 * pt.MovingAvg(0.5*l + 0.5*r, M=50)
pt.drawgraph(out)
pt.showsound(out, t2=5, sec=True)
out.play(10*pt.SR)
soundfile.write("vocal-remover.wav", out.eval(5*pt.SR), pt.SR)
# KARPLUS, FREEZING SAMPLES
input("Next example - Karplus Strong (press any key):")
noise = pt.Wave(np.random.rand(4000)-0.5)
delay = pt.Delay(None, delay=0.005)
add = noise + delay
delay.ins["a"] = 0.95 * pt.MovingAvg(add, M=10)
out = add
frozen = pt.Wave(add.eval(2*pt.SR))
frozen.play(2*pt.SR)
pt.drawgraph(out)
pt.showsound(frozen, t2=2, sec=True)
out.play(2*pt.SR)
# ENVELOPES, USER INPUT, SCOPES
input("Next example - user input, envelopes and scopes (press any key):")
control = pt.Input()
env = pt.Envelope(pt.Scope(control), (2000, 0, 0, 8000))
out = pt.Scope(env)
out = pt.Scope(out * pt.Saw(100))
val = 0
def loop(t):
if keyboard.is_pressed('l'):
control.set(1)
else:
control.set(0)
out.play(30*pt.SR, live=True, callback=loop)
# LOWPASS SWIPE
input("Next example - lowpass swipe (press any key):")
sample, sr = librosa.load("house.mp3", mono=True)
pt.SR = sr
music = pt.Wave(sample)
control = pt.Scope(pt.Sin(1/5)*0.5+0.5)
out = pt.Lowpass(music, control, res=0.4)
out = pt.Scope(out)
out.play(20*pt.SR, live=True, callback=None)
# PROCEDURAL WIND
input("Next example - precedural wind generator (press any key):")
noise = pt.WhiteNoise()
cutmod = pt.Unipol(0.5*pt.Sin(1/3) + 0.5*pt.Sin(1/5)) * 0.08
resmod = pt.Unipol((0.5*pt.Sin(1) + 0.5*pt.Sin(0.8)) >> 0.3) * 0.4 + 0.2
out = pt.Scope(pt.Lowpass(noise, cutmod, resmod))
pt.drawgraph(out)
pt.showsound(out, t2=0.5, sec=True)
#out.play(30*pt.SR, live=False)
soundfile.write("wind.wav", out.eval(20*pt.SR), pt.SR)
# THIS IS ACID MAAAN
input("Next example - acid baseline (press any key):")
clock = pt.Pulses(T=1/8)
clock = pt.Sequencer(clock, [0,1,0,1,0,1,1,1])
env = pt.Scope(pt.Envelope(clock, durs=(1000, 0, 0, 5000)))
voice = pt.Saw(80)
out = env * pt.Lowpass(voice, env, res=0.6)
out = pt.Scope(out)
pt.drawgraph(out)
pt.showsound(out, t2=3, sec=True)
out.play(20*pt.SR, live=False)