diff --git a/README.md b/README.md index d3aa242..a01aff0 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,6 @@ See [Getting Started](https://vcvrack.com/manual/GettingStarted) in the VCV Rack Grab a current build for the latest features and fixes: [HC-One Nightly](https://github.com/Paul-Dempsey/pachde-hc-one/releases/tag/Nightly) -The beta 5 release announced online can be downloaded here: [HC-One 2.0.0-beta5](https://github.com/Paul-Dempsey/pachde-hc-one/releases/tag/v2.0.0-beta5). - - [Documentation](doc/index.md#pachde-d-hc-one) - [Buy pachde a coffee](https://venmo.com/u/pcdempsey). Thank you! @@ -19,27 +17,30 @@ The beta 5 release announced online can be downloaded here: [HC-One 2.0.0-beta5] Donations help pachde's morale, and fund hardware for testing and developing this software.\ ![Buy pachde a coffee with VenMo](./doc/image/VenMo.png) -Pachde and HC One are not affiliated with or sponsored by Haken Audio (but we're friends). +Pachde and HC One are not affiliated with or sponsored by Haken Audio or Expressive E. + +**Note** — HC One has been designed and tested with EaganMatrix firmware version 10.09. +Some features are not operational with newer firmware (version > 10.09), and an update to HC One will be required. ## Modules - **[HC-1](./doc/HC-1.md)** Fast access to favorite presets, with knobs and CV inputs for the essential controls: Macros and the Recirculator. -- **[Pedal 1 & Pedal 2](./doc/Pedals.md)** Pedal control, virtual pedals, and pedal CV in/out. +- **[Pedal 1 & Pedal 2](./doc/Pedals.md#modules-pedal-1-and-pedal-2)** Pedal control, virtual pedals, and pedal CV in/out. -- **[Round](./doc/Round.md)** Control of rounding and the tuning scale, with CV and trigger. +- **[Round](./doc/Round.md#module-round)** Control of rounding and the tuning scale, with CV and trigger. -- **[Compress](./doc/Compress.md)** EaganMatrix compressor controls, with CV. +- **[Compress](./doc/Compress.md#module-compress)** EaganMatrix compressor controls, with CV. -- **[Favorites](./doc/Favorites.md)** Pushbuttons to access up to 16 Favorite files. +- **[TiltEQ](./doc/Tilt.md#module-tilteq)** EaganMatrix Tilt EQ controls, with CV. -- **[HC-2](./doc/HC-2.md)** TiltEQ, and CC maps. This module will be going away. +- **[Favorites](./doc/Favorites.md#module-favorites)** Pushbuttons to access up to 16 Favorite files. -## Installing +## Installing from Github builds -To install this plugin from the GitHub builds, you must first have VCV Rack, of course, so do that if you haven't yet. +To install this plugin, you must first have VCV Rack of course, so go get it if you haven't yet. See [Getting Started](https://vcvrack.com/manual/GettingStarted) in the VCV Rack manual. -You'll need to know the Operating System (OS), and Architecture (ARCH) of your Rack install, and where to copy the downloaded plugin package to. +You'll need to know the Operating System (OS) and Architecture (ARCH) of your Rack install, and where to copy the downloaded plugin package to. - In Rack, choose **Help** / **Open user folder**. diff --git a/doc/Tilt.md b/doc/Tilt.md new file mode 100644 index 0000000..f47e2ca --- /dev/null +++ b/doc/Tilt.md @@ -0,0 +1,9 @@ +# Module TiltEQ + +Controls for Tilt EQ (equalization). The light at the top is lit when the mix is above zero. All options can be CV-controlled in absolute or relative mode. + +![Tilt EQ module](./image/Tilt.png) + +**Slug** `pachde-hc-tilteq` + +![pachde (#d) logo](./image/Logo.svg) \ No newline at end of file diff --git a/doc/image/HC-One-modules.png b/doc/image/HC-One-modules.png index 6c51d1d..cf82fc0 100644 Binary files a/doc/image/HC-One-modules.png and b/doc/image/HC-One-modules.png differ diff --git a/doc/image/Tilt.png b/doc/image/Tilt.png new file mode 100644 index 0000000..adb0dfc Binary files /dev/null and b/doc/image/Tilt.png differ diff --git a/doc/index.md b/doc/index.md index 08e7b2c..c98b631 100644 --- a/doc/index.md +++ b/doc/index.md @@ -5,11 +5,15 @@ The Eagan Matrix is the synth engine for a variety of hardware devices. These include the Haken Continuum, ContinuuMini, EaganMatrix Module, and the Osmose from Expressive E. **Note** — Osmose has known issues when interfacing with external software. -External changes are not immediately displayed on it's screens. +Not all EaganMatrix features work with the Osmose. +Changes can be operational, but are not immediately displayed on the Osmose display. Pachde does not own an Osmose or EMM, so any help testing and documenting any issues with these devices is welcome. +**Note** — HC One has been designed and tested with EaganMatrix firmware version 10.09. +Some features are not operational with newer firmware (version > 10.09), and an update to HC One will be required to restore full function (see issue #28). + HC One is *not* intended to be a replacement for the Haken Editor. -The intention is to build out a performance companion for the device. +HC One is a complementary performance companion and automation tool. ![HC One modules](./image/HC-One-modules.png) @@ -20,17 +24,21 @@ They do not have to be side-by-side like Rack expander modules. The HC-One modules shown here from left to right are: -- **[HC-1](HC-1.md)** Fast access to favorite presets, with knobs and CV inputs for the essential controls: Macros and the Recirculator. +- **[HC-1](HC-1.md)** Fast access to favorite presets, with knobs and CV inputs for the essential controls. -- **[Pedal 1 & Pedal 2](Pedals.md#modules-pedal-1-and-pedal-2)** Pedal control, virtual pedals, and pedal CV in/out. +- **[Pedal 1 & Pedal 2](Pedals.md#modules-pedal-1-and-pedal-2)** Pedal control, virtual pedals, pedal CV input and output. - **[Round](Round.md#module-round)** Control of rounding and the tuning scale, with CV and trigger. - **[Compress](Compress.md#module-compress)** EaganMatrix compressor controls, with CV. +- **[TiltEQ](Tilt.md#module-tilteq)** + - **[Favorites](Favorites.md#module-favorites)** Pushbuttons to access up to 16 Favorite files. -- **[HC-2](HC-2.md#module-hc-2)** TiltEQ, and CC maps (To Be Retired). +There is one hidden module, used for development: + +- **[HC-2](HC-2.md#module-hc-2)** Experimental module (hidden). --- diff --git a/plugin.json b/plugin.json index 5b52434..383a66f 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { "slug": "pachde-hc-one", "name": "HC One", - "version": "2.0.0-beta7", + "version": "2.0.0-beta6", "license": "GPL-3.0-or-later", "brand": "pachde", "author": "pachde", @@ -22,8 +22,8 @@ { "slug": "pachde-hc-2", "name": "HC-2", - "description": "More Eagan Matrix controls (HC-1 companion)", - "tags": [ "Controller", "MIDI", "Expander" ] + "description": "Experimental controls (HC-1 companion)", + "hidden": true }, { "slug": "pachde-hc-favorites", @@ -56,7 +56,7 @@ "tags": [ "Controller", "Expander" ] }, { - "slug": "pachde-hc-tilt-eq", + "slug": "pachde-hc-tilteq", "name": "TiltEQ", "description": "Controller for EaganMatrix Tilt EQ (HC-1 companion)", "tags": [ "Controller", "Expander" ] diff --git a/res/HC-2.svg b/res/HC-2.svg index a373c37..a63c655 100644 --- a/res/HC-2.svg +++ b/res/HC-2.svg @@ -1,17 +1,24 @@ - + - - - - + + + - \ No newline at end of file + + diff --git a/src/HC-1/HC-1-draw.cpp b/src/HC-1/HC-1-draw.cpp index a124dea..ac1a035 100644 --- a/src/HC-1/HC-1-draw.cpp +++ b/src/HC-1/HC-1-draw.cpp @@ -143,6 +143,14 @@ void Hc1ModuleWidget::drawLayer(const DrawArgs& args, int layer) SetTextStyle(vg, normal_font, RampGray(G_85), 12.f); auto text = getBannerText(vg, normal_font, bold_font); CenterText(vg, box.size.x/2.f, 15.f, text.c_str(), nullptr); + + // red * next to firmware version if greater than supported + uint16_t fw = my_module ? my_module->em.firmware_version : 0; + if (fw > 1009) { + SetTextStyle(vg, bold_font, GetStockColor(StockColor::Red), 12.f); + nvgText(vg, firmware_label->box.pos.x + firmware_label->box.size.x + 2.5f, firmware_label->box.pos.y + firmware_label->box.size.y - 1.5f, "*", nullptr); + } + } else { SetTextStyle(vg, bold_font, preset_name_color, 16.f); CenterText(vg, box.size.x/2.f, 15.f, "My Amazing Preset", nullptr); diff --git a/src/HC-1/HC-1-presets.cpp b/src/HC-1/HC-1-presets.cpp index 0e67f4a..1eb7664 100644 --- a/src/HC-1/HC-1-presets.cpp +++ b/src/HC-1/HC-1-presets.cpp @@ -23,7 +23,7 @@ bool Hc1Module::requireFirmwareVersionMatch(const std::string &path, json_t* roo ver = json_integer_value(j); } if (ver != em.firmware_version) { - WARN("%s: Loading %d presets on %d hardware", path, ver, em.firmware_version); + WARN("%s: Loading %d presets on %d hardware", path.c_str(), ver, em.firmware_version); return false; } return true; diff --git a/src/HC-1/HC-1.cpp b/src/HC-1/HC-1.cpp index 5cc1bdd..b44ee93 100644 --- a/src/HC-1/HC-1.cpp +++ b/src/HC-1/HC-1.cpp @@ -82,6 +82,7 @@ Hc1Module::~Hc1Module() void Hc1Module::Uninit() { + dsp_client = nullptr; midi_dispatch.clear(); silence(true); dispatchMidi(); diff --git a/src/HC-1/HC-1.hpp b/src/HC-1/HC-1.hpp index 603afe2..4ca0d78 100644 --- a/src/HC-1/HC-1.hpp +++ b/src/HC-1/HC-1.hpp @@ -101,6 +101,7 @@ struct Hc1Module : IPresetHolder, ISendMidi, IMidiDeviceHolder, IMidiDeviceChang std::string favoritesFile; std::string moduleFavoritesPath(); + bool requireFirmwareVersionMatch(const std::string &path, json_t* root); void clearFavorites(); void saveFavorites(); bool readFavoritesFile(const std::string& path, bool fresh); diff --git a/src/Tilt/Tilt.cpp b/src/Tilt/Tilt.cpp index fe3c6b6..0e59a63 100644 --- a/src/Tilt/Tilt.cpp +++ b/src/Tilt/Tilt.cpp @@ -215,4 +215,4 @@ void TiltModule::process(const ProcessArgs& args) } -Model *modelTilt = createModel("pachde-hc-tilt-eq"); \ No newline at end of file +Model *modelTilt = createModel("pachde-hc-tilteq"); \ No newline at end of file