JUCE VST2 插件:使用 setCurrentProgram() 更新参数和状态
{"title":"//在JUCE7.0.5的代码中,我选择了预置参数,然后分别保存选择前后的MemoryBlock 发现他们没有变化\n //Using setCurrentProgram() in VST2 plugins doesn’t change parameters or state (host side)\n struct ProgramAudioProcessorEditor : public AudioProcessorEditor\n {\n explicit ProgramAudioProcessorEditor (AudioProcessor& p)\n : AudioProcessorEditor (p)\n {\n setOpaque (true);\n\n addAndMakeVisible (listBox);\n listBox.updateContent();\n\n const auto rowHeight = listBox.getRowHeight();\n\n setSize (400, jlimit (rowHeight, 400, p.getNumPrograms() * rowHeight));\n }\n\n void paint (Graphics& g) override\n {\n g.fillAll (Colours::grey);\n }\n\n void resized() override\n {\n listBox.setBounds (getLocalBounds());\n }\n\n private:\n class Model : public ListBoxModel\n {\n public:\n Model (Component& o, AudioProcessor& p)\n : owner (o), proc (p) {}\n\n int getNumRows() override\n {\n return proc.getNumPrograms();\n }\n\n void paintListBoxItem (int rowNumber,\n Graphics& g,\n int width,\n int height,\n bool rowIsSelected) override\n {\n const auto textColour = owner.findColour (ListBox::textColourId);\n\n if (rowIsSelected)\n {\n const auto defaultColour = owner.findColour (ListBox::backgroundColourId);\n const auto c = rowIsSelected ? defaultColour.interpolatedWith (textColour, 0.5f)\n : defaultColour;\n\n g.fillAll (c);\n }\n\n g.setColour (textColour);\n g.drawText (proc.getProgramName (rowNumber),\n Rectangle
原文地址: https://www.cveoy.top/t/topic/pn87 著作权归作者所有。请勿转载和采集!