Commit graph

1213 commits

Author SHA1 Message Date
JP Cimalando
ed6c9557f7
Merge pull request #413 from paulfd/choking-across-cc-switches
Regions on the same note but with different groups do get muted
2020-09-10 08:06:25 +02:00
Paul Ferrand
1fcd3077ae Correct the condition for the envelope to free-run 2020-09-09 15:23:15 +02:00
Paul Ferrand
d2e8c0548f Regions on the same note but with different groups do get muted
This happens e.g. with keyswitches. This behavior is slightly different from Cakewalk's apparently.
2020-09-09 13:06:24 +02:00
Paul Ferrand
afadb171a4
Merge pull request #393 from paulfd/polyphony-cleanups
Polyphony cleanups
2020-09-09 10:29:09 +02:00
Paul Ferrand
48b8011354 Add SIMD helpers targeted for the mod matrix and plug them in
On my machine now the previous code path was probably vectorized
but this way we have the structure to handle platforms where it's not
2020-09-08 23:00:19 +02:00
Paul Ferrand
db9840c5bd Put operator == in the constructor for the modkeyThis function is called alot, this seems to favor inlining 2020-09-08 21:43:34 +02:00
Paul Ferrand
7ec5da9ddb Memorize the flags to avoid a recurrent switch 2020-09-08 17:01:34 +02:00
Jean Pierre Cimalando
db194be867 Initialize SIMD in both synth ctors 2020-09-08 09:00:18 +02:00
Jean Pierre Cimalando
d2362609a0 Prevent pitchbend events from creating xruns 2020-09-08 08:47:53 +02:00
Paul Ferrand
bc55705290 Put default quality to 1 2020-09-07 23:47:28 +02:00
Paul Ferrand
863a08c421 Use Cakewalk/RGC behavior for self-choking notes
Basically if group=off_by, a note will not choke other voices with the same note number
2020-09-07 23:18:02 +02:00
Paul Ferrand
bb621282c9 Note polyphony tests and bugs 2020-09-07 22:25:29 +02:00
Paul Ferrand
fa37669e08 Add checks for release voices and note_polyphony 2020-09-07 22:25:29 +02:00
Paul Ferrand
1f65c135bc Don't release age 0 voices 2020-09-07 22:25:29 +02:00
Paul Ferrand
6750fb93a2 Comments and renaming 2020-09-07 22:25:29 +02:00
Paul Ferrand
025e87a0d1 Remove the Voice::TriggerType enum 2020-09-07 22:25:29 +02:00
Paul Ferrand
e32348190f Modularize the cc dispatch and the matching between a playing voice and release regions 2020-09-07 22:25:29 +02:00
Paul Ferrand
01c43f03d4 Move the delayed release check in a separate method 2020-09-07 22:25:29 +02:00
Paul Ferrand
944373ea83 Move common voice starting logic in a separate method 2020-09-07 22:25:29 +02:00
Paul Ferrand
dda10e8530 Use a trigger event type instead of passing 3 parameters 2020-09-07 22:25:29 +02:00
Paul Ferrand
afae38e6c3 Move the polyphony checks in separate functions 2020-09-07 22:25:29 +02:00
Paul Ferrand
ff1be61dc1 Use the same idiom for finding free voices 2020-09-07 22:25:29 +02:00
Paul Ferrand
5139c648f0 Engine polyphony is checked in findFreeVoice() 2020-09-07 22:25:29 +02:00
Paul Ferrand
ca7d74e841 Move the voice selection after the polyphony checks 2020-09-07 22:25:29 +02:00
Paul Ferrand
ed5fb61f38 Move a variable declaration
Refactor the polyphony checks into reusable blocks
2020-09-07 22:25:29 +02:00
redtide
19469c5c1f Doxygen documentation update [skip ci] 2020-09-05 16:14:51 +02:00
Jean Pierre Cimalando
0c8a57e843 Enable fast-math only on sfizz DSP targets 2020-09-02 00:36:49 +02:00
Paul Ferrand
81169b8209
Merge pull request #384 from paulfd/simpler-envelope-follower
Simpler power/envelope follower
2020-08-27 17:03:18 +02:00
Jean Pierre Cimalando
298befa753 Express follower AR in seconds 2020-08-27 09:39:41 +02:00
Jean Pierre Cimalando
b1f1fc4042 Power follower using a fixed block size 2020-08-27 09:12:42 +02:00
Jean Pierre Cimalando
a5c72375a9 Move the div operation out of the SIMD helper 2020-08-27 08:46:12 +02:00
Jean Pierre Cimalando
cb144ad42f Move the power follower to its own file 2020-08-27 07:48:14 +02:00
Jean Pierre Cimalando
0481862b10 Allow the modulations to be notified of release 2020-08-21 14:49:36 +02:00
Jean Pierre Cimalando
a71c1eb0f3 Allow modulations to trigger at a frame-accurate instant (LFO) 2020-08-21 14:39:55 +02:00
Paul Ferrand
dd8134277c Clamp the tracking factors to avoid blowups 2020-08-21 11:36:09 +02:00
Paul Ferrand
afc9d72c89 Further changes to the envelope follower- Apply on a single channel- Track attack and release separately 2020-08-21 11:20:36 +02:00
JP Cimalando
68712140d6
Merge pull request #385 from paulfd/offset-ccs
offset_cc were not taken into account
2020-08-21 00:54:03 +02:00
Paul Ferrand
c61ab364af
Merge pull request #380 from paulfd/end-disabling-regions
End disabling regions
2020-08-21 00:25:30 +02:00
Paul Ferrand
d649cec10b offset_cc were not taken into account 2020-08-21 00:24:22 +02:00
Paul Ferrand
958d9bb5e8 Simpler power/envelope followerThis one is much cheaper... 2020-08-20 02:27:21 +02:00
Paul Ferrand
f6f1e68f18 Sustain tweaks:
- Separate the sustain value from the sustain threshold after which the envelope goes from decay to sustain
- If the sustain value is set to 0, the envelope is freerunning
2020-08-19 19:13:50 +02:00
Paul Ferrand
f6e0bb8b3f Add special cases for the rate transformation in envelopes
For increasing linear ramps, a 0s ramp is an increment of 1.0
For decaying exponential ramps, a 0s ramp is a multiplicator of 0.0f
2020-08-19 19:12:33 +02:00
Paul Ferrand
66bdaafbe7 Only override the loop mode if unset 2020-08-19 12:50:02 +02:00
Paul Ferrand
1cf5e8d571 Set loop_mode to one_shot for release regions 2020-08-19 12:36:07 +02:00
Paul Ferrand
17568510ac Disable with sampleEnd == 0 2020-08-19 12:12:48 +02:00
Paul Ferrand
cef44cbdb6 Disabled regions don't need to take up polyphony
The tests were a bit flaky and the did not seem justified by any behavior in e.g. ARIA
The new tests cover a similar situation which is validated in sforzando
2020-08-19 11:08:18 +02:00
Paul Ferrand
5c61298f08 A region is disabled by end=-1 2020-08-19 11:07:12 +02:00
Jean Pierre Cimalando
e5ec42f21b Fix a problem in SIMD helper declarations 2020-08-19 06:42:13 +02:00
Jean Pierre Cimalando
dfc9355bad Match the volumes to ARIA, add CC7 and CC10 2020-08-19 06:42:13 +02:00
JP Cimalando
cc40e7ad3d
Merge pull request #377 from paulfd/sustaincc-fixes
The sustain cc is still a CC and has to be registered in the regions
2020-08-19 03:57:58 +02:00