JUCE框架教程(6)——通过AudioProcessorValuetTeeState链接数据和UI
JUCE框架教程(6)——通过AudioProcessorValuetTeeState链接数据和UI
上节我们讲到了plugin的基本结构,processor和editor
https://blog.csdn.net/m0_56699208/article/details/126533353?spm=1001.2014.3001.5501
接下来我们会用一个叫AudioProcessorValuetTeeState的类来链接他们。
首先,我们进入PluginProcessor.h
文件,添加一个AudioProcessorValuetTeeState
类。
juce::AudioProcessorValueTreeState apvts;
在private下面,构建一个函数,返回值为juce::AudioProcessorValueTreeState::ParameterLayout
(JUCE的参数,数据)
private:juce::AudioProcessorValueTreeState::ParameterLayout createParameters();
回到PluginProcessor.cpp
文件,末尾编写这个函数。
juce::AudioProcessorValueTreeState::ParameterLayout PlguinDemoAudioProcessor::createParameters() {std::vector<std::unique_ptr<juce::RangedAudioParameter>> params; //points of RangedAudioParameters//add params element to itparams.push_back(std::make_unique<juce::AudioParameterFloat>("Gain", "Gain", 0.0f,1.0f,0.5f));//id,name,min.max.startValuereturn{ params.begin(),params.end() };
}
注意:
1.PlguinDemo是我这个项目的名字,你应该写成自己项目名字+AudioProcessor createParameters()
2.我们创建了一个指针vector,用来存放各个参数
3.我们使用push_back()
来新建参数,最后再return出去
写完这些,我们发现上方出现了报错,这是因为类AudioProcessorValuetTeeState不存在默认构造函数造成的
此时我们需要添加一个构造函数:
添加前:
PlguinDemoAudioProcessor::PlguinDemoAudioProcessor()
#ifndef JucePlugin_PreferredChannelConfigurations: AudioProcessor(BusesProperties()
#if ! JucePlugin_IsMidiEffect
#if ! JucePlugin_IsSynth.withInput("Input", juce::AudioChannelSet::stereo(), true)
#endif.withOutput("Output", juce::AudioChannelSet::stereo(), true)
#endif)
#endif
{}
添加后:
PlguinDemoAudioProcessor::PlguinDemoAudioProcessor()
#ifndef JucePlugin_PreferredChannelConfigurations: AudioProcessor(BusesProperties()
#if ! JucePlugin_IsMidiEffect
#if ! JucePlugin_IsSynth.withInput("Input", juce::AudioChannelSet::stereo(), true)
#endif.withOutput("Output", juce::AudioChannelSet::stereo(), true)
#endif), apvts(*this, nullptr, "Parameters", createParameters())//this,null,name,functions
#endif
{}
接下来,我们进行对ProcessorEditor的编写
首先添加一个Slider滑块
juce::Slider gainSlider
在cpp中将这个滑块实例化
gainSlider.setSliderStyle(juce::Slider::SliderStyle::RotaryHorizontalVerticalDrag);gainSlider.setTextBoxStyle(juce::Slider::TextBoxBelow, true, 100, 50);addAndMakeVisible(gainSlider);
void PlguinDemoAudioProcessorEditor::resized()
{gainSlider.setBounds(getWidth() / 2 - 100, getHeight() / 2 - 50, 200, 100);
}
.h文件中添加用于绑定数据和界面的指针
std::unique_ptr<juce::AudioProcessorValueTreeState::SliderAttachment> gainSliderAtachment;
.cpp
//attach the data to the slidergainSliderAtachment = std::make_unique<juce::AudioProcessorValueTreeState::SliderAttachment>(audioProcessor.apvts,"Gain",gainSlider);
这里,我们使用了之前实例出的apvts,他存在于audioProcessor下
至此,我们成功使用AudioProcessorValuetTeeState链接数据和UI
我们可以在Processor中拿到这个变化的数据,并打印出来
auto g = apvts.getRawParameterValue("Gain");std::cout << g->load();
JUCE框架教程(6)——通过AudioProcessorValuetTeeState链接数据和UI相关推荐
- 从零搭建React全家桶框架教程
从零搭建React全家桶框架教程 源码地址:https://github.com/brickspert/react-family 欢迎star 提问反馈:blog 原文地址:https://githu ...
- 2020 年最具潜力的 44 个顶级开源项目,涵盖 11 类 AI 学习框架、平台(附链接)...
来源:AI开发者 本文约为7600字,建议阅读10分钟 本文给开发者提供了详细的各领域工具并整理了清单11 种极具潜力的 AI 工具类型. 工欲善其事必先利其器,这也是大部分开发者在日常工作中最重要开 ...
- Spring 框架教程
Spring 框架教程 Spring Framework是最流行的Java EE框架之一.本文面向希望学习Spring框架体系结构的Java开发人员,它的核心组件以及属于Spring框架伞的各种项目. ...
- API接口开发其实特简单,Python Flask Web 框架教程来了
大家好,日常工作中,无论你是数据工程师.数据挖掘工程师,甚至数据分析人员,都不可避免的与他人进行数据交互,API接口提供数据是最常见的形式. 今天我给大家分享 Python Flask Web 框架教 ...
- 26Play框架教程2学习笔记
Play框架教程2学习笔记 文章目录 1 play框架01 1.1 概述 1.2 特性 1.2.1 无缝集成现有开发环境 1.2.2 热重载和修改Bug 1.2.3 简单的无状态MVC架构 1.2.4 ...
- jfinal框架教程
jfinal框架教程 下面通过一个小例子了解jfinal的结构和特点 1.建数据库(我用的是oracle数据库,其他的相对也差不多) -- Create table create table CLAS ...
- Unittest自动化测试框架教程(四)——Python中的数据驱动测试DDT
" 数据驱动测试DDT(Data Drivern test),是自动化测试领域优势中亮眼的闪光点,在unittest测试框架中对数据驱动更是提供了强大的支持,文章通过基础概念的引入,介绍了 ...
- 物联网APP开源框架教程(二)—— iOS APP开发
如何使用核心模块开发设备控制功能(iOS APP开发) 导读:本次教程我们在开源框架代码基础上做一个控制gokit红灯开的App,Wi-Fi设备接入机智云客户端调试工具包括 iOS Demo 和And ...
- 26Play框架教程1学习笔记
Play框架教程1学习笔记 文章目录 1play教程 第一课 1.1 play是什么 1.2 REST风格是什么 1.3 play的优点和缺点 2 play教程 第二课 2.1 搭建开发环境 2.1. ...
- [超详细图文]小米/MIUI12开发版/安卓10通用magisk/面具安装EdXposed框架教程(以红米K20为例)
MIUI12开发版安装EdXposed框架(以红米K20为例) MIUI12开发版通用安装EdXposed框架教程 0.做好备份 1.确认你的MIUI是开发版并解锁BL.开启Root权限 2.安装Ma ...
最新文章
- 可微分的「OpenCV」:这是基于PyTorch的可微计算机视觉库
- jmeter 自定义参数_jmeter参数化并在jenkins上执行
- C语言使用递归算法实现Sudoku Solver算法(附完整源码)
- java内存系列:测试JDK最大内存
- mac安装brew简单方法
- np.unique( )--去除数组中的重复数字,并进行排序之后输出
- adjustViewBounds属性
- 幸福框架:模式驱动开发
- 一个简单的BP神经网络matlab程序(附函数详解)
- 玩耍redis遇到的问题之记录
- 培养一个数据人才需要多少年?
- 【免费课程】小白学数据挖掘与机器学习
- WindowsAPI 之 CreatePipe、CreateProcess
- 大数据应用案例,告诉你最真实的大数据故事
- 排列组合问题的通用算法
- 微服务拆分原则之 AKF
- 数值分析实习作业(各种插值函数与积分公式的python代码实现)
- 什么是宏任务与微任务?
- outlook 设置延迟发送邮件
- 疫情期间怎么在家里创业?推荐一个平台