Redesign of the Controller Rack
Peak controller and LFO controller will be inserted directly in the controller Rack. So we can avoid a lot of floating windows. In my opinion the rack makes more sense in this way.

I think the controllers should be centered in the window.
I think the controllers should be centered in the window.
I try to change the width() of the window depending of needing a scrollbar or not.
I updated this. The window width relates now on the need of a scrollbar.
This one will be not ready before 1.2 is released. I'm targeting 1.3.
@BaraMGB Pretty cool, thank you for working on this.
#3235 Not sure if this will affect you but I figured I would mention it
Yes, I made a PR for this : https://github.com/LMMS/lmms/pull/3240
@BaraMGB I had a couple of ideas/questions to share (please ignore them if they are not helpful) Some of these might be duplicates of above comments, don't understand coding.
1.) Currently you can change the names of the controllers, will you still be able to offer this? 2.) Would it be possible to be able to move items up and down? (Preferably through a mouse button drag method) 3.) At first I was going to ask if the expand/collapse arrows are necessary, but I guess it couldn't hurt to have them, they will probably would help in keeping the list clean. 4.) If these arrows do remain, would it be possible to add options to "expand all" and "collapse all"? That might be helpful.
Again I have not used this feature much yet so you and others would be able to answer if these above questions are helpful or not. Anyways, hope this helps. Thanks again for working on this.
1.) Currently you can change the names of the controllers, will you still be able to offer this?
Yes, by double click on the title bar.
2.) Would it be possible to be able to move items up and down? (Preferably through a mouse button drag method)
If that makes sense, I think it should be implemented.
3.) At first I was going to ask if the expand/collapse arrows are necessary, but I guess it couldn't hurt to have them, they will probably would help in keeping the list clean.
If you have more than 5 controllers in this rack, you can easily lose sight.
4.) If these arrows do remain, would it be possible to add options to "expand all" and "collapse all"? That might be helpful.
Yes, this feature is planned.
I guess I have implemented all that you can see in @budislav s mockup (see here https://user-images.githubusercontent.com/3619927/28041705-c3864098-65ca-11e7-9d8c-5b8108941c18.png)
Here is a screenshot of the current implementation:

Further you can now drag and drop knobs (ctrl + Drag) to the controller, which is really cool!
I would like to move the "ADD LFO" button to the top and add a Collapse all toggle button next to it. But this would break our layout conventions. @RebeccaLaVie @Umcaruje I need help/mockups what to do now.
@BaraMGB Well done! I am really glad to see this, looks really good! About Collapse all toggle button, that is a good option, but I wouldn't say it need to be visible all time, maybe to put it in right click option. Because I don't think it will be used so frequently. That is my opinion but maybe I am wrong.
I implement the collapse all functionality by right click. A button for it is fast to implement if needed.
@BaraMGB I agree with @budislav that feature wouldn't be used too much and it can be in a right click menu. Other than that this looks absolutely phenomenal, you've done some amazing work here!
I feel like double-clicking should collapse/expand instead of rename, like window title bars. Wouldn't it be more consistent to rename with right-clicking, as is the case with track labels?
@grejppi right click I connect with a context menu. For me it was odd on the track label button, too. BTW you can rename a track by double click, too. Same on the faders in the mixer. I don't know. Collapse on double click sounds good to me, though.
This is already production ready but 2 and 4 from miketurn's ideas would make it even more convenient to use.
Thank you very much for testing this out. I had a lot (a lot) to do the last weeks. But in the new year I have time to complete this pull request. @karmux do you have tested the drag and drop feature yet?
@BaraMGB yes, drag & drop is a very nice feature.
In the effects chain peak controller has "Controls" button that does nothing.
@karmux I removed the button:

That's a regression. I just tested, and the button still works as it should in RC5 (that is to say, it opens the peak controller's controls). It might be redundant to have a separate controls window for the peak controller if they are already displayed in the controller rack, but in that case the "controls" button could open the controller rack to the selected peak controller.
On Sun, Mar 11, 2018, 13:38 Steffen Baranowsky [email protected] wrote:
@karmux https://github.com/karmux I removed the button: [image: bildschirmfoto von 2018-03-11 13-36-52] https://user-images.githubusercontent.com/6502580/37253394-67b797ae-2531-11e8-9c94-30f8780461b0.png
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/LMMS/lmms/pull/2944#issuecomment-372112275, or mute the thread https://github.com/notifications/unsubscribe-auth/AIgVmszfEdkw8YLSjqZXTdaMzo3_I2iyks5tdRqrgaJpZM4JXH9z .
@Spekular great idea!
Great
When you open previously saved project then custom ordering in controller rack is lost and controllers are ordered how they were added.
Thank you for keep testing this.
I want to finishing this in the next weeks.
In my opinion this is ready for review.
LMMS crashes when I open my projects in this branch but they open fine in master. Valgrind's log:
ASSERT failure in QVector<T>::at: "index out of range", file /usr/include/qt/QtCore/qvector.h, line 440
==32277==
==32277== Process terminating with default action of signal 6 (SIGABRT): dumping core
==32277== at 0x7008755: raise (in /usr/lib/libc-2.29.so)
==32277== by 0x6FF3850: abort (in /usr/lib/libc-2.29.so)
==32277== by 0x69498B5: QMessageLogger::fatal(char const*, ...) const (in /usr/lib/libQt5Core.so.5.13.0)
==32277== by 0x6948D3B: qt_assert_x(char const*, char const*, char const*, int) (in /usr/lib/libQt5Core.so.5.13.0)
==32277== by 0x20AFA0: ControllerRackView::onControllerAdded(Controller*) [clone .cold] (in /home/karmux/Dev/lmms/build/lmms)
==32277== by 0x22C43B: ControllerRackView::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) [clone .part.0] (in /home/karmux/Dev/lmms/build/lmms)
==32277== by 0x6B7DA10: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQt5Core.so.5.13.0)
==32277== by 0x228121: Song::controllerAdded(Controller*) (in /home/karmux/Dev/lmms/build/lmms)
==32277== by 0x2E596A: Song::addController(Controller*) (in /home/karmux/Dev/lmms/build/lmms)
==32277== by 0x2E5A52: Song::restoreControllerStates(QDomElement const&) (in /home/karmux/Dev/lmms/build/lmms)
==32277== by 0x2E91F0: Song::loadProject(QString const&) (in /home/karmux/Dev/lmms/build/lmms)
==32277== by 0x353965: MainWindow::openProject() (in /home/karmux/Dev/lmms/build/lmms)
==32277==
==32277== HEAP SUMMARY:
==32277== in use at exit: 179,667,302 bytes in 648,349 blocks
==32277== total heap usage: 4,740,881 allocs, 4,092,532 frees, 1,203,636,371 bytes allocated
==32277==
==32277== LEAK SUMMARY:
==32277== definitely lost: 8,101 bytes in 238 blocks
==32277== indirectly lost: 490 bytes in 11 blocks
==32277== possibly lost: 1,423,513 bytes in 6,213 blocks
==32277== still reachable: 178,222,990 bytes in 641,790 blocks
==32277== of which reachable via heuristic:
==32277== length64 : 1,688 bytes in 32 blocks
==32277== newarray : 12,456 bytes in 46 blocks
==32277== multipleinheritance: 628,976 bytes in 757 blocks
==32277== suppressed: 0 bytes in 0 blocks
==32277== Rerun with --leak-check=full to see details of leaked memory
==32277==
==32277== For counts of detected and suppressed errors, rerun with: -v
==32277== Use --track-origins=yes to see where uninitialised values come from
==32277== ERROR SUMMARY: 1012648 errors from 135 contexts (suppressed: 0 from 0)
Aborted (core dumped)
@karmux please try it again.
@BaraMGB works perfectly now! :+1:
@PhysSong do you have time for a look at this?