Commit graph

1406 commits

Author SHA1 Message Date
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
JP Cimalando
d442812604
Merge pull request #378 from paulfd/loop-start-0
Explicitely signify if a loop if present
2020-08-19 03:44:23 +02:00
Paul Ferrand
42da5ff810
Merge pull request #358 from paulfd/simd-clamp-and-within
Additional SIMD helpers
2020-08-19 01:02:04 +02:00
Paul Ferrand
da75095a9b Explicitely signify if a loop if present
Before we tried to "guess", which causes problems if a loop spans the entire file
2020-08-18 23:09:03 +02:00
Paul Ferrand
05de17e32e The sustain cc is still a CC and has to be registered in the regions 2020-08-18 22:36:00 +02:00
JP Cimalando
be7ff64a17
Merge pull request #376 from jpcima/adsr-rate
Adjust the ADSR exponential rate
2020-08-18 22:16:54 +02:00
Jean Pierre Cimalando
12e2c95f5c Set the threshold of ADSR release to -80 dB 2020-08-18 19:43:36 +02:00
Jean Pierre Cimalando
4c0a7f6dfd Adjust the ADSR exponential rate 2020-08-18 18:15:20 +02:00