-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for stem in the engine #13070
Add support for stem in the engine #13070
Conversation
Does it make sense to allocate new memory if a STEM track is loaded and discard it if another track is loaded and than allocate it again if a new STEM track is loaded? |
I guess it depends. Perhaps a good middle ground would be to allocate stereo, them if a STEM gets loaded, re-allocate memory to support stem and keep it as is going forward? |
Yes, you are probably right. Than let's stick with the dynamic allocation. This is beneficial if we think to 64 Sampler skins. |
7012b36
to
20eb0c4
Compare
142a707
to
bee20d5
Compare
bee20d5
to
b31e801
Compare
37573c7
to
c70dd17
Compare
b8c19a0
to
2f0518d
Compare
Isn't it a problem we accepted to go with anyway in #13143 and with the user prompt about it? My thoughts was, if the benchmark shows better result, have mono processing for both stereo and stem track when "multi threaded RB" is on, only stereo processing on stem otherwise. |
Yes.
I am pretty sure benchmarks will show better results, especially on high number of cores, but since the quality is worse and the user expects the best quality when using Rubberband, the default should be stereo processing with four threads in case of stems. The rest can be optional, along with explanations. |
Co-authored-by: Daniel Schürmann <daschuer@mixxx.org> Signed-off-by: Antoine C <mixxx@acolombier.dev>
da3e4a4
to
ccd8a22
Compare
Signed-off-by: Antoine C <mixxx@acolombier.dev>
eb1d773
to
f340b1b
Compare
…port-for-stem Signed-off-by: Antoine C <mixxx@acolombier.dev>
I have added the multi threaded rubberband logic:
I have also added more logic to try and optimise the channel per worker depending of the core, as no every setup would have a 8 cores or more |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here some comments
4621cdc
to
f23f1b2
Compare
Thank you. Just left some final comments. We have also a conflict. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thank you.
@@ -303,6 +306,7 @@ DlgPrefSound::DlgPrefSound(QWidget* pParent, | |||
void DlgPrefSound::slotUpdate() { | |||
m_bSkipConfigClear = true; | |||
loadSettings(); | |||
settingChanged(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@acolombier Why was this change necessary?
Thing is, with #12194, Apply will reapply the soundconfig unexpectedly for no obvious reason which causes a playback pause.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was necessary to update the dual threading components, but I guess it could have been in loadSettings
This PR refactors the engine to prepare for stem mixing.
Currently, all stems are mixed at the deck level, and continue into the mixer and affect manager as a stereo channel.
Future work will allow the deck to embedded its own effect manager so it can be applied to stem individually.
Depends on #13044