Channel Modifier Editor not applying dimmer curve[SOLVED]

The issues found when using the Fixture Manager panel
Post Reply
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

Hello,

I searched the forum and bug tracker and couldn't find my issue anywhere.

The two 24-Channel DMX-LED-Converter boxes I had ordered from AliExpress have now arrived and I'm experimenting with some LED lights (12 V white and RGB strips and OSRAM 12V dimmable LED PAR16 Spots with GU5,3 sockets).

So far everything is working fine, except that the PAR16 doesn't play so well with the LED dimmer, flashes up when going from 0 to 1 % and changes intensity in steps rather than smoothly, when fading it slowly. I have to find out if there are better dimmers for this kind of lamp, if i can find better lamps, or have to change them for something else, because I cannot use them in theater like this (it's puppet theater, before you start to wonder).

The striplights behave better and dim pretty smoothly, only the step from 0 to 1% is too big to start a smooth fadeing curve. Thus I tried to experiment with the Channel Modifiers in Fixture manager/Channel properties configuration.
I can use that dialog, make my own custom template and save it to the list, if I quit that modifier dialog the new template name is shown in the Modifier column of that channel, but if I click OK here nothing happens and next time I open the same dialog my settings are all gone.

To make sure that it isn't on my side I just recompiled 4.10.3 (that's a version I seem to remember it had worked) against Qt4 and indeed it remembers and applies the modifier just as expected.

I've run git log on the ChannelModifierEditor.cpp file and see the last commit to this is from 2015, so that tells us nothing.
Also I can't seem to find the slot function for clicking OK in that dialog, or which data structures get updated in that case. Maybe I haven't looked hard enough, anyways you see that my Qt/C++ experience is lacking.

Please tell me how to proceed, I can try several things: compile 4.10.3 against Qt5 to see if that makes a difference, compile 4.10.4 (compiling it right now against Qt4 as I write this) and try the 4.10.5 binary package to narrow down where the bug starts to show. Both the OBS packages of 4.10.6-git-qt5 and my local qt5 build from current git fail, i also could try to build this current git against Qt4 etc. I'd have to read up on git bisect to learn about that, but I'm willing to do that too if you want me to.

Thanks, Edgar
Last edited by edogawa on Wed Oct 09, 2019 11:08 am, edited 1 time in total.
janosvitok
Posts: 1266
Joined: Mon Apr 13, 2015 7:05 am
Location: Bratislava, Slovakia
Real Name: Jano Svitok
Contact:

Edgar,

I quickly tried 4.10.5b on win10. I could not find a problem. Can you provide step by step process how to reproduce?

Jano
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

Hello Jano,

I have just found out that it affects only Qt5 builds here.

Just after writing the post above I compiled 4.10.4 from sources against Qt4 and it worked as it should.

make uninstall, make distclean and qmake-qt5 qlc.pro, then make resulted in a qt5 build and there it doesn't work anymore

As a cross check, my next step will be to reinstall qlcplus-git-qt4 distro package (OpenSUSE Tumbleweed from OBS).

EDIT: I just did that and it confirms what I thought, the Qt4 build works and the modifier curve gets applied.

Steps to reproduce:

start qlcplus
add fixture (I tried both Generic Dimmer and Generic RGB)
go to channel fade properties
expand the device entry and click the modifier button for whatever intensity channel
channel modifier editor dialog opens, change curve to another template, e.g. strong logarithmic
click OK
click OK in channel fade properties (which has a different window title from that at the icon tooltip, btw)
re-open channel fade properties dialog

In Qt4 builds, the template is still shown, in Qt5 builds the modifier button shows "..." again, no template got applied

On a similar track in Qt5 I cannot choose a recent workspace from the list that appears after a long mouse button press on the load file icon; this also works in Qt4 (but may require a separate topic in general issues)

Cheers, Edgar
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

I'm answering to myself in this old thread to hopefully draw developers' attention to it again.

I find myself in a slightly uncomfortable position: I have to deal with 30 (5* 6-channel packs) cheap Showtec dimmers that start to emit light only around 30% or a DMX value near 55.

As the post above states, the Qt5 version of QLC+ 4 doesn't apply a chosen modifier in ui/src/channelsselection.cpp, and I have difficulties debugging this. Reading the code, I see that it tries to read out the modifier button text when the modifier dialog has been left with "OK", but when accessing that from inside gdb leads to "has no member text()" error for this QPushButton. I'm not enough of a programmer to follow the code, but the Qt4 compiled variant of the same code version definitely takes over and applies the modifier to the fixture.

For now I workaround by setting DMX #55 as preheat value for all these dimmer channels in a special scene, and keeping that on while programming my cue scenes. That way I get smoother fades but still far from visually linear, so I'd really prefer to program a dedicated modifier curve. For my next project I've created a modifier preset and the needed XML snippet with the Qt4 version (temporarily installed the Leap 15.0 rpm which luckily worked), and inserted it manually to the dimmers' fixture stanza in my show file, but I'd really love to see this sorted out. I wanted to run Qt4 version in gdb too, but the home:mcallegari79 project in OBS doesn't build any qlcplus variant for Tumbleweed currently :-/ It depends on ola, which in turn needs some older protobuf version, and when I branch it to my home project which supplies that, it breaks because of some gcc8 variable initialisation error. see https://build.opensuse.org/package/live ... eed/x86_64 ...
User avatar
mcallegari
Posts: 4461
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

Cannot reproduce with the steps above.
QLC+ master sources, Qt 5.11.2, Ubuntu 18.04
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

Oh that's a pity :-(

Hmm I guess I have to try and see if it works in Ubuntu for me too... Qt5 5.11.1 here but I guess that's not the problem as that happened for me already a year ago...

Any chance someone will look at the state of Tumbleweed in your OBS project? I propose to supply the older protobuf like I do in home:edogawa, that will likely fix the builds, currently all the Tumbleweed packages are way behind because of that... I think I already offered to help there?

Sorry for sort of OT but that would help me a lot with further debugging...
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

It took me a few days to return to this, and I didn't even have to boot ubuntu to compare, I logged in to a LxQt session and both my problems are gone.

Now what in Plasma/KDE could make Qt5 misbehave like this?

I'll add a new user to see if it also happens with a pristine home dir... anyways, sorry for the noise.
hak4fun
Posts: 13
Joined: Wed May 16, 2018 8:00 am
Real Name:

I' have the same problem,
Editor is not applying the new modifier curve.
QLC+ 4.11.2 on OpenSuse.

Is there any workaround such as editing the .qxw file to apply the changes?
can some send me the correct entry in .qxw file?


thanks
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

On my RPi it works, so I was able to apply the fake preheat I wanted.

I created a modifier template called "ShowTec D-Pack6 Preheat", and for my first 6 channel dimmer pack the XML looks like this:

Code: Select all

  <Fixture>
   <Manufacturer>Generic</Manufacturer>
   <Model>Generic</Model>
   <Mode>6 Channel</Mode>
   <ID>0</ID>
   <Name>Dimmers #1</Name>
   <Universe>0</Universe>
   <Address>0</Address>
   <Channels>6</Channels>
   <Modifier Channel="0" Name="ShowTec D-Pack6 Preheat"/>
   <Modifier Channel="1" Name="ShowTec D-Pack6 Preheat"/>
   <Modifier Channel="2" Name="ShowTec D-Pack6 Preheat"/>
   <Modifier Channel="3" Name="ShowTec D-Pack6 Preheat"/>
   <Modifier Channel="4" Name="ShowTec D-Pack6 Preheat"/>
   <Modifier Channel="5" Name="ShowTec D-Pack6 Preheat"/>
  </Fixture>
I have no idea where the modifier template got stored, it persists across different workspaces but it's not in the config file (~/.config/qlcplus/Q Light Controller Plus.conf in linux), so I can't help with that.

You could try and log in to a different DE, I think IceWM or something gets installed by default in openSUSE, and it should work to edit your modifier there from within QLC.
User avatar
mcallegari
Posts: 4461
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

It's in the user folder, like every other user-defined file
See #4 - https://www.qlcplus.org/docs/html_en_EN ... swers.html
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

Thanks Massimo, I was short of time and had to stop writing there, otherwise I'm sure I would have found the user modifierstemplate folder...

BTW creating the template works from within the modifiereditor dialog, it's just not possible to apply it...
ciacnorris
Posts: 28
Joined: Sun Nov 26, 2017 3:05 pm
Real Name:

edogawa wrote: Thu Jan 26, 2017 1:34 pm Steps to reproduce:

start qlcplus
add fixture (I tried both Generic Dimmer and Generic RGB)
go to channel fade properties
expand the device entry and click the modifier button for whatever intensity channel
channel modifier editor dialog opens, change curve to another template, e.g. strong logarithmic
click OK
click OK in channel fade properties (which has a different window title from that at the icon tooltip, btw)
re-open channel fade properties dialog

In Qt4 builds, the template is still shown, in Qt5 builds the modifier button shows "..." again, no template got applied
Same problem on Manjaro Linux with KDE Plasma 5.14.5. QLC+ installed from AUR, qt5 version.

Now that I've read this, I have tried installing the qt4 version via AUR, but I'm getting this error:

Code: Select all

make[3]: ingresso nella directory "/home/user/.cache/pacaur/qlcplus/src/qlcplus-QLC-_4.12.0/engine/audio/src"
g++ -c -pipe -Wno-error=unused-variable -Werror -Wno-unused-local-typedefs -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -fPIC -Wall -W -D_REENTRANT -DQT_NO_DEBUG_OUTPUT -DHAS_FFTW3 -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I../../src -I../../../plugins/interfaces -I. -o audio.o audio.cpp
In file included from /usr/include/qt4/QtCore/qxmlstream.h:50,
                 from /usr/include/qt4/QtCore/QXmlStreamReader:1,
                 from audio.cpp:20:
/usr/include/qt4/QtCore/qvector.h: In instantiation of ‘void QVector<T>::realloc(int, int) [with T = QXmlStreamAttribute]’:
/usr/include/qt4/QtCore/qvector.h:337:3:   required from ‘void QVector<T>::detach_helper() [with T = QXmlStreamAttribute]’
/usr/include/qt4/QtCore/qvector.h:123:84:   required from ‘QVector<T>::QVector(const QVector<T>&) [with T = QXmlStreamAttribute]’
/usr/include/qt4/QtCore/qxmlstream.h:169:26:   required from here
/usr/include/qt4/QtCore/qvector.h:503:25: error: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘QVector<QXmlStreamAttribute>::Data’ {aka ‘struct QVectorTypedData<QXmlStreamAttribute>’} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Werror=class-memaccess]
                 ::memcpy(x.p, p, sizeOfTypedData() + (qMin(aalloc, d->alloc) - 1) * sizeof(T));
                 ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/qt4/QtCore/qxmlstream.h:50,
                 from /usr/include/qt4/QtCore/QXmlStreamReader:1,
                 from audio.cpp:20:
/usr/include/qt4/QtCore/qvector.h:94:8: note: ‘QVector<QXmlStreamAttribute>::Data’ {aka ‘struct QVectorTypedData<QXmlStreamAttribute>’} declared here
 struct QVectorTypedData : private QVectorData
        ^~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[3]: *** [Makefile:287: audio.o] Error 1
make[3]: uscita dalla directory "/home/user/.cache/pacaur/qlcplus/src/qlcplus-QLC-_4.12.0/engine/audio/src"
make[2]: *** [Makefile:76: sub-src-make_default-ordered] Error 2
make[2]: uscita dalla directory "/home/user/.cache/pacaur/qlcplus/src/qlcplus-QLC-_4.12.0/engine/audio"
make[1]: *** [Makefile:41: sub-audio-make_default-ordered] Error 2
make[1]: uscita dalla directory "/home/user/.cache/pacaur/qlcplus/src/qlcplus-QLC-_4.12.0/engine"
make: *** [Makefile:83: sub-engine-make_default-ordered] Error 2
==> ERRORE: Si è verificato un errore in build().
    L'operazione sta per essere interrotta...
:: Errore compilando il/i pacchetto/i qlcplus
I see other people in AUR have had the same problem: https://aur.archlinux.org/packages/qlcplus/

I'll just switch to another distro to work on this project :)
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

Regarding my original post/issue:

A while ago I logged out of KDE and into LxQt to see if the issue persisted... and it did NOT, in fact after switching back to Plasma I was able to apply modifiers, and also opening recent files via long buttonpress on the "load workspace" icon worked suddenly (a different issue I posted somewhere here about long ago, but obviously related).

But at a later point it stopped working again, and logging into LxQt did not resolve it this time...

I kept forgetting about this issue as I found ways to workaround and currently mainly program QLC on a RPi where the bug doesn't show, but now that it's confirmed to exist on other distros maybe we'll find out what goes on there...
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

As for the Qt4 build, this has been reported elsewhere in this forum already, but Qt4 builds aren't supported anymore (a good decision IMO, the world moves on)
nilsvanzuijlen
Posts: 20
Joined: Wed Jun 01, 2016 3:43 pm
Real Name:

Well, yeah, the world moves on, but they are not supported via the OBS platform either, and that qt4 restriction only applies to Arch :(
ciacnorris
Posts: 28
Joined: Sun Nov 26, 2017 3:05 pm
Real Name:

I am having the same issues as the original poster on Linux Mint 18.3 KDE. I have tested different versions of QLC+ because I absolutely need to find a workaround. Here are the results:

Default “Linux 64bit DEB” package
  • Dependencies impossible to satisfy
OBS QT5 4.11.2 for Ubuntu 16.04 64bit
  • “Randomly forget channel modifiers bug” present
  • “Can't open workspaces from recent list bug” not tested
OBS QT5 4.12.0 for Ubuntu 16.04 64bit
  • “Randomly forget channel modifiers bug” present
  • “Can't open workspaces from recent list bug” present
OBS QT4 4.12.0 for xUbuntu 14.04 64bit
  • “Randomly forget channel modifiers bug” not present
  • “Can't open workspaces from recent list bug” not present
User avatar
edogawa
Posts: 567
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

I'm a bit embarrassed and have to admit that I had found out long ago, but never reported back what had caused my original problem: I had been using qt5ct to configure the look of Qt5, and as soon as I had removed it the dialog started to work for me.

Another thread/post today brought this back to my attention, and so for completeness I want to tell this here and mark that aspect of this thread as solved.
Post Reply