kampfschlaefer / jackmix

Matrix-Mixer for the Jack-Audio-connection-Kit
http://www.arnoldarts.de/jackmix/
GNU General Public License v2.0
44 stars 13 forks source link

Qt5 #2

Closed kampfschlaefer closed 5 years ago

kampfschlaefer commented 7 years ago

Lets have a pull request for that to discuss issues.

kampfschlaefer commented 7 years ago

One general remark: I consider switching from qt4 to qt5 fairly major, so the version should switch to 0.6.0 for this.

nickbailey commented 7 years ago

I thought we we're both using the same repository now, so I just made a new branch. I've deleted my jackmix repository, in fact.

So if you like the Qt5 version you can just merge the branch? I'm not saying it's perfect but it appears to work just like the master branch did.

Best wishes,

Nick/.

Sent from my HTC

----- Reply message ----- From: "Arnold Krille" notifications@github.com To: "kampfschlaefer/jackmix" jackmix@noreply.github.com Subject: [kampfschlaefer/jackmix] Qt5 (#2) Date: Fri, Dec 9, 2016 16:28

Lets have a pull request for that to discuss issues. You can view, comment on, or merge this pull request online at:

https://github.com/kampfschlaefer/jackmix/pull/2

-- Commit Summary --

-- File Changes --

M NEWS (7) D README (16) A README.md (28) M SConstruct (12) M TODO (10) M VERSION (2) R admin/qt5muc.py (17) M backend/jack_backend.cpp (2) M jackmix/SConscript (4) M jackmix/main.cpp (2) M jackmix/mainwindow.cpp (18) M jackmix/mainwindow.h (6) M libcontrol/SConscript (2) M libcontrol/controlsender_test.cpp (4) M libelements/aux_elements.cpp (6) M libelements/stereo_elements.cpp (8) M libgui/SConscript (2) M libgui/abstractslider.cpp (2) M libgui/abstractslider.h (2) M libgui/channelselector.cpp (8) M libgui/channelselector.h (2) M libgui/channelselector_test.cpp (2) M libgui/editablechannelselector.cpp (8) M libgui/graphicalguiserver.cpp (8) M libgui/midicontrolchannelassigner.cpp (8) M libgui/midicontrolchannelassigner.h (2) M libgui/midicontrolchannelassigner_test.cpp (2) M libgui/midicontrolchannelassigner_test.h (2) M libgui/slider.cpp (4) M libgui/slider_test.cpp (4) M libmatrix/mixingmatrix.cpp (10) M libmatrix/mixingmatrix.h (8) M libmatrix/mixingmatrix_privat.h (2) M libqlash/qlash.cpp (3)

-- Patch Links --

https://github.com/kampfschlaefer/jackmix/pull/2.patch https://github.com/kampfschlaefer/jackmix/pull/2.diff

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kampfschlaefer/jackmix/pull/2

nickbailey commented 7 years ago

Agreed.

Sent from my HTC

----- Reply message ----- From: "Arnold Krille" notifications@github.com To: "kampfschlaefer/jackmix" jackmix@noreply.github.com Subject: [kampfschlaefer/jackmix] Qt5 (#2) Date: Fri, Dec 9, 2016 16:29

One general remark: I consider switching from qt4 to qt5 fairly major, so the version should switch to 0.6.0 for this.

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kampfschlaefer/jackmix/pull/2#issuecomment-266057076

kampfschlaefer commented 7 years ago

@nickbailey of course we are using the same repo now. but still pull requests are a good way of documenting branches and the discussions and reviews on them;-)

Our whole company works on the same repo, still we use merge requests for everything.

nickbailey commented 7 years ago

OK, I'll do one next time I'm at a computer.

Sent from my HTC

----- Reply message ----- From: "Arnold Krille" notifications@github.com To: "kampfschlaefer/jackmix" jackmix@noreply.github.com Cc: "nickbailey" nick@n-ism.org, "Mention" mention@noreply.github.com Subject: [kampfschlaefer/jackmix] Qt5 (#2) Date: Fri, Dec 9, 2016 20:32

@nickbailey of course we are using the same repo now. but still pull requests are a good way of documenting branches and the discussions and reviews on them;-)

Our whole company works on the same repo, still we use merge requests for everything.

-- You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub: https://github.com/kampfschlaefer/jackmix/pull/2#issuecomment-266115827

nickbailey commented 7 years ago

That conflict was just me not properly understading markdown properly. I've resolved it now.

Here's what I think I've done:

  1. Following @kampfschlaefer's suggestion, I tried changing from Qt4 to Qt5 by simply changing all the 4s to 5s in the build file and seeing what happened. Essentially, that was all that I had to do apart from cope with Qt5s different header files was to
    • deal with ByteArray's toAscii() method to toLatin1(), and
    • change QInputDialogue's getInteger() method to getInt()
  2. In libqlash/qlash.cpp, it turns out to be necessary to include QDataStream. This must be quite a new thing because it definitely compiled OK when I orginally committed the branch about a year ago;
  3. Jack has deprecated jack_port_set_name(port, new_name) with the intention that all clients should use jack_port_rename(client, port, new_name) instead. This is in backend/jack_backend.cpp. Their intent is to ensure that all jack clients listening to state change information be notified, and that this doesn't necessarily happen with jack_port_set_name() (or at least that's my understanding). ::jack_client_t *client is a private member of the JackBackend, so I just used that. Maybe I should check it's non-null? I think that would have resulted in an exit well before this point in the execution though.

I believe things are working in Qt5 after this, but I've not checked it really, really thoroughly. I did also get it to crash once when adding and deleting inputs and outputs, but I can't reproduce that.

In a different universe where I had time to work on this, there are one or two improvements on my wish-list. Note this is a wish list. Not a demand list. Unfortuantely, I am very bad at building Qt widgets. You might say I would benefit from the practice :wink:

  1. Rapid centre for stereo pan controls would be nice.
  2. I'd like to make the grouping of the controls more intuitive. Right now there's a whole right-click->select thing is very clunky, and I keep forgetting the Shift-click shortcut. Drag-selecting a rectangle of controls would be better.
  3. Adding and deleting inputs and outputs is OK, but it would be nice to be able to drag-and-drop new channels, for example (again more intuitive).
  4. Rename inputs and outputs: one should be able to double click the name (like renaming a file in some file managers). Or the right-click context menu should have rename in it. Apropos of which...
  5. The context menu shows Select and Replace for ins and outs just like the matrix controls, but these do nothing. Should be rename instead? (see above).
  6. When right-clicking, you have to be careful where you do it or you get the "enter setting" dialogue to adjust the potentiometer value. It might be good to have a very small visual area (menu button?) at the top of each control to be sure when a menu will appear or when the level-set dialogue will appear.
  7. If we're adding extra clutter on each control, but might be good to have mute and even centre-pan buttons too? It is also important to keep the interface clean and simple though.
nickbailey commented 6 years ago

Qt5 branch now compiles with C++11 (the default these days). throw(exceptions_list) is deprecated apparently.

I've got a session tomorrow when we'll be using JackMix. I have just done the patch for it (quite simple; two ins and two outs). But I did notice there's not currently a way to split 1->2 and 2->2 channel pots if you change your mind so you can go back to the original matrix of 1->1 channel ones. I might look in to doing that. Session first, though :)

The other thing is there's no obvious way of seeing if there's any signal on the inputs and outputs. A big VU/Peak type display would be too much. I might play with the idea of changing the colour of the control knobs green at -40dB, then to orange at -18dB and red at -6dB for example. I've not looked in to that at all yet. It would just be a bit of a help if you didn't know whether the jack was routing signal in and out properly.

nickbailey commented 5 years ago

I reckon with the de-zipping and the fact that @dsheeler has done some testing, I should merge the qt5 branch to master and bump the minor version number.

Is there any reason not to do that, @kampfschlaefer ? qt4 is pretty much dead now, I think.

kampfschlaefer commented 5 years ago

@nickbailey I did the version bump to 0.6.0. And some minor things, only compile tested.

If this still works for you, please merge to master and tag that merge-commit as 0.6.0. Then we can decide on which channels to announce this release… and if at all…