61 lines
1.4 KiB
Python
61 lines
1.4 KiB
Python
class PianoString:
|
|
|
|
def __init__(self, s, note):
|
|
|
|
self.s = s
|
|
self.basefreq = self.s.note(note)
|
|
self.primary_gain = 0.4
|
|
|
|
self.mod = self.s.node()
|
|
self.node = self.s.node()
|
|
|
|
self.node.setbasefreq(0, self.basefreq)
|
|
self.node.setgain(0, self.primary_gain)
|
|
|
|
self.mod.setbasefreq(0, 10)
|
|
self.mod.setgain(0, 0.8)
|
|
self.mod.sine(0, self.s.end)
|
|
self.node.fmsetup(0, self.basefreq, 0.009)
|
|
self.node.fm(0, self.s.end)
|
|
self.node.setskew(0, 0.3)
|
|
|
|
self.s.wire(self.mod, self.node)
|
|
self.s.air(self.node, [self.s.left, self.s.right])
|
|
|
|
def gain(self, starttick, gain):
|
|
|
|
self.node.setgain(starttick, gain)
|
|
|
|
def play(self, starttick, endtick):
|
|
|
|
self.node.slidegain(starttick, endtick, self.primary_gain, 0)
|
|
self.node.sine(starttick, endtick, 0.5)
|
|
self.node.skewsine(starttick, endtick)
|
|
self.node.square(starttick, endtick, 0.2)
|
|
self.node.triangle(starttick, endtick, 0.4)
|
|
|
|
|
|
def playsec(self, start, end):
|
|
|
|
self.play(self.s.sec(start), self.s.sec(end))
|
|
|
|
s.setup(s.sec(4))
|
|
|
|
"""
|
|
S = PianoString(s, "E4")
|
|
S.playsec(0,1)
|
|
|
|
S2 = PianoString(s, "C#4")
|
|
S2.playsec(1,2)
|
|
|
|
"""
|
|
n = s.node()
|
|
n.setgain(0, 0.4)
|
|
#n.whitenoise(0, s.sec(2), 0.8924587, 0.3)
|
|
|
|
n.setadsrgain(0, 1)
|
|
n.setadsrsustain(0, 0.4)
|
|
n.adsr(0, s.sec(2), s.sec(0.03), s.sec(0.04), s.sec(0.3), s.sec(1.3), s.sec(2))
|
|
n.sine(0, s.sec(2), 0.3)
|
|
n.triangle(0, s.sec(2))
|
|
s.wire(n, [s.left, s.right])
|