944 Commits
Author SHA1 Message Date
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 SariolaandGitHub 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 SariolaandGitHub 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
Matias Lahti b1ac141ea5 fix(tracker/sequencer): add a way to exit the sequencer loop 2020-11-08 04:27:52 +02:00
Matias Lahti d30388a09a fix(tracker): fix invalid println 2020-11-08 04:22:00 +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 175bbb7743 fix(tracker/track): re-enable clipping of tracks 2020-11-08 02:48:52 +02:00
Matias Lahti 7a434f69fd fix(go/audio): fix audio.Player interface to have erroring Close()
not sure if this is actually required, though? shouldn't we just try to close and disregard errors?
2020-11-08 02:41:42 +02:00
Matias Lahti 9b6249a1a7 feat(tracker): implement basic tracker keys 2020-11-08 02:36:24 +02:00
Matias Lahti 77949bdc17 feat(tracker): implement basic track display 2020-11-08 02:24:27 +02:00
Matias Lahti 90c3536f3e feat(tracker): implement some basic styled ui building blocks 2020-11-08 01:20:53 +02:00
Veikko SariolaandGitHub 910bf42da9 Update README.md 2020-11-07 21:31:24 +02:00
Veikko Sariola 9209aa1cba Implement .asm parsing in go4k, and run succesfully almost all tests/ through the bridge.
Delays and samples are not implemented yet and thus the tests are skipped, as these require parsing the delay and sample tables also. Various macronames were changed to be more sensible and consistent i.e. ATTAC was changed to ATTACK. GatesLow and GatesHigh was removed for the time being and the tracker will just have to know they are the SHAPE and COLOR parameters. SU_SPEED was changed to take a parameter so the parser picks it up.
2020-11-07 21:05:55 +02:00
Matias Lahti 64fe28a240 feat(tracker): create initial tracker skeleton using Gio 2020-11-07 19:50:37 +02:00
Matias Lahti 5eb7cef889 style(go/audio/oto): change error messages to be consistent 2020-11-07 19:38:58 +02:00
Matias Lahti 6e141f36c7 fix(go/audio/oto): clean up forgotten debug prints 2020-11-07 19:37:33 +02:00
Matias Lahti 551a7cb6c0 feat(sointu-player): implement a basic commandline tool to play songs 2020-11-07 19:34:46 +02:00
Matias Lahti fa772ddd77 feat(go/audio): implement basic audio output with oto
splitting implementation into a separate package to potentially allow for other sorts of output, too.
2020-11-07 19:33:39 +02:00
Matias Lahti 41ce5d1efe Merge remote-tracking branch 'upstream/master' into draft/go-tracker 2020-11-07 17:27:11 +02:00
Veikko Sariola f584138572 Remove expressions from parameters, so the future .asm parser does not need expression evaluator. 2020-11-04 23:31:08 +02:00
Veikko Sariola df83001a64 Change delay macros to use FLAGS(NOTETRACKING) and FLAGS(NONE)
Previously it was + NOTETRACKING. This new way of using FLAGS(...) is more consistent with other macros, making the .asm format easier to parse.
2020-11-04 23:29:16 +02:00
Veikko Sariola d99cfd92d9 Change LOCALPORT and GLOBALPORT macros so that SU_SEND commands are easier to parse.
The new format is to give either 5 or 6 parameters to SU_SEND, corresponding to local and global send, respectively. For example, a global send:
        SU_SEND     MONO,AMOUNT(128),VOICE(2),UNIT(0),PORT(1),FLAGS(SEND_POP)

The SU_SEND macro does the address packing into word.
2020-11-04 23:11:51 +02:00
Veikko SariolaandGitHub 4eaa54ecee Update LICENSE: Fix whitespace. 2020-11-02 23:14:01 +02:00
Veikko Sariola ccb6434fac Implement compile definition RUNTIME_TABLES, which enables putting the pointers to delay and sample tables to stack.
Useful for the eventual API to be able to modify the delay and sample tables during runtime.
2020-11-02 23:10:33 +02:00