Juce VST Devel-从AudioProcessor更新ProcessorEditor的SliderAttachments值

问题描述

我正在尝试开发一种用户友好的压缩机。一开始我有很多疑问,最终我基于代码中GNU下的两个项目。

我正在根据压缩程度更新inc / dec按钮上的一些插件参数值,并将该inc / dec值(从1更改为5)直接作用于压缩机以更改该值。

我正在“参数更改”功能中实现音频压缩机的设置,如下所示:

void SimpleCompressorAudioProcessor::parameterChanged(const String& parameterID,float newValue)
{
    if (parameterID == "threshold")
    {
        
            compressor.setThreshold(newValue);
            characteristicChanged = true;
        
    }
    else if (parameterID == "knee")
    {
        
            compressor.setKnee(newValue);
            characteristicChanged = true;
        
    }
    else if (parameterID == "attack") {
        
            compressor.setAttackTime(newValue / 1000);
            characteristicChanged = true;
        
    }
    else if (parameterID == "release") {
        
            compressor.setReleaseTime(newValue / 1000);
            characteristicChanged = true;
        
    }
    else if (parameterID == "ratio")
    {
        
            if (newValue > 15.9f)
                compressor.setRatio(std::numeric_limits<float>::infinity());
            else
                compressor.setRatio(newValue);
            characteristicChanged = true;
        
    }
    else if (parameterID == "makeUp")
    {
        
            compressor.setMakeUpGain(newValue);
            characteristicChanged = true;
        
    }
    else if (parameterID == "bypass")
    {
        
        
        characteristicChanged = true;
    }
    else if (parameterID == "hpf")
    {
        
            //hpf = (bool)newValue;
            characteristicChanged = true;
        
    }
    else if (parameterID == "expMode") {
        
            characteristicChanged = true;
        
    }
    else if (parameterID == "compDegree") {
        
        compressor.setKnee(0.5);
        compressor.setThreshold(-20);
        compressor.setRatio(3.0);
        switch (((int)*parameters.getRawParameterValue("compDegree")))
        {
        case 1:

            compressor.setAttackTime(6 / 1000);
            compressor.setReleaseTime(2 / 1000);
            compressor.setMakeUpGain(1);
            
            break;
        case 2:

            compressor.setAttackTime(5 / 1000);
            compressor.setReleaseTime(3 / 1000);
            compressor.setMakeUpGain(2);



            break;
        case 3:

            compressor.setAttackTime(4 / 1000);
            compressor.setReleaseTime(4 / 1000);
            compressor.setMakeUpGain(3);



            break;
        case 4:
            
            compressor.setAttackTime(3 / 1000);
            compressor.setReleaseTime(5 / 1000);
            compressor.setMakeUpGain(4);


            break;
        case 5:
            
            compressor.setAttackTime(2 / 1000);
            compressor.setReleaseTime(6 / 1000);
            compressor.setMakeUpGain(5);


            break;
        default:
            break;
        }
        parameters.state.sendPropertyChangeMessage("attack");
        parameters.state.sendPropertyChangeMessage("release");
        parameters.state.sendPropertyChangeMessage("makeUp");
        
     
            characteristicChanged = true;
            
            updateHostdisplay();
            

    }
    else
        jassertfalse;
}

我很惊讶,所以我没有办法用SliderAttachments文本框使用我设置的值更新其值。

如果有人可以提供帮助并提出一些样式或最佳实践编码,我会很高兴,因为目前该项目已停止。

我已将其上传到github @ https://github.com/ealcober/SimpleCompressor-master_incDec_bypass_hpf_Oct.git

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...