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