JUCE VST开发-在音频压缩器上更新滑块中的附件时出现问题

如何解决JUCE VST开发-在音频压缩器上更新滑块中的附件时出现问题

我正在尝试开发一种用户友好的压缩机。一开始我有很多疑问,最终我基于代码中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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?