feat(vm/compiler): increase native synth delaylines to 128

Closes #155
This commit is contained in:
5684185+vsariola@users.noreply.github.com 2025-04-27 21:47:27 +03:00
parent 5fd78d8362
commit f72f29188b
4 changed files with 9 additions and 6 deletions

View File

@ -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

View File

@ -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 {

View File

@ -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

View File

@ -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;