sonnum/pysonnum/soundnode.py

88 lines
No EOL
2.8 KiB
Python

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 feed(self, trg_nodes, src_pin, trg_pin):
if not isinstance(trg_nodes, list):
trg_nodes = [trg_nodes]
for trg_node in trg_nodes:
self.act('feed', 0, 0, self, trg_node, [src_pin, trg_pin])
def wire(self, trg_nodes):
if not isinstance(trg_nodes, list):
trg_nodes = [trg_nodes]
for trg_node in trg_nodes:
self.act('feed', 0, 0, self, trg_node, [0, 0])
def air(self, trg_nodes):
if not isinstance(trg_nodes, list):
trg_nodes = [trg_nodes]
for trg_node in trg_nodes:
self.act('feed', 0, 0, self, trg_node, [0, 1])
def setpos(self, start_tick, x, y, z):
self.act('setpos', start_tick, start_tick, self, None, [x, y, z])
def setpin(self, start_tick, pin_no, value):
self.act('setpin', start_tick, start_tick, self, None, [pin_no, value])
def printstate(self, start_tick, end_tick):
self.act('printstate', start_tick, end_tick, self, None, [])
def copy(self, start_tick, end_tick, in_pin, out_pin):
self.act('copy', start_tick, end_tick, self, None, [in_pin, out_pin])
def sine(self, start_tick, end_tick, gainmult = 0.0):
self.act('sine', start_tick, end_tick, self, None, [gainmult])
def triangle(self, start_tick, end_tick, gainmult = 0.0):
self.act('triangle', start_tick, end_tick, self, None, [gainmult])
def square(self, start_tick, end_tick, gainmult = 0.0):
self.act('square', start_tick, end_tick, self, None, [gainmult])
def sawtooth(self, start_tick, end_tick, gainmult = 0.0):
self.act('sawtooth', start_tick, end_tick, self, None, [gainmult])
def singenN(self, start_tick, end_tick, magnitude, phase, freq, ylevel):
self.act('singenN', start_tick, end_tick, self, None, [magnitude, phase, freq, ylevel])
def skewsine(self, start_tick, end_tick, gainmult = 0.0):
self.act('skewsine', start_tick, end_tick, self, None, [gainmult])
def pulse(self, start_tick, end_tick, gainmult = 0.0):
self.act('pulse', start_tick, end_tick, self, None, [gainmult])
def mute(self, start_tick, end_tick):
self.act('mute', start_tick, end_tick, self, None, [])
def whitenoise(self, start_tick, end_tick, gainmult = 0.0, seed = 0.259624856928):
self.act('whitenoise', start_tick, end_tick, self, None, [seed, gainmult])
def adsr(self, start_tick, end_tick, attack_tick, hold_tick, decay_tick, sustain_tick, release_tick, gainmult = 0.0):
self.act('adsr', start_tick, end_tick, self, None, [attack_tick, hold_tick, decay_tick, sustain_tick, release_tick, gainmult])