From d7b360728f96f8154eda1593abf56d513d239a38 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 21 Jan 2010 23:07:36 +0000 Subject: added 16-bit output git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1521 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmp/CMakeLists.txt | 6 +- src/qmmp/abstractengine.cpp | 2 +- src/qmmp/abstractengine.h | 4 +- src/qmmp/audioconverter.cpp | 80 +++++++++++++++++++++++ src/qmmp/audioconverter.h | 41 ++++++++++++ src/qmmp/audiosettings.cpp | 62 ++++++++++++++++++ src/qmmp/audiosettings.h | 61 ++++++++++++++++++ src/qmmp/qmmp.pro | 6 +- src/qmmp/qmmpaudioengine.cpp | 9 ++- src/qmmp/qmmpaudioengine.h | 4 +- src/qmmp/replaygain.cpp | 23 +++---- src/qmmp/replaygain.h | 8 +-- src/qmmp/replaygainsettings.cpp | 83 ------------------------ src/qmmp/replaygainsettings.h | 55 ---------------- src/qmmp/soundcore.cpp | 43 ++++++++----- src/qmmp/soundcore.h | 8 +-- src/ui/configdialog.cpp | 37 ++++++----- src/ui/forms/configdialog.ui | 7 ++ src/ui/translations/qmmp_cs.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_de.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_it.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_lt.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_pl_PL.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_pt_BR.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_ru.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_tr.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_uk_UA.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_zh_CN.ts | 131 ++++++++++++++++++++------------------ src/ui/translations/qmmp_zh_TW.ts | 131 ++++++++++++++++++++------------------ 29 files changed, 1087 insertions(+), 893 deletions(-) create mode 100644 src/qmmp/audioconverter.cpp create mode 100644 src/qmmp/audioconverter.h create mode 100644 src/qmmp/audiosettings.cpp create mode 100644 src/qmmp/audiosettings.h delete mode 100644 src/qmmp/replaygainsettings.cpp delete mode 100644 src/qmmp/replaygainsettings.h (limited to 'src') diff --git a/src/qmmp/CMakeLists.txt b/src/qmmp/CMakeLists.txt index beddd73f5..3383293c4 100644 --- a/src/qmmp/CMakeLists.txt +++ b/src/qmmp/CMakeLists.txt @@ -54,7 +54,8 @@ SET(libqmmp_SRCS emptyinputsource.cpp metadatamanager.cpp replaygain.cpp - replaygainsettings.cpp + audiosettings.cpp + audioconverter.cpp ) SET(libqmmp_MOC_HDRS @@ -86,7 +87,8 @@ SET(libqmmp_MOC_HDRS enginefactory.h metadatamanager.h replaygain.h - replaygainsettings.h + audiosettings.h + audioconverter.h ) SET(libqmmp_DEVEL_HDRS diff --git a/src/qmmp/abstractengine.cpp b/src/qmmp/abstractengine.cpp index 400551480..3cbdc24bc 100644 --- a/src/qmmp/abstractengine.cpp +++ b/src/qmmp/abstractengine.cpp @@ -40,7 +40,7 @@ QWaitCondition *AbstractEngine::cond() return &m_waitCondition; } -void AbstractEngine::setReplayGainSettings(const ReplayGainSettings &settings) +void AbstractEngine::setAudioSettings(const AudioSettings &settings) { Q_UNUSED(settings); } diff --git a/src/qmmp/abstractengine.h b/src/qmmp/abstractengine.h index 679230350..abcbb4489 100644 --- a/src/qmmp/abstractengine.h +++ b/src/qmmp/abstractengine.h @@ -26,7 +26,7 @@ #include #include #include "enginefactory.h" -#include "replaygainsettings.h" +#include "audiosettings.h" class QIODevice; class InputSource; @@ -87,7 +87,7 @@ public: */ virtual void setEQEnabled(bool on) = 0; - virtual void setReplayGainSettings(const ReplayGainSettings &settings); + virtual void setAudioSettings(const AudioSettings &settings); /*! * Returns a list of decoder factories. */ diff --git a/src/qmmp/audioconverter.cpp b/src/qmmp/audioconverter.cpp new file mode 100644 index 000000000..484a33c72 --- /dev/null +++ b/src/qmmp/audioconverter.cpp @@ -0,0 +1,80 @@ +/*************************************************************************** + * Copyright (C) 2010 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "audioconverter.h" + +//static functions +static inline void s8_to_s16(qint8 *in, qint16 *out, qint64 samples) +{ + for(qint64 i = 0; i < samples; ++i) + out[i] = in[i] << 8; + return; +} + +static inline void s24_to_s16(qint32 *in, qint16 *out, qint64 samples) +{ + for(qint64 i = 0; i < samples; ++i) + out[i] = in[i] >> 8; + return; +} + +static inline void s32_to_s16(qint32 *in, qint16 *out, qint64 samples) +{ + for(qint64 i = 0; i < samples; ++i) + out[i] = in[i] >> 16; + return; +} + +AudioConverter::AudioConverter() +{ + m_format = Qmmp::PCM_UNKNOWM; +} + +void AudioConverter::configure(quint32 srate, int chan, Qmmp::AudioFormat f) +{ + m_format = f; + Effect::configure(srate, chan, Qmmp::PCM_S16LE); +} + +void AudioConverter::applyEffect(Buffer *b) +{ + switch(m_format) + { + case Qmmp::PCM_S8: + { + unsigned char *out = new unsigned char[b->nbytes*2]; + s8_to_s16((qint8 *)b->data, (qint16 *) out, b->nbytes); + delete [] b->data; + b->data = out; + b->nbytes = b->nbytes*2; + break; + } + case Qmmp::PCM_S24LE: + s24_to_s16((qint32 *)b->data, (qint16 *)b->data, b->nbytes/4); + b->nbytes /= 2; + break; + case Qmmp::PCM_S32LE: + s32_to_s16((qint32 *)b->data, (qint16 *)b->data, b->nbytes/4); + b->nbytes /= 2; + break; + default: + ; + } +} diff --git a/src/qmmp/audioconverter.h b/src/qmmp/audioconverter.h new file mode 100644 index 000000000..010c84e71 --- /dev/null +++ b/src/qmmp/audioconverter.h @@ -0,0 +1,41 @@ +/*************************************************************************** + * Copyright (C) 2010 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef AUDIOCONVERTER_H +#define AUDIOCONVERTER_H + +#include "effect.h" + +/*! + * @author Ilya Kotov + */ +class AudioConverter : public Effect +{ +public: + AudioConverter(); + void configure(quint32 srate = 44100, int chan = 2, Qmmp::AudioFormat f = Qmmp::PCM_S16LE); + void applyEffect(Buffer *b); + +private: + Qmmp::AudioFormat m_format; + +}; + +#endif // AUDIOCONVERTER_H diff --git a/src/qmmp/audiosettings.cpp b/src/qmmp/audiosettings.cpp new file mode 100644 index 000000000..f11befacc --- /dev/null +++ b/src/qmmp/audiosettings.cpp @@ -0,0 +1,62 @@ +/*************************************************************************** + * Copyright (C) 2010 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "audiosettings.h" + +AudioSettings::AudioSettings() +{ + m_settings[REPLAYGAIN_MODE] = REPLAYGAIN_DISABLED; + m_settings[REPLAYGAIN_PREAMP] = 0.0; + m_settings[REPLAYGAIN_DEFAULT_GAIN] = 0.0; + m_settings[REPLAYGAIN_PREVENT_CLIPPING] = FALSE; + m_settings[SOFTWARE_VOLUME] = FALSE; + m_settings[OUTPUT_16BIT] = FALSE; +} + +AudioSettings::AudioSettings(const AudioSettings &settings) +{ + m_settings = settings.m_settings; +} + +void AudioSettings::operator=(const AudioSettings &settings) +{ + m_settings = settings.m_settings; +} + +bool AudioSettings::operator==(const AudioSettings &settings) const +{ + return m_settings == settings.m_settings; +} + +bool AudioSettings::operator!=(const AudioSettings &settings) const +{ + return !operator==(settings); +} + +void AudioSettings::setValue(Key key, QVariant value) +{ + m_settings[key] = value; +} + +QVariant AudioSettings::value(Key key) const +{ + return m_settings[key]; +} + diff --git a/src/qmmp/audiosettings.h b/src/qmmp/audiosettings.h new file mode 100644 index 000000000..dcc2238d6 --- /dev/null +++ b/src/qmmp/audiosettings.h @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright (C) 2010 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef AUDIOSETTINGS_H +#define AUDIOSETTINGS_H + +#include +#include + +/*! + * @author Ilya Kotov + */ +class AudioSettings +{ +public: + AudioSettings(); + AudioSettings(const AudioSettings &settings); + + enum ReplayGainMode + { + REPLAYGAIN_TRACK = 0, + REPLAYGAIN_ALBUM, + REPLAYGAIN_DISABLED + }; + enum Key + { + REPLAYGAIN_MODE = 0, + REPLAYGAIN_PREAMP, + REPLAYGAIN_DEFAULT_GAIN, + REPLAYGAIN_PREVENT_CLIPPING, + SOFTWARE_VOLUME, + OUTPUT_16BIT, + }; + void operator=(const AudioSettings &settings); + bool operator==(const AudioSettings &settings) const; + bool operator!=(const AudioSettings &settings) const; + void setValue(Key key, QVariant value); + QVariant value(Key key) const; + +private: + QMap m_settings; +}; + +#endif // AUDIOSETTINGS_H diff --git a/src/qmmp/qmmp.pro b/src/qmmp/qmmp.pro index b71928f08..cfd6194d9 100644 --- a/src/qmmp/qmmp.pro +++ b/src/qmmp/qmmp.pro @@ -30,7 +30,8 @@ HEADERS += recycler.h \ enginefactory.h \ metadatamanager.h \ replaygain.h \ - replaygainsettings.h + audioconverter.h \ + audiosettings.h SOURCES += recycler.cpp \ decoder.cpp \ output.cpp \ @@ -54,7 +55,8 @@ SOURCES += recycler.cpp \ emptyinputsource.cpp \ metadatamanager.cpp \ replaygain.cpp \ - replaygainsettings.cpp + audioconverter.cpp \ + audiosettings.cpp FORMS += unix:TARGET = ../../lib/qmmp win32:TARGET = ../../../bin/qmmp diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp index f6a3a5257..0ff726b36 100644 --- a/src/qmmp/qmmpaudioengine.cpp +++ b/src/qmmp/qmmpaudioengine.cpp @@ -29,6 +29,7 @@ #include "decoderfactory.h" #include "effectfactory.h" #include "inputsource.h" +#include "audioconverter.h" #include "qmmpaudioengine.h" #include "metadatamanager.h" @@ -165,9 +166,10 @@ void QmmpAudioEngine::setEQEnabled(bool on) mutex()->unlock(); } -void QmmpAudioEngine::setReplayGainSettings(const ReplayGainSettings &settings) +void QmmpAudioEngine::setAudioSettings(const AudioSettings &settings) { - m_replayGain->setReplayGainSettings(settings); + m_as = settings; + m_replayGain->setAudioSettings(settings); } void QmmpAudioEngine::addEffect(EffectFactory *factory) @@ -565,6 +567,9 @@ Output *QmmpAudioEngine::createOutput(Decoder *d) } m_useEq = m_eqEnabled && ap.format() == Qmmp::PCM_S16LE; + if(m_as.value(AudioSettings::OUTPUT_16BIT).toBool()) + m_effects.prepend (new AudioConverter()); + foreach(Effect *effect, m_effects) { effect->configure(ap.sampleRate(), ap.channels(), ap.format()); diff --git a/src/qmmp/qmmpaudioengine.h b/src/qmmp/qmmpaudioengine.h index bdc3715b2..5428dbba7 100644 --- a/src/qmmp/qmmpaudioengine.h +++ b/src/qmmp/qmmpaudioengine.h @@ -24,7 +24,6 @@ #include #include #include "abstractengine.h" -#include "replaygainsettings.h" #include "audioparameters.h" class QIODevice; @@ -52,7 +51,7 @@ public: void pause(); void setEQ(double bands[10], double preamp); void setEQEnabled(bool on); - void setReplayGainSettings(const ReplayGainSettings &settings); + void setAudioSettings(const AudioSettings &settings); void addEffect(EffectFactory *factory); void removeEffect(EffectFactory *factory); @@ -90,6 +89,7 @@ private: bool m_next; static QmmpAudioEngine *m_instance; ReplayGain *m_replayGain; + AudioSettings m_as; }; diff --git a/src/qmmp/replaygain.cpp b/src/qmmp/replaygain.cpp index 175dc24fd..ce1013b47 100644 --- a/src/qmmp/replaygain.cpp +++ b/src/qmmp/replaygain.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -37,7 +37,7 @@ void ReplayGain::setReplayGainInfo(const QMap &info { m_info = info; updateScale(); - if(m_settings.mode() != ReplayGainSettings::DISABLED) + if(m_settings.value(AudioSettings::REPLAYGAIN_MODE).toInt() != AudioSettings::REPLAYGAIN_DISABLED) { qDebug("ReplayGain: track: gain=%f dB, peak=%f; album: gain=%f dB, peak=%f", m_info[Qmmp::REPLAYGAIN_TRACK_GAIN], @@ -50,7 +50,7 @@ void ReplayGain::setReplayGainInfo(const QMap &info qDebug("ReplayGain: disabled"); } -void ReplayGain::setReplayGainSettings(const ReplayGainSettings &settings) +void ReplayGain::setAudioSettings(const AudioSettings &settings) { m_settings = settings; setReplayGainInfo(m_info); @@ -58,7 +58,8 @@ void ReplayGain::setReplayGainSettings(const ReplayGainSettings &settings) void ReplayGain::applyReplayGain(char *data, qint64 size) { - if(m_settings.mode() == ReplayGainSettings::DISABLED || m_scale == 1.0) + if( m_scale == 1.0 || + m_settings.value(AudioSettings::REPLAYGAIN_MODE).toInt() == AudioSettings::REPLAYGAIN_DISABLED) return; size = size/m_sampleSize; if(m_sampleSize == 2) @@ -83,24 +84,24 @@ void ReplayGain::updateScale() { double peak = 0.0; m_scale = 1.0; - switch((int) m_settings.mode()) + switch(m_settings.value(AudioSettings::REPLAYGAIN_MODE).toInt()) { - case ReplayGainSettings::TRACK: + case AudioSettings::REPLAYGAIN_TRACK: m_scale = pow(10.0, m_info[Qmmp::REPLAYGAIN_TRACK_GAIN]/20); peak = m_info[Qmmp::REPLAYGAIN_TRACK_PEAK]; break; - case ReplayGainSettings::ALBUM: + case AudioSettings::REPLAYGAIN_ALBUM: m_scale = pow(10.0, m_info[Qmmp::REPLAYGAIN_ALBUM_GAIN]/20); peak = m_info[Qmmp::REPLAYGAIN_ALBUM_PEAK]; break; - case ReplayGainSettings::DISABLED: + case AudioSettings::REPLAYGAIN_DISABLED: m_scale = 1.0; return; } if(m_scale == 1.0) - m_scale = pow(10.0, m_settings.defaultGain()/20); - m_scale *= pow(10.0, m_settings.preamp()/20); - if(peak > 0.0 && m_settings.preventClipping()) + m_scale = pow(10.0, m_settings.value(AudioSettings::REPLAYGAIN_DEFAULT_GAIN).toDouble()/20); + m_scale *= pow(10.0, m_settings.value(AudioSettings::REPLAYGAIN_PREAMP).toDouble()/20); + if(peak > 0.0 && m_settings.value(AudioSettings::REPLAYGAIN_PREVENT_CLIPPING).toBool()) m_scale = m_scale*peak > 1.0 ? 1.0 / peak : m_scale; m_scale = qMin(m_scale, 5.6234); // +15 dB m_scale = qMax(m_scale, 0.1778); // -15 dB diff --git a/src/qmmp/replaygain.h b/src/qmmp/replaygain.h index ed6ca25c1..6ce5f42ac 100644 --- a/src/qmmp/replaygain.h +++ b/src/qmmp/replaygain.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -24,7 +24,7 @@ #include #include #include "qmmp.h" -#include "replaygainsettings.h" +#include "audiosettings.h" /*! * @author Ilya Kotov @@ -35,7 +35,7 @@ public: ReplayGain(); void setSampleSize(int size); - void setReplayGainSettings(const ReplayGainSettings &settings); + void setAudioSettings(const AudioSettings &settings); void setReplayGainInfo(const QMap &info); void applyReplayGain(char *data, qint64 size); @@ -43,7 +43,7 @@ private: void updateScale(); int m_sampleSize; QMap m_info; - ReplayGainSettings m_settings; + AudioSettings m_settings; double m_scale; }; diff --git a/src/qmmp/replaygainsettings.cpp b/src/qmmp/replaygainsettings.cpp deleted file mode 100644 index 3a02b8e73..000000000 --- a/src/qmmp/replaygainsettings.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/*************************************************************************** -* Copyright (C) 2009 by Ilya Kotov * -* forkotov02@hotmail.ru * -* * -* This program is free software; you can redistribute it and/or modify * -* it under the terms of the GNU General Public License as published by * -* the Free Software Foundation; either version 2 of the License, or * -* (at your option) any later version. * -* * -* This program is distributed in the hope that it will be useful, * -* but WITHOUT ANY WARRANTY; without even the implied warranty of * -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -* GNU General Public License for more details. * -* * -* You should have received a copy of the GNU General Public License * -* along with this program; if not, write to the * -* Free Software Foundation, Inc., * -* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * -***************************************************************************/ - -#include "replaygainsettings.h" - -ReplayGainSettings::ReplayGainSettings() -{ - m_mode = DISABLED; - m_preamp = 0.0; - m_defaultGain = -8.0; - m_preventClipping = false; -} - -ReplayGainSettings::ReplayGainSettings(int mode, double preamp, double defaultGain, bool preventClipping) -{ - m_mode = mode; - m_preamp = preamp; - m_defaultGain = defaultGain; - m_preventClipping = preventClipping; -} - -ReplayGainSettings::ReplayGainSettings(const ReplayGainSettings &other) -{ - operator=(other); -} - -void ReplayGainSettings::operator=(const ReplayGainSettings &settings) -{ - m_mode = settings.mode(); - m_preamp = settings.preamp(); - m_defaultGain = settings.defaultGain(); - m_preventClipping = settings.preventClipping(); -} - -bool ReplayGainSettings::operator==(const ReplayGainSettings &settings) const -{ - return m_mode == settings.mode() && - m_preamp == settings.preamp() && - m_defaultGain == settings.defaultGain() && - m_preventClipping == settings.preventClipping(); -} - -bool ReplayGainSettings::operator!=(const ReplayGainSettings &settings) const -{ - return !operator==(settings); -} - -int ReplayGainSettings::mode() const -{ - return m_mode; -} - -double ReplayGainSettings::preamp() const -{ - return m_preamp; -} - -double ReplayGainSettings::defaultGain() const -{ - return m_defaultGain; -} - -bool ReplayGainSettings::preventClipping() const -{ - return m_preventClipping; -} diff --git a/src/qmmp/replaygainsettings.h b/src/qmmp/replaygainsettings.h deleted file mode 100644 index 246ebaeb3..000000000 --- a/src/qmmp/replaygainsettings.h +++ /dev/null @@ -1,55 +0,0 @@ -/*************************************************************************** -* Copyright (C) 2009 by Ilya Kotov * -* forkotov02@hotmail.ru * -* * -* This program is free software; you can redistribute it and/or modify * -* it under the terms of the GNU General Public License as published by * -* the Free Software Foundation; either version 2 of the License, or * -* (at your option) any later version. * -* * -* This program is distributed in the hope that it will be useful, * -* but WITHOUT ANY WARRANTY; without even the implied warranty of * -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -* GNU General Public License for more details. * -* * -* You should have received a copy of the GNU General Public License * -* along with this program; if not, write to the * -* Free Software Foundation, Inc., * -* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * -***************************************************************************/ - -#ifndef REPLAYGAINSETTINGS_H -#define REPLAYGAINSETTINGS_H - -/** - @author Ilya Kotov -*/ -class ReplayGainSettings -{ -public: - enum Mode - { - TRACK = 0, - ALBUM, - DISABLED - }; - ReplayGainSettings(); - ReplayGainSettings(int mode, double preamp, double defaultGain, bool preventClipping); - ReplayGainSettings(const ReplayGainSettings &other); - void operator=(const ReplayGainSettings &settings); - bool operator==(const ReplayGainSettings &settings) const; - bool operator!=(const ReplayGainSettings &settings) const; - - int mode() const; - double preamp() const; - double defaultGain() const; - bool preventClipping() const; - -private: - int m_mode; - double m_preamp; - double m_defaultGain; - bool m_preventClipping; -}; - -#endif // REPLAYGAINSETTINGS_H diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index d212a6ae3..3f9b21634 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -67,11 +67,18 @@ SoundCore::SoundCore(QObject *parent) QSettings settings (Qmmp::configFile(), QSettings::IniFormat); //replaygain settings settings.beginGroup("ReplayGain"); - m_rgs = ReplayGainSettings(settings.value("mode", m_rgs.mode()).toInt(), - settings.value("preamp", m_rgs.preamp()).toDouble(), - settings.value("default_gain", m_rgs.defaultGain()).toDouble(), - settings.value("prevent_clipping",m_rgs.preventClipping()).toBool()); + m_as.setValue(AudioSettings::REPLAYGAIN_MODE, + settings.value("mode", AudioSettings::REPLAYGAIN_DISABLED)); + m_as.setValue(AudioSettings::REPLAYGAIN_PREAMP, + settings.value("preamp", 0.0)); + m_as.setValue(AudioSettings::REPLAYGAIN_DEFAULT_GAIN, + settings.value("default_gain", 0.0)); + m_as.setValue(AudioSettings::REPLAYGAIN_PREVENT_CLIPPING, + settings.value("prevent_clipping", FALSE)); settings.endGroup(); + //other settings + m_as.setValue(AudioSettings::SOFTWARE_VOLUME, settings.value("Output/software_volume", FALSE)); + m_as.setValue(AudioSettings::OUTPUT_16BIT, settings.value("Output/use_16bit", FALSE)); } @@ -250,7 +257,7 @@ bool SoundCore::enqueue(InputSource *s) setEQ(m_bands, m_preamp); setEQEnabled(m_useEQ); - setReplayGainSettings(m_rgs); + setAudioSettings(m_as); if(m_engine->enqueue(s)) { m_source = s->url(); @@ -289,7 +296,7 @@ bool SoundCore::enqueue(InputSource *s) connect(engine, SIGNAL(playbackFinished()), SIGNAL(finished())); engine->setEQ(m_bands, m_preamp); engine->setEQEnabled(m_useEQ); - engine->setReplayGainSettings(m_rgs); + engine->setAudioSettings(m_as); if (m_handler->state() == Qmmp::Playing || m_handler->state() == Qmmp::Paused) { if(m_pendingEngine) @@ -319,25 +326,29 @@ void SoundCore::startPendingEngine() } } -ReplayGainSettings SoundCore::replayGainSettings() const +AudioSettings SoundCore::audioSettings() const { - return m_rgs; + return m_as; } -void SoundCore::setReplayGainSettings(const ReplayGainSettings &rgs) +void SoundCore::setAudioSettings(const AudioSettings &as) { - m_rgs = rgs; - //save replaygain settings + m_as = as; QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + //replaygain settings settings.beginGroup("ReplayGain"); - settings.setValue("mode", m_rgs.mode()); - settings.setValue("preamp", m_rgs.preamp()); - settings.setValue("default_gain", m_rgs.defaultGain()); - settings.setValue("prevent_clipping",m_rgs.preventClipping()); + settings.setValue("mode", m_as.value(AudioSettings::REPLAYGAIN_MODE)); + settings.setValue("preamp", m_as.value(AudioSettings::REPLAYGAIN_PREAMP)); + settings.setValue("default_gain", m_as.value(AudioSettings::REPLAYGAIN_DEFAULT_GAIN)); + settings.setValue("prevent_clipping", m_as.value(AudioSettings::REPLAYGAIN_PREVENT_CLIPPING)); settings.endGroup(); + //other settings + settings.setValue("Output/software_volume", m_as.value(AudioSettings::SOFTWARE_VOLUME)); + settings.setValue("Output/use_16bit", m_as.value(AudioSettings::OUTPUT_16BIT)); + setSoftwareVolume(m_as.value(AudioSettings::SOFTWARE_VOLUME).toBool()); //apply replaygain settings if(m_engine) - m_engine->setReplayGainSettings(rgs); + m_engine->setAudioSettings(m_as); } SoundCore* SoundCore::instance() diff --git a/src/qmmp/soundcore.h b/src/qmmp/soundcore.h index a0860957d..fbe7edb71 100644 --- a/src/qmmp/soundcore.h +++ b/src/qmmp/soundcore.h @@ -26,7 +26,7 @@ #include "output.h" #include "visual.h" #include "qmmp.h" -#include "replaygainsettings.h" +#include "audiosettings.h" class QIODevice; class VolumeControl; @@ -107,8 +107,8 @@ public: */ QString metaData(Qmmp::MetaData key); - ReplayGainSettings replayGainSettings() const; - void setReplayGainSettings(const ReplayGainSettings &rgs); + AudioSettings audioSettings() const; + void setAudioSettings(const AudioSettings &as); /*! * Returns a pointer to the SoundCore instance. */ @@ -227,7 +227,7 @@ private: AbstractEngine *m_engine; AbstractEngine *m_pendingEngine; QList m_pendingSources; - ReplayGainSettings m_rgs; //ReplayGain settings + AudioSettings m_as; //audio settings }; #endif diff --git a/src/ui/configdialog.cpp b/src/ui/configdialog.cpp index 9acdbe73c..a3a569a6a 100644 --- a/src/ui/configdialog.cpp +++ b/src/ui/configdialog.cpp @@ -78,9 +78,9 @@ ConfigDialog::ConfigDialog (QWidget *parent) connect (ui.listWidget, SIGNAL (itemClicked (QListWidgetItem *)), this, SLOT (changeSkin())); ui.listWidget->setIconSize (QSize (105,34)); m_skin = Skin::instance(); - ui.replayGainModeComboBox->addItem (tr("Track"), ReplayGainSettings::TRACK); - ui.replayGainModeComboBox->addItem (tr("Album"), ReplayGainSettings::ALBUM); - ui.replayGainModeComboBox->addItem (tr("Disabled"), ReplayGainSettings::DISABLED); + ui.replayGainModeComboBox->addItem (tr("Track"), AudioSettings::REPLAYGAIN_TRACK); + ui.replayGainModeComboBox->addItem (tr("Album"), AudioSettings::REPLAYGAIN_ALBUM); + ui.replayGainModeComboBox->addItem (tr("Disabled"), AudioSettings::REPLAYGAIN_DISABLED); readSettings(); m_reader = new SkinReader(this); loadSkins(); @@ -133,9 +133,6 @@ void ConfigDialog::readSettings() ui.hiddenCheckBox->setChecked(settings.value("MainWindow/start_hidden", FALSE).toBool()); ui.hideOnCloseCheckBox->setChecked(settings.value("MainWindow/hide_on_close", FALSE).toBool()); - //volume - ui.softVolumeCheckBox->setChecked(SoundCore::instance()->softwareVolume()); - connect(ui.softVolumeCheckBox, SIGNAL(clicked(bool)), SoundCore::instance(), SLOT(setSoftwareVolume(bool))); //transparency ui.mwTransparencySlider->setValue(100 - settings.value("MainWindow/opacity", 1.0).toDouble()*100); ui.eqTransparencySlider->setValue(100 - settings.value("Equalizer/opacity", 1.0).toDouble()*100); @@ -151,11 +148,15 @@ void ConfigDialog::readSettings() ui.coverExcludeLineEdit->setText(MetaDataManager::instance()->coverNameFilters(FALSE).join(",")); ui.coverDepthSpinBox->setValue(MetaDataManager::instance()->coverSearchDepth()); //replay gain - ReplayGainSettings rgs = SoundCore::instance()->replayGainSettings(); - ui.clippingCheckBox->setChecked(rgs.preventClipping()); - ui.replayGainModeComboBox->setCurrentIndex(ui.replayGainModeComboBox->findData(rgs.mode())); - ui.preampDoubleSpinBox->setValue(rgs.preamp()); - ui.defaultGainDoubleSpinBox->setValue(rgs.defaultGain()); + AudioSettings as = SoundCore::instance()->audioSettings(); + ui.clippingCheckBox->setChecked(as.value(AudioSettings::REPLAYGAIN_PREVENT_CLIPPING).toBool()); + AudioSettings::ReplayGainMode mode = (AudioSettings::ReplayGainMode)as.value(AudioSettings::REPLAYGAIN_MODE).toInt(); + ui.replayGainModeComboBox->setCurrentIndex(ui.replayGainModeComboBox->findData(mode)); + ui.preampDoubleSpinBox->setValue(as.value(AudioSettings::REPLAYGAIN_PREAMP).toDouble()); + ui.defaultGainDoubleSpinBox->setValue(as.value(AudioSettings::REPLAYGAIN_DEFAULT_GAIN).toDouble()); + //audio + ui.softVolumeCheckBox->setChecked(as.value(AudioSettings::SOFTWARE_VOLUME).toBool()); + ui.use16BitCheckBox->setChecked(as.value(AudioSettings::OUTPUT_16BIT).toBool()); } void ConfigDialog::changePage (QListWidgetItem *current, QListWidgetItem *previous) @@ -657,11 +658,15 @@ void ConfigDialog::saveSettings() ui.coverExcludeLineEdit->text().split(","), ui.coverDepthSpinBox->value()); int i = ui.replayGainModeComboBox->currentIndex(); - ReplayGainSettings rs (ui.replayGainModeComboBox->itemData(i).toInt(), - ui.preampDoubleSpinBox->value(), - ui.defaultGainDoubleSpinBox->value(), - ui.clippingCheckBox->isChecked()); - SoundCore::instance()->setReplayGainSettings(rs); + //audio + AudioSettings as = SoundCore::instance()->audioSettings(); + as.setValue(AudioSettings::REPLAYGAIN_MODE, ui.replayGainModeComboBox->itemData(i).toInt()); + as.setValue(AudioSettings::REPLAYGAIN_PREAMP, ui.preampDoubleSpinBox->value()); + as.setValue(AudioSettings::REPLAYGAIN_DEFAULT_GAIN, ui.defaultGainDoubleSpinBox->value()); + as.setValue(AudioSettings::REPLAYGAIN_PREVENT_CLIPPING, ui.clippingCheckBox->isChecked()); + as.setValue(AudioSettings::SOFTWARE_VOLUME, ui.softVolumeCheckBox->isChecked()); + as.setValue(AudioSettings::OUTPUT_16BIT, ui.use16BitCheckBox->isChecked()); + SoundCore::instance()->setAudioSettings(as); } void ConfigDialog::updateButtons() diff --git a/src/ui/forms/configdialog.ui b/src/ui/forms/configdialog.ui index 1f3ec19f9..fd983b57c 100644 --- a/src/ui/forms/configdialog.ui +++ b/src/ui/forms/configdialog.ui @@ -1181,6 +1181,13 @@ + + + + 16-bit output + + + diff --git a/src/ui/translations/qmmp_cs.ts b/src/ui/translations/qmmp_cs.ts index f3d1827de..9900d5091 100644 --- a/src/ui/translations/qmmp_cs.ts +++ b/src/ui/translations/qmmp_cs.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled Povoleno - - - - - + + + + + Description Popis - - - - - + + + + + Filename Soubor - + Artist Umělec - + Album Album @@ -221,57 +221,57 @@ Vypnuto - + Title Název - + Track number Číslo stopy - + Two-digit track number Dvoumístné číslo stopy - + Disc number Číslo disku - + Condition Stav - + Composer Skladatel - + File name Název souboru - + File path Cesta k souboru - + Genre Žánr - + Year Rok - + Comment Poznámka @@ -487,7 +487,12 @@ Použít informaci o vrcholu k zabránění ořezu - + + 16-bit output + + + + Close Zavřít @@ -537,12 +542,12 @@ Heslo: - + Archived skin Sbalené téma - + Unarchived skin Rozbalené téma @@ -598,12 +603,12 @@ Převést %20 na mezery - + Select Skin Files Vybrat soubory s tématy - + Skin files Soubory s tématy @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode Režim vizualizace - + Analyzer Frekvenční analýza - + Scope Osciloskop - + Off Vypnuto - + Analyzer Mode Režim analýzy - + Normal Normální - + Fire Oheň - + Vertical Lines Sloupce - + Lines Úzké - + Bars Široké - + Peaks Špičky - + Refresh Rate Obnovovací frekvence - + 50 fps 50 Hz - + 25 fps 25 Hz - + 10 fps 10 Hz - + 5 fps 5 Hz - + Analyzer Falloff Pokles analyzátoru - - + + Slowest Nejpomalejší - - + + Slow Pomalý - - + + Medium Střední - - + + Fast Rychlý - - + + Fastest Nejrychlejší - + Peaks Falloff Pokles špiček - + Background Pozadí - + Transparent Průhledné diff --git a/src/ui/translations/qmmp_de.ts b/src/ui/translations/qmmp_de.ts index 419aa4b70..866ae5e95 100644 --- a/src/ui/translations/qmmp_de.ts +++ b/src/ui/translations/qmmp_de.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled Aktiviert - - - - - + + + + + Description Beschreibung - - - - - + + + + + Filename Dateiname - + Artist Interpret - + Album Album @@ -221,57 +221,57 @@ - + Title Titel - + Track number Stücknummer - + Two-digit track number Zweistellige Stücknummer - + Disc number CD-Nummer - + Condition - + Genre Genre - + Composer Komponist - + File name Dateiname - + File path Dateipfad - + Year Jahr - + Comment Kommentar @@ -487,7 +487,12 @@ - + + 16-bit output + + + + Close Schließen @@ -537,12 +542,12 @@ Passwort: - + Archived skin Archiviertes Design - + Unarchived skin Nicht archiviertes Design @@ -598,12 +603,12 @@ %20 in Leerzeichen umwandeln - + Select Skin Files Design-Dateien auswählen - + Skin files Design-Dateien @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode Visualisierungsmodus - + Analyzer Analyzer - + Scope Oszilloskop - + Off Aus - + Analyzer Mode Analyzer-Modus - + Normal Normal - + Fire Feuer - + Vertical Lines Vertikale Linien - + Lines Linien - + Bars Balken - + Peaks Spitzen - + Refresh Rate Wiederholfrequenz - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff Analyzer-Abfall - - + + Slowest Sehr langsam - - + + Slow Langsam - - + + Medium Mittel - - + + Fast Schnell - - + + Fastest Sehr schnell - + Peaks Falloff Peaks-Abfall - + Background Hintergrund - + Transparent Transparent diff --git a/src/ui/translations/qmmp_it.ts b/src/ui/translations/qmmp_it.ts index d255464aa..02dbf29ca 100644 --- a/src/ui/translations/qmmp_it.ts +++ b/src/ui/translations/qmmp_it.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled Attivo - - - - - + + + + + Description Descrizione - - - - - + + + + + Filename File - + Artist Interprete - + Album Album @@ -221,57 +221,57 @@ - + Title Titolo - + Track number Traccia n° - + Two-digit track number Traccia n° a due cifre - + Disc number Disco n° - + Condition Condizione - + Genre Genere - + Composer Compositore - + File name Nome file - + File path Percorso file - + Year Anno - + Comment Commento @@ -376,17 +376,22 @@ Avanzato - + + 16-bit output + + + + Close Chiudi - + Archived skin Tema archiviato - + Unarchived skin Tema non archiviato @@ -598,12 +603,12 @@ Converti il carattere « %20 » in spazi - + Select Skin Files Seleziona aspetto - + Skin files Aspetto @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode Modo visualizzazione - + Analyzer Analizzatore - + Scope Oscilloscopio - + Off Chiudi - + Analyzer Mode Modo analizzatore - + Normal Normale - + Fire Fuoco - + Vertical Lines Linee verticali - + Lines Linee - + Bars Barre - + Peaks Picchi - + Refresh Rate Velocità di aggiornamento - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff Ricaduta analizzatore - - + + Slowest Molto lenta - - + + Slow Lenta - - + + Medium Media - - + + Fast Rapida - - + + Fastest Molto veloce - + Peaks Falloff Ricadua picchi - + Background Sfondo - + Transparent Transparente diff --git a/src/ui/translations/qmmp_lt.ts b/src/ui/translations/qmmp_lt.ts index 424f99be7..827aa63a2 100644 --- a/src/ui/translations/qmmp_lt.ts +++ b/src/ui/translations/qmmp_lt.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled Įjungtas - - - - - + + + + + Description Aprašymas - - - - - + + + + + Filename Bylos pavadinimas - + Artist Atlikėjas - + Album Albumas @@ -221,57 +221,57 @@ - + Title Pavadinimas - + Track number Takelio numeris - + Two-digit track number Dviejų skaičių takelio numeris - + Disc number Disko numeris - + Condition Būklė - + Composer Autorius - + File name Bylos pavadinimas - + File path Bylos kelias - + Genre Žanras - + Year Metai - + Comment Komentaras @@ -376,17 +376,22 @@ Papildomi - + + 16-bit output + + + + Close Užverti - + Archived skin Suspausta tema - + Unarchived skin Išskleista tema @@ -599,12 +604,12 @@ Paversti %20 į tarpus - + Select Skin Files Pasirinkti temų bylas - + Skin files Temų bylos @@ -822,132 +827,132 @@ MainVisual - + Visualization Mode Vizualizacijos metodas - + Analyzer Analizatorius - + Scope Scope - + Off Išjungta - + Analyzer Mode Analizatoriaus metodas - + Normal Įprastinis - + Fire Ugnis - + Vertical Lines Vertikalios linijos - + Lines Linijos - + Bars Bangos - + Peaks Pikai - + Refresh Rate Atnaujinimo dažnumas - + 50 fps 50 kps - + 25 fps 25 kps - + 10 fps 10 kps - + 5 fps 5 kps - + Analyzer Falloff Analyzer Falloff - - + + Slowest Lėčiausias - - + + Slow Lėtas - - + + Medium Vidutinis - - + + Fast Greitas - - + + Fastest Greičiausias - + Peaks Falloff Peaks Falloff - + Background Fonas - + Transparent Permatomumas diff --git a/src/ui/translations/qmmp_pl_PL.ts b/src/ui/translations/qmmp_pl_PL.ts index 85c7b2cb4..011c27ad9 100644 --- a/src/ui/translations/qmmp_pl_PL.ts +++ b/src/ui/translations/qmmp_pl_PL.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled Włączone - - - - - + + + + + Description Opis - - - - - + + + + + Filename Nazwa pliku - + Artist Artysta - + Album Album @@ -221,57 +221,57 @@ Wyłączone - + Title Tytuł - + Track number Numer utworu - + Two-digit track number Dwuznakowy numer utworu - + Disc number Numer albumu - + Condition Warunek - + Genre Gatunek - + Composer Kompozytor - + File name Nazwa pliku - + File path Lokalizacja - + Year Rok - + Comment Komentarz @@ -376,17 +376,22 @@ Zaawansowane - + + 16-bit output + + + + Close Zamknij - + Archived skin Skompresowana skórka - + Unarchived skin Niekompresowana skórka @@ -598,12 +603,12 @@ Konwertuj sekwencje %20 na spacje - + Select Skin Files Wybierz skórę - + Skin files Pliki skór @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode Tryb wizualizacji - + Analyzer Analizator - + Scope - + Off Wyłączone - + Analyzer Mode Tryb Analizatora - + Normal Normalny - + Fire Ogień - + Vertical Lines Pionowe Linie - + Lines Linie - + Bars Słupki - + Peaks Piki - + Refresh Rate Odświeżanie - + 50 fps - + 25 fps - + 10 fps - + 5 fps - + Analyzer Falloff Prędkość Analizatora - - + + Slowest Najwolniej - - + + Slow Wolno - - + + Medium Średnio - - + + Fast Szybko - - + + Fastest Najszybciej - + Peaks Falloff Opadanie Pików - + Background Tło - + Transparent Przezroczystość diff --git a/src/ui/translations/qmmp_pt_BR.ts b/src/ui/translations/qmmp_pt_BR.ts index c730dd312..7f5647b5b 100644 --- a/src/ui/translations/qmmp_pt_BR.ts +++ b/src/ui/translations/qmmp_pt_BR.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled Ligado - - - - - + + + + + Description Descrição - - - - - + + + + + Filename Nome do Arquivo - + Artist Artista - + Album Álbum @@ -221,57 +221,57 @@ - + Title Título - + Track number - + Two-digit track number - + Disc number - + Condition - + Genre Gênero - + Composer - + File name - + File path - + Year Ano - + Comment Comentário @@ -376,17 +376,22 @@ Avançado - + + 16-bit output + + + + Close Fechar - + Archived skin - + Unarchived skin @@ -598,12 +603,12 @@ - + Select Skin Files - + Skin files @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode - + Analyzer - + Scope - + Off - + Analyzer Mode - + Normal - + Fire - + Vertical Lines - + Lines - + Bars - + Peaks - + Refresh Rate - + 50 fps - + 25 fps - + 10 fps - + 5 fps - + Analyzer Falloff - - + + Slowest - - + + Slow - - + + Medium - - + + Fast - - + + Fastest - + Peaks Falloff - + Background - + Transparent diff --git a/src/ui/translations/qmmp_ru.ts b/src/ui/translations/qmmp_ru.ts index 67e7cc15c..bdbaff32a 100644 --- a/src/ui/translations/qmmp_ru.ts +++ b/src/ui/translations/qmmp_ru.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled Включён - - - - - + + + + + Description Описание - - - - - + + + + + Filename Имя файла - + Artist Исполнитель - + Album Альбом @@ -221,57 +221,57 @@ Отключено - + Title Название - + Track number Номер трека - + Two-digit track number 2-x разрядный номер трека - + Disc number Номер диска - + Condition Условие - + Genre Жанр - + Composer Композитор - + File name Имя файла - + File path Путь к файлу - + Year Год - + Comment Комментарий @@ -376,17 +376,22 @@ Дополнительно - + + 16-bit output + 16-битный вывод + + + Close Закрыть - + Archived skin Упакованная тема - + Unarchived skin Распакованная тема @@ -598,12 +603,12 @@ Преобразовывать %20 в пробел - + Select Skin Files Выберите файлы обложек - + Skin files Файлы обложек @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode Режим визуализации - + Analyzer Анализатор - + Scope Осциллограф - + Off Выключено - + Analyzer Mode Режим анализатора - + Normal Обычный - + Fire Огонь - + Vertical Lines Вертикальные линии - + Lines Линии - + Bars Полоски - + Peaks Пики - + Refresh Rate Частота обновления - + 50 fps - + 25 fps - + 10 fps - + 5 fps - + Analyzer Falloff Падение анализатора - - + + Slowest Самое медленное - - + + Slow Медленное - - + + Medium Среднее - - + + Fast Быстрое - - + + Fastest Самое быстрое - + Peaks Falloff Падение пиков - + Background Фон - + Transparent Прозрачность diff --git a/src/ui/translations/qmmp_tr.ts b/src/ui/translations/qmmp_tr.ts index d4758b244..51058f7ec 100644 --- a/src/ui/translations/qmmp_tr.ts +++ b/src/ui/translations/qmmp_tr.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled Etkinleştirildi - - - - - + + + + + Description Açıklama - - - - - + + + + + Filename Dosya adı - + Artist Sanatçı - + Album Albüm @@ -221,57 +221,57 @@ - + Title Başlık - + Track number - + Two-digit track number - + Disc number - + Condition - + Genre Tarz - + Composer - + File name - + File path - + Year Yıl - + Comment Yorum @@ -376,17 +376,22 @@ Gelişmiş - + + 16-bit output + + + + Close Kapat - + Archived skin Arşivlenmiş kabuk - + Unarchived skin Arşivlenmemiş kabuk @@ -598,12 +603,12 @@ %20 yi boşluğa çevir - + Select Skin Files Kabuk Dosyası Seç - + Skin files Kabuk dosyaları @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode Görselleştirme Modu - + Analyzer Çözümleyici - + Scope Kapsam - + Off Kapat - + Analyzer Mode Çözümleyici Modu - + Normal Normal - + Fire Ateş - + Vertical Lines Dikey Satırlar - + Lines Satırlar - + Bars Çubuklar - + Peaks Tepeler - + Refresh Rate Tazeleme Oranı - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff Çözümleyici Düşüşü - - + + Slowest En yavaş - - + + Slow Yavaş - - + + Medium Orta - - + + Fast Hızlı - - + + Fastest En hızlı - + Peaks Falloff Tepe Düşüşü - + Background Arkaplan - + Transparent Transparan diff --git a/src/ui/translations/qmmp_uk_UA.ts b/src/ui/translations/qmmp_uk_UA.ts index d87cb079f..b17022585 100644 --- a/src/ui/translations/qmmp_uk_UA.ts +++ b/src/ui/translations/qmmp_uk_UA.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled Увімкнено - - - - - + + + + + Description Пояснення - - - - - + + + + + Filename Ім'я файлу - + Artist Виконавець - + Album Альбом @@ -221,57 +221,57 @@ Вимкнено - + Title Назва - + Track number Номер треку - + Two-digit track number 2- розрядний номер трека - + Disc number Номер диску - + Condition Умова - + Genre Жанр - + Composer Композитор - + File name Ім'я файлу - + File path Шлях файлу - + Year Рік - + Comment Коментар @@ -376,17 +376,22 @@ Додатково - + + 16-bit output + + + + Close Закрити - + Archived skin Упакована тема - + Unarchived skin Розпакована тема @@ -598,12 +603,12 @@ Конвертувати %20 в пробіл - + Select Skin Files Вибрати файли скінів - + Skin files Файли скінів @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode Режим візуалізації - + Analyzer Аналізатор - + Scope Осцилограф - + Off Вимкнено - + Analyzer Mode Режим аналізатора - + Normal Звичайний - + Fire Вогонь - + Vertical Lines Вертикальні лінії - + Lines Лінії - + Bars Смужки - + Peaks Піки - + Refresh Rate Частота оновлення - + 50 fps 50 ф/с - + 25 fps 25 ф/с - + 10 fps 10 ф/с - + 5 fps 5 ф/с - + Analyzer Falloff Падіння аналізатора - - + + Slowest Найповільніше - - + + Slow Повільне - - + + Medium Середнє - - + + Fast Швидке - - + + Fastest Найшвидше - + Peaks Falloff Падіння піків - + Background Тло - + Transparent Прозорість diff --git a/src/ui/translations/qmmp_zh_CN.ts b/src/ui/translations/qmmp_zh_CN.ts index de6287ef7..b2e0f87f5 100644 --- a/src/ui/translations/qmmp_zh_CN.ts +++ b/src/ui/translations/qmmp_zh_CN.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled 启用 - - - - - + + + + + Description 描述 - - - - - + + + + + Filename 文件名 - + Artist 艺术家 - + Album 专辑 @@ -221,57 +221,57 @@ - + Title 标题 - + Track number - + Two-digit track number - + Disc number - + Condition - + Genre 流派 - + Composer - + File name - + File path - + Year 年代 - + Comment 备注 @@ -376,17 +376,22 @@ 高级 - + + 16-bit output + + + + Close 关闭 - + Archived skin 压缩皮肤 - + Unarchived skin 未压缩皮肤 @@ -598,12 +603,12 @@ 转换 %20 为空格 - + Select Skin Files 选择皮肤文件 - + Skin files 皮肤文件 @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode 可视化模式 - + Analyzer 分析器 - + Scope 示波器 - + Off 关闭 - + Analyzer Mode 分析模式 - + Normal 标准 - + Fire 火花 - + Vertical Lines 垂直线 - + Lines 线形 - + Bars 条形 - + Peaks 峰值 - + Refresh Rate 刷新率 - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff 分析器下降速度 - - + + Slowest 最慢 - - + + Slow - - + + Medium - - + + Fast - - + + Fastest 最快 - + Peaks Falloff 峰值下降速度 - + Background 背景 - + Transparent 透明 diff --git a/src/ui/translations/qmmp_zh_TW.ts b/src/ui/translations/qmmp_zh_TW.ts index 39344f0c1..d21402452 100644 --- a/src/ui/translations/qmmp_zh_TW.ts +++ b/src/ui/translations/qmmp_zh_TW.ts @@ -173,40 +173,40 @@ ConfigDialog - - - - - + + + + + Enabled 啟用 - - - - - + + + + + Description 說明 - - - - - + + + + + Filename 檔名 - + Artist 藝術家 - + Album 專輯 @@ -221,57 +221,57 @@ - + Title 標題 - + Track number - + Two-digit track number - + Disc number - + Condition - + Genre 流派 - + Composer - + File name - + File path - + Year 年代 - + Comment 備註 @@ -376,17 +376,22 @@ 進階 - + + 16-bit output + + + + Close 關閉 - + Archived skin 封包皮膚 - + Unarchived skin 未封包皮膚 @@ -598,12 +603,12 @@ 轉換 %20 為空格 - + Select Skin Files 選取皮膚檔案 - + Skin files 皮膚檔案 @@ -821,132 +826,132 @@ MainVisual - + Visualization Mode 可視化型態 - + Analyzer 解析器 - + Scope 示波器 - + Off 關閉 - + Analyzer Mode 解析型態 - + Normal 標準 - + Fire 火花 - + Vertical Lines 垂直線 - + Lines 線形 - + Bars 條形 - + Peaks 峰值 - + Refresh Rate 刷新率 - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff 解析器下降速度 - - + + Slowest 最慢 - - + + Slow - - + + Medium - - + + Fast - - + + Fastest 最快 - + Peaks Falloff 峰值下降速度 - + Background 背景 - + Transparent 透明 -- cgit v1.2.3-13-gbd6f