Hi everyone.
I will be really happy if someone tell me how to automatically add an RGB matrixes with more than 512 channels.
I have E131 controller with separate 16 SPI outputs. Total DMX channels - 16384 (32 DMX Universes).
I've made an LED screens of 220 pixels (ws2811) - 10 rows of 22 pixels each.
When I'm trying to automatically create an RGB matrix in QLC+, It creating 7 rows of 22 pixels from Universe 1 (from DMX ch.1 to ch.462) and another 3 rows at Universe 2 (from DMX ch.1 to ch.198).
But my LED screen goes from ch.1 Universe 1 up to ch 150 Universe 2. In this case I have to create first 7 rows of 22 pixels (462 DMX ch. at Universe 1). Then add another 16 pixels starts from DMX ch.463 to fill all 512 channels of Universe 1. Then add another 6 from DMX ch.1 Universe 2 to fill my 8th row of 22 pixels. And finally add 2 other rows of 22 pixels starting from DMX ch.19 Universe 2.
Its not difficult but I have few problems in this case.
1. The QLC+ can't put next added row exactly the same way I need after I add a new row to my current matrix. And I have to manually drag each pixel in right direction.
2. I can't build visualization in the Monitor because of the different pixels amount in different rows (I built one lane from two different rows - 16+3 pixels).
I don't know, may be I do something wrong. But is there any way to add this kind of matrixes automatically?
And another thing I want to ask. Is there any possibilities to make your own custom matrix patterns?
Also I found strange thing (looks like a bug) with some patterns.
I created 3 exactly the same screens of 22x10 pixels. Add three exactly the same Animations at the Virtual Console for these screens. The animation is - Vertical Fall.
When I turning on each of the animation separately, it works good. But if I turn on all three, they are going 3 times faster. What it might be?
Large LED matrixes (more than 512 DMX ch.)
-
- Posts: 152
- Joined: Tue Apr 14, 2015 11:33 am
- Real Name: Tim Cullingworth
Hi,
I can answer some of these questions.
To create a matrix of continuous pixels I have found the best way to do this is to add the correct number pixels as generic RGB fixtures. Then select all of them and add them to a fixture group. It would be nice if it was posible to populate the matrix with indervidule pixels rather than fixtures of the same size as the rows, as well as being able to populate vertically as well as horisontaly.
Makeing your own custom patterns is posible and what you need to look at is the section on RGB scripts in the manual. The scripts are writen in Java, and once you get your head round them are quite easy to write.
I can answer some of these questions.
To create a matrix of continuous pixels I have found the best way to do this is to add the correct number pixels as generic RGB fixtures. Then select all of them and add them to a fixture group. It would be nice if it was posible to populate the matrix with indervidule pixels rather than fixtures of the same size as the rows, as well as being able to populate vertically as well as horisontaly.
Makeing your own custom patterns is posible and what you need to look at is the section on RGB scripts in the manual. The scripts are writen in Java, and once you get your head round them are quite easy to write.
- mcallegari
- Posts: 4711
- Joined: Sun Apr 12, 2015 9:09 am
- Location: Italy
- Real Name: Massimo Callegari
- Contact:
Javascript, kind of differentThe scripts are writen in Java, and once you get your head round them are quite easy to write.
@m.c.ALF: did you consider using the RGB Panel functionality ? http://www.qlcplus.org/docs/addrgbpanel.html
-
- Posts: 7
- Joined: Fri Jun 10, 2016 4:05 pm
- Real Name: Alexey Nazarov
Im using AlphaPix16 controller by Holidaycoro.comOddSocks wrote:P.s. What controler are you using?
It can work over E131 or ArtNet and has additional separate 3 DMX outs. And Im running Ableton via IAC interface to control all functions via MIDI.
Last edited by m.c.ALF on Sun Dec 11, 2016 4:30 pm, edited 1 time in total.
-
- Posts: 7
- Joined: Fri Jun 10, 2016 4:05 pm
- Real Name: Alexey Nazarov
Yes. But i think it can't divide one row to the different universesmcallegari wrote:Javascript, kind of differentThe scripts are writen in Java, and once you get your head round them are quite easy to write.
@m.c.ALF: did you consider using the RGB Panel functionality ? http://www.qlcplus.org/docs/addrgbpanel.html
-
- Posts: 152
- Joined: Tue Apr 14, 2015 11:33 am
- Real Name: Tim Cullingworth
The RGB Panel function is great but "QLC+ will create a fixture for each row of the panel." is the problem. A number of the pixel controllers will output more that 1 universe on each output, and rows don't always spilt at a universe boundary.
What would be nice is to have an option to fill the panel with single RGB pixel fixtures. I did look at the code a wile back and it didn't look to tricky but I know people are very busy.
If I were to write a wish list for the RGB Panel function I would also add an option to fill the panel vertically as well as horizontally, and possibly support for GRBW pixels as well
What would be nice is to have an option to fill the panel with single RGB pixel fixtures. I did look at the code a wile back and it didn't look to tricky but I know people are very busy.
If I were to write a wish list for the RGB Panel function I would also add an option to fill the panel vertically as well as horizontally, and possibly support for GRBW pixels as well
-
- Posts: 1325
- Joined: Mon Apr 13, 2015 7:05 am
- Location: Bratislava, Slovakia
- Real Name: Jano Svitok
- Contact:
This one is easy: add new mode to:OddSocks wrote:...possibly support for GRBW pixels
https://github.com/mcallegari/qlcplus/b ... ure.h#L425
https://github.com/mcallegari/qlcplus/b ... e.cpp#L655
https://github.com/mcallegari/qlcplus/b ... e.cpp#L696
https://github.com/mcallegari/qlcplus/b ... e.cpp#L942
https://github.com/mcallegari/qlcplus/b ... el.cpp#L43
https://github.com/mcallegari/qlcplus/b ... l.cpp#L165
and possibly some tests (and maybe some other places )
Bonus points for refactoring (separate commit) code so that the list is only in one place (fixture.h/.cpp?)
-
- Posts: 21
- Joined: Sat Jan 25, 2020 11:32 am
- Real Name: Stuart Hanlon
janosvitok wrote: ↑Mon Dec 12, 2016 11:44 amThis one is easy: add new mode to:OddSocks wrote:...possibly support for GRBW pixels
https://github.com/mcallegari/qlcplus/b ... ure.h#L425
https://github.com/mcallegari/qlcplus/b ... e.cpp#L655
https://github.com/mcallegari/qlcplus/b ... e.cpp#L696
https://github.com/mcallegari/qlcplus/b ... e.cpp#L942
https://github.com/mcallegari/qlcplus/b ... el.cpp#L43
https://github.com/mcallegari/qlcplus/b ... l.cpp#L165
and possibly some tests (and maybe some other places )
Bonus points for refactoring (separate commit) code so that the list is only in one place (fixture.h/.cpp?)
Hi
I know this is old, but may I ask if it's possible to add GRBW to the RGB Panel options?
I've been able to add GRBW LED lamps as a single fixture, but that makes adding them to groups a little time consuming.
As I'm not a developer or even pretend to know the first this about coding, I am aware that I may just be adding to someone else's work load.
That said, I have taken a look at the files shown above and can see that is looks like they "just" need the different permutations of pixel orders adding.
If it helps, I think this is a fair list :-
6 Red Green Blue permutations
- RGB
RBG
GRB
GBR
BRG
BGR
12 x Red, Green, Blue & White permutations
- RGBW
RBGW
GRBW
GBRW
BRGW
BGRW
WRGB
WRBG
WGRB
WGBR
WBRG
WBGR
Okay...
I've tried...
Does this look about right?
https://github.com/mcallegari/qlcplus/b ... l.cpp#L165
Code: Select all
Fixture::Components AddRGBPanel::components()
{
if (m_compCombo->currentIndex() == 1)
return Fixture::BGR;
else if (m_compCombo->currentIndex() == 2)
return Fixture::BRG;
else if (m_compCombo->currentIndex() == 3)
return Fixture::GBR;
else if (m_compCombo->currentIndex() == 4)
return Fixture::GRB;
else if (m_compCombo->currentIndex() == 5)
return Fixture::RBG;
else if (m_compCombo->currentIndex() == 6)
return Fixture::RGBW;
else if (m_compCombo->currentIndex() == 7)
return Fixture::GRBW;
else if (m_compCombo->currentIndex() == 8)
return Fixture::GBRW;
else if (m_compCombo->currentIndex() == 9)
return Fixture::BRGW;
else if (m_compCombo->currentIndex() == 10)
return Fixture::BGRW;
else if (m_compCombo->currentIndex() == 11)
return Fixture::WRGB;
else if (m_compCombo->currentIndex() == 12)
return Fixture::WRBG;
else if (m_compCombo->currentIndex() == 13)
return Fixture::WGRB;
else if (m_compCombo->currentIndex() == 14)
return Fixture::WGBR;
else if (m_compCombo->currentIndex() == 15)
return Fixture::WBRG;
else if (m_compCombo->currentIndex() == 16)
return Fixture::WBGR;
return Fixture::RGB;
}
https://github.com/mcallegari/qlcplus/b ... el.cpp#L43
Code: Select all
AddRGBPanel::AddRGBPanel(QWidget *parent, const Doc *doc)
: QDialog(parent)
, m_doc(doc)
{
setupUi(this);
/* Fill universe combo with available universes */
m_uniCombo->addItems(m_doc->inputOutputMap()->universeNames());
m_compCombo->addItem("RGB");
m_compCombo->addItem("BGR");
m_compCombo->addItem("BRG");
m_compCombo->addItem("GBR");
m_compCombo->addItem("GRB");
m_compCombo->addItem("RBG");
m_compCombo->addItem("RBGW");
m_compCombo->addItem("GRBW");
m_compCombo->addItem("GBRW");
m_compCombo->addItem("BRGW");
m_compCombo->addItem("BGRW");
m_compCombo->addItem("WRGB");
m_compCombo->addItem("WRBG");
m_compCombo->addItem("WGRB");
m_compCombo->addItem("WGBR");
m_compCombo->addItem("WBRG");
m_compCombo->addItem("WBGR");
checkAddressAvailability();
connect(m_uniCombo, SIGNAL(currentIndexChanged(int)),
this, SLOT(slotUniverseChanged()));
connect(m_addressSpin, SIGNAL(valueChanged(int)),
this, SLOT(slotAddressChanged()));
connect(m_columnSpin, SIGNAL(valueChanged(int)),
this, SLOT(slotSizeChanged(int)));
connect(m_rowSpin, SIGNAL(valueChanged(int)),
this, SLOT(slotSizeChanged(int)));
}
Code: Select all
/*********************************************************************
* Generic RGB panel
*********************************************************************/
public:
enum Components {
RGB = 0,
BGR,
BRG,
GBR,
GRB,
RBG,
RGBW,
RBGW,
GRBW,
GBRW,
BRGW,
BGRW,
WRGB,
WRBG,
WGRB,
WGBR,
WBRG,
WBGR
};
from https://github.com/mcallegari/qlcplus/b ... ixture.cpp
Code: Select all
/*********************************************************************
* Generic RGB panel
*********************************************************************/
QLCFixtureDef *Fixture::genericRGBPanelDef(int columns, Components components)
{
QLCFixtureDef *def = new QLCFixtureDef();
def->setManufacturer(KXMLFixtureGeneric);
def->setModel(KXMLFixtureRGBPanel);
def->setType(QLCFixtureDef::LEDBarPixels);
def->setAuthor("QLC+");
for (int i = 0; i < columns; i++)
{
QLCChannel* red = new QLCChannel();
red->setName(QString("Red %1").arg(i + 1));
red->setGroup(QLCChannel::Intensity);
red->setColour(QLCChannel::Red);
QLCChannel* green = new QLCChannel();
green->setName(QString("Green %1").arg(i + 1));
green->setGroup(QLCChannel::Intensity);
green->setColour(QLCChannel::Green);
QLCChannel* blue = new QLCChannel();
blue->setName(QString("Blue %1").arg(i + 1));
blue->setGroup(QLCChannel::Intensity);
blue->setColour(QLCChannel::Blue);
if (components == BGR)
{
def->addChannel(blue);
def->addChannel(green);
def->addChannel(red);
}
else if (components == BRG)
{
def->addChannel(blue);
def->addChannel(red);
def->addChannel(green);
}
else if (components == GBR)
{
def->addChannel(green);
def->addChannel(blue);
def->addChannel(red);
}
else if (components == GRB)
{
def->addChannel(green);
def->addChannel(red);
def->addChannel(blue);
}
else if (components == RBG)
{
def->addChannel(red);
def->addChannel(blue);
def->addChannel(green);
}
else if (components == RGBW)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(red);
def->addChannel(green);
def->addChannel(blue);
def->addChannel(white);
}
else if (components == RBGW)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(red);
def->addChannel(blue);
def->addChannel(green);
def->addChannel(white);
}
else if (components == GRBW)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(green);
def->addChannel(red);
def->addChannel(blue);
def->addChannel(white);
}
else if (components == GBRW)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(green);
def->addChannel(blue);
def->addChannel(red);
def->addChannel(white);
}
else if (components == BRGW)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(blue);
def->addChannel(red);
def->addChannel(green);
def->addChannel(white);
}
else if (components == BGRW)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(blue);
def->addChannel(green);
def->addChannel(red);
def->addChannel(white);
}
else if (components == WRGB)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(white);
def->addChannel(red);
def->addChannel(green);
def->addChannel(blue);
}
else if (components == WRBG)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(white);
def->addChannel(red);
def->addChannel(blue);
def->addChannel(green);
}
else if (components == WGRB)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(white);
def->addChannel(green);
def->addChannel(red);
def->addChannel(blue);
}
else if (components == WGBR)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(white);
def->addChannel(green);
def->addChannel(blue);
def->addChannel(red);
}
else if (components == WBRG)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(white);
def->addChannel(blue);
def->addChannel(red);
def->addChannel(green);
}
else if (components == WBGR)
{
QLCChannel* white = new QLCChannel();
white->setName(QString("White %1").arg(i + 1));
white->setGroup(QLCChannel::Intensity);
white->setColour(QLCChannel::White);
def->addChannel(white);
def->addChannel(blue);
def->addChannel(green);
def->addChannel(red);
}
else
{
def->addChannel(red);
def->addChannel(green);
def->addChannel(blue);
}
}
return def;
}
QLCFixtureMode *Fixture::genericRGBPanelMode(QLCFixtureDef *def, Components components, quint32 width, quint32 height)
{
Q_ASSERT(def != NULL);
QLCFixtureMode *mode = new QLCFixtureMode(def);
int compNum = 3;
if (components == BGR)
mode->setName("BGR");
else if (components == BRG)
mode->setName("BRG");
else if (components == GBR)
mode->setName("GBR");
else if (components == GRB)
mode->setName("GRB");
else if (components == RBG)
mode->setName("RBG");
else if (components == RGBW)
{
mode->setName("RGBW");
compNum = 4;
}
else if (components == RBGW)
{
mode->setName("RBGW");
compNum = 4;
}
else if (components == GRBW)
{
mode->setName("GRBW");
compNum = 4;
}
else if (components == GBRW)
{
mode->setName("GBRW");
compNum = 4;
}
else if (components == BRGW)
{
mode->setName("BRGW");
compNum = 4;
}
else if (components == BGRW)
{
mode->setName("BGRW");
compNum = 4;
}
else if (components == WRGB)
{
mode->setName("WRGB");
compNum = 4;
}
else if (components == WRBG)
{
mode->setName("WRBG");
compNum = 4;
}
else if (components == WGRB)
{
mode->setName("WGRB");
compNum = 4;
}
else if (components == WGBR)
{
mode->setName("WGBR");
compNum = 4;
}
else if (components == WBRG)
{
mode->setName("WBRG");
compNum = 4;
}
else if (components == WBGR)
{
mode->setName("WBGR");
compNum = 4;
}
else
mode->setName("RGB");
QList<QLCChannel *>channels = def->channels();
for (int i = 0; i < channels.count(); i++)
{
QLCChannel *ch = channels.at(i);
mode->insertChannel(ch, i);
if (i%compNum == 0)
{
QLCFixtureHead head;
head.addChannel(i);
head.addChannel(i+1);
head.addChannel(i+2);
if (components == RGBW)
head.addChannel(i+3);
if (components == RBGW)
head.addChannel(i+3);
if (components == GRBW)
head.addChannel(i+3);
if (components == GBRW)
head.addChannel(i+3);
if (components == GBRW)
head.addChannel(i+3);
if (components == BRGW)
head.addChannel(i+3);
if (components == BGRW)
head.addChannel(i+3);
if (components == WRGB)
head.addChannel(i+3);
if (components == WRBG)
head.addChannel(i+3);
if (components == WGRB)
head.addChannel(i+3);
if (components == WGBR)
head.addChannel(i+3);
if (components == WGBR)
head.addChannel(i+3);
if (components == WBRG)
head.addChannel(i+3);
if (components == WBGR)
head.addChannel(i+3);
mode->insertHead(-1, head);
}
}
QLCPhysical physical;
physical.setWidth(width);
physical.setHeight(height);
physical.setDepth(height);
mode->setPhysical(physical);
def->addMode(mode);
return mode;
}
Also, it looks like the White part is ignored by colour pickers.
Meaning, White is created by all 3 RGB, rather than just the White chip.
Last edited by MDAR on Tue May 26, 2020 3:44 pm, edited 1 time in total.
-
- Posts: 21
- Joined: Sat Jan 25, 2020 11:32 am
- Real Name: Stuart Hanlon
I think I have learnt how to run the create-deb.sh file, which seems to run really well, until it hits a problem with the fixture.cpp file.
It looks like I need to declare the new Pixel permutations somewhere.
Can anyone suggest where I should look?
(I've scanned every file for any reference to RGBW, RGB or GRB, to give clues and I thought I had found them, but it looks like I'm missing something... not for the first time in my life)
This is the error message I get on an Odroid C2, 64 bit ARM, running DietPi (which I thing is Debian Buster) with all the extra build components loaded. (as I say, I thought it was doing REALLY well....)
It looks like I need to declare the new Pixel permutations somewhere.
Can anyone suggest where I should look?
(I've scanned every file for any reference to RGBW, RGB or GRB, to give clues and I thought I had found them, but it looks like I'm missing something... not for the first time in my life)
This is the error message I get on an Odroid C2, 64 bit ARM, running DietPi (which I thing is Debian Buster) with all the extra build components loaded. (as I say, I thought it was doing REALLY well....)
Code: Select all
g++ -c -pipe -Werror -Wno-unused-local-typedefs -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG_OUTPUT -DHAS_FFTW3 -DQT_NO_DEBUG -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_SCRIPT_LIB -DQT_CORE_LIB -I. -I../audio/src -I../../plugins/interfaces -I../../hotplugmonitor/src -isystem /usr/include/aarch64-linux-gnu/qt5 -isystem /usr/include/aarch64-linux-gnu/qt5/QtMultimedia -isystem /usr/include/aarch64-linux-gnu/qt5/QtGui -isystem /usr/include/aarch64-linux-gnu/qt5/QtNetwork -isystem /usr/include/aarch64-linux-gnu/qt5/QtScript -isystem /usr/include/aarch64-linux-gnu/qt5/QtCore -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o fixture.o fixture.cpp
fixture.cpp: In member function ‘QLCFixtureDef* Fixture::genericRGBPanelDef(int, Fixture::Components)’:
fixture.cpp:751:27: error: ‘RBGW’ was not declared in this scope
else if (components == RBGW)
^~~~
fixture.cpp:764:27: error: ‘GRBW’ was not declared in this scope
else if (components == GRBW)
^~~~
fixture.cpp:776:27: error: ‘GBRW’ was not declared in this scope
else if (components == GBRW)
^~~~
fixture.cpp:788:27: error: ‘BRGW’ was not declared in this scope
else if (components == BRGW)
^~~~
fixture.cpp:800:27: error: ‘BGRW’ was not declared in this scope
else if (components == BGRW)
^~~~
fixture.cpp:812:27: error: ‘WRGB’ was not declared in this scope
else if (components == WRGB)
^~~~
fixture.cpp:825:27: error: ‘WRBG’ was not declared in this scope
else if (components == WRBG)
^~~~
fixture.cpp:839:27: error: ‘WGRB’ was not declared in this scope
else if (components == WGRB)
^~~~
fixture.cpp:852:27: error: ‘WGBR’ was not declared in this scope
else if (components == WGBR)
^~~~
fixture.cpp:865:27: error: ‘WBRG’ was not declared in this scope
else if (components == WBRG)
^~~~
fixture.cpp:877:27: error: ‘WBGR’ was not declared in this scope
else if (components == WBGR)
^~~~
fixture.cpp: In member function ‘QLCFixtureMode* Fixture::genericRGBPanelMode(QLCFixtureDef*, Fixture::Components, quint32, quint32)’:
fixture.cpp:922:26: error: ‘RBGW’ was not declared in this scope
else if (components == RBGW)
^~~~
fixture.cpp:927:26: error: ‘GRBW’ was not declared in this scope
else if (components == GRBW)
^~~~
fixture.cpp:932:26: error: ‘GBRW’ was not declared in this scope
else if (components == GBRW)
^~~~
fixture.cpp:937:26: error: ‘BRGW’ was not declared in this scope
else if (components == BRGW)
^~~~
fixture.cpp:942:26: error: ‘BGRW’ was not declared in this scope
else if (components == BGRW)
^~~~
fixture.cpp:947:26: error: ‘WRGB’ was not declared in this scope
else if (components == WRGB)
^~~~
fixture.cpp:952:26: error: ‘WRBG’ was not declared in this scope
else if (components == WRBG)
^~~~
fixture.cpp:957:26: error: ‘WGRB’ was not declared in this scope
else if (components == WGRB)
^~~~
fixture.cpp:962:26: error: ‘WGBR’ was not declared in this scope
else if (components == WGBR)
^~~~
fixture.cpp:967:26: error: ‘WBRG’ was not declared in this scope
else if (components == WBRG)
^~~~
fixture.cpp:972:26: error: ‘WBGR’ was not declared in this scope
else if (components == WBGR)
^~~~
fixture.cpp:994:22: error: ‘RBGW’ was not declared in this scope
if (components == RBGW)
^~~~
fixture.cpp:996:22: error: ‘GRBW’ was not declared in this scope
if (components == GRBW)
^~~~
fixture.cpp:998:22: error: ‘GBRW’ was not declared in this scope
if (components == GBRW)
^~~~
fixture.cpp:1000:22: error: ‘GBRW’ was not declared in this scope
if (components == GBRW)
^~~~
fixture.cpp:1002:22: error: ‘BRGW’ was not declared in this scope
if (components == BRGW)
^~~~
fixture.cpp:1004:22: error: ‘BGRW’ was not declared in this scope
if (components == BGRW)
^~~~
fixture.cpp:1006:31: error: ‘WRGB’ was not declared in this scope
if (components == WRGB)
^~~~
fixture.cpp:1008:22: error: ‘WRBG’ was not declared in this scope
if (components == WRBG)
^~~~
fixture.cpp:1010:22: error: ‘WGRB’ was not declared in this scope
if (components == WGRB)
^~~~
fixture.cpp:1012:22: error: ‘WGBR’ was not declared in this scope
if (components == WGBR)
^~~~
fixture.cpp:1014:22: error: ‘WGBR’ was not declared in this scope
if (components == WGBR)
^~~~
fixture.cpp:1016:22: error: ‘WBRG’ was not declared in this scope
if (components == WBRG)
^~~~
fixture.cpp:1018:22: error: ‘WBGR’ was not declared in this scope
if (components == WBGR)
^~~~
Makefile:1571: recipe for target 'fixture.o' failed
make[3]: *** [fixture.o] Error 1
make[3]: Leaving directory '/opt/qlcplus/qlcplus-QLC-_4.12.1/engine/src'
Makefile:87: recipe for target 'sub-src-make_first-ordered' failed
make[2]: *** [sub-src-make_first-ordered] Error 2
make[2]: Leaving directory '/opt/qlcplus/qlcplus-QLC-_4.12.1/engine'
Makefile:93: recipe for target 'sub-engine-make_first-ordered' failed
make[1]: *** [sub-engine-make_first-ordered] Error 2
make[1]: Leaving directory '/opt/qlcplus/qlcplus-QLC-_4.12.1'
dh_auto_build: make -j1 returned exit code 2
debian/rules:8: recipe for target 'build' failed
make: *** [build] Error 25
dpkg-buildpackage: error: debian/rules build gave error exit status 2
- sandinak
- Posts: 191
- Joined: Mon Apr 03, 2017 5:40 pm
- Location: Yorktown, VA
- Real Name: Branson Matheson
- Contact:
So I've done this as well .. I was gonna code it but this worked the easiest, the way I did it:
- using QLC 4.12.2
- I have 12 steps built for our touring show, each step is driven by ArtNET via Wifi on Raspi
- I am driving all the LEDs via Fadecandy which supports 8 channels of 64 LEDs
- logical config: ArtNet -> OLAd -> Fadecandy -> Strips
- each step is 8x64 WS2812 RGB LED Strips
- Each pair of strips is 128x3(RGB) = 384 DMX target setup as a single U
- Each step is then 4 U, and all 12 Steps make 48 U
- In QLC I setup each U as a matrix of 2x64 RGB .. and tie them together in a Fixture Group to form a step
- Then I also tie the rows together (not steps .. can't to groups of groups .. darnit) to form various display sizes, but all of the steps makes 32x256 pixels
- Then I can create RGB Matrix functions against the groups.
-
- Posts: 3
- Joined: Sun Feb 11, 2024 12:26 am
- Real Name:
MDAR wrote: ↑Tue May 26, 2020 3:40 pm I think I have learnt how to run the create-deb.sh file, which seems to run really well, until it hits a problem with the fixture.cpp file.
It looks like I need to declare the new Pixel permutations somewhere.
Can anyone suggest where I should look?
(I've scanned every file for any reference to RGBW, RGB or GRB, to give clues and I thought I had found them, but it looks like I'm missing something... not for the first time in my life)
This is the error message I get on an Odroid C2, 64 bit ARM, running DietPi (which I thing is Debian Buster) with all the extra build components loaded. (as I say, I thought it was doing REALLY well....)
Code: Select all
g++ -c -pipe -Werror -Wno-unused-local-typedefs -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG_OUTPUT -DHAS_FFTW3 -DQT_NO_DEBUG -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_SCRIPT_LIB -DQT_CORE_LIB -I. -I../audio/src -I../../plugins/interfaces -I../../hotplugmonitor/src -isystem /usr/include/aarch64-linux-gnu/qt5 -isystem /usr/include/aarch64-linux-gnu/qt5/QtMultimedia -isystem /usr/include/aarch64-linux-gnu/qt5/QtGui -isystem /usr/include/aarch64-linux-gnu/qt5/QtNetwork -isystem /usr/include/aarch64-linux-gnu/qt5/QtScript -isystem /usr/include/aarch64-linux-gnu/qt5/QtCore -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o fixture.o fixture.cpp fixture.cpp: In member function ‘QLCFixtureDef* Fixture::genericRGBPanelDef(int, Fixture::Components)’: fixture.cpp:751:27: error: ‘RBGW’ was not declared in this scope else if (components == RBGW) ^~~~ fixture.cpp:764:27: error: ‘GRBW’ was not declared in this scope else if (components == GRBW) ^~~~ fixture.cpp:776:27: error: ‘GBRW’ was not declared in this scope else if (components == GBRW) ^~~~ fixture.cpp:788:27: error: ‘BRGW’ was not declared in this scope else if (components == BRGW) ^~~~ fixture.cpp:800:27: error: ‘BGRW’ was not declared in this scope else if (components == BGRW) ^~~~ fixture.cpp:812:27: error: ‘WRGB’ was not declared in this scope else if (components == WRGB) ^~~~ fixture.cpp:825:27: error: ‘WRBG’ was not declared in this scope else if (components == WRBG) ^~~~ fixture.cpp:839:27: error: ‘WGRB’ was not declared in this scope else if (components == WGRB) ^~~~ fixture.cpp:852:27: error: ‘WGBR’ was not declared in this scope else if (components == WGBR) ^~~~ fixture.cpp:865:27: error: ‘WBRG’ was not declared in this scope else if (components == WBRG) ^~~~ fixture.cpp:877:27: error: ‘WBGR’ was not declared in this scope else if (components == WBGR) ^~~~ fixture.cpp: In member function ‘QLCFixtureMode* Fixture::genericRGBPanelMode(QLCFixtureDef*, Fixture::Components, quint32, quint32)’: fixture.cpp:922:26: error: ‘RBGW’ was not declared in this scope else if (components == RBGW) ^~~~ fixture.cpp:927:26: error: ‘GRBW’ was not declared in this scope else if (components == GRBW) ^~~~ fixture.cpp:932:26: error: ‘GBRW’ was not declared in this scope else if (components == GBRW) ^~~~ fixture.cpp:937:26: error: ‘BRGW’ was not declared in this scope else if (components == BRGW) ^~~~ fixture.cpp:942:26: error: ‘BGRW’ was not declared in this scope else if (components == BGRW) ^~~~ fixture.cpp:947:26: error: ‘WRGB’ was not declared in this scope else if (components == WRGB) ^~~~ fixture.cpp:952:26: error: ‘WRBG’ was not declared in this scope else if (components == WRBG) ^~~~ fixture.cpp:957:26: error: ‘WGRB’ was not declared in this scope else if (components == WGRB) ^~~~ fixture.cpp:962:26: error: ‘WGBR’ was not declared in this scope else if (components == WGBR) ^~~~ fixture.cpp:967:26: error: ‘WBRG’ was not declared in this scope else if (components == WBRG) ^~~~ fixture.cpp:972:26: error: ‘WBGR’ was not declared in this scope else if (components == WBGR) ^~~~ fixture.cpp:994:22: error: ‘RBGW’ was not declared in this scope if (components == RBGW) ^~~~ fixture.cpp:996:22: error: ‘GRBW’ was not declared in this scope if (components == GRBW) ^~~~ fixture.cpp:998:22: error: ‘GBRW’ was not declared in this scope if (components == GBRW) ^~~~ fixture.cpp:1000:22: error: ‘GBRW’ was not declared in this scope if (components == GBRW) ^~~~ fixture.cpp:1002:22: error: ‘BRGW’ was not declared in this scope if (components == BRGW) ^~~~ fixture.cpp:1004:22: error: ‘BGRW’ was not declared in this scope if (components == BGRW) ^~~~ fixture.cpp:1006:31: error: ‘WRGB’ was not declared in this scope if (components == WRGB) ^~~~ fixture.cpp:1008:22: error: ‘WRBG’ was not declared in this scope if (components == WRBG) ^~~~ fixture.cpp:1010:22: error: ‘WGRB’ was not declared in this scope if (components == WGRB) ^~~~ fixture.cpp:1012:22: error: ‘WGBR’ was not declared in this scope if (components == WGBR) ^~~~ fixture.cpp:1014:22: error: ‘WGBR’ was not declared in this scope if (components == WGBR) ^~~~ fixture.cpp:1016:22: error: ‘WBRG’ was not declared in this scope if (components == WBRG) ^~~~ fixture.cpp:1018:22: error: ‘WBGR’ was not declared in this scope if (components == WBGR) ^~~~ Makefile:1571: recipe for target 'fixture.o' failed make[3]: *** [fixture.o] Error 1 make[3]: Leaving directory '/opt/qlcplus/qlcplus-QLC-_4.12.1/engine/src' Makefile:87: recipe for target 'sub-src-make_first-ordered' failed make[2]: *** [sub-src-make_first-ordered] Error 2 make[2]: Leaving directory '/opt/qlcplus/qlcplus-QLC-_4.12.1/engine' Makefile:93: recipe for target 'sub-engine-make_first-ordered' failed make[1]: *** [sub-engine-make_first-ordered] Error 2 make[1]: Leaving directory '/opt/qlcplus/qlcplus-QLC-_4.12.1' dh_auto_build: make -j1 returned exit code 2 debian/rules:8: recipe for target 'build' failed make: *** [build] Error 25 dpkg-buildpackage: error: debian/rules build gave error exit status 2
Hi,
I want to do exactly the same thing by having a GRBW mode. Have you found a solution ?