Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Juce VST Devel-从AudioProcessor更新Processor编辑器的SliderAttachments值_C++_Slider_Vst_Juce - Fatal编程技术网

C++ Juce VST Devel-从AudioProcessor更新Processor编辑器的SliderAttachments值

C++ Juce VST Devel-从AudioProcessor更新Processor编辑器的SliderAttachments值,c++,slider,vst,juce,C++,Slider,Vst,Juce,我正在努力开发一款用户友好型压缩机。一开始我有很多疑问,最后我基于代码中命名的GNU下的两个项目 我正在更新inc/dec按钮中的一些插件参数值,这取决于压缩程度,并将直接作用于压缩机的inc/dec值(从1切换到5)切换为更改值 我正在“参数更改”功能中执行音频压缩机器的设置,如下所示: void SimpleCompressorAudioProcessor::parameterChanged(const String& parameterID, float newValue) {

我正在努力开发一款用户友好型压缩机。一开始我有很多疑问,最后我基于代码中命名的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;
}
void SimpleCompressorAudioProcessor::parameterChanged(常量字符串和parameterID,浮点新值)
{
如果(参数ID==“阈值”)
{
压缩机。设置阈值(新值);
特征改变=真;
}
else if(参数ID==“膝关节”)
{
压缩机。设置膝关节(新值);
特征改变=真;
}
else if(参数ID==“攻击”){
压缩机设置攻击时间(新值/1000);
特征改变=真;
}
else if(参数ID==“释放”){
压缩机。设置释放时间(新值/1000);
特征改变=真;
}
else if(参数ID==“比率”)
{
如果(新值>15.9f)
compressor.setRatio(std::numeric_limits::infinity());
其他的
压缩机设定比(新值);
特征改变=真;
}
else if(参数ID==“补偿”)
{
压缩机设置补偿增益(新值);
特征改变=真;
}
else if(参数ID==“旁路”)
{
特征改变=真;
}
else if(参数ID==“hpf”)
{
//hpf=(bool)newValue;
特征改变=真;
}
else if(参数ID==“expMode”){
特征改变=真;
}
else if(参数ID==“compDegree”){
压缩机。设置膝关节(0.5);
压缩机。设定阈值(-20);
压缩机设定比(3.0);
开关(((int)*parameters.getRawParameterValue(“compDegree”))
{
案例1:
压缩机设定攻击时间(6/1000);
压缩机。设定释放时间(2/1000);
压缩机设置补偿增益(1);
打破
案例2:
压缩机设定攻击时间(5/1000);
压缩机。设定释放时间(3/1000);
压缩机设置补偿增益(2);
打破
案例3:
压缩机设定攻击时间(4/1000);
压缩机。设定释放时间(4/1000);
压缩机设置补偿增益(3);
打破
案例4:
压缩机设定攻击时间(3/1000);
压缩机。设定释放时间(5/1000);
压缩机设置补偿增益(4);
打破
案例5:
压缩机设定攻击时间(2/1000);
压缩机。设定释放时间(6/1000);
压缩机设置补偿增益(5);
打破
违约:
打破
}
parameters.state.sendPropertyChangeMessage(“攻击”);
parameters.state.sendPropertyChangeMessage(“发布”);
parameters.state.sendPropertyChangeMessage(“补偿”);
特征改变=真;
updateHostDisplay();
}
其他的
茉莉花;
}
我很惊讶,所以我没有办法用我设置的值来更新幻灯片附件文本框的值

如果有人能提供帮助,并建议一些风格或最佳实践编码,我会很高兴,因为现在项目已经停止

我已经上传到github@