diff --git a/README.md b/README.md index 96a787e..4736da0 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,10 @@ in the source folder) stays on the Apache 2.0 license to able to collaborate bet Changelog --------- +#### Version 0.9.2 +* Single click program select +* Fix sysex issue with wrong machine ID + #### Version 0.9.1 * Mark I engine now uses 10-bit sine/exp tables. Still a work in progress but we are getting there * More accurate FM feedback on the Mark I and OPL Series engine @@ -42,28 +46,6 @@ Changelog * Fixed some of mono mode ticks on lower frequencies * SynprezFM preset are now in a submenu -#### Version 0.7.0 -* Preliminary Algo 4 & 6 feedback support -* DX Engine 'Dirty DX' emulation, including one based on OPL chips -* DX Engine LFO amplitude. This still needs tuning. -* Monophonic mode -* Added the 'INIT' button to re-initialize a program -* Fixed stucked notes when programs where changed -* Fixed engine envelopes wrong timing if it was not 44100Khz -* Fixed only .syx are shown when we are using the Dexed_cart.zip cartridges collection -* The DX7 Sysex port are now only used for sysex messages. This is used to avoid any midi note feedback. - -#### Version 0.6.1 -* Mouse over + LFO type fix + pitch eg values - -#### Version 0.6.0 -* Added external midi interface to send / receive sysex messages -* Fix Tracktion crash upon startup -* Middle C (transpose) now works -* Identify the parameter knob/switch by simply moving the mouse over it -* Knobs now works with vertical mouse drags -* User DX7 zip cartridges - Credits & thanks ---------------- * DX Synth engine : Raph Levien and the [msfa](https://code.google.com/p/music-synthesizer-for-android) team diff --git a/Source/DXComponents.cpp b/Source/DXComponents.cpp index 39ed1e5..e6097e5 100644 --- a/Source/DXComponents.cpp +++ b/Source/DXComponents.cpp @@ -408,5 +408,35 @@ void ComboBoxImage::setImage(Image image, int pos[]) { itemPos[i] = pos[i]; } +void ProgramSelector::mouseDown(const MouseEvent &event) { + if ( event.x < getWidth() - 8) { + ComboBox::mouseDown(event); + return; + } + + int cur = getSelectedItemIndex(); + if ( event.y < getHeight() / 2 ) { + if ( cur == 0 ) + cur = 31; + else + cur--; + } else { + if ( cur == 31 ) + cur = 0; + else + cur++; + } + setSelectedItemIndex(cur); +} + void ProgramSelector::paint(Graphics &g) { + int x = getWidth(); + int y = getHeight(); + + Path path; + path.addTriangle(x-8, y/2-1, x-4, 2, x, y/2-1); + path.addTriangle(x-8, y/2+1, x-4, y-2, x, y/2+1); + + g.setColour(Colours::white); + g.fillPath(path); } diff --git a/Source/DXComponents.h b/Source/DXComponents.h index b20c3f5..2dd415f 100644 --- a/Source/DXComponents.h +++ b/Source/DXComponents.h @@ -71,6 +71,7 @@ public: class ProgramSelector : public ComboBox { public: + void mouseDown(const MouseEvent &event) override; virtual void paint(Graphics &g) override; }; diff --git a/Source/Dexed.h b/Source/Dexed.h index c17bd55..d88f39c 100644 --- a/Source/Dexed.h +++ b/Source/Dexed.h @@ -23,15 +23,17 @@ void dexed_trace(const char *source, const char *fmt, ...); +#define DEXED_ID "0.9.2a1" + #ifdef DEBUG - #define DEXED_VERSION "0.9.1 DEBUG" + #define DEXED_VERSION DEXED_ID " DEBUG" #ifdef _MSC_VER #define TRACE(fmt, ...) dexed_trace(__FUNCTION__,fmt,##__VA_ARGS__) #else #define TRACE(fmt, ...) dexed_trace(__PRETTY_FUNCTION__,fmt,##__VA_ARGS__) #endif #else - #define DEXED_VERSION "0.9.1" + #define DEXED_VERSION DEXED_ID #define TRACE(fmt, ...) #endif