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