Я новичок в C ++ / JUCE. Я работал над тем, чтобы запустить базовый синтезатор и просто тестировал некоторые вещи, чтобы изучить веревки.
Уже отлично работает. Но я все еще изучаю C ++ / JUCE и как объявлять классы / объекты / переменные или обращаться к ним.
Я пытаюсь изменить то, с чем я застрял.
У меня есть следующее (только выдержки для демонстрации)…
Здесь устанавливается уровень синтезатора:
struct SineWaveVoice : public SynthesiserVoice
{
SineWaveVoice() {}
bool canPlaySound (SynthesiserSound* sound) override
{
return dynamic_cast<SineWaveSound*> (sound) != nullptr;
}
void startNote (int midiNoteNumber, float velocity,
SynthesiserSound*, int /*currentPitchWheelPosition*/) override
{
currentAngle = 0.0;
level = velocity * 0.15;
tailOff = 0.0;
Т.е.. Уровень задается скоростью * 0,15.
В моей тестовой настройке у меня уже есть ручка уровня, определенная в MainContentComponent следующим образом:
class MainContentComponent : public AudioAppComponent,
private Timer
{
public:
MainContentComponent()
: synthAudioSource(keyboardState),
keyboardComponent(keyboardState, MidiKeyboardComponent::horizontalKeyboard)
{
LabeledSlider* control = new LabeledSlider("Frequency");
control->slider.setRange(20.0, 20000.0);
control->slider.setSkewFactorFromMidPoint(500.0);
control->slider.setNumDecimalPlacesToDisplay(1);
control->slider.setValue(currentFrequency, dontSendNotification);
control->slider.onValueChange = [this] { targetFrequency = frequency.slider.getValue(); };
control->slider.setTextBoxStyle(Slider::TextBoxBelow, false, 100, 20);
control->slider.setRange(50.0, 5000.0);
control->slider.setSkewFactorFromMidPoint(500.0);
control->slider.setNumDecimalPlacesToDisplay(1);
addAndMakeVisible(knobs.add(control));
control = new LabeledSlider("Level");
control->slider.setRange(0.0, 1.0);
control->slider.onValueChange = [this] { targetLevel = (float)level.slider.getValue(); };
addAndMakeVisible(knobs.add(control));
....
private:
{
float currentLevel = 0.1f, targetLevel = 0.1f;
LabeledSlider level{ "Level" };
Итак, допустим, я хочу использовать эту переменную ползунка уровня «targetLevel» для умножения на скорость в «struct» выше вместо 0,15.
Что мне нужно набрать там, чтобы иметь доступ и использовать «targetLevel»? Я пробовал несколько вещей, но не могу понять это.
Спасибо