64afa9fb48
Change the C-API to roughly match the new Go-API.
...
The parameter order is now so that all the in/out int parameters are in the end of the signature.
2020-10-27 21:58:56 +02:00
5f4b85b0a4
Change the Go API to have two versions: Render(buffer []float32), which always fill the whole buffer, and RenderTime(buffer []float32,int maxtime), which ends either when the buffer is full, or modulated time is reached.
2020-10-27 17:26:08 +02:00
7a9ac3489b
Add polyphonism support to bridge.go
2020-10-26 13:06:50 +02:00
1d07b4f192
Change the .asm song format so it's a bit easier to parse, by replacing PORT and GLOBALPORT macros with LOCALPORT and GLOBALPORT.
...
The LOCALPORT and GLOBALPORT just get numeric parameters (unit, port) and (voice, unit, port), respectively, which should be now quite intuitive as most of the time the port index is one of the parameters visible in the .asm file. Only a few units have extra ports beyond transformed variables. Overall, this should make the parsing of the .asm files a lot easier.
2020-10-26 12:55:15 +02:00
f495b0575a
Fix bug in song.go: the note was pulled from the song data incorrectly.
2020-10-26 12:55:14 +02:00
debeaa181c
Fix bug in song.go: len(s.Patterns) should have been len(s.Tracks).
2020-10-26 12:55:14 +02:00
470ba28592
Change the Render function in bridge.go to return a tuple of: number of samples rendered; bool indicating if rowend was reached; and a possible error.
...
The callbacks are gone; the row looping is the job of the user which is probably better for everyone.
2020-10-26 08:30:43 +02:00
acab824523
Update README.md
2020-10-24 23:36:56 +03:00
6c90ba2067
Implement a song struct to hold all the information of a single song (corresponding one .asm file) and Render function for it.
2020-10-24 23:25:23 +03:00
be7a4e21f3
Optimize asm player size, removing one unnecessary instruction.
2020-10-24 22:07:58 +03:00
3bb3e5c88e
Fix su_render_samples to return correct values when built in 32-bit.
2020-10-24 17:04:27 +03:00
aa133b4606
Change bridge.go so that there is just SetPatch(...) function, instead of having to SetCommands, SetValues etc.
...
Now the patch definition in bridge_test.go and test_envelope.asm appear quite similar, so it's clear how they are related.
2020-10-24 16:15:15 +03:00
1abc6f22d5
Change the Go bridge API to more idiomatic Go, offering a callback when the row advances.
2020-10-24 14:39:10 +03:00
6e85ff674a
Change the sointu.h api to return -1, 0 or n>0 depending if buffer is full and/or row ended.
...
test_render_samples_api.c was added to test the api. bridge.go was modified to reflect that there is no need to check for row manually; su_render_samples already returns the information if a row has ended.
2020-10-24 13:00:08 +03:00
c9e8000c5f
Remove the cmake magic to create bridge.go from bridge.go.in.
...
The bridge.go now just assumes that the library you want is built in the build/ directory. It's probably a lot better idea than using wherever the latest build was; this way the same build is always used for the library.
2020-10-23 00:04:54 +03:00
163af33c9b
Add .cache/ to .gitignore.
2020-10-22 23:31:05 +03:00
896e7e70b1
Add Opcode type to bridge, and pull the opcodes from the cgo side.
2020-10-22 23:29:37 +03:00
af75dd38aa
Add common build folder names to .gitignore.
2020-10-22 21:19:14 +03:00
95b70018cc
Fix all CMake tests passing on MinGW: consider minor (< 1e-6) errors in waveform shape successes.
...
Such errors are due to floating point rounding errors.
2020-10-22 21:19:14 +03:00
b9ec015b4a
Document MinGW build commands in README.md.
2020-10-22 21:19:14 +03:00
7aac3917b7
Implement a bridge to call Sointu from Go language.
...
The main interface is render_samples function, which renders several samples in one call,
to limit the number of calls from Go to C. This is compiled into a library, which is then
linked and called from bridge.go.
2020-10-22 21:19:13 +03:00
af14cd310b
Change .asm files that are actually only ever included into .inc-files, and rename all files as _header.inc & _footer.inc, depending where they are included.
2020-10-21 11:01:09 +03:00
06e8365c06
Update README.md
2020-10-21 09:50:19 +03:00
7e3dc19c83
Add inverse gain to compressor. The inverse gain is applied to the signal before any compressor calculations.
2020-05-27 18:54:37 +03:00
c5b6e6e28c
Move su_load_gmdls into the responsibility of the intro to call, anticipating multicore rendering so it is called once before all the cores are spun up.
2020-05-27 18:54:34 +03:00
200937aa50
Fix single shot samples: only first half of them was getting played.
2020-05-27 16:21:49 +03:00
8956f524c9
Only compile introspection.asm when SU_USE_INTROSPECTION is defined.
2020-05-27 16:04:52 +03:00
45e554a9f9
Fix yasm warnings about flags being ignored on section redeclaration.
2020-05-27 13:17:28 +03:00
5e05057240
Fix builds and tests to pass on Linux.
...
Builds on both 32-bit and 64-bit executables and all tests (except gm.dls stuff obviously, which was excluded) pass on 64-bit Linux. Cannot test the 32-bit executables, as WSL does not support running 32-bit.
2020-05-27 10:54:37 +03:00
b64723323f
Move player.asm back to sointu.asm, as they were getting again pretty intertwined.
2020-05-26 21:36:06 +03:00
e049bf2dce
Change loadnote to load values from [-1,1], to allow using notes for both positive and negative modulations.
...
Also change SPEED to take this change into account.
2020-05-26 19:21:35 +03:00
3cdada41e0
Rename labels in envelope into more sensible.
2020-05-26 18:34:47 +03:00
ceae6ffcba
Clean up the op_advance code&comments and remove one unnecessary jump.
2020-05-26 18:13:16 +03:00
91b8912015
Rename all SU_BEGIN_* macros into BEGIN_*; there's no real risk of nameclash and makes the code more readable.
2020-05-26 17:45:37 +03:00
efc6db71ab
Reverse the logic of USE_SECTIONS (it's now DISABLE_SECTIONS) and then remove unnecessary defines.
2020-05-26 17:30:50 +03:00
3b10476dc2
Remove unused strucs / struc members; in particular: .params /.ports.
2020-05-26 16:35:19 +03:00
cf86a951f5
Move all constants into the end of sointu.asm, littering them around started getting messy.
2020-05-26 16:30:57 +03:00
35b8253776
Delete CONCATENATE macro - it is not used anymore.
2020-05-26 14:25:15 +03:00
dac5afea60
Implement IN, OUTAUX and AUX opcodes, to conveniently input from or output to global ports.
2020-05-25 23:23:24 +03:00
17c6afceb4
Fix bug that su_env_map was not compiled when using only compressor, and rename it to su_nonlinear_map.
2020-05-25 20:45:36 +03:00
1f92373a63
Limit compressor stack use.
2020-05-25 20:39:10 +03:00
1eb6974d5d
Optimize compressor size.
2020-05-25 20:29:34 +03:00
55d9ca0ffc
Reverse the voiceno counter: now it starts from MAX_VOICES and decrements until 0. This way, the VM needs not know anything about MAX_VOICES.
2020-05-25 17:23:54 +03:00
a193b8b1ef
Inline transform_values into the VM, leading to a slightly more efficient register use.
2020-05-25 16:59:15 +03:00
3198452b9c
Add a change log.
2020-05-25 14:14:13 +03:00
33d83d29a5
Update project description & version.
2020-05-25 13:58:29 +03:00
8d0ae21fb6
Remove separate playerstack and clean up the code.
2020-05-25 13:44:30 +03:00
7de7b49e24
Change apply to "do" and add brackets.
2020-05-25 13:44:29 +03:00
2c6f4f44d5
Use some of the unused space of synth object for curvoices.
2020-05-25 13:44:28 +03:00
457c1fdc32
Move things to stack, anticipating support for multicore rendering.
2020-05-25 13:44:28 +03:00