mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.48k stars 1.28k forks source link

Skin shows all eqs at 12 o'clock - but they aren't at 12 o'clock #12232

Open stefan-franz opened 1 year ago

stefan-franz commented 1 year ago

Bug Description

I startet Mixxx and wondered about difference sound between the deck 1 and 2. The reason: The eq of the deck 1 was not neutral. But the skin shows all neutral!

3 Bugs:

  1. After start Mixxx the eq should reset
  2. I set the deck eq should make an reset after loading a new track. That doesn't work in Auto-DJ. (or only to the skin, but not to the real value)
  3. The skin doesn't show the right level of the eq. It seems it saves the last standing before closing Mixxx

Version

2.4 Beta 199

OS

Linux Mint 21.2 Cinnamon

ronso0 commented 1 year ago

EQ knob positions are not stored. Make sure you have a mixing EQ selected in Preferences -> Mixer

stefan-franz commented 1 year ago

After i rotate all 3 eq knobs left and back to 12 o'clock - it sounds normal. So anywhere a false position must be saved. On my controller all knobs were at 12 o'clock at the moment, the sound error was.

Here is my setting.

EQ Setting

Holzhaus commented 1 year ago

@stefan-franz do you have a controller attached? Some controllers send their current knob state on startup. Could be an issue related to that.

If not: is the issue reproducible? So if you turn the EQ knobs all the way to one side, shut down mixxx and start it again, is the sound still influenced by the previous EQ state?

stefan-franz commented 1 year ago

I've just testet: Mixxx shut down, turned the middle eq of the controller, deck 1 to 7 o'clock. Started Mixxx and on the skin the knob stands instead of 7 o'clock at 12 o'clock. I load a track in the deck and have the sound of the 7 o.clock knob setting. Still the skin shows all at 12 o'clock. After touching the knob, the skin shows it right. Controller Herkules DJ Control Instinct.

ronso0 commented 1 year ago

Is this a new issue? Like, did it work at some point (controller and GUI controls are in sync after startup)?

stefan-franz commented 1 year ago

I'm not sure - but last year i made many jobs with the 2.4 alpha version - I did not notice such errors.

stefan-franz commented 11 months ago

Heavy EQ Error on Linux Mint Cinnamon 21.2 Today (and perhaps every day) reproduceable with a new start of my laptop and starting Mixxx. Closing Mixxx and restart (without reboot the laptop) make the EQ an BOTH Decks working right. Maybe it depends with Updates - because i updated before i startet Mixxx first.

Here is the Video description and the logfile. https://vimeo.com/manage/videos/882459224/5018ef5f33 mixxx.log

ronso0 commented 11 months ago

Thank you for the effort creating a video of the issue. Neither from the video nor the log it is clear what is happening. Looks like the Gain of deck 2 is turned up. FYI you can play to tracks in sync (same position) if you clone a deck by dragging the playing track (deck label) onto another (stopped) deck.

You suspect that the actual EQ knob value is somehow adopted from the controller knob but the GUI knob is showing that value. That means if the EQ knobs on your controller are centered when you start Mixxx everything works as expected? Please verify.

To check the actual control values of the EQ knobs (or any GUI control) you could start Mixxx from the command line with --developer argument, the hover any control (make sure to enable tooltips). You'll see something like this: Screenshot_2023-11-10_12-27-30

Closing Mixxx and restart (without reboot the laptop) make the EQ an BOTH Decks working right.

What does that mean? Does the GUI reflect the controller knob poistion on startup? Does EQ auto-reset work? Please turn off Library auto-rescan in the preferences. I'm sure it's not directly related but let's exclude this so we can concentrate on the knobs.

stefan-franz commented 11 months ago

First, on every new start of my Latop i have the problem. The hardware knobs of my controller are standing always at center (12 o'clock).

I startet mixxx --developer and checked the values - tooltips of the skin. The skin gives e. g. parameter 1 (bass) 0.5 back. On both decks the same.

But if i rotate the knob of the left deck a bit and back to center, the sound is different. At the start of Mixxx, it sounds like the knobs would standing at about 10 o'clock and after touching all 3 knobs each deck, Mixxx sounds as the Gui shows. Bevor the Gui is wrong.

Auto rescan library is/was always off.

Summary: Mixxx works with other EQ values at startup as on the skin shown. After rotating the EQ it works right. Closing Mixxs and restart Mixxx makes working right from the beginning. The problem comes only on every restart of Mint 21.2

ronso0 commented 11 months ago

Very strange...

Without the controller you don't see the issue?

So, to summarize:

Correct?

How long is the controller enabled prior to starting Mixxx? Is it always plugged in and switched on? Does switching it on earlier make any difference?

You installed Mixxx from the ppa, correct? There are no concurrent installations? (FlatPak for example)

Maybe it's related, idk, though just yesterday I spotted in the log that Mixxx also reports /home/<user-name>/.local/share/Mixxx as writable location, and curiously that directory existed and even contained all the usual Mixxx data. I have no idea where that is coming from. Do you mind checking (in the first run after restart, which is expected to fail) where Preferences > Library (scroll to bottom) > "Open settings directory" leads you?

Auto rescan library is/was always off.

I just noticed in your log that a library rescan was run.

stefan-franz commented 11 months ago

Without the controller you don't see the issue?

Don't tested that yet. But my controller is always plugged on - in live situation too. Before i start Mixxx the first time, the controller is plugged on.

* it works if Mixxx was run previously (after having restarted your computer)

And i adjusted previously the eq knobs so it plays right. Arter Re-start Mixxx it works right

* it doesn't work if you run Mixxx the first time after a restart

Yes

How long is the controller enabled prior to starting Mixxx? Is it always plugged in and switched on? Does switching it on earlier make any difference?

Always plugged on on usb - controller is on, with starting the laptop

You installed Mixxx from the ppa, correct? There are no concurrent installations? (FlatPak for example)

Yes, the beta ppa. system Flatwas tested by me about 2 years ago but all deinstalled and i work, you know, since about 1 year with alpha or beta versions of 2.4

Maybe it's related, idk, though just yesterday I spotted in the log that Mixxx also reports /home/<user-name>/.local/share/Mixxx as writable location, and curiously that directory existed and even contained all the usual Mixxx data. I have no idea where that is coming from. Do you mind checking (in the first run after restart, which is expected to fail) where Preferences > Library (scroll to bottom) > "Open settings directory" leads you?

To: /home/stefan/.mixxx that works because i copy the database and the config files to my other 2 DJ Laptops and all works,

Auto rescan library is/was always off.

I just noticed in your log that a library rescan was run.

Yes, i did i manually to see if the error is stll here.

ronso0 commented 11 months ago

Okay, so please try to reproduce the issue with --controller-debug to include all the MIDI communication with the controller and share the log please. One with and one without the issue.

stefan-franz commented 11 months ago

Log with error. I rotated after some playing a song the EQ so that it sounds now ok. mixxx_EQs_wrong.log

stefan-franz commented 11 months ago

Here the 2nd start of Mixxx - all 2 Eqs worked right. mixxx_EQs_correct.log

ronso0 commented 11 months ago

Alright, so the notable difference of those two logs is mixxx_EQs_correct.log lines 154-168 which aren't printed in the working session: (I grouped the warnings so the incoming messages are easier to read)

Debug [Controller] "incoming: " "Hercules DJControl Instinct MID:  15 byte sysex: [F0 00 01 4E 0C 06 10 00 00 00 14 00 00 00 F7]"
Debug [Controller] "incoming: " "Hercules DJControl Instinct MID:  status 0xB0 (ch 1, opcode 0xB), ctrl 0x37, val 0x40"
Debug [Controller] "incoming: " "Hercules DJControl Instinct MID:  status 0xB0 (ch 1, opcode 0xB), ctrl 0x38, val 0x40"
Debug [Controller] "incoming: " "Hercules DJControl Instinct MID:  status 0xB0 (ch 1, opcode 0xB), ctrl 0x39, val 0x40"
Debug [Controller] "incoming: " "Hercules DJControl Instinct MID:  status 0xB0 (ch 1, opcode 0xB), ctrl 0x36, val 0x53"
Debug [Controller] "incoming: " "Hercules DJControl Instinct MID:  status 0xB0 (ch 1, opcode 0xB), ctrl 0x3B, val 0x56"
Debug [Controller] "incoming: " "Hercules DJControl Instinct MID:  status 0xB0 (ch 1, opcode 0xB), ctrl 0x3C, val 0x40"
Debug [Controller] "incoming: " "Hercules DJControl Instinct MID:  status 0xB0 (ch 1, opcode 0xB), ctrl 0x3D, val 0x40"
Debug [Controller] "incoming: " "Hercules DJControl Instinct MID:  status 0xB0 (ch 1, opcode 0xB), ctrl 0x3E, val 0x40"
Warning [Controller] ControlObject accessed via deprecated key "[Channel1]" "filterHigh" - use "[EqualizerRack1_[Channel1]_Effect1]" "parameter3" instead
Warning [Controller] ControlObject accessed via deprecated key "[Channel1]" "filterMid" - use "[EqualizerRack1_[Channel1]_Effect1]" "parameter2" instead
Warning [Controller] ControlObject accessed via deprecated key "[Channel1]" "filterLow" - use "[EqualizerRack1_[Channel1]_Effect1]" "parameter1" instead
Warning [Controller] ControlObject accessed via deprecated key "[Channel2]" "filterHigh" - use "[EqualizerRack1_[Channel2]_Effect1]" "parameter3" instead
Warning [Controller] ControlObject accessed via deprecated key "[Channel2]" "filterMid" - use "[EqualizerRack1_[Channel2]_Effect1]" "parameter2" instead
Warning [Controller] ControlObject accessed via deprecated key "[Channel2]" "filterLow" - use "[EqualizerRack1_[Channel2]_Effect1]" "parameter1" instead

This happens just before Mixxx prints

Info [Main] Loaded skin "LateNight"
Info [Main] Loaded skin "LateNight"
Info [Main] Loaded skin "LateNight"

So, only in that session, the controller sends a sysex message, followed by 8 messages, presumably [3 EQ knobs + X] x 2 decks. The values are either are 0x40 (decimal 64 = knob centered on a scale 0-127) and 53 / 56, which probably corresponds to something 83 / 86. And it seems those two controls are the volume faders (that's why there's no deprecation warning for those) https://github.com/mixxxdj/mixxx/blob/ccfd8064bb6eabf1df7213e677001c7394b6468d/res/controllers/Hercules%20DJ%20Control%20Instinct.midi.xml#L282-L291 https://github.com/mixxxdj/mixxx/blob/ccfd8064bb6eabf1df7213e677001c7394b6468d/res/controllers/Hercules%20DJ%20Control%20Instinct.midi.xml#L342-L351

Hence the deck should sound okay again if you move the Vol faders until you see a response on screen.

Question is why the controller only sends the sysex in the first session. What happens if you unplug and replug the controller after the first session (EQs wrong) and start Mixxx? Are the EQs wrong again? What happens if you unplug the controller before starting the first Mixxx session?

And why are the values not picked by the skin.

stefan-franz commented 11 months ago

Thanks for analyzing. Wow.

The Herculers Instinct DJ Control is not the controller many DJs use (but for me as mobile wedding party DJ who has to set up and dismantle his system himself every time it's perfect and runs stable as tank since 12 years) So, my workaround is at the moment, to rotate at the start all 3 knobs of the 2 decks a bit and back to center. Then all sounds fine.

In the controller is the soundcard. So it makes no sense to start Mixxx without the controller, because i have to adjust the soundcart setting every time new.

Maybe you can give Mixxx a "filter" (as a firewall), who filters the strange sysex messages so that they don't mess anything up. Or Mixxx makes in the future a "reset" after loading that all would reseted incl skin.....or whatever.

Thanks for your great work

ronso0 commented 11 months ago

What happens if you unplug and replug the controller after the first session (EQs wrong) and start Mixxx? Are the EQs wrong again? What happens if you unplug and replug the controller before starting the first Mixxx session?

?

stefan-franz commented 11 months ago

What happens if you unplug and replug the controller after the first session (EQs wrong) and start Mixxx? Are the EQs wrong again?

Wrong sound - from the 1st session it's saved in Mixxx

What happens if you unplug and replug the controller before starting the first Mixxx session?

Wrong sound. Unplug and replug has nothing to do with the problem.

After reboot my laptop and first start Mixxx the sound is wrong If i adjust one EQ and close Mixxx - then 2nd start of Mixxx - both EQs working right.

stefan-franz commented 11 months ago

Important cognition: 1st start of Mixxx - EQ sounds wrong - and i don't touch the EQ knobs. The level sliders on the skin (80%) display the correct level slider of the hardware controller (80%)

Then i start the 2nd time Mixxx, all EQ worked right. And level slider standing in the sSkin at 100% (on the hardware Controller at 80%)

Mixxx seems to make a reset at the 2nd start.

ronso0 commented 11 months ago

Wrong sound - from the 1st session it's saved in Mixxx

Mixxx seems to make a reset at the 2nd start

Mixxx doesn't save the values, nor does it do a reset. This issue is caused by the controller, as it obviously sends the sysex every first time after being powered when Mixxx connects to it. After that, while still being powered, it assumes the MIDI counterpart already knows the control states and hence DOESN'T send the sysex again.

Unplug and replug has nothing to do with the problem.

Obviously that IS part if the issue, as your previous observation confirms.

The mystery here is why it worked before, and doesn't anymore now. Can you recall when that behaviour started? Could you (backup your settings and database) try with Mixxx 2.3.6?

stefan-franz commented 11 months ago

Maybe the error was always there and I didn't recognise this just now...

ronso0 commented 11 months ago

From what I read from the logs it seems the skin is loaded after the controller send the status. Maybe it's just that the knob and slider widgets need to load the control state when being initialized. I'll try to implement this and open a PR if I succeed.

ronso0 commented 11 months ago

Hmm, that should already happen, according to https://github.com/mixxxdj/mixxx/blob/81ba008751c9ab814e77235ea7e367b5953f0d6e/src/widget/controlwidgetconnection.cpp#L76-L78 called from here https://github.com/mixxxdj/mixxx/blob/81ba008751c9ab814e77235ea7e367b5953f0d6e/src/skin/legacy/legacyskinparser.cpp#L914-L923

@JoergAtGithub Do you have any idea what's going wrong with the sysex?