Commit graph

692 commits

Author SHA1 Message Date
Paul Fd
5a10af74ed Set the envelope free-running also when loopmode=one_shot 2020-04-01 10:03:15 +02:00
Paul Ferrand
d5451846a0 Future release count as release 2020-04-01 09:40:26 +02:00
Paul Ferrand
ae7f84204c Let the sustain be slightly above zero so that decay checks converge 2020-04-01 09:40:26 +02:00
Paul Ferrand
4248b136e7 Set virtuallyZero to -60 dB 2020-04-01 09:40:26 +02:00
Jean Pierre Cimalando
a825b3f1d3 Set the EG release default to 0 2020-04-01 09:40:26 +02:00
Jean Pierre Cimalando
96d362308d Lower limit of EG rate calculation (Cakewalk) 2020-04-01 09:40:26 +02:00
Jean Pierre Cimalando
5f6fa5ac1e Adequate handling of EG release delay, block version 2020-04-01 09:40:26 +02:00
Jean Pierre Cimalando
5a7aa90a8e EG rate small adjustment 2020-04-01 09:40:26 +02:00
Jean Pierre Cimalando
fdda018a70 Add block version of the ADSR rework 2020-04-01 09:40:26 +02:00
Jean Pierre Cimalando
77589f4109 Rework the envelope generator 2020-04-01 09:40:26 +02:00
Jean Pierre Cimalando
d6adebf8f4 Allow EG reset to accept other parameters than ampeg 2020-04-01 09:40:26 +02:00
Paul Fd
bf7d90f3d4 Properly clear buffers 2020-04-01 09:28:17 +02:00
Paul Ferrand
2f2de8c677
Merge pull request #142 from paulfd/midi-state-block-processing
The midi state now tracks time through block duration; you need to call advanceTime(numSamples) at each callback.
The midi state now stores all CC and pitch events that happened during the block.
Added group polyphony and note_polyphony support, as well as note_selfmask support.
Multiple CCs can modulate pan, amplitude, width, position rather than one.
The voices do not store CC history for the modulation targets and rely on the midi state to provide the events that happened during the last block.
Removed the EventEnvelopes; they're replaced by generic free functions that take as input an EventVector from the midi state; old tests migrated.
Added support for tune_cc and pitch_cc related opcodes.

In all this process, I also removed most of the per-voice temporary buffers and preallocation to replace everything by a BufferPool that distributes buffers around, and can track the maximum buffer usage in debug mode. The number of concurrent buffers are set at compile-time, so it must be adapted to the current processing needs.
2020-03-31 23:22:25 +02:00
Jean Pierre Cimalando
c0127fe02f Strings resonator effect 2020-03-31 20:43:35 +02:00
Paul Fd
5088bed9b0 Formatting step 2020-03-31 10:46:12 +02:00
Paul Fd
7e8cdff407 Modifier loops can be const 2020-03-31 10:40:44 +02:00
Paul Fd
ddeecf41b9 Apply modifier for pitch_cc and tune cc 2020-03-31 10:36:53 +02:00
Paul Fd
bf4bdad656 Handle pitch_cc and tune_cc 2020-03-31 10:36:41 +02:00
Paul Ferrand
16b8cc1cfc Remove the event envelopes \o/ 2020-03-31 00:33:26 +02:00
Paul Ferrand
bd85a97db3 Handle the volume cc modifiers like the rest 2020-03-31 00:33:06 +02:00
Paul Ferrand
bc60b19c4b Ported the old envelope tests to the new free functions 2020-03-31 00:18:24 +02:00
Paul Ferrand
5412593da9 multiplicativeRamp behaves like linearRamp 2020-03-31 00:18:09 +02:00
Paul Ferrand
12cb0b5b43 Adapt the curve computation to the linearRamp changes 2020-03-31 00:05:02 +02:00
Paul Ferrand
ff94983089 remove debug messages in voices 2020-03-31 00:03:47 +02:00
Paul Ferrand
a71b5c3bb5 Change the linear ramp to something more natural 2020-03-30 23:48:24 +02:00
Paul Ferrand
8ef598bb7d Remove pitchbend from midiState 2020-03-30 22:49:28 +02:00
Paul Ferrand
4de101f42c Add quantized envelopes to voices 2020-03-30 22:42:54 +02:00
Paul Ferrand
bebb166469 Add quantized envelopes 2020-03-30 22:42:43 +02:00
Paul Ferrand
088da9df65 multiplicativeEnvelope free function for pitch 2020-03-30 21:51:21 +02:00
Paul Ferrand
9e3f496f9e Add multiplicative envelope 2020-03-30 21:32:50 +02:00
Paul Ferrand
1523a14ee8 linearEnvelope is now a free function 2020-03-30 21:23:59 +02:00
Paul Ferrand
922cbde6c5 Store pitch bend internally as floats 2020-03-30 21:07:33 +02:00
Paul Ferrand
bc4d88b55a Clang-tidy 9 errors 2020-03-30 20:32:42 +02:00
Paul Ferrand
a1cacea8fb Explicit move to null the return pointer 2020-03-30 20:32:27 +02:00
Paul Ferrand
629a2ae8a8 Forwarding on SpanHolder 2020-03-30 20:16:43 +02:00
Paul Ferrand
1f7786cc74 Be explicit in the filter/EQ processes 2020-03-30 20:07:54 +02:00
Paul Ferrand
0da5c43bb5 Remove the helpers in the midi class and be explicit in the process 2020-03-30 19:58:32 +02:00
Paul Ferrand
eac0c0e804 Refactor the processes in chunks 2020-03-30 19:13:35 +02:00
Paul Ferrand
a337cf5a15 Require explicit cast to bool 2020-03-30 19:11:39 +02:00
Paul Ferrand
9c17201c63 Avoid shared pointers and get a span "pointer" directly from the buffer pool 2020-03-30 15:14:33 +02:00
Paul Ferrand
77acae7992
Merge pull request #131 from jpcima/new-effects
Add effects: limiter, rectifier, gain, width
2020-03-29 23:43:26 +02:00
Paul Ferrand
e54c27b1f2 Warning on gcc 4.9 for the array initializer 2020-03-29 23:35:43 +02:00
Paul Ferrand
e13456d41d Try to solve windows builds 2020-03-29 23:35:22 +02:00
Paul Ferrand
3ceee27c0a Move the modifiers in the midistate 2020-03-29 22:55:14 +02:00
Paul Ferrand
507ddc8e01 Reworking the modifiers separately 2020-03-29 20:35:15 +02:00
Jean Pierre Cimalando
03b9e19676 Oversample the limiter by 2x 2020-03-29 20:17:49 +02:00
Paul Ferrand
9e824df346 Homogeneize the treatment of percentage defaults and values 2020-03-29 19:32:27 +02:00
Paul Ferrand
ca2ee8dc58 Voice cleanups 2020-03-29 19:26:08 +02:00
Paul Ferrand
97234177a1 Use modifiers for panning/width 2020-03-29 19:22:19 +02:00
Paul Ferrand
d59d29c72b Use the full modifier on amplitude and crossfades 2020-03-29 19:08:47 +02:00