/* ============================================================================== This is an automatically generated file created by the Jucer! Creation date: 30 Sep 2012 11:31:53am Be careful when adding custom code to these files, as only the code within the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. Jucer version: 1.12 ------------------------------------------------------------------------------ The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-6 by Raw Material Software ltd. ============================================================================== */ //[Headers] You can add your own extra header files here... //[/Headers] #include "VelKey_PopUp.h" //[MiscUserDefs] You can add your own user definitions and misc code here... //[/MiscUserDefs] //============================================================================== VelKey_PopUp::VelKey_PopUp (JaySynthMidiCC *pMidiCC, int paramID, synth_float_t currParamValue, JaySynth::midi_note_info_t *pCurrentMidiNoteInfo, String name, VelKey_PopUp_Listener *listener) : Component (L"VelKey_PopUp"), label_parameter_name (0), groupComponent3 (0), groupComponent (0), groupComponent2 (0), m_graph_vel (0), slider_vel_kexp (0), slider_vel_scenter (0), label_vel_kexp (0), label_vel_scenter (0), label_vel_min (0), slider_vel_min (0), textButton_OK (0), button_vel_assign_enable (0), label_vel_ymin (0), label_vel_ymax (0), label_vel_x100 (0), label_vel_x0 (0), m_graph_key (0), slider_key_kexp (0), slider_key_scenter (0), label_key_kexp (0), label_vel_scenter2 (0), label_key_min (0), slider_key_min (0), button_key_assign_enable (0), label_key_ymin (0), label_key_ymax (0), label_key_x100 (0), label_key_x0 (0), comboBoxOPSel (0), label_key (0), label_vel (0), slider_vel_max (0), label_vel_max (0), label_key_max (0), slider_key_max (0), label_vel_shape (0), label_vel_skew (0), label_key_shape (0), label_key_skew (0), label_vel_skew_text (0), label_key_skew_text (0), label_vel_shape_text (0), label_key_shape_text (0), label_vel_max_text (0), label_vel_min_text (0), label_key_min_text (0), label_key_max_text (0), label_vel_y (0), label_key_y (0), label_vel_x (0), label_key_x (0), m_btn_flip_vel (0), m_btn_flip_key (0) { addAndMakeVisible (label_parameter_name = new Label (L"Parameter Name", L"Parameter Name")); label_parameter_name->setTooltip (L"This is the parameter to modulate"); label_parameter_name->setFont (Font (20.0000f, Font::plain)); label_parameter_name->setJustificationType (Justification::centredLeft); label_parameter_name->setEditable (false, false, false); label_parameter_name->setColour (Label::textColourId, Colours::white); label_parameter_name->setColour (TextEditor::textColourId, Colours::black); label_parameter_name->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (groupComponent3 = new GroupComponent (L"new group", L"Combine Curves")); groupComponent3->setColour (GroupComponent::outlineColourId, Colour (0x7fffffff)); groupComponent3->setColour (GroupComponent::textColourId, Colour (0xc0ffffff)); addAndMakeVisible (groupComponent = new GroupComponent (L"new group", L"Velocity Sensitivity Curve")); groupComponent->setColour (GroupComponent::outlineColourId, Colour (0x7fffffff)); groupComponent->setColour (GroupComponent::textColourId, Colour (0xc0ffffff)); addAndMakeVisible (groupComponent2 = new GroupComponent (L"new group", L"Key Sensitivity Curve")); groupComponent2->setColour (GroupComponent::outlineColourId, Colour (0x7fffffff)); groupComponent2->setColour (GroupComponent::textColourId, Colour (0xc0ffffff)); addAndMakeVisible (m_graph_vel = new GraphWindow()); addAndMakeVisible (slider_vel_kexp = new Slider (L"slider_vel_kexp")); slider_vel_kexp->setTooltip (L"Velocity Curve Shape"); slider_vel_kexp->setRange (0, 1, 0); slider_vel_kexp->setSliderStyle (Slider::LinearHorizontal); slider_vel_kexp->setTextBoxStyle (Slider::NoTextBox, true, 80, 20); slider_vel_kexp->addListener (this); addAndMakeVisible (slider_vel_scenter = new Slider (L"slider_vel_scenter")); slider_vel_scenter->setTooltip (L"Velocity Curve Skew"); slider_vel_scenter->setRange (0, 1, 0); slider_vel_scenter->setSliderStyle (Slider::LinearHorizontal); slider_vel_scenter->setTextBoxStyle (Slider::NoTextBox, true, 80, 20); slider_vel_scenter->addListener (this); addAndMakeVisible (label_vel_kexp = new Label (L"label_vel_kexp", L"Shape")); label_vel_kexp->setTooltip (L"Velocity Curve Shape"); label_vel_kexp->setFont (Font (15.0000f, Font::plain)); label_vel_kexp->setJustificationType (Justification::centredRight); label_vel_kexp->setEditable (false, false, false); label_vel_kexp->setColour (Label::textColourId, Colours::white); label_vel_kexp->setColour (TextEditor::textColourId, Colours::white); label_vel_kexp->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel_scenter = new Label (L"label_vel_scenter", L"Skew")); label_vel_scenter->setTooltip (L"Velocity Curve Skew"); label_vel_scenter->setFont (Font (15.0000f, Font::plain)); label_vel_scenter->setJustificationType (Justification::centredRight); label_vel_scenter->setEditable (false, false, false); label_vel_scenter->setColour (Label::textColourId, Colours::white); label_vel_scenter->setColour (TextEditor::textColourId, Colours::white); label_vel_scenter->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel_min = new Label (L"label_vel_min", L"Low")); label_vel_min->setTooltip (L"Parameter modulation at lowest velocity"); label_vel_min->setFont (Font (15.0000f, Font::plain)); label_vel_min->setJustificationType (Justification::centredRight); label_vel_min->setEditable (false, false, false); label_vel_min->setColour (Label::textColourId, Colours::white); label_vel_min->setColour (TextEditor::textColourId, Colours::white); label_vel_min->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (slider_vel_min = new Slider (L"slider_vel_min")); slider_vel_min->setTooltip (L"Parameter modulation at lowest velocity"); slider_vel_min->setRange (0, 1, 0); slider_vel_min->setSliderStyle (Slider::LinearHorizontal); slider_vel_min->setTextBoxStyle (Slider::NoTextBox, true, 80, 20); slider_vel_min->addListener (this); addAndMakeVisible (textButton_OK = new TextButton (L"OK")); textButton_OK->setTooltip (L"Close this window"); textButton_OK->addListener (this); addAndMakeVisible (button_vel_assign_enable = new ToggleButton (L"Assign Vel Enable")); button_vel_assign_enable->setTooltip (L"Set this to make Velocity Sensitivity active"); button_vel_assign_enable->setButtonText (L"Active"); button_vel_assign_enable->addListener (this); button_vel_assign_enable->setColour (ToggleButton::textColourId, Colours::white); addAndMakeVisible (label_vel_ymin = new Label (L"label_vel_ymin", L"0")); label_vel_ymin->setFont (Font (12.0000f, Font::plain)); label_vel_ymin->setJustificationType (Justification::centredRight); label_vel_ymin->setEditable (true, true, false); label_vel_ymin->setColour (Label::textColourId, Colours::white); label_vel_ymin->setColour (TextEditor::textColourId, Colours::white); label_vel_ymin->setColour (TextEditor::backgroundColourId, Colour (0x0)); label_vel_ymin->addListener (this); addAndMakeVisible (label_vel_ymax = new Label (L"label_vel_ymax", L"100")); label_vel_ymax->setFont (Font (12.0000f, Font::plain)); label_vel_ymax->setJustificationType (Justification::centredRight); label_vel_ymax->setEditable (true, true, false); label_vel_ymax->setColour (Label::textColourId, Colours::white); label_vel_ymax->setColour (TextEditor::textColourId, Colours::white); label_vel_ymax->setColour (TextEditor::backgroundColourId, Colour (0x0)); label_vel_ymax->addListener (this); addAndMakeVisible (label_vel_x100 = new Label (L"label_vel_x100", L"100%")); label_vel_x100->setFont (Font (12.0000f, Font::plain)); label_vel_x100->setJustificationType (Justification::centred); label_vel_x100->setEditable (false, false, false); label_vel_x100->setColour (Label::textColourId, Colours::white); label_vel_x100->setColour (TextEditor::textColourId, Colours::white); label_vel_x100->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel_x0 = new Label (L"label_vel_x0", L"0%")); label_vel_x0->setFont (Font (12.0000f, Font::plain)); label_vel_x0->setJustificationType (Justification::centred); label_vel_x0->setEditable (false, false, false); label_vel_x0->setColour (Label::textColourId, Colours::white); label_vel_x0->setColour (TextEditor::textColourId, Colours::white); label_vel_x0->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (m_graph_key = new GraphWindow()); addAndMakeVisible (slider_key_kexp = new Slider (L"slider_key_kexp")); slider_key_kexp->setTooltip (L"Key Curve Shape"); slider_key_kexp->setRange (0, 1, 0); slider_key_kexp->setSliderStyle (Slider::LinearHorizontal); slider_key_kexp->setTextBoxStyle (Slider::NoTextBox, true, 80, 20); slider_key_kexp->addListener (this); addAndMakeVisible (slider_key_scenter = new Slider (L"slider_key_scenter")); slider_key_scenter->setTooltip (L"Key Curve Skew"); slider_key_scenter->setRange (0, 1, 0); slider_key_scenter->setSliderStyle (Slider::LinearHorizontal); slider_key_scenter->setTextBoxStyle (Slider::NoTextBox, true, 80, 20); slider_key_scenter->addListener (this); addAndMakeVisible (label_key_kexp = new Label (L"label_key_kexp", L"Shape")); label_key_kexp->setTooltip (L"Key Curve Shape"); label_key_kexp->setFont (Font (15.0000f, Font::plain)); label_key_kexp->setJustificationType (Justification::centredRight); label_key_kexp->setEditable (false, false, false); label_key_kexp->setColour (Label::textColourId, Colours::white); label_key_kexp->setColour (TextEditor::textColourId, Colours::white); label_key_kexp->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel_scenter2 = new Label (L"label_vel_scenter", L"Skew")); label_vel_scenter2->setTooltip (L"Key Curve Skew"); label_vel_scenter2->setFont (Font (15.0000f, Font::plain)); label_vel_scenter2->setJustificationType (Justification::centredRight); label_vel_scenter2->setEditable (false, false, false); label_vel_scenter2->setColour (Label::textColourId, Colours::white); label_vel_scenter2->setColour (TextEditor::textColourId, Colours::white); label_vel_scenter2->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_key_min = new Label (L"label_key_min", L"Low")); label_key_min->setTooltip (L"Parameter modulation at lowest key"); label_key_min->setFont (Font (15.0000f, Font::plain)); label_key_min->setJustificationType (Justification::centredRight); label_key_min->setEditable (false, false, false); label_key_min->setColour (Label::textColourId, Colours::white); label_key_min->setColour (TextEditor::textColourId, Colours::white); label_key_min->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (slider_key_min = new Slider (L"slider_key_min")); slider_key_min->setTooltip (L"Parameter modulation at lowest key"); slider_key_min->setRange (0, 1, 0); slider_key_min->setSliderStyle (Slider::LinearHorizontal); slider_key_min->setTextBoxStyle (Slider::NoTextBox, true, 80, 20); slider_key_min->addListener (this); addAndMakeVisible (button_key_assign_enable = new ToggleButton (L"Assign Key Enable")); button_key_assign_enable->setTooltip (L"Set this to make Key Follow active"); button_key_assign_enable->setButtonText (L"Active"); button_key_assign_enable->addListener (this); button_key_assign_enable->setColour (ToggleButton::textColourId, Colours::white); addAndMakeVisible (label_key_ymin = new Label (L"label_key_ymin", L"0")); label_key_ymin->setFont (Font (12.0000f, Font::plain)); label_key_ymin->setJustificationType (Justification::centredRight); label_key_ymin->setEditable (true, true, false); label_key_ymin->setColour (Label::textColourId, Colours::white); label_key_ymin->setColour (TextEditor::textColourId, Colours::white); label_key_ymin->setColour (TextEditor::backgroundColourId, Colour (0x0)); label_key_ymin->addListener (this); addAndMakeVisible (label_key_ymax = new Label (L"label_key_ymax", L"100")); label_key_ymax->setFont (Font (12.0000f, Font::plain)); label_key_ymax->setJustificationType (Justification::centredRight); label_key_ymax->setEditable (true, true, false); label_key_ymax->setColour (Label::textColourId, Colours::white); label_key_ymax->setColour (TextEditor::textColourId, Colours::white); label_key_ymax->setColour (TextEditor::backgroundColourId, Colour (0x0)); label_key_ymax->addListener (this); addAndMakeVisible (label_key_x100 = new Label (L"label_key_x100", L"100%")); label_key_x100->setFont (Font (12.0000f, Font::plain)); label_key_x100->setJustificationType (Justification::centred); label_key_x100->setEditable (false, false, false); label_key_x100->setColour (Label::textColourId, Colours::white); label_key_x100->setColour (TextEditor::textColourId, Colours::white); label_key_x100->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_key_x0 = new Label (L"label_key_x0", L"0%")); label_key_x0->setFont (Font (12.0000f, Font::plain)); label_key_x0->setJustificationType (Justification::centred); label_key_x0->setEditable (false, false, false); label_key_x0->setColour (Label::textColourId, Colours::white); label_key_x0->setColour (TextEditor::textColourId, Colours::white); label_key_x0->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (comboBoxOPSel = new ComboBox (L"comboBoxOPSel")); comboBoxOPSel->setTooltip (L"Math operation to combine Velocity-Curve and Key-Curve"); comboBoxOPSel->setEditableText (false); comboBoxOPSel->setJustificationType (Justification::centredLeft); comboBoxOPSel->setTextWhenNothingSelected (String::empty); comboBoxOPSel->setTextWhenNoChoicesAvailable (L"(no choices)"); comboBoxOPSel->addItem (L"Add", 1); comboBoxOPSel->addItem (L"Sub", 2); comboBoxOPSel->addItem (L"Mul", 3); comboBoxOPSel->addListener (this); addAndMakeVisible (label_key = new Label (L"label_key", L"Key")); label_key->setFont (Font (15.0000f, Font::plain)); label_key->setJustificationType (Justification::centredLeft); label_key->setEditable (false, false, false); label_key->setColour (Label::textColourId, Colours::white); label_key->setColour (TextEditor::textColourId, Colours::white); label_key->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel = new Label (L"label_vel", L"Velocity")); label_vel->setFont (Font (15.0000f, Font::plain)); label_vel->setJustificationType (Justification::centredRight); label_vel->setEditable (false, false, false); label_vel->setColour (Label::textColourId, Colours::white); label_vel->setColour (TextEditor::textColourId, Colours::white); label_vel->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (slider_vel_max = new Slider (L"slider_vel_max")); slider_vel_max->setTooltip (L"Parameter modulation at highest velocity"); slider_vel_max->setRange (0, 1, 0); slider_vel_max->setSliderStyle (Slider::LinearHorizontal); slider_vel_max->setTextBoxStyle (Slider::NoTextBox, true, 80, 20); slider_vel_max->addListener (this); addAndMakeVisible (label_vel_max = new Label (L"label_vel_max", L"High")); label_vel_max->setTooltip (L"Parameter modulation at highest velocity"); label_vel_max->setFont (Font (15.0000f, Font::plain)); label_vel_max->setJustificationType (Justification::centredRight); label_vel_max->setEditable (false, false, false); label_vel_max->setColour (Label::textColourId, Colours::white); label_vel_max->setColour (TextEditor::textColourId, Colours::white); label_vel_max->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_key_max = new Label (L"label_key_max", L"High")); label_key_max->setTooltip (L"Parameter modulation at highest key"); label_key_max->setFont (Font (15.0000f, Font::plain)); label_key_max->setJustificationType (Justification::centredRight); label_key_max->setEditable (false, false, false); label_key_max->setColour (Label::textColourId, Colours::white); label_key_max->setColour (TextEditor::textColourId, Colours::white); label_key_max->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (slider_key_max = new Slider (L"slider_key_max")); slider_key_max->setTooltip (L"Parameter modulation at highest key"); slider_key_max->setRange (0, 1, 0); slider_key_max->setSliderStyle (Slider::LinearHorizontal); slider_key_max->setTextBoxStyle (Slider::NoTextBox, true, 80, 20); slider_key_max->addListener (this); addAndMakeVisible (label_vel_shape = new Label (L"label_vel_shape", L"-100.00")); label_vel_shape->setFont (Font (12.0000f, Font::plain)); label_vel_shape->setJustificationType (Justification::centredLeft); label_vel_shape->setEditable (true, true, false); label_vel_shape->setColour (Label::textColourId, Colours::white); label_vel_shape->setColour (TextEditor::textColourId, Colours::white); label_vel_shape->setColour (TextEditor::backgroundColourId, Colour (0x0)); label_vel_shape->addListener (this); addAndMakeVisible (label_vel_skew = new Label (L"label_vel_skew", L"100")); label_vel_skew->setFont (Font (12.0000f, Font::plain)); label_vel_skew->setJustificationType (Justification::centredLeft); label_vel_skew->setEditable (true, true, false); label_vel_skew->setColour (Label::textColourId, Colours::white); label_vel_skew->setColour (TextEditor::textColourId, Colours::white); label_vel_skew->setColour (TextEditor::backgroundColourId, Colour (0x0)); label_vel_skew->addListener (this); addAndMakeVisible (label_key_shape = new Label (L"label_key_shape", L"-100.00")); label_key_shape->setFont (Font (12.0000f, Font::plain)); label_key_shape->setJustificationType (Justification::centredLeft); label_key_shape->setEditable (true, true, false); label_key_shape->setColour (Label::textColourId, Colours::white); label_key_shape->setColour (TextEditor::textColourId, Colours::white); label_key_shape->setColour (TextEditor::backgroundColourId, Colour (0x0)); label_key_shape->addListener (this); addAndMakeVisible (label_key_skew = new Label (L"label_key_skew", L"100")); label_key_skew->setFont (Font (12.0000f, Font::plain)); label_key_skew->setJustificationType (Justification::centredLeft); label_key_skew->setEditable (true, true, false); label_key_skew->setColour (Label::textColourId, Colours::white); label_key_skew->setColour (TextEditor::textColourId, Colours::white); label_key_skew->setColour (TextEditor::backgroundColourId, Colour (0x0)); label_key_skew->addListener (this); addAndMakeVisible (label_vel_skew_text = new Label (L"label_vel_skew_text", L"Skew:")); label_vel_skew_text->setFont (Font (12.0000f, Font::plain)); label_vel_skew_text->setJustificationType (Justification::centredRight); label_vel_skew_text->setEditable (false, false, false); label_vel_skew_text->setColour (Label::textColourId, Colours::white); label_vel_skew_text->setColour (TextEditor::textColourId, Colours::white); label_vel_skew_text->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_key_skew_text = new Label (L"label_key_skew_text", L"Skew:")); label_key_skew_text->setFont (Font (12.0000f, Font::plain)); label_key_skew_text->setJustificationType (Justification::centredRight); label_key_skew_text->setEditable (false, false, false); label_key_skew_text->setColour (Label::textColourId, Colours::white); label_key_skew_text->setColour (TextEditor::textColourId, Colours::white); label_key_skew_text->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel_shape_text = new Label (L"label_vel_shape_text", L"Shape:")); label_vel_shape_text->setFont (Font (12.0000f, Font::plain)); label_vel_shape_text->setJustificationType (Justification::centredLeft); label_vel_shape_text->setEditable (false, false, false); label_vel_shape_text->setColour (Label::textColourId, Colours::white); label_vel_shape_text->setColour (TextEditor::textColourId, Colours::white); label_vel_shape_text->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_key_shape_text = new Label (L"label_key_shape_text", L"Shape:")); label_key_shape_text->setFont (Font (12.0000f, Font::plain)); label_key_shape_text->setJustificationType (Justification::centredLeft); label_key_shape_text->setEditable (false, false, false); label_key_shape_text->setColour (Label::textColourId, Colours::white); label_key_shape_text->setColour (TextEditor::textColourId, Colours::white); label_key_shape_text->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel_max_text = new Label (L"label_vel_max_text", L"High")); label_vel_max_text->setFont (Font (12.0000f, Font::plain)); label_vel_max_text->setJustificationType (Justification::centred); label_vel_max_text->setEditable (false, false, false); label_vel_max_text->setColour (Label::textColourId, Colours::white); label_vel_max_text->setColour (TextEditor::textColourId, Colours::white); label_vel_max_text->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel_min_text = new Label (L"label_vel_min_text", L"Low")); label_vel_min_text->setFont (Font (12.0000f, Font::plain)); label_vel_min_text->setJustificationType (Justification::centred); label_vel_min_text->setEditable (false, false, false); label_vel_min_text->setColour (Label::textColourId, Colours::white); label_vel_min_text->setColour (TextEditor::textColourId, Colours::white); label_vel_min_text->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_key_min_text = new Label (L"label_key_min_text", L"Low")); label_key_min_text->setFont (Font (12.0000f, Font::plain)); label_key_min_text->setJustificationType (Justification::centred); label_key_min_text->setEditable (false, false, false); label_key_min_text->setColour (Label::textColourId, Colours::white); label_key_min_text->setColour (TextEditor::textColourId, Colours::white); label_key_min_text->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_key_max_text = new Label (L"label_key_max_text", L"High")); label_key_max_text->setFont (Font (12.0000f, Font::plain)); label_key_max_text->setJustificationType (Justification::centred); label_key_max_text->setEditable (false, false, false); label_key_max_text->setColour (Label::textColourId, Colours::white); label_key_max_text->setColour (TextEditor::textColourId, Colours::white); label_key_max_text->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel_y = new Label (L"label_vel_y", L"0")); label_vel_y->setFont (Font (12.0000f, Font::plain)); label_vel_y->setJustificationType (Justification::centredRight); label_vel_y->setEditable (false, false, false); label_vel_y->setColour (Label::textColourId, Colours::silver); label_vel_y->setColour (TextEditor::textColourId, Colours::white); label_vel_y->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_key_y = new Label (L"label_key_y", L"0")); label_key_y->setFont (Font (12.0000f, Font::plain)); label_key_y->setJustificationType (Justification::centredRight); label_key_y->setEditable (false, false, false); label_key_y->setColour (Label::textColourId, Colours::silver); label_key_y->setColour (TextEditor::textColourId, Colours::white); label_key_y->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_vel_x = new Label (L"label_vel_x", L"0")); label_vel_x->setFont (Font (12.0000f, Font::plain)); label_vel_x->setJustificationType (Justification::centred); label_vel_x->setEditable (false, false, false); label_vel_x->setColour (Label::textColourId, Colours::silver); label_vel_x->setColour (TextEditor::textColourId, Colours::white); label_vel_x->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (label_key_x = new Label (L"label_key_x", L"0")); label_key_x->setFont (Font (12.0000f, Font::plain)); label_key_x->setJustificationType (Justification::centred); label_key_x->setEditable (false, false, false); label_key_x->setColour (Label::textColourId, Colours::silver); label_key_x->setColour (TextEditor::textColourId, Colours::white); label_key_x->setColour (TextEditor::backgroundColourId, Colour (0x0)); addAndMakeVisible (m_btn_flip_vel = new TextButton (L"m_btn_flip_vel")); m_btn_flip_vel->setTooltip (L"Quick swap of Low and High values"); m_btn_flip_vel->setButtonText (L"High <> Low"); m_btn_flip_vel->addListener (this); addAndMakeVisible (m_btn_flip_key = new TextButton (L"m_btn_flip_key")); m_btn_flip_key->setTooltip (L"Quick swap of Low and High values"); m_btn_flip_key->setButtonText (L"High <> Low"); m_btn_flip_key->addListener (this); //[UserPreSize] //[/UserPreSize] setSize (520, 520); //[Constructor] You can add your own custom stuff here.. createNoteNameTbl(); m_isFlipped_vel = false; m_isFlipped_key = false; paramInfoInit(&m_shape_xform , 0, "shape_xform"); paramInfoInit(&m_skew_xform , 0, "skew_xform"); paramInfoSet(&m_shape_xform, 100, 1, 0.5, -100, 0, 100, 0.01); paramInfoSet(&m_skew_xform, 1, 1, 0.0, 0, -1, 1, 0.001); m_text_vel_min = label_vel_min_text->getText(); m_text_vel_max = label_vel_max_text->getText(); m_text_key_min = label_key_min_text->getText(); m_text_key_max = label_key_max_text->getText(); this->pMidiCC = pMidiCC; m_currParamValue = currParamValue; m_paramID = paramID; m_currentMidiNoteInfo = *pCurrentMidiNoteInfo; pMidiCC_container = pMidiCC->getAtParamID(m_paramID); paramInfoInit(&m_velKey_constraints, 0, pMidiCC->getConstraints(pMidiCC_container)->pName); paramInfoCopy(&m_velKey_constraints, pMidiCC->getConstraints(pMidiCC_container)); m_velKey_constraints.pmax = max(fabs(pMidiCC->getConstraints(pMidiCC_container)->pmin), fabs(pMidiCC->getConstraints(pMidiCC_container)->pmax)); m_velKey_constraints.pmin = -m_velKey_constraints.pmax; m_velKey_constraints.scenter = 0.5; m_velKey_constraints.pcenter = -1E18; label_parameter_name->setText(name, juce::NotificationType::dontSendNotification); comboBoxOPSel->setSelectedId(1 + pMidiCC->getVelKeyCombineOP(pMidiCC_container), juce::NotificationType::dontSendNotification); slider_vel_kexp->setValue(toSlider(&m_shape_xform, pMidiCC->getVelCurve(pMidiCC_container)->kexp), juce::NotificationType::dontSendNotification); slider_vel_scenter->setValue(toSlider(&m_skew_xform, pMidiCC->getVelCurve(pMidiCC_container)->scenter), juce::NotificationType::dontSendNotification); slider_vel_max->setValue(toSlider(&m_velKey_constraints, pMidiCC->getVelCurve(pMidiCC_container)->pmax*m_velKey_constraints.pmax), juce::NotificationType::dontSendNotification); slider_vel_min->setValue(toSlider(&m_velKey_constraints, pMidiCC->getVelCurve(pMidiCC_container)->pmin*m_velKey_constraints.pmax), juce::NotificationType::dontSendNotification); button_vel_assign_enable->setToggleState(pMidiCC->isAssignedVel(pMidiCC_container), juce::NotificationType::dontSendNotification); slider_key_kexp->setValue(toSlider(&m_shape_xform, pMidiCC->getKeyCurve(pMidiCC_container)->kexp), juce::NotificationType::dontSendNotification); slider_key_scenter->setValue(toSlider(&m_skew_xform, pMidiCC->getKeyCurve(pMidiCC_container)->scenter), juce::NotificationType::dontSendNotification); slider_key_max->setValue(toSlider(&m_velKey_constraints, pMidiCC->getKeyCurve(pMidiCC_container)->pmax*m_velKey_constraints.pmax), juce::NotificationType::dontSendNotification); slider_key_min->setValue(toSlider(&m_velKey_constraints, pMidiCC->getKeyCurve(pMidiCC_container)->pmin*m_velKey_constraints.pmax), juce::NotificationType::dontSendNotification); button_key_assign_enable->setToggleState(pMidiCC->isAssignedKey(pMidiCC_container), juce::NotificationType::dontSendNotification); addListener(listener); listeners.call (&VelKey_PopUp_Listener::VelKey_PopUp_event, POPUP_CREATED); m_label_prec = 3; if (pMidiCC->getConstraints(pMidiCC_container)->pinterval > 0) m_label_prec = max(1, (int)(-log(pMidiCC->getConstraints(pMidiCC_container)->pinterval)/log(10.0) + 0.5)); m_label_shape_prec = 3; if (m_shape_xform.pinterval > 0) m_label_shape_prec = max(1, (int)(-log(m_shape_xform.pinterval)/log(10.0) + 0.5)); m_label_skew_prec = 3; if (m_skew_xform.pinterval > 0) m_label_skew_prec = max(1, (int)(-log(m_skew_xform.pinterval)/log(10.0) + 0.5)); displayUpdate(); //[/Constructor] } VelKey_PopUp::~VelKey_PopUp() { //[Destructor_pre]. You can add your own custom destruction code here.. //[/Destructor_pre] deleteAndZero (label_parameter_name); deleteAndZero (groupComponent3); deleteAndZero (groupComponent); deleteAndZero (groupComponent2); deleteAndZero (m_graph_vel); deleteAndZero (slider_vel_kexp); deleteAndZero (slider_vel_scenter); deleteAndZero (label_vel_kexp); deleteAndZero (label_vel_scenter); deleteAndZero (label_vel_min); deleteAndZero (slider_vel_min); deleteAndZero (textButton_OK); deleteAndZero (button_vel_assign_enable); deleteAndZero (label_vel_ymin); deleteAndZero (label_vel_ymax); deleteAndZero (label_vel_x100); deleteAndZero (label_vel_x0); deleteAndZero (m_graph_key); deleteAndZero (slider_key_kexp); deleteAndZero (slider_key_scenter); deleteAndZero (label_key_kexp); deleteAndZero (label_vel_scenter2); deleteAndZero (label_key_min); deleteAndZero (slider_key_min); deleteAndZero (button_key_assign_enable); deleteAndZero (label_key_ymin); deleteAndZero (label_key_ymax); deleteAndZero (label_key_x100); deleteAndZero (label_key_x0); deleteAndZero (comboBoxOPSel); deleteAndZero (label_key); deleteAndZero (label_vel); deleteAndZero (slider_vel_max); deleteAndZero (label_vel_max); deleteAndZero (label_key_max); deleteAndZero (slider_key_max); deleteAndZero (label_vel_shape); deleteAndZero (label_vel_skew); deleteAndZero (label_key_shape); deleteAndZero (label_key_skew); deleteAndZero (label_vel_skew_text); deleteAndZero (label_key_skew_text); deleteAndZero (label_vel_shape_text); deleteAndZero (label_key_shape_text); deleteAndZero (label_vel_max_text); deleteAndZero (label_vel_min_text); deleteAndZero (label_key_min_text); deleteAndZero (label_key_max_text); deleteAndZero (label_vel_y); deleteAndZero (label_key_y); deleteAndZero (label_vel_x); deleteAndZero (label_key_x); deleteAndZero (m_btn_flip_vel); deleteAndZero (m_btn_flip_key); //[Destructor]. You can add your own custom destruction code here.. paramInfoFree(&m_velKey_constraints); paramInfoFree(&m_shape_xform); paramInfoFree(&m_skew_xform); //[/Destructor] } //============================================================================== void VelKey_PopUp::paint (Graphics& g) { //[UserPrePaint] Add your own custom painting code here.. //[/UserPrePaint] g.setColour (Colour (0xff2a64a5)); g.fillRoundedRectangle (4.0f, 4.0f, 515.0f, 515.0f, 10.0000f); g.setColour (Colours::white); g.drawRoundedRectangle (3.0f, 3.0f, 515.0f, 515.0f, 10.0000f, 4.0000f); //[UserPaint] Add your own custom painting code here.. //[/UserPaint] } void VelKey_PopUp::resized() { label_parameter_name->setBounds (16, 24, 280, 24); groupComponent3->setBounds (16, 424, 228, 68); groupComponent->setBounds (16, 64, 228, 164); groupComponent2->setBounds (16, 244, 228, 164); m_graph_vel->setBounds (296, 88, 171, 121); slider_vel_kexp->setBounds (100, 88, 130, 24); slider_vel_scenter->setBounds (100, 112, 130, 24); label_vel_kexp->setBounds (24, 88, 70, 24); label_vel_scenter->setBounds (24, 112, 70, 24); label_vel_min->setBounds (24, 160, 70, 24); slider_vel_min->setBounds (100, 160, 130, 24); textButton_OK->setBounds (304, 452, 150, 24); button_vel_assign_enable->setBounds (28, 192, 56, 24); label_vel_ymin->setBounds (244, 188, 50, 20); label_vel_ymax->setBounds (244, 84, 50, 20); label_vel_x100->setBounds (444, 212, 48, 12); label_vel_x0->setBounds (284, 212, 50, 12); m_graph_key->setBounds (296, 268, 171, 121); slider_key_kexp->setBounds (100, 268, 130, 24); slider_key_scenter->setBounds (100, 292, 130, 24); label_key_kexp->setBounds (24, 268, 70, 24); label_vel_scenter2->setBounds (24, 292, 70, 24); label_key_min->setBounds (24, 340, 70, 24); slider_key_min->setBounds (100, 340, 130, 24); button_key_assign_enable->setBounds (28, 372, 56, 24); label_key_ymin->setBounds (244, 368, 50, 20); label_key_ymax->setBounds (245, 264, 50, 20); label_key_x100->setBounds (444, 392, 48, 12); label_key_x0->setBounds (284, 392, 50, 12); comboBoxOPSel->setBounds (88, 452, 64, 20); label_key->setBounds (160, 452, 70, 20); label_vel->setBounds (12, 452, 70, 20); slider_vel_max->setBounds (100, 136, 130, 24); label_vel_max->setBounds (24, 136, 70, 24); label_key_max->setBounds (24, 316, 70, 24); slider_key_max->setBounds (100, 316, 130, 24); label_vel_shape->setBounds (336, 68, 56, 20); label_vel_skew->setBounds (436, 68, 40, 20); label_key_shape->setBounds (336, 248, 56, 20); label_key_skew->setBounds (436, 248, 40, 20); label_vel_skew_text->setBounds (396, 68, 44, 20); label_key_skew_text->setBounds (396, 248, 44, 20); label_vel_shape_text->setBounds (296, 68, 48, 20); label_key_shape_text->setBounds (296, 248, 48, 20); label_vel_max_text->setBounds (260, 100, 40, 20); label_vel_min_text->setBounds (260, 172, 40, 20); label_key_min_text->setBounds (260, 352, 40, 20); label_key_max_text->setBounds (260, 280, 40, 20); label_vel_y->setBounds (244, 136, 50, 20); label_key_y->setBounds (244, 316, 50, 20); label_vel_x->setBounds (356, 208, 50, 20); label_key_x->setBounds (356, 388, 50, 20); m_btn_flip_vel->setBounds (100, 194, 84, 20); m_btn_flip_key->setBounds (100, 374, 84, 20); //[UserResized] Add your own custom resize handling here.. //[/UserResized] } void VelKey_PopUp::sliderValueChanged (Slider* sliderThatWasMoved) { //[UsersliderValueChanged_Pre] float value; //[/UsersliderValueChanged_Pre] if (sliderThatWasMoved == slider_vel_kexp) { //[UserSliderCode_slider_vel_kexp] -- add your slider handling code here.. pMidiCC->setVelCurveShape(pMidiCC_container, toParam(&m_shape_xform, sliderThatWasMoved->getValue())); //[/UserSliderCode_slider_vel_kexp] } else if (sliderThatWasMoved == slider_vel_scenter) { //[UserSliderCode_slider_vel_scenter] -- add your slider handling code here.. pMidiCC->setVelCurveSkew(pMidiCC_container, toParam(&m_skew_xform, sliderThatWasMoved->getValue())); //[/UserSliderCode_slider_vel_scenter] } else if (sliderThatWasMoved == slider_vel_min) { //[UserSliderCode_slider_vel_min] -- add your slider handling code here.. value = toParam(&m_velKey_constraints, sliderThatWasMoved->getValue())/m_velKey_constraints.pmax; pMidiCC->setVelCurveMin(pMidiCC_container, value); //[/UserSliderCode_slider_vel_min] } else if (sliderThatWasMoved == slider_key_kexp) { //[UserSliderCode_slider_key_kexp] -- add your slider handling code here.. pMidiCC->setKeyCurveShape(pMidiCC_container, toParam(&m_shape_xform, sliderThatWasMoved->getValue())); //[/UserSliderCode_slider_key_kexp] } else if (sliderThatWasMoved == slider_key_scenter) { //[UserSliderCode_slider_key_scenter] -- add your slider handling code here.. pMidiCC->setKeyCurveSkew(pMidiCC_container, toParam(&m_skew_xform, sliderThatWasMoved->getValue())); //[/UserSliderCode_slider_key_scenter] } else if (sliderThatWasMoved == slider_key_min) { //[UserSliderCode_slider_key_min] -- add your slider handling code here.. value = toParam(&m_velKey_constraints, sliderThatWasMoved->getValue())/m_velKey_constraints.pmax; pMidiCC->setKeyCurveMin(pMidiCC_container, value); //[/UserSliderCode_slider_key_min] } else if (sliderThatWasMoved == slider_vel_max) { //[UserSliderCode_slider_vel_max] -- add your slider handling code here.. value = toParam(&m_velKey_constraints, sliderThatWasMoved->getValue())/m_velKey_constraints.pmax; pMidiCC->setVelCurveMax(pMidiCC_container, value); //[/UserSliderCode_slider_vel_max] } else if (sliderThatWasMoved == slider_key_max) { //[UserSliderCode_slider_key_max] -- add your slider handling code here.. value = toParam(&m_velKey_constraints, sliderThatWasMoved->getValue())/m_velKey_constraints.pmax; pMidiCC->setKeyCurveMax(pMidiCC_container, value); //[/UserSliderCode_slider_key_max] } //[UsersliderValueChanged_Post] displayUpdate(); listeners.call (&VelKey_PopUp_Listener::VelKey_PopUp_event, POPUP_PARAM_CHANGED); //[/UsersliderValueChanged_Post] } void VelKey_PopUp::buttonClicked (Button* buttonThatWasClicked) { //[UserbuttonClicked_Pre] synth_float_t curve_min, curve_max; //[/UserbuttonClicked_Pre] if (buttonThatWasClicked == textButton_OK) { //[UserButtonCode_textButton_OK] -- add your button handler code here.. listeners.call (&VelKey_PopUp_Listener::VelKey_PopUp_event, POPUP_OK); //[/UserButtonCode_textButton_OK] } else if (buttonThatWasClicked == button_vel_assign_enable) { //[UserButtonCode_button_vel_assign_enable] -- add your button handler code here.. pMidiCC->setAssignedVel(pMidiCC_container, buttonThatWasClicked->getToggleState()); listeners.call (&VelKey_PopUp_Listener::VelKey_PopUp_event, POPUP_PARAM_CHANGED); //[/UserButtonCode_button_vel_assign_enable] } else if (buttonThatWasClicked == button_key_assign_enable) { //[UserButtonCode_button_key_assign_enable] -- add your button handler code here.. pMidiCC->setAssignedKey(pMidiCC_container, buttonThatWasClicked->getToggleState()); listeners.call (&VelKey_PopUp_Listener::VelKey_PopUp_event, POPUP_PARAM_CHANGED); //[/UserButtonCode_button_key_assign_enable] } else if (buttonThatWasClicked == m_btn_flip_vel) { //[UserButtonCode_m_btn_flip_vel] -- add your button handler code here.. curve_min = pMidiCC->getVelCurve(pMidiCC_container)->pmin; curve_max = pMidiCC->getVelCurve(pMidiCC_container)->pmax; pMidiCC->setVelCurveMin(pMidiCC_container, curve_max); pMidiCC->setVelCurveMax(pMidiCC_container, curve_min); slider_vel_max->setValue(toSlider(&m_velKey_constraints, pMidiCC->getVelCurve(pMidiCC_container)->pmax*m_velKey_constraints.pmax), juce::NotificationType::dontSendNotification); slider_vel_min->setValue(toSlider(&m_velKey_constraints, pMidiCC->getVelCurve(pMidiCC_container)->pmin*m_velKey_constraints.pmax), juce::NotificationType::dontSendNotification); displayUpdate(); listeners.call (&VelKey_PopUp_Listener::VelKey_PopUp_event, POPUP_PARAM_CHANGED); //[/UserButtonCode_m_btn_flip_vel] } else if (buttonThatWasClicked == m_btn_flip_key) { //[UserButtonCode_m_btn_flip_key] -- add your button handler code here.. curve_min = pMidiCC->getKeyCurve(pMidiCC_container)->pmin; curve_max = pMidiCC->getKeyCurve(pMidiCC_container)->pmax; pMidiCC->setKeyCurveMin(pMidiCC_container, curve_max); pMidiCC->setKeyCurveMax(pMidiCC_container, curve_min); slider_key_max->setValue(toSlider(&m_velKey_constraints, pMidiCC->getKeyCurve(pMidiCC_container)->pmax*m_velKey_constraints.pmax), juce::NotificationType::dontSendNotification); slider_key_min->setValue(toSlider(&m_velKey_constraints, pMidiCC->getKeyCurve(pMidiCC_container)->pmin*m_velKey_constraints.pmax), juce::NotificationType::dontSendNotification); displayUpdate(); listeners.call (&VelKey_PopUp_Listener::VelKey_PopUp_event, POPUP_PARAM_CHANGED); //[/UserButtonCode_m_btn_flip_key] } //[UserbuttonClicked_Post] //[/UserbuttonClicked_Post] } void VelKey_PopUp::labelTextChanged (Label* labelThatHasChanged) { //[UserlabelTextChanged_Pre] //[/UserlabelTextChanged_Pre] if (labelThatHasChanged == label_vel_ymin) { //[UserLabelCode_label_vel_ymin] -- add your label text handling code here.. if (!m_isFlipped_vel) slider_vel_min->setValue(toSlider(&m_velKey_constraints, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); else slider_vel_max->setValue(toSlider(&m_velKey_constraints, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); //[/UserLabelCode_label_vel_ymin] } else if (labelThatHasChanged == label_vel_ymax) { //[UserLabelCode_label_vel_ymax] -- add your label text handling code here.. if (!m_isFlipped_vel) slider_vel_max->setValue(toSlider(&m_velKey_constraints, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); else slider_vel_min->setValue(toSlider(&m_velKey_constraints, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); //[/UserLabelCode_label_vel_ymax] } else if (labelThatHasChanged == label_key_ymin) { //[UserLabelCode_label_key_ymin] -- add your label text handling code here.. if (!m_isFlipped_key) slider_key_min->setValue(toSlider(&m_velKey_constraints, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); else slider_key_max->setValue(toSlider(&m_velKey_constraints, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); //[/UserLabelCode_label_key_ymin] } else if (labelThatHasChanged == label_key_ymax) { //[UserLabelCode_label_key_ymax] -- add your label text handling code here.. if (!m_isFlipped_key) slider_key_max->setValue(toSlider(&m_velKey_constraints, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); else slider_key_min->setValue(toSlider(&m_velKey_constraints, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); //[/UserLabelCode_label_key_ymax] } else if (labelThatHasChanged == label_vel_shape) { //[UserLabelCode_label_vel_shape] -- add your label text handling code here.. slider_vel_kexp->setValue(toSlider(&m_shape_xform, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); //[/UserLabelCode_label_vel_shape] } else if (labelThatHasChanged == label_vel_skew) { //[UserLabelCode_label_vel_skew] -- add your label text handling code here.. slider_vel_scenter->setValue(toSlider(&m_skew_xform, String(labelThatHasChanged->getText()).getFloatValue()/100), juce::NotificationType::sendNotification); //[/UserLabelCode_label_vel_skew] } else if (labelThatHasChanged == label_key_shape) { //[UserLabelCode_label_key_shape] -- add your label text handling code here.. slider_key_kexp->setValue(toSlider(&m_shape_xform, String(labelThatHasChanged->getText()).getFloatValue()), juce::NotificationType::sendNotification); //[/UserLabelCode_label_key_shape] } else if (labelThatHasChanged == label_key_skew) { //[UserLabelCode_label_key_skew] -- add your label text handling code here.. slider_key_scenter->setValue(toSlider(&m_skew_xform, String(labelThatHasChanged->getText()).getFloatValue()/100), juce::NotificationType::sendNotification); //[/UserLabelCode_label_key_skew] } //[UserlabelTextChanged_Post] displayUpdate(); listeners.call (&VelKey_PopUp_Listener::VelKey_PopUp_event, POPUP_PARAM_CHANGED); //[/UserlabelTextChanged_Post] } void VelKey_PopUp::comboBoxChanged (ComboBox* comboBoxThatHasChanged) { //[UsercomboBoxChanged_Pre] //[/UsercomboBoxChanged_Pre] if (comboBoxThatHasChanged == comboBoxOPSel) { //[UserComboBoxCode_comboBoxOPSel] -- add your combo box handling code here.. pMidiCC->setVelKeyCombineOP(pMidiCC_container, comboBoxThatHasChanged->getSelectedId()-1); //[/UserComboBoxCode_comboBoxOPSel] } //[UsercomboBoxChanged_Post] displayUpdate(); listeners.call (&VelKey_PopUp_Listener::VelKey_PopUp_event, POPUP_PARAM_CHANGED); //[/UsercomboBoxChanged_Post] } //[MiscUserCode] You can add your own definitions of your custom methods or any other code here... void VelKey_PopUp::setKeyVel(int note, float velocity) { m_currentMidiNoteInfo.note = note; m_currentMidiNoteInfo.velocity = velocity; displayUpdate(); } void VelKey_PopUp::displayUpdate(void) { float y1, y2; y1 = m_velKey_constraints.pmax*pMidiCC->getVelCurve(pMidiCC_container)->pmin; y2 = m_velKey_constraints.pmax*pMidiCC->getVelCurve(pMidiCC_container)->pmax; if (y1 < y2) { label_vel_ymin->setText(String(y1, m_label_prec), juce::NotificationType::dontSendNotification); label_vel_ymax->setText(String(y2, m_label_prec), juce::NotificationType::dontSendNotification); label_vel_max_text->setText(m_text_vel_max, juce::NotificationType::dontSendNotification); label_vel_min_text->setText(m_text_vel_min, juce::NotificationType::dontSendNotification); m_isFlipped_vel = false; } else { label_vel_ymin->setText(String(y2, m_label_prec), juce::NotificationType::dontSendNotification); label_vel_ymax->setText(String(y1, m_label_prec), juce::NotificationType::dontSendNotification); label_vel_max_text->setText(m_text_vel_min, juce::NotificationType::dontSendNotification); label_vel_min_text->setText(m_text_vel_max, juce::NotificationType::dontSendNotification); m_isFlipped_vel = true; } label_vel_shape->setText(String(pMidiCC->getVelCurve(pMidiCC_container)->kexp, m_label_shape_prec), juce::NotificationType::dontSendNotification); label_vel_skew->setText(String(100*pMidiCC->getVelCurve(pMidiCC_container)->scenter, 1), juce::NotificationType::dontSendNotification); label_vel_x->setText(String(100*m_currentMidiNoteInfo.velocity, 1), juce::NotificationType::dontSendNotification); label_vel_y->setText(String(pMidiCC->getConstraints(pMidiCC_container)->pmax*toParam(pMidiCC->getVelCurve(pMidiCC_container), m_currentMidiNoteInfo.velocity), m_label_prec), juce::NotificationType::dontSendNotification); m_graph_vel->SetMarkerX(m_currentMidiNoteInfo.velocity); m_graph_vel->Draw(pMidiCC->getVelCurve(pMidiCC_container)->pmin, pMidiCC->getVelCurve(pMidiCC_container)->pmax, pMidiCC->getVelCurve(pMidiCC_container)); y1 = m_velKey_constraints.pmax*pMidiCC->getKeyCurve(pMidiCC_container)->pmin; y2 = m_velKey_constraints.pmax*pMidiCC->getKeyCurve(pMidiCC_container)->pmax; if (y1 < y2) { label_key_ymin->setText(String(y1, m_label_prec), juce::NotificationType::dontSendNotification); label_key_ymax->setText(String(y2, m_label_prec), juce::NotificationType::dontSendNotification); label_key_max_text->setText(m_text_key_max, juce::NotificationType::dontSendNotification); label_key_min_text->setText(m_text_key_min, juce::NotificationType::dontSendNotification); m_isFlipped_key = false; } else { label_key_ymin->setText(String(y2, m_label_prec), juce::NotificationType::dontSendNotification); label_key_ymax->setText(String(y1, m_label_prec), juce::NotificationType::dontSendNotification); label_key_max_text->setText(m_text_key_min, juce::NotificationType::dontSendNotification); label_key_min_text->setText(m_text_key_max, juce::NotificationType::dontSendNotification); m_isFlipped_key = true; } label_key_shape->setText(String(pMidiCC->getKeyCurve(pMidiCC_container)->kexp, m_label_shape_prec), juce::NotificationType::dontSendNotification); label_key_skew->setText(String(100*pMidiCC->getKeyCurve(pMidiCC_container)->scenter, 1), juce::NotificationType::dontSendNotification); // label_key_x->setText(String(100*(float)m_currentMidiNoteInfo.note/127, 1), juce::NotificationType::dontSendNotification); label_key_x0->setText(getNoteName(0), juce::NotificationType::dontSendNotification); label_key_x100->setText(getNoteName(127), juce::NotificationType::dontSendNotification); label_key_x->setText(getNoteName(m_currentMidiNoteInfo.note), juce::NotificationType::dontSendNotification); label_key_y->setText(String(pMidiCC->getConstraints(pMidiCC_container)->pmax*toParam(pMidiCC->getKeyCurve(pMidiCC_container), (float)m_currentMidiNoteInfo.note/127), m_label_prec), juce::NotificationType::dontSendNotification); m_graph_key->SetMarkerX((float)m_currentMidiNoteInfo.note/127); m_graph_key->Draw(pMidiCC->getKeyCurve(pMidiCC_container)->pmin, pMidiCC->getKeyCurve(pMidiCC_container)->pmax, pMidiCC->getKeyCurve(pMidiCC_container)); } void VelKey_PopUp::setCurrParam(int paramID, float param) { if (paramID != m_paramID) return; m_currParamValue = param; displayUpdate(); } void VelKey_PopUp::createNoteNameTbl(void) { int i, ni, nn; String notes[12] = {"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" }; for (i=0; i < 128; i++) { ni = i%12; nn = (i/12)-2; notename_tbl[i] = notes[ni] + String(nn); } } const String VelKey_PopUp::getNoteName(int midinotnumber) { return notename_tbl[midinotnumber]; } //[/MiscUserCode] //============================================================================== #if 0 /* -- Jucer information section -- This is where the Jucer puts all of its metadata, so don't change anything in here! BEGIN_JUCER_METADATA END_JUCER_METADATA */ #endif