cambios cosméticos. protege mejor el cambio de medios.
This commit is contained in:
parent
6a22534686
commit
029bcdc47e
8 changed files with 123 additions and 76 deletions
|
@ -13,21 +13,33 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer):
|
||||||
QVBoxLayout *layout = new QVBoxLayout;
|
QVBoxLayout *layout = new QVBoxLayout;
|
||||||
|
|
||||||
m_folderValue = new ClickableLabel;
|
m_folderValue = new ClickableLabel;
|
||||||
m_folderValue->setMaximumWidth(300);
|
|
||||||
m_folderValue->setAlignment(Qt::AlignLeft);
|
m_folderValue->setAlignment(Qt::AlignLeft);
|
||||||
|
m_folderValue->setFocusPolicy(Qt::NoFocus);
|
||||||
|
m_folderValue->setMinimumWidth(MIN_WIDTH);
|
||||||
|
m_folderValue->setMaximumWidth(MAX_WIDTH);
|
||||||
|
m_folderValue->setContentsMargins(3,1,3,1);
|
||||||
|
m_folderValue->setText("Click to open media file (mp3, wav, flac)");
|
||||||
m_folderValue->setStyleSheet(
|
m_folderValue->setStyleSheet(
|
||||||
|
"margin: 0px;"
|
||||||
"color: white;"
|
"color: white;"
|
||||||
"background-color: black;"
|
"background-color: black;"
|
||||||
|
"font-size: 12px;"
|
||||||
);
|
);
|
||||||
layout->addWidget(m_folderValue);
|
layout->addWidget(m_folderValue);
|
||||||
m_fileValue = new ClickableLabel;
|
m_fileValue = new ClickableLabel;
|
||||||
|
m_fileValue->setAlignment(Qt::AlignLeft);
|
||||||
|
m_fileValue->setFocusPolicy(Qt::NoFocus);
|
||||||
|
m_fileValue->setMinimumWidth(MIN_WIDTH);
|
||||||
|
m_fileValue->setMaximumWidth(MAX_WIDTH);
|
||||||
|
m_fileValue->setContentsMargins(3,1,3,1);
|
||||||
|
m_fileValue->setText("++ empty ++");
|
||||||
connect(m_fileValue, SIGNAL(clicked()), this, SLOT(openMediaDialog()));
|
connect(m_fileValue, SIGNAL(clicked()), this, SLOT(openMediaDialog()));
|
||||||
connect(m_folderValue, SIGNAL(clicked()), this, SLOT(openMediaDialog()));
|
connect(m_folderValue, SIGNAL(clicked()), this, SLOT(openMediaDialog()));
|
||||||
m_fileValue->setMaximumWidth(300);
|
|
||||||
m_fileValue->setAlignment(Qt::AlignLeft);
|
|
||||||
m_fileValue->setStyleSheet(
|
m_fileValue->setStyleSheet(
|
||||||
|
"margin: 0px;"
|
||||||
"color: white;"
|
"color: white;"
|
||||||
"background-color: black;"
|
"background-color: black;"
|
||||||
|
"font-size: 14px;"
|
||||||
);
|
);
|
||||||
layout->addWidget(m_fileValue);
|
layout->addWidget(m_fileValue);
|
||||||
|
|
||||||
|
@ -38,9 +50,20 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer):
|
||||||
|
|
||||||
m_progress = new QProgressBar(this);
|
m_progress = new QProgressBar(this);
|
||||||
m_progress->setOrientation(Qt::Horizontal);
|
m_progress->setOrientation(Qt::Horizontal);
|
||||||
|
m_progress->setFocusPolicy(Qt::NoFocus);
|
||||||
|
m_progress->setAlignment(Qt::AlignHCenter);
|
||||||
|
m_progress->setContentsMargins(0, 1, 0, 1);
|
||||||
|
m_progress->setMinimumWidth(MIN_WIDTH);
|
||||||
|
m_progress->setMaximumWidth(MAX_WIDTH);
|
||||||
|
m_progress->setMaximumHeight(15);
|
||||||
m_progress->setRange(0, 0);
|
m_progress->setRange(0, 0);
|
||||||
m_progress->setValue(0);
|
m_progress->setValue(0);
|
||||||
m_progress->setFormat("%v / %m");
|
m_progress->setFormat("%v / %m");
|
||||||
|
m_progress->setStyleSheet(
|
||||||
|
"margin: 0px;"
|
||||||
|
"font-size: 13px;"
|
||||||
|
"background-color: black;"
|
||||||
|
);
|
||||||
layout->addWidget(m_progress);
|
layout->addWidget(m_progress);
|
||||||
|
|
||||||
m_progressTime = new QTimeEdit;
|
m_progressTime = new QTimeEdit;
|
||||||
|
@ -49,26 +72,30 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer):
|
||||||
m_progressTime->setDisplayFormat("mm:ss:zzz");
|
m_progressTime->setDisplayFormat("mm:ss:zzz");
|
||||||
m_progressTime->setReadOnly(true);
|
m_progressTime->setReadOnly(true);
|
||||||
m_progressTime->setButtonSymbols(QAbstractSpinBox::NoButtons);
|
m_progressTime->setButtonSymbols(QAbstractSpinBox::NoButtons);
|
||||||
m_progressTime->setMinimumWidth(80);
|
|
||||||
m_progressTime->setFocusPolicy(Qt::NoFocus);
|
m_progressTime->setFocusPolicy(Qt::NoFocus);
|
||||||
m_progressTime->setAlignment(Qt::AlignHCenter);
|
m_progressTime->setAlignment(Qt::AlignHCenter);
|
||||||
m_progressTime->setContentsMargins(0,0,0,0);
|
m_progressTime->setContentsMargins(0,0,0,0);
|
||||||
|
m_progressTime->setMinimumWidth(MIN_WIDTH);
|
||||||
|
m_progressTime->setMaximumWidth(MAX_WIDTH);
|
||||||
m_totalTimeValue = new QTimeEdit;
|
m_totalTimeValue = new QTimeEdit;
|
||||||
m_totalTimeValue->setObjectName("Track Length");
|
m_totalTimeValue->setObjectName("Track Length");
|
||||||
m_totalTimeValue->setToolTip("Track Length");
|
m_totalTimeValue->setToolTip("Track Length");
|
||||||
m_totalTimeValue->setDisplayFormat("mm:ss:zzz");
|
m_totalTimeValue->setDisplayFormat("mm:ss:zzz");
|
||||||
m_totalTimeValue->setReadOnly(true);
|
m_totalTimeValue->setReadOnly(true);
|
||||||
m_totalTimeValue->setButtonSymbols(QAbstractSpinBox::NoButtons);
|
m_totalTimeValue->setButtonSymbols(QAbstractSpinBox::NoButtons);
|
||||||
m_totalTimeValue->setMinimumWidth(80);
|
|
||||||
m_totalTimeValue->setFocusPolicy(Qt::NoFocus);
|
m_totalTimeValue->setFocusPolicy(Qt::NoFocus);
|
||||||
m_totalTimeValue->setAlignment(Qt::AlignHCenter);
|
m_totalTimeValue->setAlignment(Qt::AlignHCenter);
|
||||||
m_totalTimeValue->setContentsMargins(0,0,0,0);
|
m_totalTimeValue->setContentsMargins(0,0,0,0);
|
||||||
|
m_totalTimeValue->setMinimumWidth(MIN_WIDTH);
|
||||||
|
m_totalTimeValue->setMaximumWidth(MAX_WIDTH);
|
||||||
QHBoxLayout *status = new QHBoxLayout;
|
QHBoxLayout *status = new QHBoxLayout;
|
||||||
status->addWidget(m_progressTime);
|
status->addWidget(m_progressTime);
|
||||||
status->addWidget(m_totalTimeValue);
|
status->addWidget(m_totalTimeValue);
|
||||||
layout->addLayout(status);
|
layout->addLayout(status);
|
||||||
|
|
||||||
m_filterBank = new FilterBankWidget(this);
|
m_filterBank = new FilterBankWidget(this);
|
||||||
|
m_filterBank->setMaximumWidth(MAX_WIDTH);
|
||||||
|
m_filterBank->setMinimumWidth(MIN_WIDTH);
|
||||||
connect(m_filterBank, SIGNAL(setBypass(bool)), this, SLOT(setBypass(bool)));
|
connect(m_filterBank, SIGNAL(setBypass(bool)), this, SLOT(setBypass(bool)));
|
||||||
layout->addWidget(m_filterBank);
|
layout->addWidget(m_filterBank);
|
||||||
m_pitch = new SliderGroup("Pitch", 0 , 255, 0, NULL);
|
m_pitch = new SliderGroup("Pitch", 0 , 255, 0, NULL);
|
||||||
|
@ -95,40 +122,45 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer):
|
||||||
m_level = new QLabel("-inf");
|
m_level = new QLabel("-inf");
|
||||||
m_level->setStyleSheet("border: 1px solid #CFB0C9;"
|
m_level->setStyleSheet("border: 1px solid #CFB0C9;"
|
||||||
"margin: 0px;"
|
"margin: 0px;"
|
||||||
"margin-right: 5px;"
|
|
||||||
"margin-left: 5px;"
|
|
||||||
"background-color: black;"
|
"background-color: black;"
|
||||||
"color: white;"
|
"color: white;"
|
||||||
"width:80px;"
|
|
||||||
"text-align: center;"
|
"text-align: center;"
|
||||||
);
|
"font-size: 15px;");
|
||||||
m_level->setMinimumWidth(80);
|
m_level->setMinimumWidth(MIN_WIDTH / 2);
|
||||||
m_level->setMaximumWidth(80);
|
m_level->setMaximumWidth(MAX_WIDTH / 3);
|
||||||
m_level->setMinimumHeight(20);
|
m_level->setMinimumHeight(25);
|
||||||
m_level->setAlignment(Qt::AlignHCenter);
|
m_level->setAlignment(Qt::AlignHCenter);
|
||||||
|
m_level->setContentsMargins(0, 4, 0, 4);
|
||||||
labelsBox->addWidget(m_level);
|
labelsBox->addWidget(m_level);
|
||||||
m_bus1Label = new QLabel("dummy");
|
m_bus1Label = new QLabel("dummy");
|
||||||
m_bus1Label->setMinimumWidth(80);
|
m_bus1Label->setAlignment(Qt::AlignHCenter);
|
||||||
|
m_bus1Label->setContentsMargins(0, 6, 0, 6);
|
||||||
|
m_bus1Label->setMinimumHeight(25);
|
||||||
|
m_bus1Label->setMinimumWidth(MIN_WIDTH / 4);
|
||||||
|
m_bus1Label->setMaximumWidth(MAX_WIDTH / 3);
|
||||||
m_bus1Label->setStyleSheet("border: 1px solid #CFB0C9;"
|
m_bus1Label->setStyleSheet("border: 1px solid #CFB0C9;"
|
||||||
"margin: 0px;"
|
"margin: 0px;"
|
||||||
"background-color: black;"
|
"background-color: black;"
|
||||||
"color: white;"
|
"color: white;"
|
||||||
"font-size: 11px;");
|
"font-size: 10px;");
|
||||||
labelsBox->addWidget(m_bus1Label);
|
labelsBox->addWidget(m_bus1Label);
|
||||||
m_bus2Label = new QLabel("dummy");
|
m_bus2Label = new QLabel("dummy");
|
||||||
m_bus2Label->setMinimumWidth(80);
|
m_bus2Label->setAlignment(Qt::AlignHCenter);
|
||||||
|
m_bus2Label->setMinimumWidth(MIN_WIDTH / 4);
|
||||||
|
m_bus2Label->setMaximumWidth(MAX_WIDTH / 3);
|
||||||
|
m_bus2Label->setContentsMargins(0, 6, 0, 6);
|
||||||
|
m_bus2Label->setMinimumHeight(25);
|
||||||
m_bus2Label->setStyleSheet("border: 1px solid #CFB0C9;"
|
m_bus2Label->setStyleSheet("border: 1px solid #CFB0C9;"
|
||||||
"margin: 0px;"
|
"margin: 0px;"
|
||||||
"background-color: black;"
|
"background-color: black;"
|
||||||
"color: white;"
|
"color: white;"
|
||||||
"font-size: 11px;");
|
"font-size: 10px;");
|
||||||
labelsBox->addWidget(m_bus2Label);
|
labelsBox->addWidget(m_bus2Label);
|
||||||
labelsBox->setSpacing(0);
|
labelsBox->setSpacing(0);
|
||||||
labelsBox->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
layout->addLayout(labelsBox);
|
layout->addLayout(labelsBox);
|
||||||
layout->setAlignment(Qt::AlignHCenter);
|
layout->setAlignment(Qt::AlignHCenter);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
layout->setContentsMargins(1, 1, 1, 1);
|
|
||||||
this->setLayout(layout);
|
this->setLayout(layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,8 +262,12 @@ void AudioLayerWidget::setMediaFile(QString file)
|
||||||
QStringList list = file.split("/");
|
QStringList list = file.split("/");
|
||||||
int size = list.size();
|
int size = list.size();
|
||||||
if (size >= 2) {
|
if (size >= 2) {
|
||||||
m_folderValue->setText(list.at(size - 2));
|
QString tmp = list.at(size - 2);
|
||||||
m_fileValue->setText(list.at(size - 1));
|
tmp.truncate(60);
|
||||||
|
m_folderValue->setText(tmp);
|
||||||
|
tmp = list.at(size - 1);
|
||||||
|
tmp.truncate(40);
|
||||||
|
m_fileValue->setText(tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,8 +324,9 @@ void AudioLayerWidget::setFilterParam(int channel, int value)
|
||||||
void AudioLayerWidget::setLevel(float db)
|
void AudioLayerWidget::setLevel(float db)
|
||||||
{
|
{
|
||||||
m_level->blockSignals(true);
|
m_level->blockSignals(true);
|
||||||
if (db > -150)
|
if (db > -140)
|
||||||
m_level->setText(QString::number(db));
|
|
||||||
|
m_level->setText(QString::number(db, 'f', 2));
|
||||||
else
|
else
|
||||||
m_level->setText("-inf");
|
m_level->setText("-inf");
|
||||||
m_level->blockSignals(false);
|
m_level->blockSignals(false);
|
||||||
|
@ -297,6 +334,8 @@ void AudioLayerWidget::setLevel(float db)
|
||||||
|
|
||||||
void AudioLayerWidget::setBusName(uint bus, char *name)
|
void AudioLayerWidget::setBusName(uint bus, char *name)
|
||||||
{
|
{
|
||||||
|
if (name && strlen(name) > 17)
|
||||||
|
name[16] = '\0';
|
||||||
if (bus == 0) {
|
if (bus == 0) {
|
||||||
m_bus1Label->blockSignals(true);
|
m_bus1Label->blockSignals(true);
|
||||||
m_bus1Label->setText(name);
|
m_bus1Label->setText(name);
|
||||||
|
|
|
@ -23,8 +23,9 @@ AudioWidget::AudioWidget(QWidget *parent) :
|
||||||
for (int j = 0; j < FILTER_CHANNELS; j++)
|
for (int j = 0; j < FILTER_CHANNELS; j++)
|
||||||
m_filtersUpdate[i][j] = -1;
|
m_filtersUpdate[i][j] = -1;
|
||||||
}
|
}
|
||||||
m_layout->setSpacing(2);
|
m_layout->setSpacing(0);
|
||||||
m_layout->setContentsMargins(2, 2, 2, 2);
|
m_layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
this->setStyleSheet("margin: 2px;");
|
||||||
setLayout(m_layout);
|
setLayout(m_layout);
|
||||||
m_refreshUi = new QTimer(this);
|
m_refreshUi = new QTimer(this);
|
||||||
connect(m_refreshUi, SIGNAL(timeout()), this, SLOT(refreshUi()));
|
connect(m_refreshUi, SIGNAL(timeout()), this, SLOT(refreshUi()));
|
||||||
|
|
|
@ -11,11 +11,7 @@ ClickableDoubleSpinBox::ClickableDoubleSpinBox(QWidget *parent)
|
||||||
setDecimals(1);
|
setDecimals(1);
|
||||||
setAlignment(Qt::AlignHCenter);
|
setAlignment(Qt::AlignHCenter);
|
||||||
setContentsMargins(0, 0, 0, 0);
|
setContentsMargins(0, 0, 0, 0);
|
||||||
setMaximumWidth(50);
|
setMaximumWidth(66);
|
||||||
this->setStyleSheet("border: 0px solid #5a4855;"
|
setMinimumWidth(25);
|
||||||
"width: 50px;"
|
|
||||||
"margin: 0px;"
|
|
||||||
"background-color: #383034;"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,10 @@
|
||||||
#define CHANNELS 2
|
#define CHANNELS 2
|
||||||
#define SAMPLE_RATE 48000
|
#define SAMPLE_RATE 48000
|
||||||
#define UI_REFRESH_TIME 123
|
#define UI_REFRESH_TIME 123
|
||||||
#define FADE_TIME 20
|
#define FADE_TIME 25
|
||||||
#define FILTER_CHANNELS 16 // number of dmx channels dedicated to filters by layer
|
#define FILTER_CHANNELS 16 // number of dmx channels dedicated to filters by layer
|
||||||
|
#define MAX_WIDTH 500
|
||||||
|
#define MIN_WIDTH 50
|
||||||
|
|
||||||
struct dmxSetting {
|
struct dmxSetting {
|
||||||
int address;
|
int address;
|
||||||
|
|
|
@ -2,20 +2,22 @@
|
||||||
|
|
||||||
#include <QBoxLayout>
|
#include <QBoxLayout>
|
||||||
#include "dmxPersonality.h"
|
#include "dmxPersonality.h"
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
#define BORDER "#CFB0C9;"
|
||||||
|
#define BACK "#281024;"
|
||||||
|
|
||||||
FilterBankWidget::FilterBankWidget(QWidget *parent)
|
FilterBankWidget::FilterBankWidget(QWidget *parent)
|
||||||
: QWidget{parent}
|
: QWidget{parent}
|
||||||
{
|
{
|
||||||
QHBoxLayout *layout = new QHBoxLayout;
|
QHBoxLayout *layout = new QHBoxLayout;
|
||||||
layout->setAlignment(Qt::AlignHCenter);
|
layout->setAlignment(Qt::AlignHCenter);
|
||||||
layout->setContentsMargins(0, 2, 0, 2);
|
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
this->setStyleSheet("border: 2px solid #5a4855;"
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
this->setStyleSheet("border: 1px solid #CFB0C9;"
|
||||||
"margin: 0px;"
|
"margin: 0px;"
|
||||||
"margin-top: 3px;"
|
"background-color: #080402;"
|
||||||
"margin-bottom: 3px;"
|
"font-size: 13px;");
|
||||||
"background-color: #383034;"
|
|
||||||
);
|
|
||||||
for (int i = 0; i < 13; i++) {
|
for (int i = 0; i < 13; i++) {
|
||||||
fb[i] = new ClickableDoubleSpinBox;
|
fb[i] = new ClickableDoubleSpinBox;
|
||||||
const char *name = dmxChannelToString(i + 9);
|
const char *name = dmxChannelToString(i + 9);
|
||||||
|
@ -27,10 +29,11 @@ FilterBankWidget::FilterBankWidget(QWidget *parent)
|
||||||
m_bypass = new QCheckBox;
|
m_bypass = new QCheckBox;
|
||||||
master->addWidget(m_bypass);
|
master->addWidget(m_bypass);
|
||||||
m_bypass->setText("Bypass");
|
m_bypass->setText("Bypass");
|
||||||
m_bypass->setStyleSheet("QCheckBox { border: 2px solid #2a0825;"
|
m_bypass->setMinimumWidth(MIN_WIDTH / 4);
|
||||||
|
m_bypass->setStyleSheet("QCheckBox { border: 1px solid #CFB0C9;"
|
||||||
"margin: 0px;"
|
"margin: 0px;"
|
||||||
"background-color: #885074;"
|
"background-color: #c82840;"
|
||||||
"font-size: 7px;}");
|
"font-size: 8px;}");
|
||||||
connect(m_bypass, SIGNAL(stateChanged(int)), this, SLOT(bypassChanged(int)));
|
connect(m_bypass, SIGNAL(stateChanged(int)), this, SLOT(bypassChanged(int)));
|
||||||
master->addWidget(fb[0]);
|
master->addWidget(fb[0]);
|
||||||
layout->addLayout(master);
|
layout->addLayout(master);
|
||||||
|
|
|
@ -35,10 +35,11 @@ libreMediaServerAudioUi::libreMediaServerAudioUi(QWidget *parent)
|
||||||
topWidget->setContentsMargins(0, 0, 0, 0);
|
topWidget->setContentsMargins(0, 0, 0, 0);
|
||||||
addDockWidget(Qt::TopDockWidgetArea, topWidget);
|
addDockWidget(Qt::TopDockWidgetArea, topWidget);
|
||||||
connect(ui.actionLaunch_OLA_Setup, SIGNAL(triggered()), this, SLOT(olasetup()));
|
connect(ui.actionLaunch_OLA_Setup, SIGNAL(triggered()), this, SLOT(olasetup()));
|
||||||
this->setContentsMargins(3, 3, 3, 3);
|
this->setContentsMargins(0, 0, 0, 0);
|
||||||
this->setStyleSheet(
|
this->setStyleSheet(
|
||||||
|
"margin: 0px;"
|
||||||
"color: white;"
|
"color: white;"
|
||||||
"background-color: #4f4048;"
|
"background-color: #3f3038;"
|
||||||
"selection-color: blue;"
|
"selection-color: blue;"
|
||||||
"selection-background-color: green"
|
"selection-background-color: green"
|
||||||
);
|
);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>500</width>
|
<width>400</width>
|
||||||
<height>400</height>
|
<height>400</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>500</width>
|
<width>400</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "miniaudioengine.h"
|
#include "miniaudioengine.h"
|
||||||
#include "dmxPersonality.h"
|
#include "dmxPersonality.h"
|
||||||
|
|
||||||
#define BIAS 0.99f
|
#define BIAS 1.0f
|
||||||
#define FILTER_ORDER 3
|
#define FILTER_ORDER 3
|
||||||
|
|
||||||
MiniAudioEngine::MiniAudioEngine() {}
|
MiniAudioEngine::MiniAudioEngine() {}
|
||||||
|
@ -52,12 +52,13 @@ bool MiniAudioEngine::startEngine(uint layers, uint* audioDevicesId, uint audioD
|
||||||
m_mae.audioDevicesId = audioDevicesId;
|
m_mae.audioDevicesId = audioDevicesId;
|
||||||
m_mae.audioDevicesQty = audioDevicesQty;
|
m_mae.audioDevicesQty = audioDevicesQty;
|
||||||
for (uint i =0; i < m_mae.layersQty; i++) {
|
for (uint i =0; i < m_mae.layersQty; i++) {
|
||||||
m_mae.mediaLoaded[i] = false;
|
m_mae.mediaLoaded[i] = MA_FALSE;
|
||||||
m_mae.currentStatus[i].status = Status::Iddle;
|
m_mae.currentStatus[i].status = Status::Iddle;
|
||||||
m_mae.currentStatus[i].pan = 128;
|
m_mae.currentStatus[i].pan = 128;
|
||||||
m_mae.currentStatus[i].pitch = 128;
|
m_mae.currentStatus[i].pitch = 128;
|
||||||
m_mae.currentStatus[i].vol = 0;
|
m_mae.currentStatus[i].vol = 0.0f;
|
||||||
m_mae.currentStatus[i].cursor = 0;
|
m_mae.currentStatus[i].cursor = 0;
|
||||||
|
m_mae.currentStatus[i].updated = false;
|
||||||
}
|
}
|
||||||
result = this->startContext();
|
result = this->startContext();
|
||||||
if (result != MA_SUCCESS) return false;
|
if (result != MA_SUCCESS) return false;
|
||||||
|
@ -278,7 +279,7 @@ ma_result MiniAudioEngine::startDevices()
|
||||||
deviceConfig.dataCallback = audioDataCallback;
|
deviceConfig.dataCallback = audioDataCallback;
|
||||||
engineConfig = ma_engine_config_init();
|
engineConfig = ma_engine_config_init();
|
||||||
engineConfig.pResourceManager = &m_mae.resourceManager;
|
engineConfig.pResourceManager = &m_mae.resourceManager;
|
||||||
//engineConfig.defaultVolumeSmoothTimeInPCMFrames = SAMPLE_RATE / 20;
|
engineConfig.defaultVolumeSmoothTimeInPCMFrames = SAMPLE_RATE / 500;
|
||||||
engineConfig.noAutoStart = MA_TRUE;
|
engineConfig.noAutoStart = MA_TRUE;
|
||||||
|
|
||||||
for (uint internalId = 0; internalId < m_mae.audioDevicesQty; internalId++) {
|
for (uint internalId = 0; internalId < m_mae.audioDevicesQty; internalId++) {
|
||||||
|
@ -350,12 +351,12 @@ ma_result MiniAudioEngine::loadMedia(int layer, char *file)
|
||||||
{
|
{
|
||||||
ma_result result;
|
ma_result result;
|
||||||
|
|
||||||
if (m_mae.mediaLoaded[layer] == true)
|
if (m_mae.mediaLoaded[layer] == MA_TRUE)
|
||||||
{
|
{
|
||||||
|
m_mae.mediaLoaded[layer] = MA_FALSE;
|
||||||
ma_sound_set_volume(&m_mae.sounds[layer], 0.0f);
|
ma_sound_set_volume(&m_mae.sounds[layer], 0.0f);
|
||||||
ma_sound_stop(&m_mae.sounds[layer]);
|
ma_sound_stop(&m_mae.sounds[layer]);
|
||||||
ma_sound_uninit(&m_mae.sounds[layer]);
|
ma_sound_uninit(&m_mae.sounds[layer]);
|
||||||
m_mae.mediaLoaded[layer] = false;
|
|
||||||
}
|
}
|
||||||
ma_sound_config soundConfig = ma_sound_config_init();
|
ma_sound_config soundConfig = ma_sound_config_init();
|
||||||
soundConfig = ma_sound_config_init();
|
soundConfig = ma_sound_config_init();
|
||||||
|
@ -370,9 +371,10 @@ ma_result MiniAudioEngine::loadMedia(int layer, char *file)
|
||||||
cout << "Error" << result << ": Failed to load file " << file << endl;
|
cout << "Error" << result << ": Failed to load file " << file << endl;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
m_mae.mediaLoaded[layer] = true;
|
|
||||||
this->refreshValues(layer);
|
|
||||||
m_mae.currentStatus[layer].media = file;
|
m_mae.currentStatus[layer].media = file;
|
||||||
|
m_mae.currentStatus[layer].updated = true;
|
||||||
|
m_mae.mediaLoaded[layer] = MA_TRUE;
|
||||||
|
this->refreshValues(layer);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,7 +433,8 @@ ma_result MiniAudioEngine::printFormatInfo(int layer)
|
||||||
// Expects between 0 and 65535 vol value
|
// Expects between 0 and 65535 vol value
|
||||||
void MiniAudioEngine::volChanged(int layer, int vol)
|
void MiniAudioEngine::volChanged(int layer, int vol)
|
||||||
{
|
{
|
||||||
if (m_mae.mediaLoaded[layer] == false)
|
m_mae.currentStatus[layer].vol = vol;
|
||||||
|
if (m_mae.mediaLoaded[layer] == MA_FALSE && m_mae.currentStatus[layer].updated)
|
||||||
return;
|
return;
|
||||||
float db = ((float)vol / 771.0f) - 85.0f;
|
float db = ((float)vol / 771.0f) - 85.0f;
|
||||||
if (db <= -85.0f) {
|
if (db <= -85.0f) {
|
||||||
|
@ -439,70 +442,72 @@ void MiniAudioEngine::volChanged(int layer, int vol)
|
||||||
} else
|
} else
|
||||||
db = ma_volume_db_to_linear(db);
|
db = ma_volume_db_to_linear(db);
|
||||||
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], -1, db, FADE_TIME);
|
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], -1, db, FADE_TIME);
|
||||||
m_mae.currentStatus[layer].vol = vol;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MiniAudioEngine::panChanged(int layer, float value)
|
void MiniAudioEngine::panChanged(int layer, float value)
|
||||||
{
|
{
|
||||||
float result;
|
float result;
|
||||||
|
|
||||||
|
m_mae.currentStatus[layer].pan = value;
|
||||||
if (m_mae.mediaLoaded[layer] == false)
|
if (m_mae.mediaLoaded[layer] == false)
|
||||||
return;
|
return;
|
||||||
result = (value / 128.0) - 1.0;
|
result = (value / 128.0) - 1.0;
|
||||||
ma_sound_group_set_pan(&m_mae.sounds[layer], result);
|
ma_sound_group_set_pan(&m_mae.sounds[layer], result);
|
||||||
m_mae.currentStatus[layer].pan = value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MiniAudioEngine::pitchChanged(int layer, float value)
|
void MiniAudioEngine::pitchChanged(int layer, float value)
|
||||||
{
|
{
|
||||||
float pitch;
|
float pitch;
|
||||||
|
|
||||||
|
m_mae.currentStatus[layer].pitch = value;
|
||||||
if (m_mae.mediaLoaded[layer] == false)
|
if (m_mae.mediaLoaded[layer] == false)
|
||||||
return;
|
return;
|
||||||
pitch = value / 128.0;
|
pitch = value / 128.0;
|
||||||
ma_sound_group_set_pitch(&m_mae.sounds[layer], pitch);
|
ma_sound_group_set_pitch(&m_mae.sounds[layer], pitch);
|
||||||
m_mae.currentStatus[layer].pitch = value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ma_result MiniAudioEngine::playbackChanged(int layer, Status status)
|
ma_result MiniAudioEngine::playbackChanged(int layer, Status status)
|
||||||
{
|
{
|
||||||
ma_result result = MA_SUCCESS;
|
ma_result result = MA_SUCCESS;
|
||||||
|
float db = 0;
|
||||||
if (m_mae.mediaLoaded[layer] == false)
|
|
||||||
return MA_DOES_NOT_EXIST;
|
|
||||||
bool loop = false;
|
bool loop = false;
|
||||||
|
|
||||||
|
m_mae.currentStatus[layer].status = status;
|
||||||
|
if (m_mae.mediaLoaded[layer] == MA_FALSE)
|
||||||
|
return MA_DOES_NOT_EXIST;
|
||||||
|
m_mae.currentStatus[layer].updated = false;
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case Status::Paused:
|
case Status::Paused:
|
||||||
result = ma_sound_stop_with_fade_in_milliseconds(&m_mae.sounds[layer], FADE_TIME);
|
result = ma_sound_stop_with_fade_in_milliseconds(&m_mae.sounds[layer], FADE_TIME);
|
||||||
break;
|
break;
|
||||||
case Status::Stopped:
|
case Status::Stopped:
|
||||||
ma_sound_stop_with_fade_in_milliseconds(&m_mae.sounds[layer], FADE_TIME);
|
ma_sound_stop_with_fade_in_milliseconds(&m_mae.sounds[layer], 0.0f);
|
||||||
result = this->seekToCursor(layer, m_mae.currentStatus[layer].cursor);
|
result = this->seekToCursor(layer, m_mae.currentStatus[layer].cursor);
|
||||||
break;
|
break;
|
||||||
case Status::PlayingLoop:
|
case Status::PlayingLoop:
|
||||||
loop = true;
|
loop = true;
|
||||||
case Status::PlayingOnce:
|
if (m_mae.currentStatus[layer].cursor > 0) {
|
||||||
ma_sound_set_looping(&m_mae.sounds[layer], loop);
|
result = this->seekToCursor(layer, m_mae.currentStatus[layer].cursor);
|
||||||
if (m_mae.currentStatus[layer].cursor > 0) {
|
|
||||||
this->setRangePoint(layer, m_mae.currentStatus[layer].cursor);
|
|
||||||
this->setLoopPoint(layer, m_mae.currentStatus[layer].cursor);
|
|
||||||
}
|
}
|
||||||
|
case Status::PlayingOnce:
|
||||||
case Status::PlayingFolder:
|
case Status::PlayingFolder:
|
||||||
case Status::PlayingFolderLoop:
|
case Status::PlayingFolderLoop:
|
||||||
case Status::PlayingFolderRandom:
|
case Status::PlayingFolderRandom:
|
||||||
|
ma_sound_set_looping(&m_mae.sounds[layer], loop);
|
||||||
|
if (ma_sound_is_playing(&m_mae.sounds[layer])) break;
|
||||||
ma_sound_set_stop_time_in_milliseconds(&m_mae.sounds[layer], ~(ma_uint64)0);
|
ma_sound_set_stop_time_in_milliseconds(&m_mae.sounds[layer], ~(ma_uint64)0);
|
||||||
float db = (m_mae.currentStatus[layer].vol / 771.0f) - 85.0f;
|
db = (m_mae.currentStatus[layer].vol / 771.0f) - 85.0f;
|
||||||
if (db <= -85.0f) {
|
if (db <= -85.0f) db = 0;
|
||||||
db = 0;
|
else db = ma_volume_db_to_linear(db);
|
||||||
} else
|
|
||||||
db = ma_volume_db_to_linear(db);
|
|
||||||
result = ma_sound_start(&m_mae.sounds[layer]);
|
result = ma_sound_start(&m_mae.sounds[layer]);
|
||||||
ma_sound_group_set_volume(&m_mae.sounds[layer], 0.0f);
|
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0.000001f, 0.000000f, FADE_TIME);
|
||||||
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0, db, FADE_TIME);
|
if (m_mae.currentStatus[layer].cursor > 0)
|
||||||
ma_sound_group_set_volume(&m_mae.sounds[layer], 1.0f);
|
usleep(FADE_TIME * 1500); // avoid glitch when load when seeking
|
||||||
|
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0, db, FADE_TIME * 2);
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (result == MA_SUCCESS)
|
m_mae.currentStatus[layer].updated = true;
|
||||||
m_mae.currentStatus[layer].status = status;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -719,5 +724,5 @@ bool MiniAudioEngine::setBypass(int audioDevice, int layer, bool bypass)
|
||||||
ma_node_set_output_bus_volume(&fb->input, 1, 0.0f);
|
ma_node_set_output_bus_volume(&fb->input, 1, 0.0f);
|
||||||
ma_node_set_output_bus_volume(&fb->input, 0, 1.0f);
|
ma_node_set_output_bus_volume(&fb->input, 0, 1.0f);
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue