Skip to content

Commit 2a2bd6a

Browse files
committed
Mod改善
1 parent 5112b92 commit 2a2bd6a

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

Source/DSP/UniversalEngine.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,11 +300,12 @@ namespace FDNReverb {
300300
// 長い残響ほど、コムフィルタのピークをぼかすために深いモジュレーションが必要。
301301
// Lexicon / Strymon 等の高品位リバーブの標準手法。
302302
//
303+
// ★ モジュレーション深さスケーリング(抑制版)
303304
// RT60 ≤ 1.0s → 1.0x (変化なし)
304-
// RT60 = 3.0s → 2.6x
305-
// RT60 ≥ 6.0s → 5.0x (上限)
305+
// RT60 = 3.0s → 2.0x
306+
// RT60 ≥ 5.0s → 3.0x (上限)
306307
// ─────────────────────────────────────────────────────────────────────────
307-
modDepthScale = 1.0f + juce::jlimit(0.0f, 4.0f, (rt60Mid - 1.0f) * 0.8f);
308+
modDepthScale = 1.0f + juce::jlimit(0.0f, 2.0f, (rt60Mid - 1.0f) * 0.5f);
308309

309310
constexpr float baseDB = 16.0f;
310311
float decayCompDB = 7.0f * std::log10(rt60Mid);
@@ -408,8 +409,11 @@ namespace FDNReverb {
408409
// ★ CPU最適化: fs を float にキャッシュ(processBlock 全域で使用)
409410
const float fsf = static_cast<float>(fs);
410411

411-
// ★ 金属音対策: モジュレーション深さをDecay依存でスケーリング
412-
const float depthSamples = activeParams.modAmount * 0.002f * fsf * modDepthScale;
412+
// ★ モジュレーション深さ: 二乗カーブ + ベース係数抑制
413+
// modAmount² でノブ低域を緩やかに、0.001f で全体深さを半減
414+
// 旧: modAmt=0.5 → 48smp(1ms) / 新: modAmt=0.5 → 12smp(0.25ms)
415+
const float modAmtCurved = activeParams.modAmount * activeParams.modAmount;
416+
const float depthSamples = modAmtCurved * 0.001f * fsf * modDepthScale;
413417
const float wetGain = juce::Decibels::decibelsToGain(activeParams.wetDB);
414418
const float stereoWidth = activeParams.stereoWidth;
415419
const float erLevel = activeParams.erLevel;

0 commit comments

Comments
 (0)