Implement saw wave and honk waveform
This commit is contained in:
parent
838cdb1487
commit
5bba29570e
|
@ -10,7 +10,7 @@ bitrate = 44100
|
||||||
|
|
||||||
note = []
|
note = []
|
||||||
for i in range(0, 24):
|
for i in range(0, 24):
|
||||||
note.append([yue.tone(yue.freq(3, i), j / bitrate) / 4 for j in range(0, 3 * bitrate)])
|
note.append([yue.seething(yue.freq(4, i), j / bitrate) / 4 for j in range(0, 3 * bitrate)])
|
||||||
|
|
||||||
sd.default.samplerate = bitrate
|
sd.default.samplerate = bitrate
|
||||||
print("READY")
|
print("READY")
|
||||||
|
|
17
yue.py
17
yue.py
|
@ -8,6 +8,13 @@ bitrate = 44100
|
||||||
music = []
|
music = []
|
||||||
|
|
||||||
|
|
||||||
|
def saw(x):
|
||||||
|
"""
|
||||||
|
Sawtooth wave
|
||||||
|
"""
|
||||||
|
return x / 2 / math.pi % 1
|
||||||
|
|
||||||
|
|
||||||
def freq(octave, step):
|
def freq(octave, step):
|
||||||
"""
|
"""
|
||||||
Returns the frequency of a note
|
Returns the frequency of a note
|
||||||
|
@ -45,6 +52,16 @@ def seething(f, t):
|
||||||
return Y
|
return Y
|
||||||
|
|
||||||
|
|
||||||
|
def honk(f, t):
|
||||||
|
"""
|
||||||
|
Returns the intensity of the "honk" waveform of frequency f sampled at time t
|
||||||
|
"""
|
||||||
|
w = 2 * math.pi * f
|
||||||
|
Y = sum([(saw(i * w * t) / 3 + math.sin(i * w * t)) * math.exp(-0.002 * w * t) for i in range(1, 6)]) / 2
|
||||||
|
Y = math.copysign(abs(Y) ** (1 / 2), Y)
|
||||||
|
return Y
|
||||||
|
|
||||||
|
|
||||||
def at(t):
|
def at(t):
|
||||||
"""
|
"""
|
||||||
Returns the total intensity of music sampled at time t
|
Returns the total intensity of music sampled at time t
|
||||||
|
|
Loading…
Reference in a new issue