# HG changeset patch # User Andrew McPherson # Date 1384696902 0 # Node ID 2832beb744bba5af5e2a28b752356cd17bf0ccb8 # Parent 3532766110360f7d7148c67811302affdee99f16 GUI update to send MIDI RPN message to set pitch wheel range diff -r 353276611036 -r 2832beb744bb Builds/MacOSX/TouchKeys.xcodeproj/project.xcworkspace/xcuserdata/apm.xcuserdatad/UserInterfaceState.xcuserstate Binary file Builds/MacOSX/TouchKeys.xcodeproj/project.xcworkspace/xcuserdata/apm.xcuserdatad/UserInterfaceState.xcuserstate has changed diff -r 353276611036 -r 2832beb744bb Source/GUI/KeyboardZoneComponent.cpp --- a/Source/GUI/KeyboardZoneComponent.cpp Sun Nov 17 13:53:21 2013 +0000 +++ b/Source/GUI/KeyboardZoneComponent.cpp Sun Nov 17 14:01:42 2013 +0000 @@ -174,7 +174,7 @@ pitchWheelRangeEditor->setText (String::empty); addAndMakeVisible (keyboardControllersButton = new TextButton ("keyboard controllers button")); - keyboardControllersButton->setButtonText ("Keyboard Controllers..."); + keyboardControllersButton->setButtonText (" Controllers..."); keyboardControllersButton->addListener (this); @@ -595,16 +595,18 @@ { if(controller_ == 0 || keyboardSegment_ == 0) return; - + PopupMenu menu; - + + menu.addItem(kKeyboardControllerSendPitchWheelRange, "Send Pitchwheel Range RPN", true, false); + menu.addSeparator(); menu.addItem(MidiKeyboardSegment::kControlPitchWheel, "Retransmit from Keyboard:", false); menu.addSeparator(); menu.addItem(MidiKeyboardSegment::kControlPitchWheel, "Pitch Wheel", true, keyboardSegment_->usesKeyboardPitchWheel()); menu.addItem(MidiKeyboardSegment::kControlChannelAftertouch, "Aftertouch", true, keyboardSegment_->usesKeyboardChannnelPressure()); menu.addItem(1, "CC 1 (Mod Wheel)", true, keyboardSegment_->usesKeyboardModWheel()); menu.addItem(kKeyboardControllerRetransmitOthers, "Other Controllers", true, keyboardSegment_->usesKeyboardMIDIControllers()); - + menu.showMenuAsync(PopupMenu::Options().withTargetComponent(keyboardControllersButton), ModalCallbackFunction::forComponent(staticKeyboardControllerChosenCallback, this)); } @@ -630,7 +632,7 @@ { if(controller_ == 0 || keyboardSegment_ == 0) return; - + // Enable or disable retransmitting specific messages if(result == MidiKeyboardSegment::kControlPitchWheel) { keyboardSegment_->setUsesKeyboardPitchWheel(!keyboardSegment_->usesKeyboardPitchWheel()); @@ -644,6 +646,10 @@ else if(result == kKeyboardControllerRetransmitOthers) { keyboardSegment_->setUsesKeyboardMIDIControllers(!keyboardSegment_->usesKeyboardMIDIControllers()); } + else if(result == kKeyboardControllerSendPitchWheelRange) { + // Send a MIDI RPN message now to update the pitch wheel range + keyboardSegment_->sendMidiPitchWheelRange(); + } } //[/MiscUserCode] @@ -745,7 +751,7 @@ multiline="0" retKeyStartsLine="0" readonly="0" scrollbars="1" caret="1" popupmenu="1"/> diff -r 353276611036 -r 2832beb744bb Source/GUI/KeyboardZoneComponent.h --- a/Source/GUI/KeyboardZoneComponent.h Sun Nov 17 13:53:21 2013 +0000 +++ b/Source/GUI/KeyboardZoneComponent.h Sun Nov 17 14:01:42 2013 +0000 @@ -91,7 +91,7 @@ component->mappingChosenCallback(result); } void mappingChosenCallback(int result); - + static void staticKeyboardControllerChosenCallback(int result, KeyboardZoneComponent* component) { if (result != 0 && component != 0) component->keyboardControllerChosenCallback(result); @@ -114,10 +114,11 @@ kMidiOutputDeviceComboBoxOffset = 3, kMidiOutputModeComboBoxOffset = 1 }; - + enum { // Special commands for keyboard controller popup button - kKeyboardControllerRetransmitOthers = 2000 + kKeyboardControllerRetransmitOthers = 2000, + kKeyboardControllerSendPitchWheelRange }; // Update list of MIDI output devices @@ -128,7 +129,7 @@ // Create popup menu for keyboard controller retransmission void createKeyboardControllerPopup(); - + MainApplicationController *controller_; // Pointer to the main application controller MidiKeyboardSegment *keyboardSegment_; // Pointer to the segment this component controls std::vector midiOutputDeviceIDs_;