lmms icon indicating copy to clipboard operation
lmms copied to clipboard

Mixer peak indicators.

Open mikobuntu opened this issue 11 years ago • 25 comments

screenshot from 2014-11-07 07 47 18

Mockup of how this could look on the Fx mixer....

To improve the mixing functionality, useful for for both song construction and final mixdown we should implement a GUI element which will indicate the highest peak of every cahnnel.

this will work in the following way.....

(1) Optional switch for on/off in the config settings (1a) Optional switch on the GUI element itself ( code can be taken from the master waveview on the main toolbar )

(2) The indicator will hold and display the highest peak reached by its channel until a higher value is received on that channel.

(3) Left click will reset the indicator to wait until it receives another highest db reading. This is the main benefit of having this functionality as we can see that we are above our threshold or too high in a separate channel, which is forcing the total of all channels to cause Master fx channel to rise above 0bd ( aka clipping ). So we can now lower the volume slider in an FX channel and see what the new db value is easily.

(4) If the peak indicators value is >= 0.0db it will be highlighted ( red in my example.)

This behaviour is consistent with Ardour and Hydrogen drum machine


note that i have done a keyword search in our git repo and cannot find this as a feature request, so if it is a replica i will merge this comment into it thanks MIkobuntu


mikobuntu avatar Nov 07 '14 08:11 mikobuntu

We already have those temporary peak lines in the level meters, maybe adding a permanent line there would be better? That way it would be easier to relate the level to what's going on at the moment, and it would be in stereo, too. Double lines might of course be a bit confusing, in that case some other representation could be explored.

softrabbit avatar Nov 07 '14 10:11 softrabbit

On 11/07/2014 12:07 PM, Raine M. Ekman wrote:

We already have those temporary peak lines in the level meters, maybe adding a permanent line there would be better? That way it would be easier to relate the level to what's going on at the moment, and it would be in stereo, too. Double lines might of course be a bit confusing, in that case some other representation could be explored.

I think the most pressing need is to convert the peak meters as well as the faders to dBV scale instead of linear.

Then we could add small lines to the graphics every 10 dBV so it'd be easier to judge the levels...

This is getting more to LMMS 2.0 stuff again, but I'm planning a redesign of all volume knobs and widgets. Get rid of the silly "show volume in dBV" settings option and instead just always show all values in both linear amp and dBV. The knob/fader movement should just always be in dBV scale.

diizy avatar Nov 07 '14 11:11 diizy

Miko - it looks super :+1: -but this would make the 'name-space' (nto..:) even smaller. It has already limited space for channel-names -Perhaps the 'jumping stick' in each meter could be 'sticky', so that it always would 'hang' in the most extreme reached pos? (or add one extra, for that purpose, that way a 'jagged' line would be drawn on the meters, and i then a mouse-over could show a read-out: val : bar,beat,tick - Well im just BS'ing :)

musikBear avatar Nov 07 '14 13:11 musikBear

Then we could add small lines to the graphics every 10 dBV so it'd be easier to judge the levels...

:+1: We really are running out of vertical realestate, so I'd be a big fan of fitting this stuff in the space we already have.

Nice mockup though! :)

tresf avatar Nov 07 '14 13:11 tresf

Lots of good points made here guys. The main thing is the functionality i guess.

Some thoughts :- we could raise the vertical height of the mixer strips, this would allow something like my GUI element ( which acts sort of like a warning call, that is easily noticed by users, especially new users ) [ YouTube tho great for LMMS, you would almost think that LMMS purposely used gain on all channels, i think noobs seem to think that driving the maximum amplitude of audio is a good thing :P ]

.... anyway, This would also help with @musikBear & @tresf point about needing some more real estate for labelling tracks. As @diizy stated about using lines to mark every 10db has a +1 from me too ;)

... the floating line in the mixer is also a great idea, maybe having an extra line that stays there would work, i think the delay for fallback time can easily be increased in the code too iirc.

note: the GUI element in my mockup doesn't have to take up much space, i was actually thinking about maybe using a smaller image, where if no peak is detected it remains green and the offending channel will go red where a mouse hover will show our reading as a tooltip ???? i can do a mockup if required ;)

possibly even better idea:- The slider knob will indicate a maxed out peak, by changing colour (red :) until it is lowered to <0.00db this way no space is taken up!

mikobuntu avatar Nov 07 '14 16:11 mikobuntu

.. the floating line in the mixer is also a great idea, maybe having an extra line that stays there would work

We have a floating line. :beer:

image

-Tres

tresf avatar Nov 07 '14 16:11 tresf

@tresf Yes i know this, I used LMMS once :P .. but yeah I maybe didn't explain myself properly before. My point was really that we can have an extra floating line that stays at whatever point the maximum of our " floating line that you pointed out above" reaches . our floating line is just a quick indicator i.e it has a falloff, but maybe if @diizy add in the "ruler" type indicator this will not be needed, I was really just brainstorming Tres .... I think i have just drank too much coffee today :) a :facepunch: for me and a :ice_cream: for @tresf

mikobuntu avatar Nov 07 '14 16:11 mikobuntu

Makes me think... Perhaps we raise the bar a notch or two so we know how much we're over by... thoughts?

tresf avatar Nov 07 '14 16:11 tresf

So, calculate/stay at the max volume this mixer reaches and have a bar there? Allowing a quick overview of what mixers need attention to lower the volume, I'm assuming.

Spekular avatar Nov 07 '14 17:11 Spekular

Something like this (ugly mockup, sorry):

image

tresf avatar Nov 07 '14 17:11 tresf

@tresf yes that could def work. The way the mixer works now is 0dbv is around/at the middle of the mixer strip, and the maximum reading is +6.02 to range of -inf (silence ) the last visible reading is -32.77db . So yeah your idea is perfect, but we would need the lines represented at the 0.00db point i think? ... @Spekular yes that was one of my thoughts. Everyone has to agree on what way to approach this as there are a few, but one of my main concerns is making it easily noticed by the user!

mikobuntu avatar Nov 07 '14 17:11 mikobuntu

.... Im just realising that @tresf your idea is correct the way it stands as the slider is the gain amount not the actual reading of that channels max amplitude. Or should i say the slider knob does not sit on the 0db point that the led faders show.

mikobuntu avatar Nov 07 '14 17:11 mikobuntu

Good point.. we may want the slider to stop short of that spot to avoid confusion. :)

tresf avatar Nov 07 '14 17:11 tresf

yeah Tres, this is kind of confusing the way it works now.

mikobuntu avatar Nov 07 '14 17:11 mikobuntu

On 11/07/2014 07:34 PM, Mikobuntu wrote:

@tresf https://github.com/tresf yes that could def work. The way the mixer works now is 0dbv is around/at the middle of the mixer strip

Nooo... what gave you that idea? 0dBV is near the top, right around where the red starts.

diizy avatar Nov 08 '14 05:11 diizy

mixer works now is 0dbv is around/at the middle of the mixer strip

"Nooo... what gave you that idea? 0dBV is near the top, right around where the red starts."! Yes If you read more you will notice that I realised this "eventually". I was just having a fubar moment ;)

thanks Mikobuntu ;)

@tresf https://github.com/tresf yes that could def work. The way the

— Reply to this email directly or view it on GitHub.

                  =

mikobuntu avatar Nov 08 '14 08:11 mikobuntu

one thought -Could 'captions' be used for user-info -like (-here mouse-over channel 2) fxmixer-preset-area

I have used this quite often, also for dynamic debug info, like fps I just thought that caption-space, could perhaps be used for more than just form-names, and have a dynamic concat info ?

musikBear avatar Nov 08 '14 12:11 musikBear

Hello, relating to the first comment on this issue and the feature request. Is this in any way already a WIP?

badosu avatar Dec 24 '14 21:12 badosu

No one have reported working on this, the pictures were just mockups of how it could look.

Sti2nd avatar Dec 25 '14 15:12 Sti2nd

@mikobuntu Has this issue been fixed by #3056 ?

RebeccaDeField avatar Oct 27 '16 01:10 RebeccaDeField

@RebeccaDeField imo no. @mikobuntu idea was a real readout of the value. I love that idea, but it clashed with the area available. I still think that miko's idea is so sexy, that it really deserve a 2. consideration. The sc. 'realestate' area is imho quite an eye-sore, and on top of that, its function is also suboptimal. I feel we could exploit the caption-bar better, and then make a 6 char rule for the 'realestate' area. This rule should ensure that only 6 letters of a preset name was displayed in the mixer, but when a channel was highlighted, the whole preset-name would be shown in the caption (just as my mockup-picture above ( https://github.com/LMMS/lmms/issues/1271#issuecomment-62256282 ). It is also difficult read whole vertical names, so a display of the name in proper writing in fi. caption-bar, is in need. And that would leave room in the 'realestate' area for not only miko's sexy meeter, but even more functions.

( Current 'tooltip' is not too good. Often this happens fxmix_dodgyhint I have NO idea why. Since its not reproducible, i cant file a ticket

OBS! Names on the channels are extremely important, im not saying they arent! but 6 ..or 8? chars would be sufficient for identifying the channel, and the whole name would then appear at mouse-over in caption-bar, or similar, fi. there are a lot of space for a general purpose info-area in Main to the right of the CPU-meter

musikBear avatar Oct 27 '16 12:10 musikBear

Done via #7045

Rossmaxx avatar May 09 '24 07:05 Rossmaxx

Done via #7045

It doesn't look like it to me - that PR improved the existing features, but didn't add this one.

DomClark avatar May 19 '24 20:05 DomClark

I have a first implementation of peak indicators which adds the new class PeakIndicator. It inherits from QLabel and has a slot to set/update the current peak value if it represents a new peak. It connects to a new signal of the Fader class. Here's the current implementation in action:

Screencast_20240520_203622.webm

Peak indicator reset

~~For some strange reasons resetting the value via click does not work because the click event does not reach the peak indicator widget although I have overridden mousePressEvent. Does anybody have an idea what might be causing this? Some event filters somewhere or something similar?~~ Forget what I wrote before. For some reasons it is now working. :sweat_smile: Perhaps some miscompilation due to changes with regards to signals/slots? :thinking:

Resetting the indicators when a new project is loaded also would have to be implemented due to the fact that the mixer strips are reused and keep their old state.

Warning colors

Also no warning colors of any kind are implemented. Don't know if that is wanted in the first place?

Noisy Lb302

What's interesting is that in the video the master channel already starts at "-147 dbFS" instead of "-inf dbFS" because the Lb302 instance directly seems to inject a weak signal. Test file is "Greippi - Krem Kaakkuja (Second Flight Remix).mmpz".

michaelgregorius avatar May 20 '24 18:05 michaelgregorius

Also no warning colors of any kind are implemented. Don't know if that is wanted in the first place?

I think setting it to the color that the channel gets to would be neat, or at least be theme-able.

Veratil avatar May 20 '24 19:05 Veratil

Pull request https://github.com/LMMS/lmms/pull/7295 adds peak indicators. They do not light up in warning colors if a threshold is crossed but already add some nice value.

I guess warning colors would need something more than just inheriting from QLabel so that the background colors can be set accordingly. So that's something for later or someone else.

michaelgregorius avatar May 30 '24 21:05 michaelgregorius