diff --git a/data/locale/ja.ts b/data/locale/ja.ts index 0344d5f57..b249b2d50 100644 --- a/data/locale/ja.ts +++ b/data/locale/ja.ts @@ -5057,7 +5057,7 @@ Please make sure you have read-permission to the file and the directory containi Load waveform - + 波形の読み込み Click to load a waveform from a sample file @@ -5171,7 +5171,7 @@ Please make sure you have read-permission to the file and the directory containi ZynAddSubFxView Show GUI - + GUI を表示 Click here to show or hide the graphical user interface (GUI) of ZynAddSubFX. @@ -5289,11 +5289,11 @@ Please make sure you have read-permission to the file and the directory containi bbEditor Beat+Bassline Editor - ビート+ベースライン エディタ + Beat+Bassline-Editor Play/pause current beat/bassline (Space) - 現在の beat/bassline を 再生/ポーズ (Space) + 現在の beat/bassline を 再生/一時停止 (Space) Add beat/bassline @@ -5328,7 +5328,7 @@ Please make sure you have read-permission to the file and the directory containi bbTCOView Open in Beat+Bassline-Editor - ビート+ベースライン-エディタを開く + Beat+Bassline-Editor を開く Reset name @@ -5373,19 +5373,19 @@ Please make sure you have read-permission to the file and the directory containi Sine wave - + サイン波 Triangle wave - + 三角波 Saw wave - + のこぎり波 Square wave - + 矩形波 White noise wave @@ -5429,7 +5429,7 @@ Please make sure you have read-permission to the file and the directory containi Click here for a square-wave. - クリックすると方形波 + クリックすると矩形波 Click here for white-noise. @@ -5448,7 +5448,7 @@ Please make sure you have read-permission to the file and the directory containi Input gain: - + 入力ゲイン: OUTPUT @@ -5456,7 +5456,7 @@ Please make sure you have read-permission to the file and the directory containi Output gain: - + 出力ゲイン: ATTACK @@ -5476,7 +5476,7 @@ Please make sure you have read-permission to the file and the directory containi Reset waveform - + 波形をリセット Click here to reset the wavegraph back to default @@ -5535,11 +5535,11 @@ Please make sure you have read-permission to the file and the directory containi dynProcControls Input gain - + 入力ゲイン Output gain - + 出力ゲイン Attack time @@ -7956,20 +7956,20 @@ Latency: %2 ms vestigeInstrument Loading plugin - プラグインをロードしています + プラグインを読み込んでいます Please wait while loading VST-plugin... - VST-プラグインをロードする間お待ちください... + VST-プラグインを読み込む間お待ちください... Failed loading VST-plugin - VST-プラグインのロードに失敗しました + VST-プラグインの読み込みに失敗しました The VST-plugin %1 could not be loaded for some reason. If it runs with other VST-software under Linux, please contact an LMMS-developer! - VST-plugin %1 がいくつかの理由でロードできませんでした。 + VST-plugin %1 がいくつかの理由で読み込みできませんでした。 もしその VST が Linuxの他のVST-ソフトウェアで動作するならば LMMS の開発者に連絡してください! diff --git a/include/Mixer.h b/include/Mixer.h index 7c9875236..15c23e54e 100644 --- a/include/Mixer.h +++ b/include/Mixer.h @@ -25,6 +25,14 @@ #ifndef _MIXER_H #define _MIXER_H +// denormals stripping +#ifdef __SSE__ +#include +#endif +#ifdef __SSE3__ +#include +#endif + #include "lmmsconfig.h" #ifndef LMMS_USE_3RDPARTY_LIBSRC diff --git a/include/lmms_math.h b/include/lmms_math.h index ef0066125..f65670a91 100644 --- a/include/lmms_math.h +++ b/include/lmms_math.h @@ -47,6 +47,12 @@ using namespace std; #ifndef _isinff #define _isinff(x) isinf(x) #endif +#ifndef exp10 +#define exp10(x) pow( 10, x ) +#endif +#ifndef exp10f +#define exp10f(x) powf( 10, x ) +#endif #endif #ifdef __INTEL_COMPILER @@ -203,7 +209,7 @@ static inline float dbvToAmp( float dbv ) { return isinff( dbv ) ? 0.0f - : powf( 10.0f, dbv * 0.05f ); + : exp10f( dbv * 0.05f ); } diff --git a/plugins/dynamics_processor/dynamics_processor.cpp b/plugins/dynamics_processor/dynamics_processor.cpp index b7dc866a1..fa7973dd1 100644 --- a/plugins/dynamics_processor/dynamics_processor.cpp +++ b/plugins/dynamics_processor/dynamics_processor.cpp @@ -76,12 +76,12 @@ dynProcEffect::~dynProcEffect() inline void dynProcEffect::calcAttack() { - m_attCoeff = pow( 10, ( DNF_LOG / ( m_dpControls.m_attackModel.value() * 0.001 ) ) / engine::mixer()->processingSampleRate() ); + m_attCoeff = exp10( ( DNF_LOG / ( m_dpControls.m_attackModel.value() * 0.001 ) ) / engine::mixer()->processingSampleRate() ); } inline void dynProcEffect::calcRelease() { - m_relCoeff = pow( 10, ( -DNF_LOG / ( m_dpControls.m_releaseModel.value() * 0.001 ) ) / engine::mixer()->processingSampleRate() ); + m_relCoeff = exp10( ( -DNF_LOG / ( m_dpControls.m_releaseModel.value() * 0.001 ) ) / engine::mixer()->processingSampleRate() ); } diff --git a/plugins/monstro/Monstro.cpp b/plugins/monstro/Monstro.cpp index 183fe6e5c..139f0b7d6 100644 --- a/plugins/monstro/Monstro.cpp +++ b/plugins/monstro/Monstro.cpp @@ -1440,14 +1440,14 @@ void MonstroInstrument::updateSamplerate() void MonstroInstrument::updateSlope1() { const float slope = m_env1Slope.value(); - m_slope1 = powf( 10.0f, slope * -1.0f ); + m_slope1 = exp10f( slope * -1.0f ); } void MonstroInstrument::updateSlope2() { const float slope = m_env2Slope.value(); - m_slope2 = powf( 10.0f, slope * -1.0f ); + m_slope2 = exp10f( slope * -1.0f ); } diff --git a/src/core/AutomationPattern.cpp b/src/core/AutomationPattern.cpp index 61e63e86b..c2f32d22b 100644 --- a/src/core/AutomationPattern.cpp +++ b/src/core/AutomationPattern.cpp @@ -109,7 +109,7 @@ void AutomationPattern::addObject( AutomatableModel * _obj, bool _search_dup ) if( m_objects.isEmpty() && hasAutomation() == false ) { // then initialize first value - putValue( MidiTime(0), _obj->value(), false ); + putValue( MidiTime(0), _obj->inverseScaledValue( _obj->value() ), false ); } m_objects += _obj; diff --git a/src/core/Mixer.cpp b/src/core/Mixer.cpp index e415adb67..2d49224b5 100644 --- a/src/core/Mixer.cpp +++ b/src/core/Mixer.cpp @@ -914,6 +914,15 @@ Mixer::fifoWriter::fifoWriter( Mixer* mixer, fifo * _fifo ) : m_fifo( _fifo ), m_writing( true ) { + // set denormal protection for this thread + #ifdef __SSE3__ + /* DAZ flag */ + _MM_SET_DENORMALS_ZERO_MODE( _MM_DENORMALS_ZERO_ON ); + #endif + #ifdef __SSE__ + /* FTZ flag */ + _MM_SET_FLUSH_ZERO_MODE( _MM_FLUSH_ZERO_ON ); + #endif } diff --git a/src/gui/widgets/knob.cpp b/src/gui/widgets/knob.cpp index c6f310725..b1a16f55f 100644 --- a/src/gui/widgets/knob.cpp +++ b/src/gui/widgets/knob.cpp @@ -734,7 +734,7 @@ void knob::enterValue() } else { - new_val = pow( 10.0, ( new_val / 20.0 ) ) * 100.0; + new_val = dbvToAmp( new_val ) * 100.0; } } else