Commit Graph

59 Commits

Author SHA1 Message Date
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
5c1b87f254 Improve comments for UpdateInstrument 2020-05-04 20:19:58 +03:00
6be7959cd1 Refactor the waveshaper function to save some bytes. 2020-05-03 17:02:08 +03:00
3c3fe6caf8 Improve comments and formatting. 2020-05-03 16:34:39 +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
c63dfd74f9 Make transform macro definition slightly more readable. 2020-05-03 11:12:53 +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
0c08f3d41c Remove unnecessary short jump. 2020-05-01 09:34:17 +03:00
8dc7a9b5a0 Fix some name manglings. 2020-05-01 09:31:36 +03:00
405ef66b31 Remove unnecessary code from Power-function.
Also, improve comments.
2020-05-01 09:18:10 +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
771c0b96e3 Put back 8klang builds. 2020-04-30 13:08:37 +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
35b2df2a2f Require CMake version 3.15, as the Visual Studio statically linking runtime policy was introduced in it. 2020-04-14 21:44:45 +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
2bee9edd0b Quick fix so that global store opcode is exported as 12 when glitch is not used. 2020-04-12 22:14:28 +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
e180694d9e Switch to CMake for builds and reorganize the source directories. 2020-04-12 22:05:38 +03:00
e285541203 Merge pull request #3 from kebby/master
Added getChunk/setChunk to VSTi so patches are stored with the project
2019-08-17 20:23:53 +02:00
175b49bc3a Merge pull request #1 from petersalomonsen/petersalomonsen/osxplayer_rendersingletickwithauthoringflag
Mac OSX player and Single tick rendering
2019-08-17 20:17:56 +02:00
391f826de9 Added getChunk/setChunk to VSTi so patches are stored with the project 2019-08-17 17:16:05 +02:00
ccecfc1898 Mac OSX player and Single tick rendering
- Use SINGLE_TICK_RENDERING mode for rendering one tick per invocation of
 _4klang_render
- Example for running player on Mac OSX
2018-12-03 14:22:43 +01:00
b06829eab1 Update README.md 2018-10-29 08:55:57 +01:00
449801b85b Merge branch 'master' of https://github.com/hzdgopher/4klang 2018-10-28 22:18:39 +01:00
7d758d6d66 version 3.2.2
- legacy fix for global sections save/load memory out of bounds access
- fixed delay index fuckup during export when skipping instruments with delay mode "note sync"
2018-10-28 22:18:13 +01:00
86828062e8 Create LICENSE 2018-04-02 22:48:13 +02:00
d1f776b473 Merge branch 'master' of https://github.com/hzdgopher/4klang 2018-03-16 19:18:56 +01:00