pan not working, can not pan an stereo track with openAl.

I will change to miniaudio, tag this before changes.
This commit is contained in:
snt 2024-04-19 00:21:55 +02:00
parent ba9fcfadeb
commit 78695b7976
11 changed files with 108 additions and 59 deletions

View file

@ -28,12 +28,12 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
// status->addWidget(m_receiveDMX);
status->addWidget(m_statusLabel);
status->addWidget(m_statusValue);
m_loopCheck = new QCheckBox();
m_loopCheckLabel = new QLabel;
m_loopCheckLabel->setText("Loop");
m_loopCheck = new QCheckBox();
connect(m_loopCheck, SIGNAL(stateChanged(int)), this, SLOT(loopChanged(int)));
status->addWidget(m_loopCheckLabel);
status->addWidget(m_loopCheck);
status->addWidget(m_loopCheckLabel);
layout->addLayout(status);
QHBoxLayout *folderLoaded = new QHBoxLayout;
@ -61,9 +61,14 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
m_volumeSlider->setMinimum(0);
m_volumeSlider->setMaximum(90);
m_volumeSlider->setSingleStep(1);
connect(m_volumeSlider, SIGNAL(valueChanged(int)), this, SLOT(volumeChanged(int)));
m_volumeIndicator = new QLabel;
volumeBox->addWidget(m_volumeLabel, 0, 0);
volumeBox->addWidget(m_volumeSlider, 0, 1);
volumeBox->addWidget(m_volumeIndicator, 0, 2);
connect(m_volumeSlider, SIGNAL(valueChanged(int)), this, SLOT(volumeChanged(int)));
connect(m_volumeSlider, &QSlider::valueChanged, this, [=] () {
m_volumeIndicator->setText(QString::number(m_volumeSlider->value()));
});
m_panLabel = new QLabel;
m_panLabel->setText("Pan");
m_panSlider = new QSlider(Qt::Horizontal);
@ -122,7 +127,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
this->setLayout(layout);
connect(m_watchDMX, SIGNAL(timeout()),
this, SLOT(watchDMXExpired()));
this, SLOT(refreshGUI()));
m_watchDMX->start(100);
m_music.setAttenuation(0);
@ -140,7 +145,16 @@ void AudioLayerWidget::volumeChanged(int value)
void AudioLayerWidget::panChanged(int value)
{
m_music.setPosition((value - 128) / 32.0, 0, 0);
m_music.setRelativeToListener(true);
sf::Vector3f pos = m_music.getPosition();
//m_music.setSpati(0, 0, 0);
qreal pan = (value - 128) / 64.0f;
qWarning("change pan %f", pan);
//m_music.setPosition(pan, 0.0, sqrtf(1.0 + pan*pan));
m_music.setPosition(pan, 0.0f, -1.0f);
//pos = m_music.getPosition();
qWarning("%f %f %f", pos.x, pos.y, pos.z);
qWarning("is rel %i", m_music.isRelativeToListener());
}
void AudioLayerWidget::pitchChanged(int value)
@ -158,12 +172,13 @@ void AudioLayerWidget::setVol(qreal vol)
m_music.setVolume(vol);
m_volumeSlider->blockSignals(true);
m_volumeSlider->setValue(vol);
m_volumeIndicator->setText(QString::number(vol));
m_volumeSlider->blockSignals(false);
}
void AudioLayerWidget::setPan(qreal pan)
{
m_music.setPosition(float((pan - 128) / 32.0), 0, 0);
this->panChanged(pan);
m_panSlider->blockSignals(true);
m_panSlider->setValue(pan);
m_panSlider->blockSignals(false);
@ -238,7 +253,7 @@ void AudioLayerWidget::stop()
m_music.stop();
}
void AudioLayerWidget::watchDMXExpired() {
void AudioLayerWidget::refreshGUI() {
// m_receiveDMX->setChecked(false);
int progress;
switch (m_music.getStatus()) {

View file

@ -1,8 +1,9 @@
#ifndef AUDIOLAYERWIDGET_H
#define AUDIOLAYERWIDGET_H
#include <QByteArray>
#include <cmath>
#include <QByteArray>
#include <QLabel>
#include <QPushButton>
#include <QSlider>
@ -12,8 +13,8 @@
#include <QGroupBox>
#include <QCheckBox>
#include "SFML/Audio.hpp"
#include "SFML/System.hpp"
#include <SFML/Audio.hpp>
#include <SFML/System.hpp>
#include "defines.h"
@ -93,6 +94,7 @@ private:
QLabel *m_volumeLabel;
QSlider *m_volumeSlider;
QLabel *m_volumeIndicator;
QLabel *m_panLabel;
QSlider *m_panSlider;
@ -144,7 +146,7 @@ private slots:
/**
* @brief Update the variable elements in GUI
*/
void watchDMXExpired();
void refreshGUI();
};
#endif // AUDIOLAYERWIDGET_H

View file

@ -1,6 +1,5 @@
#include "olathread.h"
#include <ola/Callback.h>
olaThread::olaThread(QObject *parent)
{
@ -62,7 +61,6 @@ void olaThread::stop()
}
}
void olaThread::NewDmx(const ola::client::DMXMetadata &data,
const ola::DmxBuffer &buffer)
{
@ -121,18 +119,12 @@ void olaThread::socketClosed()
m_client = NULL;
m_clientWrapper = NULL;
// set up ola connection
// setup ola connection
init();
// register all universes
// register universes
registerUniverse();
// start the thread????
// start thread
run();
}
////////////////////////////////////////////////////////////////////////////////////////////

View file

@ -1,18 +1,19 @@
#ifndef OLATHREAD_H
#define OLATHREAD_H
#include <string>
#include <QObject>
#include <QThread>
#include <QDebug>
#include <string>
#include <ola/DmxBuffer.h>
#include <ola/Logging.h>
#include <ola/OlaClientWrapper.h>
#include <ola/client/OlaClient.h>
#include <ola/DmxBuffer.h>
#include <ola/client/ClientTypes.h>
#include <ola/Callback.h>
#include "defines.h"
#include "dmxPersonality.h"

View file

@ -28,7 +28,6 @@ void Settings::setPathMedia(QString path)
// - The number of sources/layers controlled by DMX
// - The first DMX channel of each source/layer
// - The universe to bind in OLA
void Settings::readFromFile(QString file) {
QFile* xmlFile = new QFile(file);
if (!xmlFile->open(QIODevice::ReadOnly | QIODevice::Text)) {

View file

@ -42,7 +42,7 @@ void SettingsDialog::changeMediaPath()
QString file = fileNames.at(0);
Settings::getInstance()->setPathMedia(file);
QString desc = tr("Media Path Changed to: %1").arg(file);
qDebug(desc.toLatin1().constData());
qDebug("%s", desc.toLatin1().constData());
}
void SettingsDialog::layersChanged(int val)