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
Veikko Sariola
e2c6d4b70c
fix(CI): Cgo linker flags stopped working.
...
They caused the tests to fail completely, but without them, the builds only give some warnings. So disabling them for now.
2020-11-20 22:54:33 +02:00
Veikko Sariola
95c8c9c2b7
refactor(go4k): Remove all special treatment from samples and map Song 1-1 to what's in the .asm file.
...
Whoever uses it, probably wants their own Patch format, as now it is pretty cumbersome to work with sampleoffsets and delays, as the user needs to construct the delaytimes tables and sampleoffset tables.
2020-11-20 22:21:21 +02:00
Veikko Sariola
f076409eb1
Update CHANGELOG.md
2020-11-17 00:12:10 +02:00
Veikko Sariola
725f2096fe
Commit go.sum to repository.
2020-11-16 23:59:30 +02:00
Veikko Sariola
335d2af05b
feat(asm&CI): Add support for macho-formats to header.inc and run tests also on MacOS.
...
Mac was giving errors about position dependent code, so had to add linker flag -Wl,-no_pie to ld & cgo.
2020-11-16 23:59:13 +02:00
Veikko Sariola
bca34febcb
feat(CI): Also run tests on win64.
...
win32 builds were giving errors so the tests are only ran on win64.
2020-11-12 21:26:24 +02:00
Veikko Sariola
6d883f43ab
fix(test_renderer): Add include <string.h> as linux builds were giving warnings for implicit declaration of memset.
2020-11-12 19:50:59 +02:00
Veikko Sariola
1b1dabafb8
fix(asm): Change the scaling to 29 in the speed unti (29 increments = double speed).
...
The old speed scaling of 24 was ill-chosen so that triplets resulted in a minor buffer overflow error. This was never caught by anyone until Visual Studio 2019 in debug mode. Presumably all compilers allocate some extra space so this didn't matter. Now 29 increments = double speed and speeds with alternating 52 and 81 result in triplets that are just slightly faster then ordinary bpm i.e. the buffer will be slightly underrun, which probably is unnoticable to the user.
2020-11-12 19:46:37 +02:00
Veikko Sariola
c39f434c6b
feat(CI&go4k): Run go tests in cloud, skipping sample tests if on another platform than Windows.
2020-11-12 13:29:30 +02:00
Veikko Sariola
a799ee2b6d
Update README.md: add Tests/Passing badge.
2020-11-12 13:05:05 +02:00
Veikko Sariola
68f97d301d
feat(CI): Run ctests in the cloud during push.
2020-11-12 12:59:14 +02:00
Veikko Sariola
cf6a5f6c0d
fix(libsointu): Do not include samples at all when building on other than windows.
2020-11-12 12:58:50 +02:00
Veikko Sariola
f7017892a5
refactor(asm&go4k): Remove special treatment from stereo parameters; it's now just one parameter in the Unit map.
2020-11-10 20:45:41 +02:00
Veikko Sariola
01c39ffc15
format(tests): Autoformat all tests using the new asmfmt command.
2020-11-10 20:08:13 +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
Veikko Sariola
377132321f
feat(go4k): Implement .asm exporting.
2020-11-10 20:05:03 +02:00
Veikko Sariola
5ceab766cc
refactor(asm&go4k): Remove double SU_SEND macros, voice(0) corresponding to local send and voice(n) corresponding to global.
2020-11-10 00:53:06 +02:00
Veikko Sariola
1c0ac08450
refactor(asm&go4k): Rename OSCILLAT and COMPRES macros to OSCILLATOR and COMPRESS.
...
Now the macro names correspond 1 - 1 to the unit names in go-side, allowing easier parsing.
2020-11-10 00:29:35 +02:00
Veikko Sariola
788b3721fd
Add missing sendpop to UnitTypes.
2020-11-10 00:20:57 +02:00
Veikko Sariola
ae334a5dfe
refactor(asm&go4k): Remove FLAGS from all units; they were the source of difficulty in parsing and fragile.
...
All units now take parameters according to flags. Only non-numeric parameter anymore is oscillator type.
2020-11-10 00:18:56 +02:00
Veikko Sariola
e36aea59a5
feat(go4k): Algorithm to construct small delay times tables by abusing overlapping of different delay times.
...
The problem of finding a string that contains all particular substrings is the "shortest superstring problem"; it is NP-hard and analogous to traveling salesman problem. We use simple greedy search instead of trying to find true optimum. But even with these algorithm, units that use exactly the same delay times will always appear only once in the delay times table.
2020-11-09 22:29:10 +02:00
Veikko Sariola
c153239710
feat(go4k): Document all the UnitTypes in a 'constant' table. Tells what parameters each unit takes.
2020-11-08 20:49:38 +02:00
Veikko Sariola
bcbb5aaf19
feat: Delays and samples are now working through the bridge.
...
One should call bridge.Init() once during the initialization of the program to load the static sample table. On linux, bridge.Init() does nothing.
2020-11-08 16:03:10 +02:00
Veikko Sariola
e65b08d2b3
fix(tracker): Change the "flags" parameter to "type", because this is what the bridge nowadays expects.
2020-11-08 14:19:54 +02:00
Veikko Sariola
05899fc185
Merge branch 'draft/go-tracker'
2020-11-08 14:15:29 +02:00
Veikko Sariola
d5886c0920
Change unison to be in the range of 0 - 3.
...
With this change, forgetting to initialize unison results in the default behaviour: 0 means one oscillator, 3 means four oscillators in unison.
2020-11-08 10:17:43 +02:00