Commit graph

1441 commits

Author SHA1 Message Date
Paul Ferrand
dc4f59107b Remove the EQ/Filter pools
Voices hold their own tentative eq and filters that get initialized upon starting the voice depending on how many there are in the region
2020-09-16 16:09:59 +02:00
Paul Ferrand
4e58a945a8 Parse filter/eq modulation targets 2020-09-16 16:09:59 +02:00
Paul Ferrand
8c625d1e04 Change filter cutoff modulation type to float 2020-09-16 16:07:55 +02:00
Jean Pierre Cimalando
3cf7536c57 Store the initial values of controllers 2020-09-16 14:45:32 +02:00
JP Cimalando
f0dd146361
Merge pull request #388 from jpcima/flex-eg
Add the Flex EG
2020-09-16 12:02:42 +02:00
Jean Pierre Cimalando
169ba940c9 Print the modulation key more compactly 2020-09-16 11:55:25 +02:00
Jean Pierre Cimalando
111af1b648 Ensure label entries to be unique for their cc/note 2020-09-16 11:13:37 +02:00
Jean Pierre Cimalando
1b104fd6d6 Initialize CC labels for volume and pan 2020-09-16 10:46:54 +02:00
Jean Pierre Cimalando
8ec3f3d2a8 midnam: only emit CC which are in 7bit range 2020-09-16 10:41:55 +02:00
Paul Ferrand
f317e2f6b9 Add flex eg tests, move test helpers around, and add a more verbose mod matrix graph output 2020-09-16 09:03:39 +02:00
Paul Ferrand
f969761b5a Only zero the remaining samples when the envelope is finished 2020-09-16 08:45:29 +02:00
Paul Ferrand
4d87716a30 Offset the time so that the envelopes "end" on the correct value
The envelope start is always considered to be the value before the current ramp started
2020-09-16 08:41:02 +02:00
Jean Pierre Cimalando
62ee1abd24 Comment on unimplemented loop opcodes 2020-09-12 02:03:07 +02:00
Jean Pierre Cimalando
d2f77f63dc Ensure to update all variables on early return 2020-09-12 01:46:04 +02:00
Jean Pierre Cimalando
84bb553292 Some changes of little impact 2020-09-12 01:46:04 +02:00
Jean Pierre Cimalando
b692377f7b Add the Flex EG 2020-09-12 01:46:00 +02:00
Jean Pierre Cimalando
8d08c6700d Replace auto for ease of reading 2020-09-11 18:07:01 +02:00
Jean Pierre Cimalando
89893503be Remove the conditions which are made redundant 2020-09-11 17:58:42 +02:00
Jean Pierre Cimalando
aaa51f6dfe Use the flags, and assert key to be valid with said flags 2020-09-11 17:56:42 +02:00
Jean Pierre Cimalando
0fd5ec57ab Rename the variable to make it clearer what it is 2020-09-11 17:52:24 +02:00
Jean Pierre Cimalando
9c5f9537fa Adopt the underscore convention for member variables 2020-09-11 17:51:05 +02:00
Jean Pierre Cimalando
c91c653d8a Use the operator bool of NumericId 2020-09-11 17:47:24 +02:00
Paul Ferrand
ba53028d8d Store shortcuts from the region id to the source and targets in the MM 2020-09-11 17:40:55 +02:00
Paul Ferrand
11d5abe435 Precompute targets for the modulation on voice start 2020-09-11 17:40:45 +02:00
Jean Pierre Cimalando
60eecba226 Make NumericId hashable 2020-09-11 17:16:31 +02:00
Paul Ferrand
9d26b5742e Move SpinMutex.cpp in the source list 2020-09-11 17:04:26 +02:00
Paul Ferrand
e3fa56452c Add headers to CMake: NumericId 2020-09-11 17:04:20 +02:00
Paul Ferrand
f9cf9b35e6 Move NumericId into utility 2020-09-11 17:04:13 +02:00
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