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])