summaryrefslogtreecommitdiff
path: root/klangfarb
diff options
context:
space:
mode:
authorGrant Shangreaux <grant@unabridgedsoftware.com>2021-11-01 19:45:51 -0500
committerGrant Shangreaux <grant@unabridgedsoftware.com>2021-11-01 19:45:51 -0500
commitc2ef13956710352267ae1583c11efbc745fecfd7 (patch)
tree01fc6ea2f5d7f6b9e4393716471d9161ae3d31fd /klangfarb
parente598f10e17b317386ae8681e664a0c250c7f2dbe (diff)
Add: triangle and sawtooth waveforms
Diffstat (limited to 'klangfarb')
-rw-r--r--klangfarb/main.gd16
1 files changed, 10 insertions, 6 deletions
diff --git a/klangfarb/main.gd b/klangfarb/main.gd
index 6552490..9735c5f 100644
--- a/klangfarb/main.gd
+++ b/klangfarb/main.gd
@@ -3,7 +3,7 @@ extends AudioStreamPlayer
# controllable frequency interface
export(float, 20, 8000, 5) var freq = 440.0
# control wave form
-export(String, "sine", "square") var waveform = "sine"
+export(String, "sine", "square", "triangle", "sawtooth") var waveform = "sine"
# load the GDNative script connected to the rust lib
var Osc = preload("res://Osc.gdns")
@@ -26,12 +26,17 @@ func _fill_buffer() -> void:
func _check_waveform():
if waveform == "square":
wave.square()
- else:
+ elif waveform == "sine":
wave.sine()
+ elif waveform == "triangle":
+ wave.triangle()
+ elif waveform == "sawtooth":
+ wave.sawtooth()
func _process(_delta):
- _check_waveform()
- _fill_buffer()
+ if self.is_playing():
+ _check_waveform()
+ _fill_buffer()
func _ready() -> void:
# buffer length of 100ms gives us ~realtime response to input changes
@@ -41,6 +46,5 @@ func _ready() -> void:
# get our AudioStreamPlayback object
playback = self.get_stream_playback()
# prefill the stream's sample buffer (which feeds DAC)
+ _check_waveform()
_fill_buffer()
- # start the audio
- self.play()