14 Commits

Author SHA1 Message Date
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
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
975a171d8c feat(sointu-cli): Glob directories also for .json songs. 2020-12-06 20:08:25 +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
90bb1aa61f feat(cmd/asmfmt): Implement a command line utility to import and re-export a song, effectively formatting it always identically. 2020-11-10 20:05:16 +02:00
Matias Lahti
b1ac141ea5 fix(tracker/sequencer): add a way to exit the sequencer loop 2020-11-08 04:27:52 +02:00
Matias Lahti
5e45e4f1f4 feat(tracker): hook up audio to tracker, we have liftoff
audio still a bit crackly; should probably decouple actual row ticking and rendering of audio (but how does that work with tempo ops?)

sequencer goroutine is a bit weird, too, should rethink
2020-11-08 04:17:21 +02:00
Matias Lahti
64fe28a240 feat(tracker): create initial tracker skeleton using Gio 2020-11-07 19:50:37 +02:00
Matias Lahti
551a7cb6c0 feat(sointu-player): implement a basic commandline tool to play songs 2020-11-07 19:34:46 +02:00