944 Commits
Author SHA1 Message Date
Veikko Sariola 55d9ca0ffc Reverse the voiceno counter: now it starts from MAX_VOICES and decrements until 0. This way, the VM needs not know anything about MAX_VOICES. 2020-05-25 17:23:54 +03:00
Veikko Sariola a193b8b1ef Inline transform_values into the VM, leading to a slightly more efficient register use. 2020-05-25 16:59:15 +03:00
Veikko Sariola 3198452b9c Add a change log. 2020-05-25 14:14:13 +03:00
Veikko Sariola 33d83d29a5 Update project description & version. 2020-05-25 13:58:29 +03:00
Veikko Sariola 8d0ae21fb6 Remove separate playerstack and clean up the code. 2020-05-25 13:44:30 +03:00
Veikko Sariola 7de7b49e24 Change apply to "do" and add brackets. 2020-05-25 13:44:29 +03:00
Veikko Sariola 2c6f4f44d5 Use some of the unused space of synth object for curvoices. 2020-05-25 13:44:28 +03:00
Veikko Sariola 457c1fdc32 Move things to stack, anticipating support for multicore rendering. 2020-05-25 13:44:28 +03:00
Veikko Sariola 5c25eacd08 Optimize delay for better register use. 2020-05-23 21:06:58 +03:00
Veikko Sariola da52c10f7f Get rid of transformed values and use the header of the voice for that; saves _CX completely for the opcode. 2020-05-23 21:06:57 +03:00
Veikko Sariola 79b384a0d6 Clean up comments and some defines. 2020-05-23 16:02:29 +03:00
Veikko Sariola bd005d52a7 Clean up whitespace. 2020-05-23 15:09:32 +03:00
Veikko Sariola 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
Veikko Sariola afbff66e36 Use strucs for stack locations, instead of hard-coding them everywhere. 2020-05-23 14:56:06 +03:00
Veikko Sariola 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
Veikko Sariola 6f7fed4c6b Move jnc *_mono, ..., *_mono: code from function bodies to the stereofilter helper. 2020-05-20 08:49:23 +03:00
Veikko SariolaandVeikko Sariola 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
Veikko Sariola adc4a6e45f Implement sample-based oscillators, with sample import from gm.dls. 2020-05-19 18:29:47 +03:00
Veikko Sariola 77b989d88d Optimize size. 2020-05-18 16:25:20 +03:00
Veikko Sariola 666fd385d1 Fix bug in SEND STEREO. 2020-05-18 16:23:49 +03:00
Veikko Sariola 5d1145be39 Improve README. 2020-05-17 16:48:28 +03:00
Veikko Sariola fc0ad4c011 Implement compressor. 2020-05-17 16:37:08 +03:00
Veikko Sariola 71a5a18257 Implement player speed modulation opcode for triplets and such. 2020-05-17 09:51:20 +03:00
Veikko Sariola 15717557f1 Split polyphony test into two tests. 2020-05-17 08:32:35 +03:00
Veikko Sariola f06810d956 Optimize size. 2020-05-17 01:24:38 +03:00
Veikko Sariola 3b33b4e4d2 Improve README. 2020-05-16 23:27:30 +03:00
Veikko Sariola d87d2e22cf Implement new effect: bit-crusher.
Maybe a combined hold/bit-crusher effect is needed someday.
2020-05-16 23:27:29 +03:00
Veikko Sariola 6a0a2fc36c Optimize the implementations of gain and invgain. 2020-05-16 23:23:05 +03:00
Veikko Sariola ac5b4dd496 Make clip opcode working and add regression tests to it. 2020-05-16 22:49:59 +03:00
Veikko Sariola 5760f78201 Implement gain and inverse gain effects, for the moments when you just need them. 2020-05-16 22:29:08 +03:00
Veikko Sariola e966bc0084 Improve README. 2020-05-16 21:57:32 +03:00
Veikko Sariola 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
Veikko Sariola f9388b028a Rename test files to represent better the new opcodes they correspond to. 2020-05-16 18:32:56 +03:00
Veikko Sariola 42ebc52c96 Remove trailing spaces and convert tabs to spaces. 2020-05-16 09:16:23 +03:00
Veikko Sariola d328431413 Improve README. 2020-05-16 08:54:55 +03:00
Veikko Sariola 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
Veikko Sariola 5c1b87f254 Improve comments for UpdateInstrument 2020-05-04 20:19:58 +03:00
Veikko Sariola 6be7959cd1 Refactor the waveshaper function to save some bytes. 2020-05-03 17:02:08 +03:00
Veikko Sariola 3c3fe6caf8 Improve comments and formatting. 2020-05-03 16:34:39 +03:00
Veikko Sariola 212951c75d Make tests rebuild when 4klang.asm and 4klang.inc are changed. 2020-05-03 12:50:42 +03:00
Veikko Sariola 9546574f13 Add regression test for AUX output. 2020-05-03 11:21:09 +03:00
Veikko Sariola c63dfd74f9 Make transform macro definition slightly more readable. 2020-05-03 11:12:53 +03:00
Veikko Sariola 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
Veikko Sariola 0c08f3d41c Remove unnecessary short jump. 2020-05-01 09:34:17 +03:00
Veikko Sariola 8dc7a9b5a0 Fix some name manglings. 2020-05-01 09:31:36 +03:00
Veikko Sariola 405ef66b31 Remove unnecessary code from Power-function.
Also, improve comments.
2020-05-01 09:18:10 +03:00
Veikko Sariola 660da68a48 Add regression test for polyphony (MAX_VOICES = 2). 2020-05-01 08:51:43 +03:00
Veikko SariolaandVeikko Sariola 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
Veikko Sariola 771c0b96e3 Put back 8klang builds. 2020-04-30 13:08:37 +03:00
Veikko Sariola 09c497fef6 Add regression tests for delay modulations. 2020-04-25 11:29:14 +03:00