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 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 bridge(self, start_tick, end_tick, in_pin, out_pin): self.act('bridge', 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 slidebasefreq(self, start_tick, end_tick, startfreq, endfreq): self.act('slidebasefreq', start_tick, end_tick, self, None, [startfreq, endfreq]) def slidegain(self, start_tick, end_tick, startgain, endgain): self.act('slidegain', start_tick, end_tick, self, None, [startgain, endgain]) def slidephase(self, start_tick, end_tick, startphase, endphase): self.act('slidephase', start_tick, end_tick, self, None, [startphase, endphase]) def slideskew(self, start_tick, end_tick, startskew, endskew): self.act('slideskew', start_tick, end_tick, self, None, [startskew, endskew]) def slidepos(self, start_tick, end_tick, sx, sy, sz, ex, ey, ez): self.act('slidepos', start_tick, end_tick, self, None, [sx, sy, sz, ex, ey, ez]) def pulse(self, start_tick, end_tick, gainmult = 0.0): self.act('pulse', start_tick, end_tick, self, None, [gainmult]) def fmsetup(self, start_tick, fmbasefreq, fmq): self.act('fmsetup', start_tick, start_tick, self, None, [fmbasefreq, fmq]) def fm(self, start_tick, end_tick): self.act('fm', start_tick, end_tick, self, None, []) def am(self, start_tick, end_tick): self.act('am', start_tick, end_tick, self, None, []) 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 setadsrgain(self, start_tick, adsrgain): self.act('setadsrgain', start_tick, start_tick, self, None, [adsrgain]) def setadsrsustain(self, start_tick, adsrsustain): self.act('setadsrsustain', start_tick, start_tick, self, None, [adsrsustain]) 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])