-
Notifications
You must be signed in to change notification settings - Fork 2
/
aengine.py
116 lines (104 loc) · 3.75 KB
/
aengine.py
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
109
110
111
112
113
114
115
116
# import pyo as p
from pyo import *
import multiprocessing as mp
#s = Server(sr=44100, nchnls=2, buffersize=512, duplex=0).boot()
# s = Server(duplex=0)
# s.boot()
# s.start()
#
# test change
output = mp.Queue()
class AudioEngine(object):
def __init__(self):
# self.s = self.engine
# self.start(
self.sr = 44100
self.nchnls = 2
self.buffersize = 512
self.duplex = 0
# self.engine = Server(sr=self.sr, nchnls=self.nchnls, buffersize=self.buffersize, duplex=self.duplex)
self.engine = Server(audio="jack")
# self.engine.setInOutDevice(5)
# self.m = Metro(.125)
def start(self):
# self.engine.setJackAuto(False, False)
# enable audio
# self.engine.boot()
# self.engine.start()
for x in range(200):
print("Audio is disabled in aengine.py")
print("Engine started - Sample Rate: {sr} - Channels: {chan} - Buffer Size: {buf} - Duplex: {dup}".format(sr=self.sr,chan=self.nchnls,buf=self.buffersize,dup=self.duplex))
def record(self):
self.engine.recordOptions(dur=100, filename="output_13.wav", fileformat=0, sampletype=1)
self.engine.recstart()
def get_outputs(self):
outs = pa_get_output_devices()
return outs
def set_output(self, device_number):
self.engine.setInOutDevice(int(device_number))
self.sf = SfPlayer("sounds/kick1.wav", mul=0.3).mix(2).out()
def start_metro(self):
self.m.play()
def stop_metro(self):
self.m.stop()
# def playsound(self, filename):
# self.sf = SfPlayer(filename, mul=0.3)
# self.sf.mix(2).out()
# print("soundplayed")
def playsound(self, filename):
self.sf = SfPlayer(filename, mul=0.3).mix(2).out()
# self.sf = self.sf.mix(2).out()
print("soundplayed")
class AudioItem(object):
def __init__(self, filename, volume, pan, vel):
self.filename = filename
self.volume = volume
self.pan = pan
self.fx = []
self.vel = vel
self.sf = SfPlayer(self.filename, mul=0.3).stop()
self.sf2 = self.sf.mix(2).out()
def play(self):
self.sf.play()
# print("played audioitem")
# self.a = Trig()
# self.env = HannTable()
# self.tenv = TrigEnv(self.sf, table=self.env, dur=5, mul=.3)
# self.tenv.out()
# self.n = Noise(self.tenv).out()
def setfn(self, path):
self.sf.setPath(path)
class AudioMixer(object):
def __init__(self):
print("mixer started")
self.tracks = []
def addTrack(self, fn):
self.fn = fn
self.tracks.append(AudioItem(self.fn, 0, 0, 0))
print("added {} to mixer, total tracks = {}".format(self.fn, len(self.tracks)))
def __init__(self, filename, volume, pan, vel):
self.filename = filename
self.volume = volume
self.pan = pan
self.fx = []
self.vel = vel
self.sf = SfPlayer(self.filename, mul=0.3).stop()
self.sf2 = self.sf.mix(2).out()
def play(self):
self.sf.play()
# print("played audioitem")
# self.a = Trig()
# self.env = HannTable()
# self.tenv = TrigEnv(self.sf, table=self.env, dur=5, mul=.3)
# self.tenv.out()
# self.n = Noise(self.tenv).out()
def setfn(self, path):
self.sf.setPath(path)
class AudioMixer(object):
def __init__(self):
print("mixer started")
self.tracks = []
def addTrack(self, fn):
self.fn = fn
self.tracks.append(AudioItem(self.fn, 0, 0, 0))
print("added {} to mixer, total tracks = {}".format(self.fn, len(self.tracks)))