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
Veikko Sariola
726e79809d
feat(sointu-player): If json parsing fails, try parsing it as .asm song.
2020-12-04 00:11:35 +02:00
Veikko Sariola
efbcf1454e
feat(go4k&sointu): Export .h C header files from the songs using go, also automatically during build for the tests.
...
The header files are automatically generated during build. No need to #define anything; everything is fixed by the .asm file. This adds go as a dependency to run the unit tests, but this is probably not a bad thing, as go is probably needed anyway if one wants to actually start developing Sointu.
2020-12-03 23:43:39 +02:00
Veikko Sariola
a1e7e82d6d
refactor(song): Remove song length from Song and assume the user knows MAX_SAMPLES
...
Trying to force a specific song length other than the default never quite worked, so we'll only support the default MAX_SAMPLES & will calculate it for the user in the user in the exported .h header file.
2020-11-29 22:12:29 +02:00