chenlh
2026-03-10 0f65a1a9267b8a7ab4678ef20b07532e4c8377ca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
#pragma once
 
#include "Parameters.h"
 
namespace ReverbHallRoom
{
    float ProgramDarkPlate[Parameter::COUNT];
#if 1
    void initPrograms(Reverb_common *common, Reverb_taps *taps, Reverb_early *early, Reverb_late *late, Reverb_eq *eq)
    {
        ProgramDarkPlate[Parameter::DryOut] = common->dry;                        //0.6f;        // 干声比例适中
        ProgramDarkPlate[Parameter::EarlyOut] = common->early;                    //0.7f;     // 早期反射输出增益
        ProgramDarkPlate[Parameter::LateOut] = common->late;                    //0.8f;     // 后期混响输出增益
        ProgramDarkPlate[Parameter::Interpolation] = common->input_mix_on;        //1.0f;     // 启用插值
        ProgramDarkPlate[Parameter::HighCutEnabled] = common->high_cut_on;        //1.0f;     // 启用高切
        ProgramDarkPlate[Parameter::LowCutEnabled] = common->low_cut_on;        //1.0f;     // 启用低切
        ProgramDarkPlate[Parameter::InputMix] = common->input_mix;                //0.25f;    // 输入交叉 25%
        ProgramDarkPlate[Parameter::HighCut] = common->high_cut;                //0.8f;     // 高切约 16kHz
        ProgramDarkPlate[Parameter::LowCut] = common->low_cut;                    //0.4f;     // 低切约 400Hz
        ProgramDarkPlate[Parameter::EqCrossSeed] = common->cross_seed;            //0.5f;     // 左右均衡中等相关性
 
        ProgramDarkPlate[Parameter::TapEnabled] = taps->multi_taps_on;            //1.0f;     // 启用早期反射
        ProgramDarkPlate[Parameter::TapCount] = taps->taps_count;                //0.7f;     // 抽头数约 180
        ProgramDarkPlate[Parameter::TapPredelay] = taps->taps_delay;            //0.4f;     // 预延迟 200ms
        ProgramDarkPlate[Parameter::TapDecay] = taps->taps_decay;                 //0.7f;     // 早期反射衰减
        ProgramDarkPlate[Parameter::TapLength] = taps->taps_length;             //0.8f;     // 早期反射长度 800ms
 
        ProgramDarkPlate[Parameter::EarlyDiffuseEnabled] = early->early_difus_on;        //1.0f;        // 启用早期扩散器    
        ProgramDarkPlate[Parameter::EarlyDiffuseCount] = early->early_count;            //0.4f;     // 早期扩散级数 5 级左右
        ProgramDarkPlate[Parameter::EarlyDiffuseDelay] = early->early_delay;            //0.3f;     // 约 37ms    
        ProgramDarkPlate[Parameter::EarlyDiffuseFeedback] = early->early_feedback;        //0.6f;        // 反馈 0.6
        ProgramDarkPlate[Parameter::EarlyDiffuseModAmount] = early->early_mod_amt;        //0.15f;    // 轻微调制
        ProgramDarkPlate[Parameter::EarlyDiffuseModRate] = early->early_mod_rate;        //0.2f;        // 约 1Hz
 
        ProgramDarkPlate[Parameter::LateMode] = late->late_mode;                        //1.0f;        // POST 模式,取内部扩散后
//        ProgramDarkPlate[Parameter::LateDiffuseEnabled] = 0.5f;//late->late_reflect_on;        //1.0f;        // 启用后期扩散
        ProgramDarkPlate[Parameter::LateDiffuseEnabled] = late->late_reflect_on;        //1.0f;        // 启用后期扩散
        ProgramDarkPlate[Parameter::LateLineCount] = late->line_count;                    //0.9f;     // 11 条延迟线
        ProgramDarkPlate[Parameter::LateLineSize] = late->line_size;                    //0.7f;     // 延迟线长度约 700ms
        ProgramDarkPlate[Parameter::LateLineModAmount] = late->line_mod_amt;            //0.3f;        // 调制深度约 0.75ms
        ProgramDarkPlate[Parameter::LateLineDecay] = late->line_decay;                    //0.25f;    // 混响时间约 2 秒(听觉调整)
        ProgramDarkPlate[Parameter::LateLineModRate] = late->line_mod_rate;                //0.25f;    // 调制速率约 1.25Hz
        ProgramDarkPlate[Parameter::LateDiffuseCount] = late->difus_count;                //0.6f;     // 后期扩散级数 5 级
//        ProgramDarkPlate[Parameter::LateDiffuseDelay] = late->difus_delay;                //0.3f;     // 约 37ms
        ProgramDarkPlate[Parameter::LateDiffuseDelay] = late->difus_delay;
        ProgramDarkPlate[Parameter::LateDiffuseFeedback] = late->difus_feedback;        //0.7f;     // 反馈 0.7
        ProgramDarkPlate[Parameter::LateDiffuseModAmount] = late->difus_mod_amt;        //0.15f;       // 轻微调制
        ProgramDarkPlate[Parameter::LateDiffuseModRate] = late->difus_mod_rate;            //0.2f;     // 约 1Hz
 
        ProgramDarkPlate[Parameter::EqLowShelfEnabled] = eq->low_shelf_on;        //0.0f;        // 禁用低架
        ProgramDarkPlate[Parameter::EqHighShelfEnabled] = eq->high_shelf_on;    //1.0f;        // 启用高架
        ProgramDarkPlate[Parameter::EqLowpassEnabled] = eq->low_pass_on;        //1.0f;        // 启用低通
        ProgramDarkPlate[Parameter::EqLowFreq] = eq->low_shelf_freq;            //0.4f;        // 低架转折 400Hz
        ProgramDarkPlate[Parameter::EqLowGain] = eq->low_shelf_gain;            //0.5f;        // 低架增益 0dB 附近
        ProgramDarkPlate[Parameter::EqHighFreq] = eq->high_shelf_freq;            //0.6f;        // 高架转折 10kHz
        ProgramDarkPlate[Parameter::EqHighGain] = eq->high_shelf_gain;            //0.7f;        // 高架增益 +8dB    
        ProgramDarkPlate[Parameter::EqCutoff] = eq->low_pass_freq;                //0.7f;        // 低通截止约 14kHz
        
        ProgramDarkPlate[Parameter::SeedDelay] = 0.5f;               // 随机种子
        ProgramDarkPlate[Parameter::SeedDiffusion] = 0.5f;
        ProgramDarkPlate[Parameter::SeedPostDiffusion] = 0.5f;
        ProgramDarkPlate[Parameter::SeedTap] = 0.5f;
        
    }
#else
    void initPrograms()
    {
        ProgramDarkPlate[Parameter::DryOut] = 0.8705999851226807;
        ProgramDarkPlate[Parameter::EarlyDiffuseCount] = 0.2960000038146973;
        ProgramDarkPlate[Parameter::EarlyDiffuseDelay] = 0.3066999912261963;
        ProgramDarkPlate[Parameter::EarlyDiffuseEnabled] = 0.0;
        ProgramDarkPlate[Parameter::EarlyDiffuseFeedback] = 0.7706999778747559;
        ProgramDarkPlate[Parameter::EarlyDiffuseModAmount] = 0.143899992108345;
        ProgramDarkPlate[Parameter::EarlyDiffuseModRate] = 0.2466999888420105;
        ProgramDarkPlate[Parameter::EarlyOut] = 0.3;    //0.0
        ProgramDarkPlate[Parameter::EqCrossSeed] = 0.0;
        ProgramDarkPlate[Parameter::EqCutoff] = 0.9759999513626099;
        ProgramDarkPlate[Parameter::EqHighFreq] = 0.5133999586105347;
        ProgramDarkPlate[Parameter::EqHighGain] = 0.7680000066757202;
        ProgramDarkPlate[Parameter::EqHighShelfEnabled] = 1.0;
        ProgramDarkPlate[Parameter::EqLowFreq] = 0.3879999816417694;
        ProgramDarkPlate[Parameter::EqLowGain] = 0.5559999942779541;
        ProgramDarkPlate[Parameter::EqLowShelfEnabled] = 0.0;
        ProgramDarkPlate[Parameter::EqLowpassEnabled] = 0.0;
        ProgramDarkPlate[Parameter::HighCut] = 0.2933000028133392;
        ProgramDarkPlate[Parameter::HighCutEnabled] = 0.0;
        ProgramDarkPlate[Parameter::InputMix] = 0.2346999943256378;
        ProgramDarkPlate[Parameter::Interpolation] = 1.0;
        ProgramDarkPlate[Parameter::LateDiffuseCount] = 0.4879999756813049;
        ProgramDarkPlate[Parameter::LateDiffuseDelay] = 0.239999994635582;
        ProgramDarkPlate[Parameter::LateDiffuseEnabled] = 1.0;
        ProgramDarkPlate[Parameter::LateDiffuseFeedback] = 0.8506999611854553;
        ProgramDarkPlate[Parameter::LateDiffuseModAmount] = 0.1467999964952469;
        ProgramDarkPlate[Parameter::LateDiffuseModRate] = 0.1666999906301498;
        ProgramDarkPlate[Parameter::LateLineCount] = 1.0;
        ProgramDarkPlate[Parameter::LateLineDecay] = 0.6345999836921692;
        ProgramDarkPlate[Parameter::LateLineModAmount] = 0.2719999849796295;
        ProgramDarkPlate[Parameter::LateLineModRate] = 0.2292999923229218;
        ProgramDarkPlate[Parameter::LateLineSize] = 0.4693999886512756;
        ProgramDarkPlate[Parameter::LateMode] = 1.0;
        ProgramDarkPlate[Parameter::LateOut] = 0.6613999605178833;
        ProgramDarkPlate[Parameter::LowCut] = 0.6399999856948853;
        ProgramDarkPlate[Parameter::LowCutEnabled] = 1.0;
        ProgramDarkPlate[Parameter::SeedDelay] = 0.2180999964475632;
        ProgramDarkPlate[Parameter::SeedDiffusion] = 0.1850000023841858;
        ProgramDarkPlate[Parameter::SeedPostDiffusion] = 0.3652999997138977;
        ProgramDarkPlate[Parameter::SeedTap] = 0.3339999914169312;
        ProgramDarkPlate[Parameter::TapDecay] = 1.0;
        ProgramDarkPlate[Parameter::TapLength] = 0.9866999983787537;
        ProgramDarkPlate[Parameter::TapPredelay] = 0.0;
        ProgramDarkPlate[Parameter::TapCount] = 0.1959999948740005;
        ProgramDarkPlate[Parameter::TapEnabled] = 0.0;
    }
#endif
}