diff --git a/CHANGELOG.md b/CHANGELOG.md index d28a098..d2b6763 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,6 +88,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ([#156][i156]) ### Changed +- The maximum number of delaylines in the native synth was increased to 128, + with slight increase in memory usage ([#155][i155]) - The numeric updown widget has a new appearance. - The draggable UI splitters snap more controllably to the window edges. - New & better presets, organized by their type to subfolders (thanks Reaby!) @@ -312,6 +314,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [i150]: https://github.com/vsariola/sointu/issues/150 [i151]: https://github.com/vsariola/sointu/issues/151 [i154]: https://github.com/vsariola/sointu/issues/154 +[i155]: https://github.com/vsariola/sointu/issues/155 [i156]: https://github.com/vsariola/sointu/issues/156 [i157]: https://github.com/vsariola/sointu/issues/157 [i158]: https://github.com/vsariola/sointu/issues/158 diff --git a/vm/compiler/bridge/native_synth.go b/vm/compiler/bridge/native_synth.go index d4f75c3..0eea423 100644 --- a/vm/compiler/bridge/native_synth.go +++ b/vm/compiler/bridge/native_synth.go @@ -25,8 +25,8 @@ func (s NativeSynther) Synth(patch sointu.Patch, bpm int) (sointu.Synth, error) func Synth(patch sointu.Patch, bpm int) (*NativeSynth, error) { s := new(C.Synth) - if n := patch.NumDelayLines(); n > 64 { - return nil, fmt.Errorf("native bridge has currently a hard limit of 64 delaylines; patch uses %v", n) + if n := patch.NumDelayLines(); n > 128 { + return nil, fmt.Errorf("native bridge has currently a hard limit of 128 delaylines; patch uses %v", n) } comPatch, err := vm.NewBytecode(patch, vm.AllFeatures{}, bpm) if err != nil { @@ -124,8 +124,8 @@ func (bridgesynth *NativeSynth) Release(voice int) { // Update func (bridgesynth *NativeSynth) Update(patch sointu.Patch, bpm int) error { s := (*C.Synth)(bridgesynth) - if n := patch.NumDelayLines(); n > 64 { - return fmt.Errorf("native bridge has currently a hard limit of 64 delaylines; patch uses %v", n) + if n := patch.NumDelayLines(); n > 128 { + return fmt.Errorf("native bridge has currently a hard limit of 128 delaylines; patch uses %v", n) } comPatch, err := vm.NewBytecode(patch, vm.AllFeatures{}, bpm) if err != nil { diff --git a/vm/compiler/templates/amd64-386/library.asm b/vm/compiler/templates/amd64-386/library.asm index 27b0084..4f5eebe 100644 --- a/vm/compiler/templates/amd64-386/library.asm +++ b/vm/compiler/templates/amd64-386/library.asm @@ -2,7 +2,7 @@ struc su_synth .synth_wrk resb su_synthworkspace.size - .delay_wrks resb su_delayline_wrk.size * 64 + .delay_wrks resb su_delayline_wrk.size * 128 .delaytimes resw 768 .sampleoffs resb su_sample_offset.size * 256 .randseed resd 1 diff --git a/vm/compiler/templates/amd64-386/library.h b/vm/compiler/templates/amd64-386/library.h index 1776c1c..5a1d85e 100644 --- a/vm/compiler/templates/amd64-386/library.h +++ b/vm/compiler/templates/amd64-386/library.h @@ -38,7 +38,7 @@ typedef struct SampleOffset { typedef struct Synth { struct SynthWorkspace SynthWrk; - struct DelayWorkspace DelayWrks[64]; // let's keep this as 64 for now, so the delays take 16 meg. If that's too little or too much, we can change this in future. + struct DelayWorkspace DelayWrks[128]; // let's keep this as 64 for now, so the delays take 16 meg. If that's too little or too much, we can change this in future. unsigned short DelayTimes[768]; struct SampleOffset SampleOffsets[256]; unsigned int RandSeed;