sonnum/pysonnum/soundnode.py

74 lines
No EOL
1.7 KiB
Python

R_AMP = 0
WIRE_IN = 1
AIR_IN = 2
GAIN = 32
PHASE = 33
X = 61
Y = 62
Z = 63
def freqpin(freq_no):
return 64+freq_no
def gainpin(freq_no):
return 112+freq_no
def shiftpin(freq_no):
return 160+freq_no
def sec(seconds):
return seconds * 44100
class SoundNode:
def __init__(self, sonnum, order, name):
self.order = order
self.s = sonnum
self.c = sonnum.c
self.name = name
self.properties = dict() # {k: v}
def __repr__(self):
return f'{self.order}:{self.name}'
def g(self, k):
return self.properties.get(k)
def s(self, k, v):
self.properties[k] = v
def act(self, *args):
self.c.add_activity(*args)
def wire_lr(self, *args):
self.act("link", 0, 0, self, self.s.left, [0, 1])
self.act("link", 0, 0, self, self.s.right, [0, 1])
def air_lr(self, *args):
self.act("link", 0, 0, self, self.s.left, [0, 2])
self.act("link", 0, 0, self, self.s.right, [0, 2])
def setfreq(self, starttick, endtick, args):
freq_no = args[0]
freq = args[1]
self.act("setpin", starttick, endtick, self, None, [freqpin(freq_no), freq])
def setfreqgain(self, starttick, endtick, args):
freq_no = args[0]
gain = args[1]
self.act("setpin", starttick, endtick, self, None, [gainpin(freq_no), gain])
def setfreqshift(self, starttick, endtick, args):
freq_no = args[0]
shift = args[1]
self.act("setpin", starttick, endtick, self, None, [shiftpin(freq_no), shift])
def setgain(self, starttick, endtick, args):
gain = args[0]
self.act("setpin", starttick, endtick, self, None, [GAIN, gain])
def setphase(self, starttick, endtick, phase):
phase = args[0]
self.act("setpin", starttick, endtick, self, None, [PHASE, gain])