From ba1ead27be9789f63c1dce3f7ffc38ca38476b90 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 20 Jul 2009 19:25:25 +0000 Subject: enabled modplug plugin git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1054 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Input/CMakeLists.txt | 2 +- src/plugins/Input/Input.pro | 2 +- src/plugins/Input/modplug/decoder_modplug.cpp | 257 ++++----------------- src/plugins/Input/modplug/decoder_modplug.h | 41 +--- .../modplug/translations/modplug_plugin_cs.ts | 54 +++-- .../modplug/translations/modplug_plugin_de.ts | 55 +++-- .../modplug/translations/modplug_plugin_it.ts | 56 ++--- .../modplug/translations/modplug_plugin_ru.ts | 59 ++--- .../modplug/translations/modplug_plugin_uk_UA.ts | 61 ++--- .../modplug/translations/modplug_plugin_zh_CN.ts | 58 ++--- .../modplug/translations/modplug_plugin_zh_TW.ts | 58 ++--- 11 files changed, 280 insertions(+), 423 deletions(-) (limited to 'src') diff --git a/src/plugins/Input/CMakeLists.txt b/src/plugins/Input/CMakeLists.txt index 214dfed1f..b17164880 100644 --- a/src/plugins/Input/CMakeLists.txt +++ b/src/plugins/Input/CMakeLists.txt @@ -45,7 +45,7 @@ add_subdirectory(wavpack) ENDIF(USE_WAVPACK) IF(USE_MODPLUG) -#add_subdirectory(modplug) +add_subdirectory(modplug) ENDIF(USE_MODPLUG) IF(USE_AAC) diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro index 2aff50c64..7cdba20aa 100644 --- a/src/plugins/Input/Input.pro +++ b/src/plugins/Input/Input.pro @@ -6,7 +6,7 @@ TEMPLATE = subdirs unix{ SUBDIRS += vorbis sndfile wavpack contains(CONFIG, MODPLUG_PLUGIN){ - #SUBDIRS += modplug + SUBDIRS += modplug message(***************************) message(* Modplug plugin enabled *) message(***************************) diff --git a/src/plugins/Input/modplug/decoder_modplug.cpp b/src/plugins/Input/modplug/decoder_modplug.cpp index adb11daed..c33716f28 100644 --- a/src/plugins/Input/modplug/decoder_modplug.cpp +++ b/src/plugins/Input/modplug/decoder_modplug.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008 by Ilya Kotov * + * Copyright (C) 2008-2009 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -33,7 +33,6 @@ #include #include -#include #include #include #include @@ -51,21 +50,10 @@ DecoderModPlug::DecoderModPlug(QObject *parent, DecoderFactory *d, Output *o, co : Decoder(parent, d, o) { m_path = path; - m_inited = FALSE; - m_user_stop = FALSE; - m_output_buf = 0; - m_output_bytes = 0; - m_output_at = 0; - m_bks = 0; - m_done = FALSE; - m_finish = FALSE; m_freq = 0; m_bitrate = 0; - m_seekTime = -1.0; - m_totalTime = 0.0; + m_totalTime = 0; m_chan = 0; - m_output_size = 0; - //m_modFile = 0; m_soundFile = 0; m_sampleSize = 0; m_instance = this; @@ -74,71 +62,15 @@ DecoderModPlug::DecoderModPlug(QObject *parent, DecoderFactory *d, Output *o, co DecoderModPlug::~DecoderModPlug() { deinit(); - if (m_output_buf) - delete [] m_output_buf; - m_output_buf = 0; m_instance = 0; } -void DecoderModPlug::stop() -{ - m_user_stop = TRUE; -} - -void DecoderModPlug::flush(bool final) -{ - ulong min = final ? 0 : m_bks; - - while ((! m_done && ! m_finish) && m_output_bytes > min) - { - output()->recycler()->mutex()->lock (); - - while ((! m_done && ! m_finish) && output()->recycler()->full()) - { - mutex()->unlock(); - - output()->recycler()->cond()->wait(output()->recycler()->mutex()); - - mutex()->lock (); - m_done = m_user_stop; - } - - if (m_user_stop || m_finish) - { - m_inited = FALSE; - m_done = TRUE; - } - else - { - m_output_bytes -= produceSound(m_output_buf, m_output_bytes, m_bitrate, m_chan); - m_output_size += m_bks; - m_output_at = m_output_bytes; - } - - if (output()->recycler()->full()) - { - output()->recycler()->cond()->wakeOne(); - } - - output()->recycler()->mutex()->unlock(); - } -} - bool DecoderModPlug::initialize() { - m_bks = Buffer::size(); - m_inited = m_user_stop = m_done = m_finish = FALSE; m_freq = m_bitrate = 0; m_chan = 0; - m_output_size = 0; - m_seekTime = -1.0; m_totalTime = 0.0; - if (! m_output_buf) - m_output_buf = new char[globalBufferSize]; - m_output_at = 0; - m_output_bytes = 0; - ArchiveReader reader(this); if (reader.isSupported(m_path)) m_input_buf = reader.unpack(m_path); @@ -163,171 +95,82 @@ bool DecoderModPlug::initialize() m_sampleSize = m_bps / 8 * m_chan; m_soundFile->Create((uchar*) m_input_buf.data(), m_input_buf.size()); m_bitrate = m_soundFile->GetNumChannels(); - /*if(!m_modFile) - { - qWarning("DecoderModPlug: error reading moplug file"); - return FALSE; - }*/ - m_totalTime = (qint64) m_soundFile->GetSongTime() * 1000; configure(m_freq, m_chan, m_bps); - m_inited = TRUE; return TRUE; } qint64 DecoderModPlug::totalTime() { - if (! m_inited) - return 0; - return m_totalTime; } - -void DecoderModPlug::seek(qint64 pos) -{ - m_seekTime = pos; -} - -void DecoderModPlug::deinit() +int DecoderModPlug::bitrate() { - m_inited = m_user_stop = m_done = m_finish = FALSE; - m_freq = m_bitrate = 0; - m_chan = 0; - m_output_size = 0; - if (m_soundFile) - { - m_soundFile->Destroy(); - delete m_soundFile; - m_soundFile = 0; - } - m_input_buf.clear(); + return m_bitrate; } -void DecoderModPlug::run() +qint64 DecoderModPlug::readAudio(char *audio, qint64 maxSize) { - mutex()->lock (); - - ulong len = 0; - if (!m_inited) + long len = m_soundFile->Read (audio, qMin((qint64)Buffer::size(), maxSize)) * m_sampleSize; + if (m_usePreamp) { - mutex()->unlock(); - return; - } - mutex()->unlock(); - - char *prebuf = new char[m_bks]; - - while (!m_done && !m_finish) - { - mutex()->lock (); - - //seeking - - if (m_seekTime >= 0) - { - quint32 lMax; - quint32 lMaxtime; - double lPostime; - - if (m_seekTime > (lMaxtime = m_soundFile->GetSongTime()) * 1000) - m_seekTime = lMaxtime * 1000; - lMax = m_soundFile->GetMaxPosition(); - lPostime = float(lMax) / lMaxtime; - m_soundFile->SetCurrentPos(int(m_seekTime * lPostime / 1000)); - m_seekTime = -1.0; - } - - // decode - len = m_bks > (globalBufferSize - m_output_at) ? globalBufferSize - m_output_at : m_bks; - len = m_soundFile->Read (prebuf, len) * m_sampleSize; - - //preamp - if (m_usePreamp) { + //apply preamp + if (m_bps == 16) { - //apply preamp - if (m_bps == 16) + long n = len >> 1; + for (long i = 0; i < n; i++) { - uint n = len >> 1; - for (uint i = 0; i < n; i++) - { - short old = ((short*)prebuf)[i]; - ((short*)prebuf)[i] *= m_preampFactor; - // detect overflow and clip! - if ((old & 0x8000) != - (((short*)prebuf)[i] & 0x8000)) - ((short*)prebuf)[i] = old | 0x7FFF; - - } - } - else - { - for (uint i = 0; i < len; i++) - { - uchar old = ((uchar*)prebuf)[i]; - ((uchar*)prebuf)[i] *= m_preampFactor; - // detect overflow and clip! - if ((old & 0x80) != - (((uchar*)prebuf)[i] & 0x80)) - ((uchar*)prebuf)[i] = old | 0x7F; - } + short old = ((short*)audio)[i]; + ((short*)audio)[i] *= m_preampFactor; + // detect overflow and clip! + if ((old & 0x8000) != + (((short*)audio)[i] & 0x8000)) + ((short*)audio)[i] = old | 0x7FFF; } } - } - - memmove(m_output_buf + m_output_at, prebuf, len); - - if (len > 0) - { - m_output_at += len; - m_output_bytes += len; - - if (output()) - flush(); - - } - else if (len == 0) - { - flush(TRUE); - - if (output()) + else { - output()->recycler()->mutex()->lock (); - // end of stream - while (! output()->recycler()->empty() && ! m_user_stop) + for (long i = 0; i < len; i++) { - output()->recycler()->cond()->wakeOne(); - mutex()->unlock(); - output()->recycler()->cond()->wait(output()->recycler()->mutex()); - mutex()->lock (); + uchar old = ((uchar*)audio)[i]; + ((uchar*)audio)[i] *= m_preampFactor; + // detect overflow and clip! + if ((old & 0x80) != + (((uchar*)audio)[i] & 0x80)) + ((uchar*)audio)[i] = old | 0x7F; } - output()->recycler()->mutex()->unlock(); - } - - m_done = TRUE; - if (! m_user_stop) - { - m_finish = TRUE; } } - else - { - // error while read - qWarning("DecoderModPlug: Error while decoding stream, File appears to be corrupted"); - m_finish = TRUE; - } - mutex()->unlock(); } + return len; +} - mutex()->lock (); - - if (m_finish) - finish(); +void DecoderModPlug::seekAudio(qint64 pos) +{ + quint32 lMax; + quint32 lMaxtime; + double lPostime; + + if (pos > (lMaxtime = m_soundFile->GetSongTime()) * 1000) + pos = lMaxtime * 1000; + lMax = m_soundFile->GetMaxPosition(); + lPostime = float(lMax) / lMaxtime; + m_soundFile->SetCurrentPos(int(pos * lPostime / 1000)); +} - mutex()->unlock(); - delete prebuf; - deinit(); +void DecoderModPlug::deinit() +{ + m_freq = m_bitrate = 0; + m_chan = 0; + if (m_soundFile) + { + m_soundFile->Destroy(); + delete m_soundFile; + m_soundFile = 0; + } + m_input_buf.clear(); } void DecoderModPlug::readSettings() diff --git a/src/plugins/Input/modplug/decoder_modplug.h b/src/plugins/Input/modplug/decoder_modplug.h index 8a14443b3..6d5a6dff7 100644 --- a/src/plugins/Input/modplug/decoder_modplug.h +++ b/src/plugins/Input/modplug/decoder_modplug.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008 by Ilya Kotov * + * Copyright (C) 2008-2009 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -31,49 +31,30 @@ public: DecoderModPlug(QObject *, DecoderFactory *, Output *, const QString &path); virtual ~DecoderModPlug(); + void readSettings(); + static DecoderModPlug* instance(); // Standard Decoder API bool initialize(); qint64 totalTime(); - void seek(qint64); - void stop(); - - void readSettings(); - static DecoderModPlug* instance(); + int bitrate(); private: - // thread run function - void run(); - - // helper functions - void flush(bool = FALSE); + qint64 readAudio(char *audio, qint64 maxSize); + void seekAudio(qint64 time); + //helper function void deinit(); - //ModPlug_Settings m_modSettings; - //CSoundFile *m_modFile; CSoundFile *m_soundFile; - bool m_inited, m_user_stop; int m_bps; //bits per sample - - - //input buffer - QByteArray m_input_buf; - - // output buffer - char *m_output_buf; - ulong m_output_bytes, m_output_at; - - unsigned int m_bks; //block size - bool m_done, m_finish; - long m_freq, m_bitrate; - int m_chan, m_sampleSize; - qint64 m_output_size; - qint64 m_totalTime, m_seekTime; + QByteArray m_input_buf; //input buffer + quint32 m_freq; + int m_chan, m_sampleSize, m_bitrate; + qint64 m_totalTime; double m_preampFactor; bool m_usePreamp; QString m_path; static DecoderModPlug* m_instance; }; - #endif // DECODER_MODPLUG_H diff --git a/src/plugins/Input/modplug/translations/modplug_plugin_cs.ts b/src/plugins/Input/modplug/translations/modplug_plugin_cs.ts index 767cd2b50..bb2db69c4 100644 --- a/src/plugins/Input/modplug/translations/modplug_plugin_cs.ts +++ b/src/plugins/Input/modplug/translations/modplug_plugin_cs.ts @@ -1,5 +1,6 @@ - + + DecoderModPlugFactory @@ -13,42 +14,42 @@ Soubory ModPlug - + About ModPlug Audio Plugin O modulu ModPlug - + Qmmp ModPlug Audio Plugin Vstupní modul Qmmp ModPlug - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autor: Ilja Kotov <forkotov02@hotmail.ru> - + Based on the Modplug Plugin for Xmms Založeno na modulu Modplug pro XMMS - + Modplug Plugin developers: Vývojáři modulu Modplug: - + Olivier Lapicque <olivierl@jps.net> Olivier Lapicque <olivierl@jps.net> - + Kenton Varda <temporal@gauge3d.org> Kenton Varda <temporal@gauge3d.org> - + Konstanty Bialkowski <konstanty@ieee.org> Konstanty Bialkowski <konstanty@ieee.org> @@ -56,12 +57,13 @@ DetailsDialog + - - - + Title: Název: @@ -71,7 +73,7 @@ Zavřít - + Length: Délka: @@ -81,37 +83,37 @@ Počet kanálů: - + File name: Název souboru: - + Type: Typ: - + Speed: Rychlost: - + Tempo: Tempo: - + Samples: Vzorky: - + Instruments: Nástroje: - + Patterns: Patterny: @@ -131,6 +133,8 @@ Vzorky + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -155,14 +159,12 @@ p, li { white-space: pre-wrap; } SettingsDialog - OK - OK + OK - Cancel - Zrušit + Zrušit @@ -265,16 +267,21 @@ p, li { white-space: pre-wrap; } Dozvuk + Depth (%) Hloubka (%) + + + 0 0 + Delay (ms) Zpoždění (ms) @@ -387,9 +394,8 @@ předzesílení může způsobit přebuzení! Donekonečna - Apply - Aplikovat + Aplikovat diff --git a/src/plugins/Input/modplug/translations/modplug_plugin_de.ts b/src/plugins/Input/modplug/translations/modplug_plugin_de.ts index e2330d2e6..6b3a35ea3 100644 --- a/src/plugins/Input/modplug/translations/modplug_plugin_de.ts +++ b/src/plugins/Input/modplug/translations/modplug_plugin_de.ts @@ -4,52 +4,52 @@ DecoderModPlugFactory - + ModPlug Plugin ModPlug-Modul - + ModPlug Files ModPlug-Dateien - + About ModPlug Audio Plugin Über ModPlug-Audio-Modul - + Qmmp ModPlug Audio Plugin Qmmp ModPlug-Audio-Modul - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autor: Ilya Kotov <forkotov02@hotmail.ru> - + Based on the Modplug Plugin for Xmms Basiert auf dem Modplug-Modul für Xmms - + Modplug Plugin developers: Modplug-Modul-Entwickler: - + Olivier Lapicque <olivierl@jps.net> Olivier Lapicque <olivierl@jps.net> - + Kenton Varda <temporal@gauge3d.org> Kenton Varda <temporal@gauge3d.org> - + Konstanty Bialkowski <konstanty@ieee.org> Konstanty Bialkowski <konstanty@ieee.org> @@ -57,47 +57,47 @@ DetailsDialog - + File name: Dateiname: - + Title: Titel: - + Type: Typ: - + Length: Länge: - + Speed: Geschwindigkeit: - + Tempo: Tempo: - + Samples: Samples: - + Instruments: Instrumente: - + Patterns: Pattern: @@ -117,6 +117,7 @@ Allgemein + - - @@ -127,6 +128,8 @@ Samples + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -253,6 +256,9 @@ p, li { white-space: pre-wrap; } Hall + + + 0 0 @@ -348,26 +354,25 @@ p, li { white-space: pre-wrap; } Endlosschleife - OK - OK + OK - Apply - Anwenden + Anwenden - Cancel - Abbrechen + Abbrechen + Depth (%) Intensität (%) + Delay (ms) Verzögerung (ms) diff --git a/src/plugins/Input/modplug/translations/modplug_plugin_it.ts b/src/plugins/Input/modplug/translations/modplug_plugin_it.ts index c57ec6b0d..45349398a 100644 --- a/src/plugins/Input/modplug/translations/modplug_plugin_it.ts +++ b/src/plugins/Input/modplug/translations/modplug_plugin_it.ts @@ -1,56 +1,55 @@ - DecoderModPlugFactory - + ModPlug Plugin Modulo ModPlug - + ModPlug Files Brani ModPlug - + About ModPlug Audio Plugin Info sul modulo audio ModPlug - + Qmmp ModPlug Audio Plugin Modulo audio ModPlug per Qmmp - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autore: Ilya Kotov <forkotov02@hotmail.ru> - + Based on the Modplug Plugin for Xmms Basato sul Modulo Modplug per Xmms - + Modplug Plugin developers: Sviluppatori del modulo Modplug: - + Olivier Lapicque <olivierl@jps.net> Olivier Lapicque <olivierl@jps.net> - + Kenton Varda <temporal@gauge3d.org> Kenton Varda <temporal@gauge3d.org> - + Konstanty Bialkowski <konstanty@ieee.org> Konstanty Bialkowski <konstanty@ieee.org> @@ -58,47 +57,47 @@ DetailsDialog - + File name: Nome del brano: - + Title: Titolo: - + Type: Tipo: - + Length: Durata: - + Speed: Velocità: - + Tempo: Tempo: - + Samples: Campioni: - + Instruments: Strumenti: - + Patterns: Schema: @@ -118,6 +117,7 @@ Generale + - - @@ -128,6 +128,8 @@ Campioni + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -257,6 +259,9 @@ p, li { white-space: pre-wrap; } Riverbero + + + 0 0 @@ -352,26 +357,25 @@ p, li { white-space: pre-wrap; } Sempre - OK - OK + OK - Apply - Anwenden + Anwenden - Cancel - Abbrechen + Abbrechen + Depth (%) Intensità (%) + Delay (ms) Ritardo (ms) diff --git a/src/plugins/Input/modplug/translations/modplug_plugin_ru.ts b/src/plugins/Input/modplug/translations/modplug_plugin_ru.ts index fd928d4ae..c3b2c95d1 100644 --- a/src/plugins/Input/modplug/translations/modplug_plugin_ru.ts +++ b/src/plugins/Input/modplug/translations/modplug_plugin_ru.ts @@ -1,55 +1,55 @@ - - + + DecoderModPlugFactory - + ModPlug Plugin Модуль ModPlug - + ModPlug Files Файлы ModPlug - + About ModPlug Audio Plugin Об аудио-модуле ModPlug - + Qmmp ModPlug Audio Plugin Аудио-модуль ModPlug для Qmmp - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Разработчик: Илья Котов <forkotov02@hotmail.ru> - + Based on the Modplug Plugin for Xmms Основан на базе модуля Modplug для Xmms - + Modplug Plugin developers: Разработчики модуля Modplug: - + Olivier Lapicque <olivierl@jps.net> Olivier Lapicque <olivierl@jps.net> - + Kenton Varda <temporal@gauge3d.org> Kenton Varda <temporal@gauge3d.org> - + Konstanty Bialkowski <konstanty@ieee.org> Konstanty Bialkowski <konstanty@ieee.org> @@ -57,47 +57,47 @@ DetailsDialog - + File name: Имя файла: - + Title: Название: - + Type: Тип: - + Length: Длительность: - + Speed: Скорость: - + Tempo: Темп: - + Samples: Сэмплов: - + Instruments: Инструментов: - + Patterns: Образцов: @@ -117,6 +117,7 @@ Общие + - @@ -127,6 +128,8 @@ Сэмплы + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -253,16 +256,21 @@ p, li { white-space: pre-wrap; } Затухание + Depth (%) Интенсивность (%) + + + 0 + Delay (ms) Задержка (мс) @@ -375,19 +383,16 @@ too high may cause clipping! Повторять всегда - OK - OK + OK - Apply - Применить + Применить - Cancel - Отмена + Отмена diff --git a/src/plugins/Input/modplug/translations/modplug_plugin_uk_UA.ts b/src/plugins/Input/modplug/translations/modplug_plugin_uk_UA.ts index c31760b5c..00ff9cbe9 100644 --- a/src/plugins/Input/modplug/translations/modplug_plugin_uk_UA.ts +++ b/src/plugins/Input/modplug/translations/modplug_plugin_uk_UA.ts @@ -1,55 +1,55 @@ - - + + DecoderModPlugFactory - + ModPlug Plugin Модуль ModPlug - + ModPlug Files Файли ModPlug - + About ModPlug Audio Plugin Про аудіо-модуль ModPlug - + Qmmp ModPlug Audio Plugin Аудіо-модуль для Qmmp - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Розробник: Ілля Котов <forkotov02@hotmail.ru> - + Based on the Modplug Plugin for Xmms На базі модуля Modplug для Xmms - + Modplug Plugin developers: Розробники модуля Modplug: - + Olivier Lapicque <olivierl@jps.net> - + Kenton Varda <temporal@gauge3d.org> - + Konstanty Bialkowski <konstanty@ieee.org> @@ -57,47 +57,47 @@ DetailsDialog - + File name: Ім'я файлу: - + Title: Назва: - + Type: Тип: - + Length: Тривалість: - + Speed: Швидкість: - + Tempo: Темп: - + Samples: Семпли: - + Instruments: Інструменти: - + Patterns: Зразків: @@ -117,6 +117,7 @@ Загальні + - @@ -127,6 +128,8 @@ Семпли + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -253,16 +256,21 @@ p, li { white-space: pre-wrap; } Реверберація + Depth (%) Глибина (%) + + + 0 + Delay (ms) Затримка (мс) @@ -375,19 +383,12 @@ too high may cause clipping! Цикл назавжди - - OK - - - - Apply - Застосувати + Застосувати - Cancel - Відміна + Відміна diff --git a/src/plugins/Input/modplug/translations/modplug_plugin_zh_CN.ts b/src/plugins/Input/modplug/translations/modplug_plugin_zh_CN.ts index 7975c7969..4db27d3b5 100644 --- a/src/plugins/Input/modplug/translations/modplug_plugin_zh_CN.ts +++ b/src/plugins/Input/modplug/translations/modplug_plugin_zh_CN.ts @@ -1,54 +1,55 @@ - + + DecoderModPlugFactory - + ModPlug Plugin ModPlug 插件 - + ModPlug Files ModPlug 文件 - + About ModPlug Audio Plugin 关于 ModPlug 音频插件 - + Qmmp ModPlug Audio Plugin Qmmp ModPlug 音频插件 - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> 作者:Ilya Kotov <forkotov02@hotmail.ru> - + Based on the Modplug Plugin for Xmms 基于 Modplug 的 Xmms 插件 - + Modplug Plugin developers: ModPlug 插件开发者: - + Olivier Lapicque <olivierl@jps.net> Olivier Lapicque <olivierl@jps.net> - + Kenton Varda <temporal@gauge3d.org> Kenton Varda <temporal@gauge3d.org> - + Konstanty Bialkowski <konstanty@ieee.org> Konstanty Bialkowski <konstanty@ieee.org> @@ -56,47 +57,47 @@ DetailsDialog - + File name: 文件名: - + Title: 标题: - + Type: 类型: - + Length: 长度: - + Speed: 速度: - + Tempo: 节拍: - + Samples: 取样率: - + Instruments: 乐器: - + Patterns: 结构: @@ -116,6 +117,7 @@ 常规 + - - @@ -126,6 +128,8 @@ 取样率 + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -252,6 +256,9 @@ p, li { white-space: pre-wrap; } 余响 + + + 0 0 @@ -347,26 +354,25 @@ p, li { white-space: pre-wrap; } 永远循环 - OK - 确定 + 确定 - Apply - 应用 + 应用 - Cancel - 取消 + 取消 + Depth (%) 深度 (%) + Delay (ms) 延迟 (ms) diff --git a/src/plugins/Input/modplug/translations/modplug_plugin_zh_TW.ts b/src/plugins/Input/modplug/translations/modplug_plugin_zh_TW.ts index 75f2a5b9c..cd292afa0 100644 --- a/src/plugins/Input/modplug/translations/modplug_plugin_zh_TW.ts +++ b/src/plugins/Input/modplug/translations/modplug_plugin_zh_TW.ts @@ -1,54 +1,55 @@ - + + DecoderModPlugFactory - + ModPlug Plugin ModPlug 插件 - + ModPlug Files ModPlug 檔案 - + About ModPlug Audio Plugin 關於 ModPlug 聲訊插件 - + Qmmp ModPlug Audio Plugin Qmmp ModPlug 聲訊插件 - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> 作者:Ilya Kotov <forkotov02@hotmail.ru> - + Based on the Modplug Plugin for Xmms 基於 Modplug 的 Xmms 插件 - + Modplug Plugin developers: ModPlug 插件開發者: - + Olivier Lapicque <olivierl@jps.net> Olivier Lapicque <olivierl@jps.net> - + Kenton Varda <temporal@gauge3d.org> Kenton Varda <temporal@gauge3d.org> - + Konstanty Bialkowski <konstanty@ieee.org> Konstanty Bialkowski <konstanty@ieee.org> @@ -56,47 +57,47 @@ DetailsDialog - + File name: 檔名: - + Title: 標題: - + Type: 類別: - + Length: 長度: - + Speed: 速度: - + Tempo: 節拍: - + Samples: 取樣率: - + Instruments: 樂器: - + Patterns: 架構: @@ -116,6 +117,7 @@ 常規 + - - @@ -126,6 +128,8 @@ 取樣率 + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -252,6 +256,9 @@ p, li { white-space: pre-wrap; } 餘響 + + + 0 0 @@ -347,26 +354,25 @@ p, li { white-space: pre-wrap; } 永遠循環 - OK - 確定 + 確定 - Apply - 應用 + 應用 - Cancel - 取消 + 取消 + Depth (%) 深度 (%) + Delay (ms) 延遲 (ms) -- cgit v1.2.3-13-gbd6f