process double channels only once in each frame

This commit is contained in:
snt 2024-04-24 17:41:40 +02:00
parent 63f25e8209
commit 32a1e5cb0c
11 changed files with 70 additions and 46 deletions

View file

@ -48,12 +48,12 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
connect(set, SIGNAL(registerUniverse(int)), ola, SLOT(registerUniverse(int)));
connect(ola, SIGNAL (universeReceived(int)), m_dmxWidget, SLOT(updateWatchDMX(int)));
connect(ola, SIGNAL(dmxOutput(int, int, int)), this, SLOT(dmxInput(int, int, int)));
connect(ui.actionLaunch_OLA_Setup, SIGNAL(triggered()), this, SLOT(olasetup()));
ola->registerUniverse();
ola->start(QThread::TimeCriticalPriority );
connect(ui.actionOpen_conf, SIGNAL(triggered()), this, SLOT(openFile()));
connect(ui.actionSave_conf, SIGNAL(triggered()), this, SLOT(saveFile()));
connect(ui.action_Settings, SIGNAL(triggered()), this, SLOT(settings()));
connect(ui.actionLaunch_OLA_Setup, SIGNAL(triggered()), this, SLOT(olasetup()));
aw->startEngine();
qDebug("Init Complete.");
ola->blockSignals(false);
@ -107,8 +107,6 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
return;
QString mediaFile = NULL;
int aux;
qreal f;
int r;
switch(channel){
case DMX_FOLDER:
aux = ola->getValue(layer, DMX_FILE);
@ -123,12 +121,8 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
aw->mediaLoaded(layer, mediaFile);
break;
case VOLUME_COARSE:
f = ( value * 0x100 ) + ola->getValue(layer, VOLUME_FINE);
aw->volChanged(layer, (f / 655.35));
break;
case VOLUME_FINE:
f = ( ola->getValue(layer, VOLUME_COARSE) * 0x100 ) + value;
aw->volChanged(layer, (f / 655.35));
aw->volChanged(layer, (value / 650.25));
break;
case PAN:
aw->panChanged(layer, value);
@ -137,12 +131,8 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
aw->pitchChanged(layer, value);
break;
case ENTRY_POINT_COARSE:
r = ( value * 0x100 ) + ola->getValue(layer, ENTRY_POINT_FINE);
aw->entryPointChanged(layer, r);
break;
case ENTRY_POINT_FINE:
r = ( ola->getValue(layer, ENTRY_POINT_COARSE) * 0x100 ) + value;
aw->entryPointChanged(layer, r);
aw->entryPointChanged(layer, value);
break;
case PLAYBACK:
if (value == 0)