fade in time

This commit is contained in:
snt 2024-06-26 20:14:51 +02:00
parent 6056778856
commit e39d885f6f
7 changed files with 29 additions and 6 deletions

View file

@ -91,6 +91,7 @@ struct layerData {
int bus1Vol;
int bus2Vol;
float level;
int fade;
};
struct CueTrack {

View file

@ -228,6 +228,7 @@ void libreMediaServerAudio::setUi(libreMediaServerAudioUi *lmsUi)
connect(m_lmsUi->m_aw, SIGNAL(uiPlaybackChanged(int, Status)), this, SLOT(uiPlaybackChanged(int, Status)));
connect(m_lmsUi->m_aw, SIGNAL(uiLoadMedia(int, QString)), this, SLOT(uiLoadMedia(int, QString)));
connect(m_lmsUi->m_showPlayer, SIGNAL(uiSliderChanged(int, Slider, int)), this, SLOT(uiSliderChanged(int, Slider, int)));
connect(m_lmsUi->m_showPlayer, SIGNAL(uiSliderChangedFaded(int, Slider, int, int)), this, SLOT(uiSliderChangedFaded(int, Slider, int, int)));
connect(m_lmsUi->m_showPlayer, SIGNAL(uiPlaybackChanged(int, Status)), this, SLOT(uiPlaybackChanged(int, Status)));
connect(m_lmsUi->m_showPlayer, SIGNAL(uiLoadMedia(int, QString)), this, SLOT(uiLoadMedia(int, QString)));
m_refreshUi = new QTimer(this);
@ -245,8 +246,8 @@ void libreMediaServerAudio::uiSliderChanged(int layer, Slider s, int value)
{
switch (s){
case Slider::Volume:
m_mae.volChanged(layer, value);
m_updateUi[layer][0] = value;
//m_mae.volChanged(layer, value);
//m_updateUi[layer][0] = value;
break;
case Slider::Pan:
m_mae.panChanged(layer, value);
@ -299,4 +300,14 @@ void libreMediaServerAudio::uiLoadMedia(int layer, QString mediaFile)
qWarning() << "ui load media error" << result << "file" << mediaFile << "layer" << layer;
}
}
void libreMediaServerAudio::uiSliderChangedFaded(int layer, Slider s, int value, int ms)
{
switch (s){
case Slider::Volume:
m_mae.volChanged(layer, value, ms);
m_updateUi[layer][0] = value;
break;
}
}
#endif

View file

@ -66,6 +66,7 @@ private:
private slots:
void refreshUi();
void uiSliderChanged(int layer, Slider s, int value);
void uiSliderChangedFaded(int layer, Slider s, int value, int ms);
void uiPlaybackChanged(int layer, Status s);
void uiLoadMedia(int layer, QString s);

View file

@ -434,8 +434,15 @@ ma_result MiniAudioEngine::printFormatInfo(int layer)
// Expects between 0 and 65535 vol value
void MiniAudioEngine::volChanged(int layer, int vol)
{
volChanged(layer, vol, FADE_TIME);
}
// Expects between 0 and 65535 vol value and fade time in milliseconds
void MiniAudioEngine::volChanged(int layer, int vol, int ms)
{
m_mae.currentStatus[layer].vol = vol;
m_mae.currentStatus[layer].fade = ms;
if (m_mae.mediaLoaded[layer] != MA_TRUE)
return;
if (m_mae.mediaLoaded[layer] == MA_FALSE && m_mae.currentStatus[layer].updated)
@ -445,9 +452,10 @@ void MiniAudioEngine::volChanged(int layer, int vol)
db = 0;
} else
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, ms);
}
void MiniAudioEngine::panChanged(int layer, float value)
{
float result;
@ -507,7 +515,7 @@ ma_result MiniAudioEngine::playbackChanged(int layer, Status status)
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0.000001f, 0.000000f, FADE_TIME);
if (m_mae.currentStatus[layer].cursor > 0)
usleep(FADE_TIME * 1500); // avoid glitch when seeking
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0, db, FADE_TIME * 2);
ma_sound_set_fade_in_milliseconds(&m_mae.sounds[layer], 0, db, m_mae.currentStatus[layer].fade);
default:
break;
}

View file

@ -64,6 +64,7 @@ public:
bool startEngine(uint layersQty, uint* audioDevicesID, uint audioDevicesQty);
ma_result loadMedia(int layer, char *media);
void volChanged(int layer, int vol);
void volChanged(int layer, int vol, int ms);
void panChanged(int layer, float pan);
void pitchChanged(int layer, float pitch);
ma_result playbackChanged(int layer, Status status);

View file

@ -56,7 +56,7 @@ void ShowPlayer::go()
}
void ShowPlayer::updateTrackStateInEngine(CueTrack *track) {
emit uiSliderChanged(track->audioLayer, Slider::Volume, track->volume * 655.35);
emit uiSliderChangedFaded(track->audioLayer, Slider::Volume, track->volume * 655.35, track->fadeIn * 1000);
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);

View file

@ -45,6 +45,7 @@ private slots:
signals:
void uiPlaybackChanged(int layer, Status s);
void uiSliderChanged(int layer, Slider s, int vol);
void uiSliderChangedFaded(int layer, Slider s, int vol, int ms);
void uiLoadMedia(int layer, QString s);
};