fades in pan, pitch, bus1, bus2

This commit is contained in:
snt 2024-07-07 02:31:05 +02:00
parent d35b166ce5
commit aa713fd9be
4 changed files with 35 additions and 6 deletions

View file

@ -25,7 +25,8 @@ HEADERS += src/libremediaserver-audio.h \
src/defines.h \
src/settings.h \
src/slidergroup.h \
src/dialgroup.h
src/dialgroup.h \
src/audiofade.h
SOURCES += src/main.cpp \
src/cuetrackwidget.cpp \
src/editcuetrackwidget.cpp \

View file

@ -33,8 +33,10 @@ void EditCueTrackWidget::setupUi() {
volumeSpin->setRange(0, 100.00f);
layout->addRow("Volume", volumeSpin);
panSpin = new QDoubleSpinBox(this);
panSpin->setRange(-1, 1);
layout->addRow("Pan", panSpin);
pitchSpin = new QDoubleSpinBox(this);
pitchSpin->setRange(0, 2);
layout->addRow("Pitch", pitchSpin);
bus1Spin = new QDoubleSpinBox(this);
bus1Spin->setRange(0, 100.00f);
@ -45,6 +47,7 @@ void EditCueTrackWidget::setupUi() {
fadeInSpin = new QSpinBox(this);
layout->addRow("Fade In", fadeInSpin);
fadeOutSpin = new QSpinBox(this);
fadeOutSpin->setRange(0, 60 * 60 * 24);
layout->addRow("Fade Out", fadeOutSpin);
waitInSpin = new QSpinBox(this);
layout->addRow("Wait In", waitInSpin);

View file

@ -17,6 +17,8 @@ ShowPlayer::ShowPlayer(QWidget *parent) :
for(int i = 0; i < MAX_LAYERS; i++) {
layersUsed[i] = -1;
cueTrackWidgetPlaying[i] = nullptr;
current[i] = nullptr;
prevCue[i] = nullptr;
}
}
@ -31,8 +33,11 @@ void ShowPlayer::go()
CueTrack *goCue = ui->cueListWidget->getSelectedTrack(true);
if (!goCue)
return;
prevCue[goCue->audioLayer] = current[goCue->audioLayer];
current[goCue->audioLayer] = goCue;
playCueTrack(goCue);
removeCueTrackWidget(goCue->audioLayer);
CueTrackWidget *widget = addCueTrackWidget(goCue);
widget->go();
if (goCue->multi)
go();
}
@ -60,12 +65,29 @@ void ShowPlayer::goAction(int c)
ui->cueListWidget->redrawCueTrackList();
}
void ShowPlayer::fade(Slider s, int start, CueTrack *track) {
AudioFade *fade = new AudioFade(s, start, track, this);
connect(fade, SIGNAL(uiSliderChanged(int, Slider, int)), this, SIGNAL(uiSliderChanged(int, Slider, int)));
fade->start();
}
void ShowPlayer::updateTrackStateInEngine(CueTrack *track) {
emit uiSliderChangedFaded(track->audioLayer, Slider::Volume, track->volume * 655.35, track->fadeIn * 1000);
if (prevCue[track->audioLayer] != nullptr) {
if (prevCue[track->audioLayer]->pan != track->pan)
fade(Slider::Pan, prevCue[track->audioLayer]->pan, track);
if (prevCue[track->audioLayer]->pitch != track->pitch)
fade(Slider::Pitch, prevCue[track->audioLayer]->pitch, track);
if (prevCue[track->audioLayer]->bus1 != track->bus1)
fade(Slider::Bus1, prevCue[track->audioLayer]->bus1, track);
if (prevCue[track->audioLayer]->bus2 != track->bus2)
fade(Slider::Bus2, prevCue[track->audioLayer]->bus2, track);
} else {
emit uiSliderChanged(track->audioLayer, Slider::Pan, (track->pan + 1) * 128);
emit uiSliderChanged(track->audioLayer, Slider::Pitch, track->pitch * 128);
emit uiSliderChanged(track->audioLayer, Slider::Bus1, track->bus1 * 255 * 2.55);
emit uiSliderChanged(track->audioLayer, Slider::Bus2, track->bus2 * 255 * 2.55);
}
}
void ShowPlayer::loadCueTrackList()

View file

@ -12,6 +12,7 @@
#include "cuetrackwidget.h"
#include "dialgroup.h"
#include "settings.h"
#include "audiofade.h"
#include "ui_showplayer.h"
namespace Ui {
@ -34,6 +35,7 @@ private:
Status currentStatus = Status::Iddle;
int layersUsed[MAX_LAYERS];
CueTrack *current[MAX_LAYERS];
CueTrack *prevCue[MAX_LAYERS];
CueTrackWidget *cueTrackWidgetPlaying[MAX_LAYERS];
CueTrackWidget *addCueTrackWidget(CueTrack *track);
@ -48,6 +50,7 @@ private slots:
void playCueTrack(CueTrack *track);
void goAction(int channel);
void updateIndex(int index);
void fade(Slider s, int start, CueTrack *track);
signals:
void uiPlaybackChanged(int layer, Status s);