diff --git a/.gitignore b/.gitignore index d758060f..08760a7a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,8 @@ Builds/VisualStudio2017/ .vs/ *.exe +.vscode + JuceLibraryCode/ Builds/ assets/ diff --git a/Documentation/KeyboardShortcuts.md b/Documentation/KeyboardShortcuts.md new file mode 100644 index 00000000..b01d1eb7 --- /dev/null +++ b/Documentation/KeyboardShortcuts.md @@ -0,0 +1,2 @@ +X = Octave down\ +C = Octave up \ No newline at end of file diff --git a/Source/CartManager.cpp b/Source/CartManager.cpp index 3bd0b1bc..e00f55bd 100644 --- a/Source/CartManager.cpp +++ b/Source/CartManager.cpp @@ -342,6 +342,7 @@ void CartManager::initialFocus() { } bool CartManager::keyPressed(const KeyPress& key, Component* originatingComponent) { + // Keycode 13 is enter. if ( key.getKeyCode() == 13 ) { File file = cartBrowser->getSelectedFile(); if ( file.isDirectory() ) diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index 4f7d324e..41d2b9bc 100644 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -37,6 +37,9 @@ DexedAudioProcessorEditor::DexedAudioProcessorEditor (DexedAudioProcessor* owner cartManager(this) { setSize(WINDOW_SIZE_X, (ownerFilter->showKeyboard ? WINDOW_SIZE_Y : WINDOW_SIZE_Y - 94)); + + setWantsKeyboardFocus(true); + addKeyListener(this); processor = ownerFilter; @@ -441,3 +444,20 @@ void DexedAudioProcessorEditor::filesDropped (const StringArray &files, int x, i processor->applyKBMMapping( File( fn ) ); } } + +bool DexedAudioProcessorEditor::keyPressed(const KeyPress &key, Component *originatingComponent) { + if (key.getTextDescription() == "X") { + if (processor->octaveShift > 0) { + processor->octaveShift -= 1; + midiKeyboard.setKeyPressBaseOctave(processor->octaveShift); + } + return true; + } else if (key.getTextDescription() == "C") { + if (processor->octaveShift < 10) { + processor->octaveShift += 1; + midiKeyboard.setKeyPressBaseOctave(processor->octaveShift); + } + return true; + } + return false; +} diff --git a/Source/PluginEditor.h b/Source/PluginEditor.h index 3c72b790..5851af6b 100644 --- a/Source/PluginEditor.h +++ b/Source/PluginEditor.h @@ -32,7 +32,7 @@ /** */ class DexedAudioProcessorEditor : public AudioProcessorEditor, public ComboBox::Listener, public Timer, - public FileDragAndDropTarget { + public FileDragAndDropTarget, public juce::KeyListener { MidiKeyboardComponent midiKeyboard; OperatorEditor operators[6]; Colour background; @@ -62,6 +62,7 @@ class DexedAudioProcessorEditor : public AudioProcessorEditor, public ComboBox: virtual bool isInterestedInFileDrag (const StringArray &files) override; virtual void filesDropped (const StringArray &files, int x, int y ) override; + virtual bool keyPressed (const KeyPress &key, Component *originatingComponent); static const int WINDOW_SIZE_X = 866; static const int WINDOW_SIZE_Y = 674; diff --git a/Source/PluginProcessor.h b/Source/PluginProcessor.h index a95b170c..0befbe55 100644 --- a/Source/PluginProcessor.h +++ b/Source/PluginProcessor.h @@ -172,6 +172,8 @@ public : std::unique_ptr output; std::unique_ptr tune; + int octaveShift = 5; + void loadCartridge(Cartridge &cart); void setDxValue(int offset, int v);