LMMS / LMMS/lmms

Extend Peak Indicator Reset Options

Open
#8,554 14 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C++
Stars
10.4k
Forks
1.3k
Avg merge
2d 13h
Merged PRs (30d)
7

Description

### Enhancement Summary

Usually my projects end up with many mixer channels (over 8 usually), and I find myself manually clicking the Peak Indicator on all the channels after some plugin causes temporary clipping. Now, all of the peak indicators indicate a 10.0 or something that is well above the regular level of a song, and I have to manually click every single peak indicator. I propose that we add a context menu to the peak indicators, so that when right-clicked, additional reset options show up. Keeping the current left click behavior would be fine, as long as we put a tooltip in the bottom left informing users of this (similar to the one that appears when dragging a MIDI clip in the Song Editor).

Also, I don't know what term we should use in the context menu completely. For now, I made a mockup with the word "sender", but this doesn't seem very intuitive. If anyone has a better idea as to what channels sending to the selected channel should be called, please feel free to improve upon this.

### Implementation Details / Mockup

Here I have a rough sketch of what would be in the context menu

Image

(Note: To reset all peak indicators, one can just reset senders recursively on the master channel. I am well aware that any completely unlinked channels will not be affected by this, but I don't think that should matter, as you wouldn't be able to hear that channel normally either)

**IMPLEMENTATION**

To implement this, it should be fairly straightforward. ~~Two new methods, `void reset_senders` & `void reset_senders_recursive` in `MixerChannelView` can be implemented. Because `MixerChannel::m_recieves` is `public` and `MixerChannelView` is where the current click-to-reset function in implemented, it can be added in `MixerChannelView.cpp`~~. One thing that I'm not entirely sure on is how to distinguish between a right click on the actual channel as opposed to the tiny `PeakIndicator`, tho I believe we can add more code in `‎‎PeakIndicator::mousePressEvent` to distinguish between the left clicks and right clicks, but this might make routing back to the (I'm not a GUI guy). One thing that might need to be done, though, is making the peak indicator bigger, because it might be difficult to right-click in such a small area.

(EDIT: I believe I am mistaken as to how the current reset system works. I confused `MixerChannelView::reset` with `‎PeakIndicator::resetPeakToMinusInf`, so implementation might be a little more confusing that I believed it be.)

### Please search the issue tracker for existing feature requests before submitting your own.

- [x] I have searched all existing issues and confirmed that this is not a duplicate.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading MixerChannelView.cpp, MixerChannel, and PeakIndicator::mousePressEvent to verify how the current peak reset works and how mouse events are routed. Determine how the proposed context-menu reset options should cover related senders and recursive senders, while preserving left-click reset behavior and providing the requested tooltip; confirm the interaction manually in the mixer.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.