Commit graph

1350 commits

Author SHA1 Message Date
Paul Ferrand
d35ff4eb42 Add a volatile on the stop flag in the thread pool 2020-10-07 00:37:31 +02:00
Paul Ferrand
a505b9f037 gcc 4.9 idiosyncrasies 2020-10-07 00:37:31 +02:00
Paul Ferrand
9e0a1dff72 Add constructors to the QueuedFileData
Honestly a stupid queue would be fine at this point
2020-10-07 00:37:31 +02:00
Paul Ferrand
e693e82a39 The dispatcher was not spinning 2020-10-07 00:37:31 +02:00
Paul Ferrand
8ee4105b39 Deep change of the background loadingThe goal was to reduce the number of background threads in big sessions (multiple instances) and avoid loading the same file alot on repeated notes (e.g. drum tracks).- All instances use a common thread pool- Each instance has a dispatching job that starts background loader, and a garbage job that clears data that has been unused for some time- The "FilePromise" object has disappeared. Upon request, Voices get a very thin reference-counting handler to the file data. When the handler is released the reference count is decreased and a "last used" timestamp is added to the file.- The background file loading job checks i) if the file is already loaded, or ii) if some other thread is already loading it. If any case is validated, it exits assuming the background loading is already happening.- The garbage job has to be triggered regularly by e.g. the synth. In the RT thread the triggerGarbageCollection() method will check the list of previously loaded file Ids to see if any has not been used for a while. If so, the memory is set to be discarded by a background thread, otherwise it'll wait for the next ping.Only tested on Linux for now. 2020-10-07 00:37:31 +02:00
JP Cimalando
4e13493ab4
Merge pull request #464 from jpcima/loop-xfade
Loop xfade
2020-10-06 21:31:43 +02:00
Jean Pierre Cimalando
809edfa76c Make local copy of the loop characteristics 2020-10-06 21:06:03 +02:00
Paul Ferrand
24624abef1 Move the crossfade curve config to the config 2020-10-06 19:56:54 +02:00
Paul Ferrand
cab43b6641 Move the crossfade spans closer to their actual use 2020-10-06 19:54:09 +02:00
Paul Ferrand
8f3be5ca3c Compute loop information at the start of the voice The check for actual looping is still done in the render method, to see if we do have enough samples 2020-10-06 19:52:24 +02:00
Jean Pierre Cimalando
9f698aea4c Remove dead code 2020-10-06 11:54:02 +02:00
JP Cimalando
20a4675a73
Merge pull request #476 from jpcima/bypass-default-cc
Do not connect CC 7 and 10 if used in SFZ file
2020-10-06 11:09:31 +02:00
Jean Pierre Cimalando
049739f8f1 Use the correct coeffs for xfIn 2020-10-06 10:49:41 +02:00
Paul Ferrand
0e2eacaa65
Merge pull request #353 from paulfd/runtime-configs
Add runtime configs for loading in ram and voice stealing
2020-10-06 10:24:54 +02:00
Jean Pierre Cimalando
6fc1d470ff Do not connect CC 7 and 10 if used in SFZ file 2020-10-06 04:45:22 +02:00
Jean Pierre Cimalando
99d40ee31c Normalize stepcc in the source key 2020-10-06 04:24:54 +02:00
Jean Pierre Cimalando
b0e102c77e Fix CC modulations, having their source depth to 0 2020-10-06 03:53:32 +02:00
Jean Pierre Cimalando
15c745239f Increase pitch ranges by 2 octaves 2020-10-06 02:25:18 +02:00
JP Cimalando
e8d052d50c
Merge pull request #459 from redtide/moved-scripts
Move Doxygen scripts
2020-10-06 00:25:37 +02:00
Jean Pierre Cimalando
942f93fc8d Audio reader benchmark in real conditions 2020-10-05 19:04:25 +02:00
JP Cimalando
dc422d07d9
Merge pull request #445 from jpcima/ampeg-mm
Add egN_ampeg
2020-10-05 00:09:56 +02:00
Jean Pierre Cimalando
86d0cf3a49 Update the boolean reader 2020-10-05 00:00:15 +02:00
Paul Ferrand
0142c385dc Enable and disable the power follower depending on the chosen algorithm 2020-10-04 23:13:34 +02:00
Paul Ferrand
49c9e43687 Add runtime configs for loading in ram and voice stealing 2020-10-04 23:12:50 +02:00
Paul Ferrand
5b4e673fe7 Use the new boolean helper and test the ampeg connection 2020-10-04 23:00:52 +02:00
Paul Ferrand
ab3715f7a9 Read 0 or 1 values as valid booleans 2020-10-04 23:00:21 +02:00
Paul Ferrand
4acd1ca8c5
Merge pull request #469 from paulfd/oversampling-offset
Oversampling offset
2020-10-04 20:50:42 +02:00
Paul Ferrand
991873caf3
Merge pull request #467 from paulfd/multiple-globals-polyphony
Don't assume a single <global> for region sets
2020-10-04 17:44:43 +02:00
Paul Ferrand
0046bb69e6 Set the proper oversampling factor for the initial offset 2020-10-04 17:32:58 +02:00
Paul Ferrand
6156022628 this use of getSourcePosition is wrong (sourcePosition is not increased if e.g. the voice is a generator for example)
To avoid this I removed the API which has really no purpose
2020-10-04 17:32:44 +02:00
Paul Ferrand
f27c1e4c31 Put a high amplitude range 2020-10-04 16:58:06 +02:00
Paul Ferrand
0b502b44f1 Don't assume a single <global> for region sets 2020-10-03 10:01:08 +02:00
Jean Pierre Cimalando
ab35581786 Xfade related to file sample rate, with oversampling considered 2020-10-01 14:03:23 +02:00
Jean Pierre Cimalando
893d0361c2 Crossfade with S-shape curve 2020-10-01 13:43:22 +02:00
Jean Pierre Cimalando
453d489d4a Use linear xfade curves 2020-09-30 20:45:43 +02:00
Jean Pierre Cimalando
fda4b5931c Eliminate a code repetition 2020-09-30 19:35:43 +02:00
Jean Pierre Cimalando
7a5fd53001 Let's make clang-tidy happy 2020-09-30 18:19:31 +02:00
Jean Pierre Cimalando
8a2e17ec92 Implement loop xfade 2020-09-30 18:13:18 +02:00
Jean Pierre Cimalando
f6d05509cb Add opcode: loop_crossfade 2020-09-30 01:52:42 +02:00
Jean Pierre Cimalando
824689e38a Fix a misuse of const qualification in AudioSpan 2020-09-30 01:41:48 +02:00
Jean Pierre Cimalando
01a26787e3 Fix return missing in move operator= 2020-09-30 01:41:22 +02:00
JP Cimalando
adebe36e0d
Merge pull request #457 from jpcima/cakewalk-alias
Add support of some Cakewalk aliases
2020-09-29 11:27:42 +02:00
Jean Pierre Cimalando
d6e8d547e4 Fix the case when multiple loops occur in one buffer 2020-09-29 03:20:02 +02:00
Jean Pierre Cimalando
4d20f7722a Add math helper: fast fmod 2020-09-29 02:40:38 +02:00
Jean Pierre Cimalando
d8eaf4a987 Fix pitch_veltrack 2020-09-29 01:26:04 +02:00
Jean Pierre Cimalando
9cab74f2c4 flexEG: allow release to bypass the pre-sustain stages
It makes the EG equivalent to ARIA in case of early release.
2020-09-28 21:56:43 +02:00
Jean Pierre Cimalando
9d0ee6969c flexEG: allow release to bypass the pre-sustain stages
It makes the EG equivalent to ARIA in case of early release.
2020-09-28 21:49:27 +02:00
redtide
7bd73b8939 (Re)moved Doxygen scripts 2020-09-28 17:03:37 +02:00
Jean Pierre Cimalando
2d3f82331d Allow egN_ampeg and egN_amplitude both together 2020-09-28 15:07:51 +02:00
Jean Pierre Cimalando
c30cad2534 Implement egN_ampeg 2020-09-28 15:07:51 +02:00