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
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 Sariola
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 Sariola
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
Veikko Sariola
c7c752cd73
Change the stack rewind in the end of render to be slightly less fragile, anticipating putting more stuff in the stack.
...
Specifically, we will soon put the su_sample_offsets and su_delay_times table addresses to stack in the render_samples, to avoid hard coding them in the api call.
2020-11-02 23:10:33 +02:00
Veikko Sariola
b94bb79366
Update README.md
2020-11-02 22:43:15 +02:00