sergree / matchering

🎚️ Open Source Audio Matching and Mastering

Home Page:https://pypi.org/project/matchering/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Possibility of controlling the final mix

Sonidocreativo opened this issue · comments

Thanks for your work it works well. You have thought about putting controls to regulate the percentage of the target, for example of the eq and the stereo field. regards

Hi! Thank you for your feedback

I'm not sure that this will work, because our library does not process audio in real time, but the entire file at once. therefore, when changing the parameters, the application has to re-process the entire file.
I'll think about it better in my spare time..

but Matchering basically has such concept: if you want to change the result, select a different reference (or edit it in some way with other software). no knobs or faders. this is a mental shift.
this is described here

But it would be fine if I decide to put only 50% of the EQ and 70 of the stereo field and process it again. It takes more time but you can adjust more to the desired result.

A handy option when the user want to have more control on the final result, sounds good to me.
We can add some parameters (like EQ/stereo width/loudness... etc) in the preview stage.
Users can decide how much they want to be close to the reference, or let matchering decide for them (100% in current version).

I'm not sure that this will work, because our library does not process audio in real time, but the entire file at once. therefore, when changing the parameters, the application has to re-process the entire file.

Maybe not the entire file, only the preview section needs to be processed in the preview stage.
The whole matchering can be done afterwards.

@yoyololicon Hi 🙏

There are no such thing as stereo width parameter in Matchering. The effect of expanding the stereo width is achieved by equalizing mid and side channels separately.
https://github.com/sergree/matchering/blob/master/matchering/stages.py#L70

We will still need to figure out how to correctly put parameters in these formulas, because simple multiplication by 0.5 or 0.7 is unlikely to work. And the current version of the library creates a preview after creating the full version. And the library is not responsible for saving states between sessions... Most of the flow will have to be rethought. need to think..

So to make such update we will need to edit core library and web app. I still believe that if we make this functionality, we should not impose these settings on users immediately when opening the page, hiding them behind a separate button that can be clicked by those who want such advanced settings. Or make a separate advanced fork of https://github.com/sergree/matchering-web

What I can say for sure is that we need to collect more such feature requests for some time before making such breaking changes. I hope you agree.

Smells like v2.1 😅

I think it would be useful to automatize the tuning of the reference track to the key of the target track. I would propose to do this in the following way:

  1. detect the frequency of the lowest peak in the target audio (xEx: 43 Hz)
  2. detect the frequency of the lowest peak in the reference audio (xEx: 52 Hz)
  3. Shift the frequency of the reference audio the amount of Hz in order to match the targets Low freq peak (xEx: 52-43 = 9 Hz) -> (Reference audio should be shifted 9 Hz down)
  4. commence the matching process as usual.

I know it sounds obvious, but it gives me peace of mind to explain it step y step.
I think this would be useful so that both tracks share the same low end. Also, aligning the low-frequency peaks is better than aligning higher frequencies due to the logarithmic scale. Shifting from the lowest frequencies won't affect the higher end, but it will respect the low-end better.

Hello @nicokaniak! Thank you for your feedback and suggestion. I like your idea 🙂

I remember this equalization method from SurferEQ. I think this might be too overkill, but I'll try experimenting with it in Jupyter Notebook before the next update.