e049bf2dce
Change loadnote to load values from [-1,1], to allow using notes for both positive and negative modulations.
...
Also change SPEED to take this change into account.
2020-05-26 19:21:35 +03:00
91b8912015
Rename all SU_BEGIN_* macros into BEGIN_*; there's no real risk of nameclash and makes the code more readable.
2020-05-26 17:45:37 +03:00
efc6db71ab
Reverse the logic of USE_SECTIONS (it's now DISABLE_SECTIONS) and then remove unnecessary defines.
2020-05-26 17:30:50 +03:00
dac5afea60
Implement IN, OUTAUX and AUX opcodes, to conveniently input from or output to global ports.
2020-05-25 23:23:24 +03:00
6f06306f0c
Re-engineer delay, to use stack for the delay WRK pointer and to support note-syncing transpose.
2020-05-23 15:05:38 +03:00
654e5868bc
Implement support for 64-bit builds.
...
The implentation is through a few macros to handle the fact in 64-bit, all addresses have to be loaded first to register and only offsets are ok. Also, push only supports 64-bit registers in 64-bit, so we have _AX, _BX, _CX etc. defines, which are eax, ebx and ecx on 32bit and rax, rbx and rcx on 64bit.
2020-05-21 17:18:18 +03:00
dc99157fbb
Implement unison oscillators: multiple versions of slightly detuned oscillators that are added up to make a signal.
2020-05-19 22:52:21 +03:00
adc4a6e45f
Implement sample-based oscillators, with sample import from gm.dls.
2020-05-19 18:29:47 +03:00
fc0ad4c011
Implement compressor.
2020-05-17 16:37:08 +03:00
71a5a18257
Implement player speed modulation opcode for triplets and such.
2020-05-17 09:51:20 +03:00
15717557f1
Split polyphony test into two tests.
2020-05-17 08:32:35 +03:00
d87d2e22cf
Implement new effect: bit-crusher.
...
Maybe a combined hold/bit-crusher effect is needed someday.
2020-05-16 23:27:29 +03:00
ac5b4dd496
Make clip opcode working and add regression tests to it.
2020-05-16 22:49:59 +03:00
5760f78201
Implement gain and inverse gain effects, for the moments when you just need them.
2020-05-16 22:29:08 +03:00
87264c443c
Add tests for opcode stereo variants, squashing several bugs in the process. Implement receive opcode to test stereo sending.
2020-05-16 21:23:41 +03:00
f9388b028a
Rename test files to represent better the new opcodes they correspond to.
2020-05-16 18:32:56 +03:00
42ebc52c96
Remove trailing spaces and convert tabs to spaces.
2020-05-16 09:16:23 +03:00
78d4cd50e8
Rewrote most of the synth to better support stereo signals and polyphony. VSTi removed as there is no plan to update the VSTi to support the new features.
...
The stereo opcode variants have bit 1 of the command stream set. The polyphony is split into two parts: 1) polyphony, meaning that voices reuse the same opcodes; 2) multitrack voices, meaning that a track triggers more than voice. They both can be flexible defined in any combinations: for example voice 1 and 2 can be triggered by track 1 and use instrument 1, and voice 3 by track 2/instrument 2 and voice 4 by track 3/instrument 2. This is achieved through the use of bitmasks: in the aforementioned example, bit 1 of su_voicetrack_bitmask would be set, meaning "the voice after voice #1 will be triggered by the same track". On the other hand, bits 1 and 3 of su_polyphony_bitmask would be set to indicate that "the voices after #1 and #3 will reuse the same instruments".
2020-05-16 08:25:52 +03:00
6be7959cd1
Refactor the waveshaper function to save some bytes.
2020-05-03 17:02:08 +03:00
212951c75d
Make tests rebuild when 4klang.asm and 4klang.inc are changed.
2020-05-03 12:50:42 +03:00
9546574f13
Add regression test for AUX output.
2020-05-03 11:21:09 +03:00
53a1be9b61
Refactor all values to have a universal support for modulations.
...
The modulation is now always added during value transformation.
With this, a lot of *_MOD defines could be removed.
The waveform for some tests changed slightly, because when the
value is saved to memory after modulating it, there is some
rounding errors.
2020-05-03 10:41:24 +03:00
660da68a48
Add regression test for polyphony (MAX_VOICES = 2).
2020-05-01 08:51:43 +03:00
f97cea2a17
Refactor 4klang to use cross-platform defines and 4klang.asm & .inc to work more like .c and .h.
2020-04-30 13:36:22 +03:00
09c497fef6
Add regression tests for delay modulations.
2020-04-25 11:29:14 +03:00
7170b049d3
Add regression tests for VCF opcode and its modulations.
2020-04-24 22:51:42 +03:00
4b9b1710eb
Add regression tests for delay (DLL) opcode.
2020-04-23 20:06:41 +03:00
a49fba060c
Add regression tests for distortion, including sample-and-hold and modulations.
2020-04-18 21:21:21 +03:00
41222b09a7
Move all raw audio files related to tests into subfolders, to have slightly more clean folder structure and to avoid mixing source files and data files.
2020-04-18 19:47:16 +03:00
886ee85a09
Improve CMakeLists.txt for tests, so it is easier to define test prerequirements.
...
Also added a few missing prerequirements.
2020-04-18 13:16:33 +03:00
d9f4def1d4
Add regression tests for vco modulations (cm, dm, fm, gm, pm, sm and tm)
2020-04-17 19:36:09 +03:00
cc2babde9c
Add regression test for envelope modulation.
2020-04-17 18:21:37 +03:00
462521518f
Add regression tests for FST and FSTG opcodes.
2020-04-16 22:05:50 +03:00
9c7db45a46
Rewrote parts of the test renderer to read the whole data from disk in one fread.
2020-04-16 14:05:17 +03:00
374be5256e
Add regression test for VCO opcode, lfo variant.
2020-04-16 13:37:30 +03:00
83e3ab165e
Add test for 16-bit output, also moving the testname for test_renderer into compiler definition to avoid rewriting it everytime.
2020-04-15 23:17:03 +03:00
cff4538b8c
Make the CMakeLists.txt for the tests a slightly more sensible; the data files are copied after every build if they are newer.
2020-04-15 21:43:22 +03:00
d6798bdae3
Add regression test for VCO opcode (oscillator) for testing stereo sound creation.
2020-04-14 23:37:15 +03:00
34a98ebc4a
Add regression test for VCO opcode (oscillator): gate, noise, pulse and trisaw variants.
2020-04-14 23:11:10 +03:00
38499e01bb
Add regression test for VCO opcode (oscillator), sine wave variant.
2020-04-14 22:23:09 +03:00
ce81ef5ef9
Add regression test for FOP opcode, loadnote variant.
2020-04-14 21:44:05 +03:00
398543d67c
Add regression tests for FOP opcode: add, addp2, mul, mulp2, push and xchg variants.
2020-04-14 18:08:57 +03:00
e790549d27
Add regression test to test fop opcode / addp, mulp and pop variants.
2020-04-13 19:10:46 +03:00
08518a9527
Add regression test to test multiple instruments.
2020-04-13 17:50:09 +03:00
b1ba5e9e6b
Add regression test to test panning opcode.
2020-04-13 17:34:46 +03:00
f33da76d1e
Add regression test to test load opcode.
2020-04-13 17:18:26 +03:00
1f0fdfc30e
Improve and rename envelope test. The test focuses on GO4k_ENV opcode only and does not use panning.
2020-04-13 16:53:11 +03:00
8d984cbc38
Implement ctest unit test, first test simply testing that envelope works as it used to.
2020-04-12 22:05:39 +03:00