Commit graph

1385 commits

Author SHA1 Message Date
Jean Pierre Cimalando
3df9c3692f Add * on auto pointers everywhere 2020-10-20 21:59:57 +02:00
Jean Pierre Cimalando
6b2ec66ffa Ref-count the global thread pool 2020-10-19 16:57:45 +02:00
Jean Pierre Cimalando
fcfcd5b8cc Protect the access of thread flags under semaphore 2020-10-18 23:41:00 +02:00
Jean Pierre Cimalando
04fabd46d0 Clean up some white space [ci skip] 2020-10-18 23:14:12 +02:00
Jean Pierre Cimalando
bbd2ddd3c5 Fix broken loop ranges
This fixes a regression introduced in commit 2fc6aab:
only the loop information from the audio file would be considered,
and never the one from the opcodes `loop_begin` and `loop_start`.
2020-10-18 19:05:57 +02:00
Jean Pierre Cimalando
a0e893964f Update since to reflect upcoming the stable version 2020-10-15 21:50:58 +02:00
Jean Pierre Cimalando
80f0f4d90a Fix a build error using older sndfile 2020-10-15 19:53:10 +02:00
Paul Ferrand
078fcf5118
Merge pull request #500 from paulfd/loading-mutex
Add a mutex on the loading jobs to protect them in the case of freewheeling
2020-10-15 18:44:24 +02:00
Paul Ferrand
bd4057e927 Use the future helper 2020-10-15 16:51:25 +01:00
Paul Ferrand
f4b6323050 Use std::mutex 2020-10-15 16:44:08 +01:00
Paul Ferrand
67af16f0e2
Move the lock guard 2020-10-15 15:58:08 +02:00
JP Cimalando
5d2225f4fa
Merge pull request #499 from jpcima/phase-normalized
Make all phase opcodes normalized
2020-10-15 15:42:32 +02:00
Paul Ferrand
a5647ab339 Add a mutex on the loading jobs to protect them in the case of freewheeling 2020-10-15 14:30:15 +01:00
Jean Pierre Cimalando
e258ad254f Make all phase opcodes normalized 2020-10-15 13:14:17 +02:00
Paul Ferrand
f3776dcb35 Set the power follower depending on the voice stealing algorithm also on voice re-creation 2020-10-14 23:31:55 +02:00
Paul Ferrand
07f30af7f1 Replace stable_sort by sort 2020-10-14 23:21:10 +02:00
Jean Pierre Cimalando
1e8b36c14d Do not install the static library, only shared with pkgconfig 2020-10-12 16:37:22 +02:00
Jean Pierre Cimalando
80ee358523 Fix the class-memaccess warning 2020-10-10 03:07:07 +02:00
Atsushi Eno
b76a1c50a3
accept samplesPerBlock up to 8192 (inclusive)
`ASSERT(samplesPerBlock < config::maxBlockSize)` (where `maxBlockSize` is 8192) means 
we cannot set 8192. But we don't want 8191 as the actual maximum size.
2020-10-08 02:10:00 +09:00
JP Cimalando
62046e9e8e
Merge pull request #479 from jpcima/map-cc11
Map CC11 expression
2020-10-07 15:35:20 +02:00
JP Cimalando
ebc47e2c48
Merge pull request #480 from jpcima/file-data-copy-delete
Fix a compilation warning, about FileData not copyable
2020-10-07 14:45:05 +02:00
Jean Pierre Cimalando
3aeb96d3b2 Fix a compilation warning, about FileData not copyable 2020-10-07 14:41:16 +02:00
Jean Pierre Cimalando
162673939a Map CC11 expression 2020-10-07 14:36:27 +02:00
Paul Ferrand
b9f58f1fe4
Merge pull request #477 from paulfd/overflow-voices
Overflow voices
2020-10-07 14:32:05 +02:00
Paul Ferrand
2fc6aab964
Merge pull request #425 from paulfd/simpler-file-loading
Changes to the background loading
2020-10-07 13:57:03 +02:00
Paul Ferrand
54d2b7342c Clamp the cutoff values to avoid filters blowing up 2020-10-07 13:19:07 +02:00
Paul Ferrand
f9178d41aa Remove the renderVoiceToOutput method and add a missing comment 2020-10-07 09:08:01 +02:00
Paul Ferrand
81fe043bb3 No need to ramp out killed voice data 2020-10-07 09:01:48 +02:00
Paul Ferrand
b78fa39d9e Remove unused variable 2020-10-07 00:51:18 +02:00
Paul Ferrand
a0ad3b9921 Adapt the thread pool to the number of concurrent threads 2020-10-07 00:37:31 +02:00
Paul Ferrand
1e2ae6bce7 Unused variable and a wrong name 2020-10-07 00:37:31 +02:00
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
Paul Ferrand
8212eb4966 cpp11 static assert needs a message 2020-10-06 23:58:27 +02:00
Paul Ferrand
02a1615e2d Use the back inserter idiom in all stealing methods 2020-10-06 23:31:45 +02:00
Paul Ferrand
480a7d4628 Use the soft engine polyphony limit 2020-10-06 22:47:39 +02:00
Paul Ferrand
8071cd0131 Add more voices than necessary
These will naturally be used for "dying" voices beyond the engine polyphony
2020-10-06 21:51:21 +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