diff --git a/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate b/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate index 20badf5..8e9fa11 100644 Binary files a/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate and b/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/README.md b/README.md index d0286fe..3ff47d6 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,12 @@ in the source folder) stays on the Apache 2.0 license to able to collaborate bet Changelog --------- +#### Version 0.9.1 +* Drop of .syx files in the cartridge manager +* Dexed data directory can now optionally reside in the same location where the binary is installed +* 'Send current program to DX7' in Cartridge Manager works as designed +* Support for sysex streams (multiple sysex messages in one .syx file) +* falkTX upstream fixes for Linux #### Version 0.9.0 * Apple AU support @@ -26,7 +32,6 @@ Changelog * Fixed the UI corruption when more than one Dexed instance was loaded * Fixed wrong display value issues (coarse and fine) - #### Version 0.8.0 * New UI by [AZur Studio](http://bji.yukihotaru.com/) * You can now copy/paste the operator/envelopes values by using the right-click mouse button on the operator @@ -63,15 +68,15 @@ Credits & thanks * PPPlay : Great [OPL3](http://sourceforge.net/projects/peepeeplayer) implementation, with documented code :D * DX7 program compilation : Jean-Marc Desprez (author of [SynprezFM](http://www.synprez.com/SynprezFM)) * DX7 programs : Dave Benson, Frank Carvalho, Tim Conrardy, Jack Deckard, Chris Dodunski, Tim Garrett, Hitaye, Stephan Ibsen, Christian Jezreel, Narfman, Godric Wilkie -* markusthegeek direct implication for this project +* falkTX [distrho](http://distrho.sourceforge.net/) TODO - Dexed ------------ * Yamaha 4 operators (DX21/DX27/DX100) sysex import * UI threaded messaging to avoid DAW automation 'clicks' -* Zomby UI changes: this occurs in Live and will be fixed in the 0.8.1 version. +* Zomby UI changes: this occurs in Live * Various code cleanup -* More smothness in mono mode +* More smoothness in mono mode TODO - msfa ----------- diff --git a/Source/CartManager.cpp b/Source/CartManager.cpp index d5ff30f..6e0b8ee 100644 --- a/Source/CartManager.cpp +++ b/Source/CartManager.cpp @@ -38,8 +38,41 @@ public: }; }; +class FileTreeDrop : public FileTreeComponent { +public : + FileTreeDrop(DirectoryContentsList &listToShow) : FileTreeComponent(listToShow) {} + + bool isInterestedInFileDrag (const StringArray &files) override { + bool found = false; + + for(int i=0; istartThread(); cartBrowserList = new DirectoryContentsList(syxFileFilter, *timeSliceThread); cartBrowserList->setDirectory(cartDir, true, true); - cartBrowser = new FileTreeComponent(*cartBrowserList); + cartBrowser = new FileTreeDrop(*cartBrowserList); addAndMakeVisible(cartBrowser); cartBrowser->setBounds(23, 18, 590, 384); cartBrowser->setDragAndDropDescription("Sysex Browser"); @@ -259,8 +292,11 @@ void CartManager::programRightClicked(ProgramListBox *source, int pos) { source->getCurrentCart().unpackProgram(unpackPgm, pos); } - if ( mainWindow->processor->sysexComm.isOutputActive() ) - mainWindow->processor->sysexComm.send(MidiMessage(unpackPgm, 161)); + if ( mainWindow->processor->sysexComm.isOutputActive() ) { + uint8_t msg[163]; + exportSysexPgm(msg, unpackPgm); + mainWindow->processor->sysexComm.send(MidiMessage(msg, 163)); + } break; case 1010: diff --git a/Source/CartManager.h b/Source/CartManager.h index f71af77..5e58e82 100644 --- a/Source/CartManager.h +++ b/Source/CartManager.h @@ -24,6 +24,7 @@ #include "../JuceLibraryCode/JuceHeader.h" #include "PluginData.h" #include "ProgramListBox.h" +#include "PluginData.h" class CartManager : public Component, public ButtonListener, public DragAndDropContainer, public FileBrowserListener , public ProgramListBoxListener { @@ -53,13 +54,13 @@ class CartManager : public Component, public ButtonListener, public DragAndDrop public: CartManager(DexedAudioProcessorEditor *editor); virtual ~CartManager(); - void paint(Graphics& g); - void buttonClicked (Button* buttonThatWasClicked); + void paint(Graphics& g) override; + void buttonClicked (Button* buttonThatWasClicked) override; - void selectionChanged(); - void fileClicked (const File& file, const MouseEvent& e); - void fileDoubleClicked (const File& file); - void browserRootChanged (const File& newRoot); + void selectionChanged() override; + void fileClicked (const File& file, const MouseEvent& e) override; + void fileDoubleClicked (const File& file) override; + void browserRootChanged (const File& newRoot) override; void setActiveProgram(int idx, String activeName); void resetActiveSysex(); @@ -67,7 +68,7 @@ public: virtual void programSelected(ProgramListBox *source, int pos) override; virtual void programRightClicked(ProgramListBox *source, int pos) override; virtual void programDragged(ProgramListBox *destListBox, int dest, char *packedPgm) override; - + void initialFocus(); }; diff --git a/Source/PluginData.cpp b/Source/PluginData.cpp index 190a842..bf5bce0 100644 --- a/Source/PluginData.cpp +++ b/Source/PluginData.cpp @@ -229,7 +229,7 @@ void DexedAudioProcessor::pasteEnvFromClipboard(int destOp) { } void DexedAudioProcessor::sendCurrentSysexProgram() { - uint8_t raw[167]; + uint8_t raw[163]; exportSysexPgm(raw, data); if ( sysexComm.isOutputActive() ) { diff --git a/Source/PluginData.h b/Source/PluginData.h index aa42726..f5a8579 100644 --- a/Source/PluginData.h +++ b/Source/PluginData.h @@ -28,6 +28,7 @@ #include "Dexed.h" uint8_t sysexChecksum(const uint8_t *sysex, int size); +void exportSysexPgm(uint8_t *dest, uint8_t *src); #define SYSEX_HEADER { 0xF0, 0x43, 0x00, 0x00, 0x20, 0x00 }