944 Commits
Author SHA1 Message Date
vsariola 1187c2a200 refactor(compiler): remove EncodedSong and pass patterns & sequences separately 2021-01-05 19:25:46 +02:00
vsariola 69f236dbd3 fix(tests): wat-compilation was missing correct output filename 2021-01-05 18:30:47 +02:00
vsariola 1be75362d0 refactor(tests): remove copying files to output directory; tests accept path to expected instead 2021-01-05 18:18:48 +02:00
vsariola 588488ce54 feat(sointu): remove 16-bit output toggle from song; make it compile time option 2021-01-05 18:08:13 +02:00
vsariola 30379c981d feat: remove hold from song
assume songs code it as 1 always; implementations are free to change this during compilation, but this should be a compile time flag / optimization; not a concern of song.
2021-01-05 15:50:27 +02:00
vsariola 994c11e8db refactor(bridge_test): make all tests use the same functions to compare buffers 2021-01-04 18:02:54 +02:00
vsariola ccae4325c3 reformat .yml files 2021-01-04 17:51:28 +02:00
vsariola 8b572515e0 refactor(sointu): in yaml, use flow formatting for Unit.Varargs 2021-01-04 17:51:12 +02:00
vsariola d328192834 refactor(compiler): split song encoding logic into smaller reusable functions 2021-01-04 13:57:01 +02:00
vsariola 5dd81430b7 feat(sointu): make patterns local to track
The global pattern table is constructed only during compilation. At this point, we can do also all sorts of optimizations / changes e.g. remove unnecessary releases and reuse patterns if there's a pattern already that could be used.
2021-01-03 01:06:59 +02:00
vsariola 06c006086b feat(tracker): Add a matrix showing track sequences 2021-01-02 17:40:53 +02:00
vsariola c68d9d3bf5 refactor(oto): reuse temp buffers for repeated calls to convert buffer 2020-12-31 16:24:34 +02:00
vsariola 1d91603e36 feat(tracker): add keys to adjust current octave 2020-12-31 00:01:54 +02:00
vsariola 2e2b5261ae feat(tracker): indicate release and hold with better symbols 2020-12-30 23:32:20 +02:00
Veikko Sariola c02c5c3c3d fix(asm/wasm): oscillator phase was causing rounding errors once large enough
gopher had fixed this, but we foolishly removed it. reintroducing fix, although this could be optional only for those who really care. ultimate size optimizers could still want to get rid of it.
2020-12-30 21:19:27 +02:00
Veikko Sariola 7974f0ff82 fix(x86): denormalize delay damp filters
the damp filters, after input was switched off, cause the CPU to spike up and causing the tracker audio to start chopping
2020-12-30 19:50:38 +02:00
Veikko Sariola a69f0a1924 feat(tracker): Add keys for holding & releasing a note 2020-12-29 16:32:14 +02:00
Veikko Sariola 29ba6b3658 feat(tracker): use slightly more interesting default instruments 2020-12-29 16:31:28 +02:00
Veikko Sariola cd498e775b refactor(tracker): Rewrote the sequencer loop to use simple mutex 2020-12-29 16:30:44 +02:00
Veikko Sariola 8029dbd1a8 feat(CI): setup Webassembly Binary Toolkit in cloud to run wasm tests 2020-12-27 15:45:31 +02:00
Veikko Sariola e4490faa2e feat(compiler): Add support for targeting WebAssembly.
The working principle is similar as before with x86, but instead of outputting .asm, it outputs .wat. This can be compiled into .wasm by using the wat2wasm assembler.
2020-12-26 23:16:18 +02:00
Veikko Sariola 7e4bcf18e4 Update README.md. 2020-12-18 22:51:32 +02:00
Veikko Sariola 7f049acf88 feat(cli): Re-engineer CLIs, split play & compile
Play depends on bridge and compile on compiler package. Before, the compiler depended on bridge, but we could not use the compiler to build the library, as the bridge depends on the library. Also, play can now start having slightly more options e.g. wav out etc.
2020-12-18 20:25:49 +02:00
Veikko Sariola 2d00640e06 Update README.md 2020-12-17 00:01:27 +02:00
Veikko Sariola 358db1ca46 Update README.md 2020-12-16 23:56:07 +02:00
Veikko Sariola e6feed1e26 fix(go): Remove remaining references to go4k. 2020-12-16 21:39:23 +02:00
Veikko Sariola 224b8dcb70 refactor(go): Move everything from go4k to root package sointu 2020-12-16 21:35:53 +02:00
Veikko Sariola d0bd877b3f feat(asm&go4k): Rewrote both library & player to use text/template compiler
There is no more plain .asms, both library & player are created from the templates using go text/template package.
2020-12-16 17:23:50 +02:00
Veikko Sariola 2ad61ff6b2 feat(asm&go4k): Preprocess asm code using go text/template
The preprocessing is done sointu-cli and (almost) nothing is done by the NASM preprocessor anymore (some .strucs are still there.
Now, sointu-cli loads the .yml song, defines bunch of macros (go functions / variables) and passes the struct to text/template parses.
This a lot more powerful way to generate .asm code than trying to fight with the nasm preprocessor.

At the moment, tests pass but the repository is a bit of monster, as the library is still compiled using the old approach. Go should
generate the library also from the templates.
2020-12-14 15:44:16 +02:00
Veikko Sariola 92c8b70fd2 refactor(tests): Save .yml in the repo; auto-generate .asm when needed 2020-12-09 13:48:19 +02:00
Veikko Sariola a03d46284c refactor(asm): Put a high alignment on the uninitialized sections so the pointers have less entropy. 2020-12-08 10:58:32 +02:00
Veikko Sariola 41fa46e954 fix(asm/RECEIVE): Enabling stereo receive broke mono receive versions. 2020-12-08 10:58:01 +02:00
Veikko Sariola 8ec3a1208b refactor(asm): Implement the Stereo IN opcode with less bytes & entropy. 2020-12-08 10:57:48 +02:00
Veikko Sariola 2106ebde56 feat(sointu-cli): Support importing/exporting in YAML 2020-12-08 10:57:23 +02:00
Veikko Sariola fa163b3884 feat(sointu-cli): Add ability to adjust HOLD value of the patterns 2020-12-07 11:47:17 +02:00
Veikko Sariola fee637b02a refactor(go4k): Rename DeserializeAsm & SerializeAsm to ParseAsm & FormatAsm
Following the naming in strconv.
2020-12-07 11:14:46 +02:00
Veikko Sariola c75e54212b refactor(asmformat): Rewrite DeserializeAsm to take advantage of the consistent syntax in the .asm file.
It is now much shorter, which is probably a good thing.
2020-12-07 11:08:42 +02:00
Veikko Sariola 1a633778bc feat(Song): Support HOLD definition, allowing using other values than 1 as the hold. 2020-12-07 09:01:53 +02:00
Veikko Sariola 975a171d8c feat(sointu-cli): Glob directories also for .json songs. 2020-12-06 20:08:25 +02:00
Veikko Sariola 9e4bee1b67 feat(asmformat): Remove special treatment of oscillator types to ease the parsing of asmformat
BREAKING CHANGE: They are now numeric values like all the rest macro parameters, instead of %defined constants.
2020-12-06 15:05:12 +02:00
Veikko Sariola 1b1a4af5ea refactor(asmformat): .asm starts and stops with BEGIN_SONG and END_SONG which define all the magic defines and BPMs.
Now, every setting is visible to the user, so no need to guess magic defines.
2020-12-06 01:35:54 +02:00
Veikko Sariola e1e8d8cae3 refactor(asm): Remove unused MAX_SAMPLES macro 2020-12-05 23:19:59 +02:00
Veikko Sariola 50ca02442d feat(bridge): Return sensible error messages from bridge and test that patches that should fail actually do. 2020-12-05 21:55:49 +02:00
Veikko Sariola cd95c5ae37 fix(libsointu): Return error as soon as possible, exiting the rendering loop immediately on error. 2020-12-05 20:53:22 +02:00
Veikko Sariola 7bb60de74e feat(libsointu): make su_render return some error codes, typically due to FPU stack errors. 2020-12-05 16:41:07 +02:00
Veikko Sariola 83937bb2ee fix(sointulib): Reset the FPU on each call to render, seems to take away the undeterministic behaviour. 2020-12-05 14:21:53 +02:00
Veikko Sariola e7ae775842 refactor(test_renderer): Allocate buffers statically instead of dynamically, so the tests are closer how Sointu will be eventually used. 2020-12-05 01:06:04 +02:00
Veikko Sariola 06cb4c521c refactor(asm): Remove introspection.inc, it is not needed anymore. 2020-12-05 00:40:25 +02:00
Veikko Sariola 6b67d6b544 feat(CI): Fix alsa.pc not found on ubuntu-latest. 2020-12-05 00:29:10 +02:00
Veikko Sariola d19d513ea8 feat(sointu-cli): Merge the asmfmt and sointuplayer to generic command line utility for processing song files.
Currently supports: playing, exporting .asm (reformatting), exporting .h, exporting .raw (raw float32 buffer), exporting .json.
2020-12-05 00:01:24 +02:00