mirror of
https://github.com/vsariola/sointu.git
synced 2025-07-14 02:54:37 -04:00
Remove bridge.newSynthState & add 1 to RandSeed during Render calls, so now an empty struct corresponds to the Sointu default behavior.
This commit is contained in:
@ -94,7 +94,9 @@ func (synth *Synth) Render(state *SynthState, buffer []float32) error {
|
||||
return errors.New("Render writes stereo signals, so buffer should have even length")
|
||||
}
|
||||
maxSamples := len(buffer) / 2
|
||||
state.RandSeed += 1 // if you initialize with empty struct, you will get randseed 1 which is sointu default behavior
|
||||
errcode := C.su_render((*C.Synth)(synth), (*C.SynthState)(state), (*C.float)(&buffer[0]), C.int(maxSamples))
|
||||
state.RandSeed -= 1
|
||||
if errcode > 0 {
|
||||
return errors.New("Render failed")
|
||||
}
|
||||
@ -124,7 +126,9 @@ func (synth *Synth) RenderTime(state *SynthState, buffer []float32, maxtime int)
|
||||
}
|
||||
samples := C.int(len(buffer) / 2)
|
||||
time := C.int(maxtime)
|
||||
state.RandSeed += 1 // if you initialize with empty struct, you will get randseed 1 which is sointu default behavior
|
||||
errcode := int(C.su_render_time((*C.Synth)(synth), (*C.SynthState)(state), (*C.float)(&buffer[0]), &samples, &time))
|
||||
state.RandSeed -= 1
|
||||
if errcode > 0 {
|
||||
return -1, -1, errors.New("RenderTime failed")
|
||||
}
|
||||
@ -185,9 +189,3 @@ func (s *SynthState) Release(voice int) {
|
||||
cs := (*C.SynthState)(s)
|
||||
cs.SynthWrk.Voices[voice].Release = 1
|
||||
}
|
||||
|
||||
func NewSynthState() *SynthState {
|
||||
s := new(SynthState)
|
||||
s.RandSeed = 1
|
||||
return s
|
||||
}
|
||||
|
@ -31,15 +31,15 @@ func TestBridge(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("bridge compile error: %v", err)
|
||||
}
|
||||
state := bridge.NewSynthState()
|
||||
var state bridge.SynthState
|
||||
state.Trigger(0, 64)
|
||||
buffer := make([]float32, 2*su_max_samples)
|
||||
err = synth.Render(state, buffer[:len(buffer)/2])
|
||||
err = synth.Render(&state, buffer[:len(buffer)/2])
|
||||
if err != nil {
|
||||
t.Fatalf("first render gave an error")
|
||||
}
|
||||
state.Release(0)
|
||||
err = synth.Render(state, buffer[len(buffer)/2:])
|
||||
err = synth.Render(&state, buffer[len(buffer)/2:])
|
||||
if err != nil {
|
||||
t.Fatalf("first render gave an error")
|
||||
}
|
||||
|
@ -42,8 +42,8 @@ func TestSongRender(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("Compiling patch failed: %v", err)
|
||||
}
|
||||
state := bridge.NewSynthState()
|
||||
buffer, err := song.Render(synth, state)
|
||||
var state bridge.SynthState
|
||||
buffer, err := song.Render(synth, &state)
|
||||
if err != nil {
|
||||
t.Fatalf("Render failed: %v", err)
|
||||
}
|
||||
|
Reference in New Issue
Block a user