sonnum/pysonnum/soundnode.py
2025-09-15 19:23:03 +03:00

94 lines
No EOL
3.5 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 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])