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 setbasefreq(self, start_tick, basefreq): self.act('setbasefreq', start_tick, start_tick, self, None, [basefreq]) def setgain(self, start_tick, gain): self.act('setgain', start_tick, start_tick, self, None, [gain]) def setphase(self, start_tick, phase): self.act('setphase', start_tick, start_tick, self, None, [phase]) 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 setskew(self, start_tick, skew): self.act('setskew', start_tick, start_tick, self, None, [skew]) 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])