Commit graph

1398 commits

Author SHA1 Message Date
Paul Ferrand
6bfc9074d7 Move the keyswitch logic in the synth rather than the regions 2020-10-27 11:04:25 +01:00
Paul Ferrand
c27cb69a83 Build a set of "effective" keyswitches anduse it instead of sw_lokey/sw_hikey 2020-10-27 10:00:24 +01:00
JP Cimalando
6a66d2256f
Merge pull request #509 from jpcima/auto-pointers
Add * on auto pointers everywhere
2020-10-23 23:30:15 +02:00
Paul Ferrand
354b68fc9f Remove the callback mutex for the clear method
Take it globally in the loading functions
2020-10-23 23:07:05 +02:00
Jean Pierre Cimalando
969bae15e1 Remove the assertion on a valid code path of the FilePool 2020-10-23 20:40:33 +02:00
Paul Ferrand
1d2c3a4244 Upon clearing the file pool, clear the last used files and garbage queue
I also added an early exit with an assertion to catch unintended behavior
2020-10-23 14:47:10 +02:00
Paul Ferrand
a372d40c48 Use a single mutex for both the garbage and last used file data structures
They're more or less jointly updated anyway by the garbage collection thread
2020-10-23 14:46:18 +02:00
Paul Ferrand
49b66c2ba9 Clear the loading queues before changing the file 2020-10-23 14:44:20 +02:00
Jean Pierre Cimalando
10565e99be Make it a tiny bit more efficient 2020-10-21 04:00:52 +02:00
Jean Pierre Cimalando
0e24daf26d Auto-cleaning file pool 2020-10-21 01:51:38 +02:00
Jean Pierre Cimalando
e6ecbc6fcd Make the Region::sampleId shared_ptr 2020-10-21 01:36:09 +02:00
Jean Pierre Cimalando
1c0d597d01 Rewrite by making the hashByte function separate 2020-10-21 00:14:52 +02:00
Jean Pierre Cimalando
16f34da8bc Fix an implementation error of FNV-1a 2020-10-20 23:24:34 +02:00
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