Skip to content
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

Vinyl Gain #602

Merged
merged 6 commits into from
Aug 31, 2017
Merged

Vinyl Gain #602

merged 6 commits into from
Aug 31, 2017

Conversation

daschuer
Copy link
Member

@daschuer daschuer commented Jun 1, 2015

This introduces the magic vinyl gain formular, discussed
https://bugs.launchpad.net/mixxx/+bug/1450665

Currently the vinyl gain it is applied all the time.
In my test it provides actually a more natural scratching sound especial notable on Vocal samples.

I have originally planed to conditional enable the gain. But I am unsure what the conditions are since also pitch changes with a scale of 90 % are benefit from it and sounding more natural now. At a 10% pitch range there is a nearly no notable gain difference.

Any ideas, for the conditions or improvements for the magic formular?

@daschuer
Copy link
Member Author

daschuer commented Jun 2, 2015

The test are failing as desired. This way we can see the difference to the golden sample.

@daschuer daschuer force-pushed the scaler3 branch 2 times, most recently from 06c806a to 305ac9f Compare May 6, 2016 00:42
@Bronxio
Copy link

Bronxio commented Jul 13, 2017

Hi! I've already tested in the official release, and I see that the autogain control for scratching is too much agressive, because when I spin it back at a low speed, it get too much loud and it's a little bit disgusting. Here you have a comparison with Traktor (that I think it has only a limiter or something, because cares for not being so loud), that respect the low volumes when scratching (and that's nice!) In both I spin the vinyl control back a little (more or less at a half speed), but gain mantain always the same volume (and in the Mixxx recording you can't say where I do that)
gain change

@Be-ing
Copy link
Contributor

Be-ing commented Jul 14, 2017

@daschuer if you merge master and push it, AppVeyor will make builds that @Bronxio could test easily.

@daschuer
Copy link
Member Author

Cool, I did not know that Traktor has this feature. Is there a way to configure it somehow?
Could you create a recording of a 1kHz sine wave scratching using Traktor?
It schould also include a slow transition form full speed to zero.
On one hand it this feature produces a natural scratch sound, on the other hand finding a beat at low speed is effected as well. Performs Mixxx any better for that?

@Bronxio
Copy link

Bronxio commented Jul 14, 2017

Is there a way to configure it somehow?
As far as I know, no. There are only "enable autogain" and "enable limiter" options, but can't find anything more.

traktor - enable autogain

Here you have the waves with 1 KHz with start and stop only. My turntables have adjustable start and stop speeds: they are set to the longest when I tested start and stop.

1 khz comparisson

On one hand it this feature produces a natural scratch sound, on the other hand finding a beat at low speed is effected as well. Performs Mixxx any better for that?

Well, as I said, I feel it too much aggressive. I prefer that gain was lower to lower speeds, like Traktor does.

Here, the same scratch sequence performed with both programs (without crossfader cuts)

scratch comparisson without crossfader

I feel more natural some gain changing. It's ok to avoid spikes (louder than original at higher speeds)

By the way, I tested Traktor with and without autogain and autolimiter, but autogain I think it's the classic option that just set a constant gain after finishing analyzing the track, and autolimiter may avoid spikes when mixing two or more tracks... but in my tests the autogain only set gain lower in all of them and I don't think the autolimiter did something.

traktor scratch autogain-autolimiter comparisson

@Bronxio
Copy link

Bronxio commented Jul 15, 2017

Just a thought, the low gain at lower speeds issue could be and adjustable option as well in Mixxx preferences, because I guess some people will prefer the actual autogain set for scratching (and maybe not other DJ software have the option of change that)

And Be's right: if you want me to test alphas, let me know! :)

@Bronxio
Copy link

Bronxio commented Jul 15, 2017

Here you have the start-stop tests of the first screen shot (Mixxx and Traktor with the 1 KHz tone). If you prefer better quality, just let me know. (Autogain and limiter were activated in Traktor, but I modified gain after recording in both tracks)

start-stop tests (1 KHz, Mixxx 2.0.0 & Traktor).zip

@daschuer
Copy link
Member Author

It looks like Traktor limits the gain change by speed to lower speeds. Faster speeds are not effected.
In this PR, I have tried to do it more natural and apply a gain boost on faster speeds as well.
In @Bronxio recordings, x5 speed is somehow a physical maximum before the needle is loosing contact.
The curve applied here is at 5.5 dB in that case which should not clip with Mixxx's default gain leveling.

I hope we have windows builds soon for testing.

Due to waveform scratching, it is possible to get clipping think I will limit the gain changing to just 5.5 dB to avoid that. This should be no problems because we are above the physical possible speed.

@Bronxio: @Be-ing:
Do you think we need a preferences option for this? I t is still possible to find beats well (now, without blowing the speakers by subsonic beats) so i think not.

@Be-ing
Copy link
Contributor

Be-ing commented Jul 30, 2017

I don't have the hardware to test this myself, but I doubt that a preference option would be appropriate. I presume there's one way to make it sound best.

@daschuer
Copy link
Member Author

@Be-ing: You could use jog-wheel scratching like me. Please try to listen to the scratching sound on one hand and try to find a beat on the other hand. It is a good sight for no preference option, if you do not find any regressions.

@Be-ing
Copy link
Contributor

Be-ing commented Jul 30, 2017

I don't have any controllers with jog wheels. I didn't realize this PR affected jog wheels. I thought it only affected vinyl control. In that case there are many other contributors who could test this. @ronso0, @radusuciu want to test?

@daschuer
Copy link
Member Author

Here is the improved formula. This should be natural for normal scratching, but no clipping at insane waveform scratching speeds at default gain leveling.

@Bronxio
Copy link

Bronxio commented Jul 31, 2017

I agree with Be, I actually think it's not really necessary neither. If the best setting is found and there's no advantage to use it in another way, better not to give any option.

@daschuer
Copy link
Member Author

Since we have actually an over proportional gain boost on high speeds, my last formular was just rubbish. I think we schould go with the original formular, but apply a hard limit at x 5 where we do not increase the gain any further. In addition, my new formular is also not 0 dB at normal speed, which is also wrong.

@ronso0
Copy link
Member

ronso0 commented Jul 31, 2017

@daschuer Do you want to change the formula or is this now working as intended? Just tell me when to test and I'll give it a try

@daschuer
Copy link
Member Author

Now I am satisfied. Windows builds should be here soon:
https://ci.appveyor.com/project/mixxxdj/mixxx/build/master-2278/job/8nrqglert4n6g22o/artifacts

@ronso0
Copy link
Member

ronso0 commented Aug 13, 2017

Oh this feels much better!
Don't have experience with vinyl, just made some quick test, mainly finding beats and dropping tunes in. Basic scratching sounds nice as well. Especially when scratching very slowly it doesn't sound like dragging a cheap mp3 anymore.
Thanks!

@daschuer
Copy link
Member Author

Cool! Thank you for the feedback.
Any other likes to test before merge @ywwg @Be-ing?

@Bronxio
Copy link

Bronxio commented Aug 14, 2017

Wooops, I thought that alpha wasn't ready yet because the checks messages!

I tested that alpha as well, and it's very nice! I've testing it about one hour and sounds more natural for me! I recorded a comparison with Traktor and it's very similar (with no crossfader cuts, and please don't mind the end, I stopped the tone with Mixxx and not with Traktor)

new alpha wave for scratching

If I notice something, I'll let you know; but I think it's great like this for the official 2.1 release. Thanks, daschuer!

@ronso0
Copy link
Member

ronso0 commented Aug 30, 2017

Yeaiy!
Using it with touch-sensitive jogwheels for a few weeks now, it feels very good.
Brake and SoftStart benefit as well!
..also dj'ing without headphones is easier

@Be-ing
Copy link
Contributor

Be-ing commented Aug 30, 2017

So it seems we have 3 people saying this sounds better. I cannot test it. Ready for merge?

@daschuer
Copy link
Member Author

Yes, it looks like. If we get complains later, we can consider to bring the old behaviour back as preferences option.
Thank you for testing!

@daschuer daschuer merged commit c9d4f9c into mixxxdj:master Aug 31, 2017
@Bronxio
Copy link

Bronxio commented Aug 31, 2017

Until today, I never associated a known problem (at least by myself) with the magic formula (I thought it was a MixVibes control signal native problem or something, because I remember failures like this in MixVibes Cross); but just to be sure... Could this bug be related with it? Because gain doesn't clip, I don't think so... It only happens with fast spins: the wave position changes in the control vinyl. I recorded a video to show how it happens.

https://youtu.be/M1h2go2fH90

@daschuer
Copy link
Member Author

This bug effects only the gain of the Mixxx output, not the transport.
So your issue is a separate one.

Please file a new bug, link the very good video and add also a vinyl pass through recording (the time code sound) from a scratching similar to that in the video.
I assume we have an filter or something which is messed up with that fast scratching.
Did you use relative or absolute mode?

@daschuer
Copy link
Member Author

A new bug at https://bugs.launchpad.net/mixxx/+filebug

@Bronxio
Copy link

Bronxio commented Aug 31, 2017

Relative. Great, I'll record the scratch in pass through and open this bug then in a few moments.

@Bronxio
Copy link

Bronxio commented Aug 31, 2017

Ready! bug reported.

@Be-ing
Copy link
Contributor

Be-ing commented Sep 2, 2017

I tested clicking and dragging the waveform and it sounds better with this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants