From ca4b87d43d2f23ecd7e021f0e7156b624fd464f7 Mon Sep 17 00:00:00 2001 From: "5684185+vsariola@users.noreply.github.com" <5684185+vsariola@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:10:53 +0200 Subject: [PATCH] fix(vm): nans in the Go VM trisaw oscillator when the color was 0 --- CHANGELOG.md | 1 + vm/go_synth.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b090da..f310d8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). roughly to -12 dBFS true peak. ([#211][i211]) ### Fixed +- Occasional NaNs in the Trisaw oscillator when the color was 0 in the Go VM. - The tracker thought that "sync" unit pops the value from stack, even if the VM did not, resulting it claiming errors in patches that worked once compiled. diff --git a/vm/go_synth.go b/vm/go_synth.go index 446b869..2391dd4 100644 --- a/vm/go_synth.go +++ b/vm/go_synth.go @@ -500,7 +500,7 @@ func (s *GoSynth) Render(buffer sointu.AudioBuffer, maxtime int) (samples int, r *statevar -= float32(int(*statevar+1) - 1) phase := *statevar phase += params[2] - phase -= float32(int(phase)) + phase -= float32(int(phase+1) - 1) color := params[3] switch { case flags&0x40 == 0x40: // Sine