From 56b72db58ac95319add1d294462e14f21d660390 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Thu, 18 Mar 2021 18:50:45 -0400 Subject: [PATCH] Initial release --- .gitignore | 15 + LICENSE | 165 +++++++ README.md | 28 ++ docs/README.md | 202 ++++++++ docs/images/add-device.png | Bin 0 -> 6693 bytes docs/images/device-id.png | Bin 0 -> 8804 bytes docs/images/hardware.png | Bin 0 -> 313862 bytes docs/images/midi-io.png | Bin 0 -> 4895 bytes docs/images/options.png | Bin 0 -> 5707 bytes docs/images/param-id.png | Bin 0 -> 9370 bytes docs/images/project-settings.png | Bin 0 -> 9578 bytes format.xml | 391 +++++++++++++++ pom.xml | 198 ++++++++ release.xml | 28 ++ resources/README.txt | 3 + resources/SpecificDeviceSettings.toml | 60 +++ resources/TwisterSister.mfs | Bin 0 -> 2294 bytes .../github/dozius/TwisterSisterExtension.java | 445 ++++++++++++++++++ .../TwisterSisterExtensionDefinition.java | 118 +++++ .../settings/AbstractDeviceSetting.java | 68 +++ .../dozius/settings/BitwigDeviceSetting.java | 73 +++ .../settings/SpecificDeviceSettings.java | 239 ++++++++++ .../dozius/settings/UserColorSettings.java | 129 +++++ .../dozius/settings/Vst2DeviceSetting.java | 77 +++ .../dozius/settings/Vst3DeviceSetting.java | 77 +++ .../github/dozius/twister/KnobMidiInfo.java | 38 ++ .../github/dozius/twister/LightMidiInfo.java | 31 ++ .../io/github/dozius/twister/MidiInfo.java | 35 ++ .../io/github/dozius/twister/Twister.java | 197 ++++++++ .../github/dozius/twister/TwisterButton.java | 230 +++++++++ .../github/dozius/twister/TwisterColors.java | 194 ++++++++ .../io/github/dozius/twister/TwisterKnob.java | 191 ++++++++ .../github/dozius/twister/TwisterLight.java | 147 ++++++ .../dozius/twister/TwisterRGBLight.java | 232 +++++++++ .../dozius/twister/TwisterRingLight.java | 124 +++++ .../dozius/util/CursorNormalizedValue.java | 134 ++++++ .../java/io/github/dozius/util/DevUtil.java | 57 +++ .../java/io/github/dozius/util/Logger.java | 62 +++ .../java/io/github/dozius/util/MathUtil.java | 68 +++ .../dozius/util/OnOffColorSupplier.java | 95 ++++ .../com.bitwig.extension.ExtensionDefinition | 1 + 41 files changed, 4152 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 docs/README.md create mode 100644 docs/images/add-device.png create mode 100644 docs/images/device-id.png create mode 100644 docs/images/hardware.png create mode 100644 docs/images/midi-io.png create mode 100644 docs/images/options.png create mode 100644 docs/images/param-id.png create mode 100644 docs/images/project-settings.png create mode 100644 format.xml create mode 100644 pom.xml create mode 100644 release.xml create mode 100644 resources/README.txt create mode 100644 resources/SpecificDeviceSettings.toml create mode 100644 resources/TwisterSister.mfs create mode 100644 src/main/java/io/github/dozius/TwisterSisterExtension.java create mode 100644 src/main/java/io/github/dozius/TwisterSisterExtensionDefinition.java create mode 100644 src/main/java/io/github/dozius/settings/AbstractDeviceSetting.java create mode 100644 src/main/java/io/github/dozius/settings/BitwigDeviceSetting.java create mode 100644 src/main/java/io/github/dozius/settings/SpecificDeviceSettings.java create mode 100644 src/main/java/io/github/dozius/settings/UserColorSettings.java create mode 100644 src/main/java/io/github/dozius/settings/Vst2DeviceSetting.java create mode 100644 src/main/java/io/github/dozius/settings/Vst3DeviceSetting.java create mode 100644 src/main/java/io/github/dozius/twister/KnobMidiInfo.java create mode 100644 src/main/java/io/github/dozius/twister/LightMidiInfo.java create mode 100644 src/main/java/io/github/dozius/twister/MidiInfo.java create mode 100644 src/main/java/io/github/dozius/twister/Twister.java create mode 100644 src/main/java/io/github/dozius/twister/TwisterButton.java create mode 100644 src/main/java/io/github/dozius/twister/TwisterColors.java create mode 100644 src/main/java/io/github/dozius/twister/TwisterKnob.java create mode 100644 src/main/java/io/github/dozius/twister/TwisterLight.java create mode 100644 src/main/java/io/github/dozius/twister/TwisterRGBLight.java create mode 100644 src/main/java/io/github/dozius/twister/TwisterRingLight.java create mode 100644 src/main/java/io/github/dozius/util/CursorNormalizedValue.java create mode 100644 src/main/java/io/github/dozius/util/DevUtil.java create mode 100644 src/main/java/io/github/dozius/util/Logger.java create mode 100644 src/main/java/io/github/dozius/util/MathUtil.java create mode 100644 src/main/java/io/github/dozius/util/OnOffColorSupplier.java create mode 100644 src/main/resources/META-INF/services/com.bitwig.extension.ExtensionDefinition diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..acaf251 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +.settings/ +.vscode/ +target/ +.classpath +.project +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0a04128 --- /dev/null +++ b/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/README.md b/README.md new file mode 100644 index 0000000..627495b --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# Twister Sister Bitwig Controller Extension + +[![Download](https://img.shields.io/github/downloads/dozius/TwisterSister/total.svg)](https://github.com/dozius/TwisterSister/releases/latest) +[![Donate](https://img.shields.io/badge/donate-paypal-blue.svg)](https://www.paypal.me/cisc) + +This is the source code repository for the Twister Sister Bitwig controller extension. + +Precompiled releases can be found [here](https://github.com/dozius/TwisterSister/releases). + +User documentation, including installation instructions, can be found [here](docs/README.md). + +## Compiling + +### Requirements + +- [OpenJDK 12.x](https://adoptopenjdk.net/releases.html?variant=openjdk12) +- [Maven >= 3.1.0](https://maven.apache.org/) + +### Build and install + +1. Follow the installation instructions for each of the above requirements. +2. Run `mvn install`. + +### Debugging + +1. Set an environment variable `BITWIG_DEBUG_PORT` to an unused port number. +2. Restart Bitwig. +3. Setup your debugger to connect to the port from step 1. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..86046c2 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,202 @@ +# Twister Sister + +A Bitwig Studio controller extension for the +[DJ TechTools MIDI Fighter Twister](https://www.midifighter.com/#Twister). + +## Table of Contents + +- [Installation](#installation) +- [Hardware](#hardware) + - [Track & Device Bank (Bank 1)](#track--device-bank-bank-1) + - [Notes](#notes) + - [User Mappable Bank (Bank 2-4)](#user-mappable-bank-bank-2-4) + - [Side Buttons](#side-buttons) +- [Options](#options) + - [Show Bank Popup](#show-bank-popup) + - [Device Row Color](#device-row-color) + - [Global Fine Sensitivity](#global-fine-sensitivity) +- [Project Settings](#project-settings) + - [User Mappable Knob Colors](#user-mappable-knob-colors) +- [Specific Device Settings](#specific-device-settings) + - [Devices](#devices) + - [Controls](#controls) + - [Finding IDs](#finding-ids) + +## Installation + +1. Extract the zip file. + +2. Load the Twister Sister settings into your MIDI Fighter Twister. + + 1. Open the MIDI Fighter Utility and ensure your device is connected. + 2. Click `File -> Import Settings...` and select the file `TwisterSister.mfs`. + 3. Click `SEND TO MIDI FIGHTER`. + +3. Copy `TwisterSister.bwextension` and `SpecificDeviceSettings.toml` to the following location: + + - Windows: `%USERPROFILE%/Documents/Bitwig Studio/Extensions` + - Mac: `~/Documents/Bitwig Studio/Extensions` + - Linux: `~/Bitwig Studio/Extensions` + +4. Add your controller in Bitwig Studio. + + 1. Open Bitwig Studio and navigate to `Settings -> Controller` in the dashboard. + + 2. If auto-detection works then the device will automatically be added and you can skip the + remaining steps. + + 3. If auto-detection has failed then click on `+ Add Controller` then select `DJ TechTools` from + the hardware vendor drop down, `Twister Sister` in the product list and click `Add`. + ![add-device](images/add-device.png) + + 4. If your controller is not automatically added to the MIDI in and out ports then select them + manually. Once both ports have a device assigned the extension will activate. + ![midi-io](images/midi-io.png) + +## Hardware + +![hardware](images/hardware.png) + +### Track & Device Bank (Bank 1) + +| Knob | Twist | Click | Double Click | Long Press | RGB Light | +| ---- | --------------------------- | ------------------------- | --------------- | ------------------------- | -------------------- | +| 1 | Select track | Toggle mute | - | Toggle arm | Follow track color | +| 2 | Track volume | Toggle fine sensitivity | Reset volume | Toggle Solo | Follow track color | +| 3 | Track pan | Toggle sensitivity | Reset pan | - | Follow track color | +| 4 | Current send volume | Cycle through track sends | - | - | Follow send color | +| 5 | Select device | Toggle enable | - | Toggle expand | Device row color | +| 6 | Select remote controls page | Show/hide device UI | - | Show/Hide remote controls | Device row color | +| 7 | Specific device parameter 1 | Toggle fine sensitivity | Reset parameter | Insert device before | Device row color | +| 8 | Specific device parameter 2 | Toggle fine sensitivity | Reset parameter | Insert device after | Device row color | +| 9-16 | Remote control parameter | Toggle fine sensitivity | Reset parameter | - | Remote control color | + +#### Notes + +- The color palette on the Twister is very limited. Colors are matched as closely as possible. + +- If a device or parameter does not exist in the current context then the corresponding lights will + be off. + +- See the section on [specific device settings](#Specific-Device-Settings) for information on + configuring knobs 7 and 8. + +### User Mappable Bank (Bank 2-4) + +| Knob | Twist | Hold & Twist | Double Click | RGB Light | +| ---- | ------------------- | --------------- | ----------------- | --------------- | +| 1-16 | Mapped parameter(s) | Set light color | Reset light color | User selectable | + +### Side Buttons + +These are the settings provided by `TwisterSister.mfs`. The extension does not use the side buttons +in any way, so these can be changed to whatever you prefer in the MIDI Fighter Utility. + +| Button | Function | +| ------------ | ------------- | +| Left Side 1 | CC Hold | +| Left Side 2 | CC Hold | +| Left Side 3 | CC Hold | +| Right Side 1 | Previous Bank | +| Right Side 2 | Next Bank | +| Right Side 3 | Bank 1 | + +## Options + +These are global options that apply to the specific device across all projects. They are accessed in +the controller settings in the Bitwig Studio dashboard. + +![options](images/options.png) + +### Show Bank Popup + +Enable/disable showing a popup notification when banks are changed. + +### Device Row Color + +Sets the color used for knobs 5-8 in the [track & device bank](#Track-&-Device-Bank-(Bank-1)). This +uses the same color values as the [user mappable knobs](#User-Mappable-Knob-Colors). + +### Global Fine Sensitivity + +Sets the fine sensitivity factor for all encoder controls. The lower the number, the finer the +movement. + +## Project Settings + +These are per project settings and will be saved with each project. They are accessed in the I/O +panel of Bitwig Studio. + +![project-settings](images/project-settings.png) + +### User Mappable Knob Colors + +Show or hide the settings for each bank using the bank selector. Each knob can have it's color set +to one of the 125¹ colors supported by the Twister. A value of 0 will turn the light off. + +These settings can also be changed by holding and twisting any of the user mappable knobs. + +_¹ This should be 126 colors but there is a +[bug](https://github.com/DJ-TechTools/Midi_Fighter_Twister_Open_Source/issues/9) in the latest +software._ + +## Specific Device Settings + +The specific device feature allows you to assign two device specific parameters to knobs 7 and 8 in +the [track & device bank](#Track-&-Device-Bank-(Bank-1)). These follow the selected device. + +The settings file `SpecificDeviceSettings.toml` allows you to configure which parameters for which +devices will be assigned. The file is in [TOML](https://toml.io) format. + +### Devices + +Devices are added to the settings file into one of three table arrays. + +- `bitwig` for Bitwig Studio devices +- `vst3` for VST3 devices +- `vst2` for VST2 devices + +Each table in the array consists of an `id` key and a `params` table that contains any number of +parameter ID keys. The type of the ID and parameters is different for each of the three types. + +| Device Type | ID Type | Parameter Type | +| ----------- | ----------- | -------------- | +| Bitwig | UUID String | String | +| VST3 | String | Integer | +| VST2 | Integer | Integer | + +See the included `SpecificDeviceSettings.toml` file for examples. + +### Controls + +The `controls` table contains two string arrays, `knob1` and `knob2`. The strings in these arrays +are the device parameter key names that will be assigned to the respective knob in the +[track & device bank](#Track-&-Device-Bank-(Bank-1)). + +For example, inserting the string `"mix"` into the array will assign any parameters defined with a +key `mix` to that knob. + +See the included `SpecificDeviceSettings.toml` file for examples. + +### Finding IDs + +In order to retreive IDs for devices and their parameters you must add a configuration option to +Bitwig Studio. + +1. Create a file with the name `config.json` in your user settings directory. The location of this + directory is platform dependent: + + - Windows: `%LOCALAPPDATA%/Bitwig Studio` + - Mac: `Library/Application Support/Bitwig/Bitwig Studio` + - Linux: `~/.BitwigStudio` + +2. Add the following line to the `config.json` file: `can-copy-device-and-param-ids: true` + +3. Restart Bitwig Studio + +Once you have this setting in place, you can retreive IDs from the context menu of the device and +parameters. + +![device-id](images/device-id.png) + +![param-id](images/param-id.png) diff --git a/docs/images/add-device.png b/docs/images/add-device.png new file mode 100644 index 0000000000000000000000000000000000000000..fe760c61bb415445c3b3ac427c2c7c53eaeca2bd GIT binary patch literal 6693 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 literal 0 HcmV?d00001 diff --git a/docs/images/hardware.png b/docs/images/hardware.png new file mode 100644 index 0000000000000000000000000000000000000000..b17003e17cea41c10bb9736a3632bcef703bb9e3 GIT binary patch literal 313862 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

6J4}4>D!Qpm3*Lyb53j0fpNqpAD#UxxT1?O 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 q#-H`v3^wd?hZq|#km?cJ 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 a;4NyE$QSk;Od|eYkr?QhYS(B247 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 literal 0 HcmV?d00001 diff --git a/docs/images/param-id.png b/docs/images/param-id.png new file mode 100644 index 0000000000000000000000000000000000000000..c4f6a7d1236c722c2e2584952a5f3c3055044e44 GIT binary patch literal 9370 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 literal 0 HcmV?d00001 diff --git a/format.xml b/format.xml new file mode 100644 index 0000000..2775a0b --- /dev/null +++ b/format.xml @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..be8127c --- /dev/null +++ b/pom.xml @@ -0,0 +1,198 @@ + + + + 4.0.0 + io.github.dozius + twister-sister + jar + Twister Sister + 1.0.0 + + + UTF-8 + + + + + windows-profile + + + windows + + + + ${env.USERPROFILE}/Documents/Bitwig Studio/Extensions + + + + mac-profile + + + mac + + + + ~/Documents/Bitwig Studio/Extensions + + + + linux-profile + + + unix + Linux + + + + ~/Bitwig Studio/Extensions + + + + + + + bitwig + Bitwig Maven Repository + https://maven.bitwig.com + + + + + + com.bitwig + extension-api + 12 + + + + org.tomlj + tomlj + 1.0.0 + + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0-M3 + + + enforce-maven + + enforce + + + + + 3.1.0 + + + + + + + + + + org.codehaus.mojo + versions-maven-plugin + 2.8.1 + + false + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + com.bitwig:extension-api + + + + + + *:* + + META-INF/*.MF + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + true + true + 12 + UTF-8 + 1024m + + + + + com.coderplus.maven.plugins + copy-rename-maven-plugin + 1.0.1 + + + install-extension + install + + copy + + + ${project.build.directory}/${project.build.finalName}.jar + ${bitwig.extension.directory}/TwisterSister.bwextension + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + package-release + package + + single + + + false + TwisterSister-${project.version} + + release.xml + + + + + + + + + diff --git a/release.xml b/release.xml new file mode 100644 index 0000000..f4fb7fd --- /dev/null +++ b/release.xml @@ -0,0 +1,28 @@ + + + package-release + false + + zip + + + + ${project.build.directory}/${project.build.finalName}.jar + TwisterSister.bwextension + + + resources/TwisterSister.mfs + + + resources/SpecificDeviceSettings.toml + + + resources/README.txt + + + LICENSE + + + diff --git a/resources/README.txt b/resources/README.txt new file mode 100644 index 0000000..cf63d54 --- /dev/null +++ b/resources/README.txt @@ -0,0 +1,3 @@ +Twister Sister Bitwig Controller Extension + +For installation instructions please go to https://github.com/dozius/TwisterSister/tree/main/docs. diff --git a/resources/SpecificDeviceSettings.toml b/resources/SpecificDeviceSettings.toml new file mode 100644 index 0000000..9697397 --- /dev/null +++ b/resources/SpecificDeviceSettings.toml @@ -0,0 +1,60 @@ +[controls] +knob1 = [] # param keys that will be bound to knob 1 +knob2 = [] # param keys that will be bound to knob 2 + +# Example +# [controls] +# knob1 = ["mix"] +# knob2 = ["output_gain", "decay_time"] +# + +################################################################################ +# ______ _____ _____ _ _ _____ _____ +# | ___ \_ _|_ _| | | |_ _| __ \ +# | |_/ / | | | | | | | | | | | | \/ +# | ___ \ | | | | | |/\| | | | | | __ +# | |_/ /_| |_ | | \ /\ /_| |_| |_\ \ +# \____/ \___/ \_/ \/ \/ \___/ \____/ +# +################################################################################ +# Examples +# +# [[bitwig]] +# id = "72a3018d-788b-472c-b1d7-16419d00f4c6" +# params.mix = "MIX" +# +# [[bitwig]] +# id = "b5b2b08e-730e-4192-be71-f572ceb5069b" +# params.mix = "MIX" +# params.output_gain = "LEVEL" + +################################################################################ +# _ _ _____ _____ _____ +# | | | / ___|_ _|____ | +# | | | \ `--. | | / / +# | | | |`--. \ | | \ \ +# \ \_/ /\__/ / | | .___/ / +# \___/\____/ \_/ \____/ +# +################################################################################ +# Example +# +# [[vst3]] +# id = "5653547665653376616C68616C6C6176" +# params.mix = 48 +# params.decay_time = 50 + +################################################################################ +# _ _ _____ _____ _____ +# | | | / ___|_ _/ __ \ +# | | | \ `--. | | `' / /' +# | | | |`--. \ | | / / +# \ \_/ /\__/ / | | ./ /___ +# \___/\____/ \_/ \_____/ +# +################################################################################ +# Example +# +# [[vst2]] +# id = 1315513406 +# params.mix = 11 diff --git a/resources/TwisterSister.mfs b/resources/TwisterSister.mfs new file mode 100644 index 0000000000000000000000000000000000000000..5f51f4f1f333b56690242d0c8d48eedab01d4582 GIT binary patch literal 2294 zcmaLVN3Pod6hqM`S(e;;@4fflohAJpWb6515QE_$^MeZxXeaX=$F-1o77lzrh(zAe zpD~MD!jf*v(w1?umUHt~u;RO9Wvf{GtMg@!V~zhYa~*4afP;?n>A2q=&q7RG5LbxD zBm@!?5@zCocpvh6uxCD#Fi2QPz{CgfKjhEc2$KLL5E5k)0f`8SF^Pgig~XY}Kw?4? zOyVGMAxS0)kc5yFlO#w|NSa9sBqb!nBn^@llKo5k?^9(!GD31pvLIO@c_ulKoR9*O zJV;(hkx2ohAf&{k2vQVMW>Nwv38^qCgOr6-nN&b3LTXH^AXOoCCN+?nkOq@FNL@&i zNdu%Iq{XBO(iGBW(gJA-=`d-7w1sq;bU->ndQ7??T_JrYJ&>M|0h2yRU&xTj0AwI! z#AFCE6f$Nq0vQRJFd2i4g-n@DKqf+FOr{`HA#)}(keQGLlR3y-$dbtdWFch5WC^kq zvSzXZSqa%NS%a*FY?*98HbQnxwjf&}dnP-Oosa{QJ;+|jk;wt%Amqg42yzs1W^w{K z3Ar#igPet2nOs0FLT*g1AXg!GCO43qkOz}H$X&>j$phpe. + * + */ +package io.github.dozius; + +import java.util.List; +import java.util.Set; + +import com.bitwig.extension.api.Color; +import com.bitwig.extension.controller.api.Bank; +import com.bitwig.extension.controller.api.ControllerHost; +import com.bitwig.extension.controller.api.CursorDevice; +import com.bitwig.extension.controller.api.CursorRemoteControlsPage; +import com.bitwig.extension.controller.api.CursorTrack; +import com.bitwig.extension.controller.api.Device; +import com.bitwig.extension.controller.api.DeviceBank; +import com.bitwig.extension.controller.api.DocumentState; +import com.bitwig.extension.controller.api.HardwareSurface; +import com.bitwig.extension.controller.api.MidiIn; +import com.bitwig.extension.controller.api.MidiOut; +import com.bitwig.extension.controller.api.Parameter; +import com.bitwig.extension.controller.api.PinnableCursorDevice; +import com.bitwig.extension.controller.api.Preferences; +import com.bitwig.extension.controller.api.RemoteControl; +import com.bitwig.extension.controller.api.Send; +import com.bitwig.extension.controller.api.SendBank; +import com.bitwig.extension.controller.api.SettableBooleanValue; +import com.bitwig.extension.controller.api.SettableRangedValue; +import com.bitwig.extension.controller.api.TrackBank; +import com.bitwig.extension.controller.ControllerExtension; + +import io.github.dozius.settings.AbstractDeviceSetting; +import io.github.dozius.settings.UserColorSettings; +import io.github.dozius.settings.SpecificDeviceSettings; +import io.github.dozius.twister.Twister; +import io.github.dozius.twister.TwisterColors; +import io.github.dozius.twister.TwisterKnob; +import io.github.dozius.util.CursorNormalizedValue; +import io.github.dozius.util.OnOffColorSupplier; + +public class TwisterSisterExtension extends ControllerExtension +{ + public MidiIn midiIn; + public MidiOut midiOut; + public HardwareSurface hardwareSurface; + public Twister twister; + public CursorTrack cursorTrack; + + private DocumentState documentState; + private SpecificDeviceSettings specificDeviceSettings; + private OnOffColorSupplier deviceColorSupplier; + private OnOffColorSupplier devicePageColorSupplier; + private OnOffColorSupplier deviceSpecific1ColorSupplier; + private OnOffColorSupplier deviceSpecific2ColorSupplier; + + protected TwisterSisterExtension(final TwisterSisterExtensionDefinition definition, + final ControllerHost host) + { + super(definition, host); + } + + @Override + public void init() + { + final ControllerHost host = getHost(); + + midiIn = host.getMidiInPort(0); + midiOut = host.getMidiOutPort(0); + hardwareSurface = host.createHardwareSurface(); + twister = new Twister(this); + documentState = host.getDocumentState(); + specificDeviceSettings = new SpecificDeviceSettings(getSpecificDeviceSettingsPath()); + cursorTrack = host.createCursorTrack(1, 0); + deviceColorSupplier = new OnOffColorSupplier(); + devicePageColorSupplier = new OnOffColorSupplier(); + deviceSpecific1ColorSupplier = new OnOffColorSupplier(); + deviceSpecific2ColorSupplier = new OnOffColorSupplier(); + + loadPreferences(); + setupTrackBank(); + setupUserBanks(); + + twister.setActiveBank(0); + } + + @Override + public void exit() + { + if (twister != null) { + twister.lightsOff(); + } + } + + @Override + public void flush() + { + if (hardwareSurface != null) { + hardwareSurface.updateHardware(); + } + } + + /** + * Gets the path to the specific device settings config file in a cross platform manner. + * + * @return Path to "SpecificDeviceSettings.toml". + */ + private String getSpecificDeviceSettingsPath() + { + final String file = "SpecificDeviceSettings.toml"; + + switch (getHost().getPlatformType()) + { + case WINDOWS: + final String userProfile = System.getenv("USERPROFILE").replace("\\", "/"); + return userProfile + "/Documents/Bitwig Studio/Extensions/" + file; + + case MAC: + return "~/Documents/Bitwig Studio/Extensions/" + file; + + case LINUX: + return "~/Bitwig Studio/Extensions/" + file; + + default: + throw new IllegalArgumentException("Unknown Platform"); + } + } + + /** Loads the extension preferences and sets up observers to allow for interactive updates. */ + private void loadPreferences() + { + final Preferences preferences = getHost().getPreferences(); + + // Enable/disable notification popups on bank change + final SettableBooleanValue popupEnabled = preferences.getBooleanSetting("Show Bank Popup", + "Options", false); + twister.setPopupEnabled(popupEnabled.get()); + popupEnabled.addValueObserver(twister::setPopupEnabled); + + // Set the color used for the row of controls related to devices, i.e. second row + final SettableRangedValue deviceRowColor = preferences.getNumberSetting("Device Row Color", + "Options", 0, 125, 1, + null, 115); + setDeviceRowColor(TwisterColors.ALL.get((int) deviceRowColor.getRaw())); + deviceRowColor.addValueObserver(125, + (value) -> setDeviceRowColor(TwisterColors.ALL.get(value))); + + // Sets the fine sensitivity factor for all knobs + final SettableRangedValue globalFineSensitivity = preferences.getNumberSetting("Global Fine Sensitivity", + "Options", 0.01, + 1.00, 0.01, null, + 0.25); + setGlobalFineSensitivity(globalFineSensitivity.get()); + globalFineSensitivity.addValueObserver(this::setGlobalFineSensitivity); + } + + /** + * Sets the RGB light color for the row of device related controls on the track bank. + * + * @param color Color to set the RGB lights. + */ + private void setDeviceRowColor(Color color) + { + deviceColorSupplier.setOnColor(color); + devicePageColorSupplier.setOnColor(color); + deviceSpecific1ColorSupplier.setOnColor(color); + deviceSpecific2ColorSupplier.setOnColor(color); + } + + /** + * Sets the fine sensitivity factor for all controls + * + * @param factor Sensitivity factor to use. + */ + private void setGlobalFineSensitivity(double factor) + { + for (Twister.Bank bank : twister.banks) { + for (TwisterKnob knob : bank.knobs) { + knob.setFineSensitivity(factor); + } + } + } + + /** Sets up all the hardware for the track bank. */ + private void setupTrackBank() + { + addTrackKnobs(); + addDeviceKnobs(); + } + + /** Sets up all the hardware for all 3 user banks. */ + private void setupUserBanks() + { + final UserColorSettings colorSettings = new UserColorSettings(documentState); + + for (int bank = 1; bank < twister.banks.length; ++bank) { + final TwisterKnob[] knobs = twister.banks[bank].knobs; + final int settingsBank = bank - 1; + + for (int idx = 0; idx < knobs.length; ++idx) { + final TwisterKnob knob = knobs[idx]; + final SettableRangedValue colorSetting = colorSettings.getSetting(settingsBank, idx); + + // Ring light follows whatever target is currently bound to the knob + knob.ringLight().observeValue(knob.targetValue()); + + // Change color setting with shift encoder + knob.setShiftBinding(UserColorSettings.createTarget(getHost(), colorSetting)); + + // Send changes from color setting to RGB light + colorSetting.addValueObserver(126, knob.rgbLight()::setRawValue); + + // Reset color on double press + knob.button().addDoubleClickedObserver(() -> colorSetting.set(0.0)); + } + } + } + + /** Sets up all the track related knobs. Track select, volume, pan, etc. */ + private void addTrackKnobs() + { + final TrackBank trackBank = cursorTrack.createSiblingsTrackBank(1, 0, 0, true, true); + final TwisterKnob[] knobs = twister.banks[0].knobs; + final SendBank sendBank = cursorTrack.sendBank(); + final Send send = sendBank.getItemAt(0); + + cursorTrack.color().markInterested(); + sendBank.canScrollForwards().markInterested(); + sendBank.itemCount().markInterested(); + send.sendChannelColor().markInterested(); + + final TwisterKnob selectionKnob = knobs[0]; + selectionKnob.setBinding(cursorTrack); + selectionKnob.ringLight().observeValue(new CursorNormalizedValue(cursorTrack, trackBank)); + selectionKnob.rgbLight().setColorSupplier(cursorTrack.color()); + selectionKnob.button().addClickedObserver(cursorTrack.mute()::toggle); + selectionKnob.button().addLongPressedObserver(cursorTrack.arm()::toggle); + + final TwisterKnob volumeKnob = knobs[1]; + volumeKnob.setBinding(cursorTrack.volume()); + volumeKnob.ringLight().observeValue(cursorTrack.volume().value()); + volumeKnob.rgbLight().setColorSupplier(cursorTrack.color()); + volumeKnob.button().addLongPressedObserver(cursorTrack.solo()::toggle); + volumeKnob.button().addClickedObserver(volumeKnob::toggleSensitivity); + volumeKnob.button().addDoubleClickedObserver(cursorTrack.volume()::reset); + + final TwisterKnob panKnob = knobs[2]; + panKnob.setBinding(cursorTrack.pan()); + panKnob.ringLight().observeValue(cursorTrack.pan().value()); + panKnob.rgbLight().setColorSupplier(cursorTrack.color()); + panKnob.button().addClickedObserver(panKnob::toggleSensitivity); + panKnob.button().addDoubleClickedObserver(cursorTrack.pan()::reset); + + final TwisterKnob sendKnob = knobs[3]; + sendKnob.setBinding(send); + sendKnob.ringLight().observeValue(send.value()); + sendKnob.rgbLight().setColorSupplier(send.sendChannelColor()); + sendKnob.button().addClickedObserver(() -> circularScrollForward(sendBank)); + } + + /** Sets up all the device related knobs. Selection, remote control page, etc. */ + private void addDeviceKnobs() + { + final PinnableCursorDevice cursorDevice = cursorTrack.createCursorDevice(); + final CursorRemoteControlsPage remoteControlsPage = cursorDevice.createCursorRemoteControlsPage(8); + final DeviceBank deviceBank = cursorDevice.createSiblingsDeviceBank(1); + final TwisterKnob[] knobs = twister.banks[0].knobs; + + cursorDevice.exists().addValueObserver(deviceColorSupplier::setOn); + cursorDevice.exists().addValueObserver(devicePageColorSupplier::setOn); + remoteControlsPage.pageCount() + .addValueObserver((count) -> devicePageColorSupplier.setOn(count > 0)); + + final TwisterKnob deviceKnob = knobs[4]; + deviceKnob.setBinding(cursorDevice); + deviceKnob.ringLight().observeValue(new CursorNormalizedValue(cursorDevice, deviceBank)); + deviceKnob.rgbLight().setColorSupplier(deviceColorSupplier); + deviceKnob.button().addClickedObserver(cursorDevice.isEnabled()::toggle); + deviceKnob.button().addLongPressedObserver(cursorDevice.isExpanded()::toggle); + + final TwisterKnob pageKnob = knobs[5]; + pageKnob.setBinding(remoteControlsPage); + pageKnob.ringLight().observeValue(new CursorNormalizedValue(remoteControlsPage)); + pageKnob.rgbLight().setColorSupplier(devicePageColorSupplier); + pageKnob.button().addClickedObserver(cursorDevice.isWindowOpen()::toggle); + pageKnob.button().addLongPressedObserver(cursorDevice.isRemoteControlsSectionVisible()::toggle); + + final TwisterKnob specificDeviceKnob1 = knobs[6]; + bindLongPressedToBrowseBeforeDevice(specificDeviceKnob1, cursorDevice); + setupSpecificDeviceKnob("knob1", specificDeviceKnob1, cursorDevice, + deviceSpecific1ColorSupplier); + + final TwisterKnob specificDeviceKnob2 = knobs[7]; + bindLongPressedToBrowseAfterDevice(specificDeviceKnob2, cursorDevice); + setupSpecificDeviceKnob("knob2", specificDeviceKnob2, cursorDevice, + deviceSpecific2ColorSupplier); + + final int firstKnobIndex = 8; + + for (int i = 0; i < remoteControlsPage.getParameterCount(); ++i) { + final Color color = TwisterColors.BITWIG_PARAMETERS.get(i); + final OnOffColorSupplier colorSupplier = new OnOffColorSupplier(color); + final TwisterKnob knob = knobs[firstKnobIndex + i]; + final RemoteControl control = remoteControlsPage.getParameter(i); + + control.setIndication(true); + control.exists().addValueObserver(colorSupplier::setOn); + knob.setBinding(control); + knob.ringLight().observeValue(control.value()); + knob.rgbLight().setColorSupplier(colorSupplier); + knob.button().addClickedObserver(knob::toggleSensitivity); + knob.button().addDoubleClickedObserver(control::reset); + } + } + + /** + * Helper function to scroll a bank forward in a circular fashion, i.e. wraps around to the + * beginning if scrolling past the end. + * + * @param bank The bank to scroll. + */ + private void circularScrollForward(Bank bank) + { + if (bank.canScrollForwards().get()) { + bank.scrollForwards(); + } + else { + bank.scrollBy(-(bank.itemCount().get() - 1)); + } + } + + /** + * Binds a knob buttons long pressed action to insert a device after the selected device or at the + * start of the chain if no devices exist yet. + * + * @param knob Knob to bind. + * @param cursorDevice Device cursor to follow. + */ + private void bindLongPressedToBrowseAfterDevice(TwisterKnob knob, CursorDevice cursorDevice) + { + cursorDevice.exists().addValueObserver((exists) -> { + final Runnable browseAfter = cursorDevice.afterDeviceInsertionPoint()::browse; + final Runnable browseStart = cursorDevice.deviceChain() + .startOfDeviceChainInsertionPoint()::browse; + + knob.button().setLongPressedObserver(exists ? browseAfter : browseStart); + }); + } + + /** + * Binds a knob buttons long pressed action to insert a device before the selected device or at + * the start of the chain if no devices exist yet. + * + * @param knob Knob to bind. + * @param cursorDevice Device cursor to follow. + */ + private void bindLongPressedToBrowseBeforeDevice(TwisterKnob knob, CursorDevice cursorDevice) + { + cursorDevice.exists().addValueObserver((exists) -> { + final Runnable browseBefore = cursorDevice.beforeDeviceInsertionPoint()::browse; + final Runnable browseStart = cursorDevice.deviceChain() + .startOfDeviceChainInsertionPoint()::browse; + + knob.button().setLongPressedObserver(exists ? browseBefore : browseStart); + }); + } + + /** + * Sets up a knob to control a specific device control parameter based on key name. + * + * @param controlKey The controls key to apply to the knob. + * @param knob The knob to setup. + * @param device The device used to create the parameters. + * @param colorSupplier The color supplier for the knob. + */ + private void setupSpecificDeviceKnob(String controlKey, TwisterKnob knob, Device device, + OnOffColorSupplier colorSupplier) + { + knob.rgbLight().setColorSupplier(colorSupplier); + knob.button().addClickedObserver(knob::toggleSensitivity); + + final Set keys = specificDeviceSettings.controlMap().get(controlKey); + + if (keys == null) { + return; + } + + for (String key : keys) { + bindSpecificDevices(specificDeviceSettings.bitwigDevices(), key, device, knob, colorSupplier); + bindSpecificDevices(specificDeviceSettings.vst3Devices(), key, device, knob, colorSupplier); + bindSpecificDevices(specificDeviceSettings.vst2Devices(), key, device, knob, colorSupplier); + } + } + + /** + * Binds all available parameters from all devices that match the key. + * + * @param The type of the device ID. This will be deduced from settings. + * @param The type of device settings object. This will be deduced from settings. + * @param settings The list of device settings to search. + * @param key The parameter key to match against. + * @param device The device used to create parameters. + * @param knob The knob to bind parameters to. + * @param colorSupplier The knobs color supplier. + */ + private > void bindSpecificDevices(List settings, + String key, + Device device, + TwisterKnob knob, + OnOffColorSupplier colorSupplier) + { + for (final SettingType setting : settings) { + if (setting.parameters().get(key) == null) { + continue; + } + + final Parameter param = setting.createParameter(device, key); + + knob.ringLight().observeValue(param.value()); + + param.exists().markInterested(); + param.exists().addValueObserver((exists) -> { + if (exists) { + knob.setBinding(param); + knob.button().setDoubleClickedObserver(param::reset); + } + + colorSupplier.setOn(exists); + }); + } + } +} diff --git a/src/main/java/io/github/dozius/TwisterSisterExtensionDefinition.java b/src/main/java/io/github/dozius/TwisterSisterExtensionDefinition.java new file mode 100644 index 0000000..76b8ef7 --- /dev/null +++ b/src/main/java/io/github/dozius/TwisterSisterExtensionDefinition.java @@ -0,0 +1,118 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius; + +import java.util.UUID; + +import com.bitwig.extension.api.PlatformType; +import com.bitwig.extension.controller.AutoDetectionMidiPortNamesList; +import com.bitwig.extension.controller.ControllerExtensionDefinition; +import com.bitwig.extension.controller.api.ControllerHost; + +public class TwisterSisterExtensionDefinition extends ControllerExtensionDefinition +{ + private static final UUID DRIVER_ID = UUID.fromString("b4c9dbb6-c8b8-4f79-8c3a-cd43650fab44"); + + public TwisterSisterExtensionDefinition() + { + } + + @Override + public String getName() + { + return "Twister Sister"; + } + + @Override + public String getAuthor() + { + return "Dan Smith"; + } + + @Override + public String getVersion() + { + return "1.0.0"; + } + + @Override + public UUID getId() + { + return DRIVER_ID; + } + + @Override + public String getHardwareVendor() + { + return "DJ TechTools"; + } + + @Override + public String getHardwareModel() + { + return "MIDI Fighter Twister"; + } + + @Override + public int getRequiredAPIVersion() + { + return 12; + } + + @Override + public int getNumMidiInPorts() + { + return 1; + } + + @Override + public int getNumMidiOutPorts() + { + return 1; + } + + @Override + public void listAutoDetectionMidiPortNames(final AutoDetectionMidiPortNamesList list, + final PlatformType platformType) + { + switch (platformType) + { + case WINDOWS: + case MAC: + list.add(new String[] {"Midi Fighter Twister"}, new String[] {"Midi Fighter Twister"}); + break; + + case LINUX: + list.add(new String[] {"Midi Fighter Twister MIDI 1"}, + new String[] {"Midi Fighter Twister MIDI 1"}); + break; + } + } + + @Override + public TwisterSisterExtension createInstance(final ControllerHost host) + { + return new TwisterSisterExtension(this, host); + } + + @Override + public String getHelpFilePath() + { + return "https://github.com/dozius/TwisterSister/tree/main/docs"; + } +} diff --git a/src/main/java/io/github/dozius/settings/AbstractDeviceSetting.java b/src/main/java/io/github/dozius/settings/AbstractDeviceSetting.java new file mode 100644 index 0000000..be6ad6a --- /dev/null +++ b/src/main/java/io/github/dozius/settings/AbstractDeviceSetting.java @@ -0,0 +1,68 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.settings; + +import java.util.Map; + +import com.bitwig.extension.controller.api.Device; +import com.bitwig.extension.controller.api.Parameter; + +/** Base class for specific device settings. */ +public abstract class AbstractDeviceSetting +{ + protected final IdType id; + protected final Map params; + + /** + * Creates a new AbstractDeviceSetting. + * + * @param id The ID of the device. + * @param params The device parameters mapped to string keys. + */ + protected AbstractDeviceSetting(IdType id, Map params) + { + this.id = id; + this.params = params; + } + + /** + * @return The device ID. + */ + public IdType id() + { + return id; + } + + /** + * @return Parameter IDs mapped to string keys. + */ + public Map parameters() + { + return params; + } + + /** + * Creates a specific device parameter for the device based on the key. + * + * @param device The device from which to create the parameter. + * @param key The key of the parameter to create. + * + * @return The parameter if it exists, otherwise null. + */ + public abstract Parameter createParameter(Device device, String key); +} diff --git a/src/main/java/io/github/dozius/settings/BitwigDeviceSetting.java b/src/main/java/io/github/dozius/settings/BitwigDeviceSetting.java new file mode 100644 index 0000000..d4f270d --- /dev/null +++ b/src/main/java/io/github/dozius/settings/BitwigDeviceSetting.java @@ -0,0 +1,73 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.settings; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import com.bitwig.extension.controller.api.Device; +import com.bitwig.extension.controller.api.Parameter; + +import org.tomlj.TomlTable; + +/** + * Bitwig specific device settings. + * + * Contains an ID as well as any parameter IDs that were set during construction. + */ +public class BitwigDeviceSetting extends AbstractDeviceSetting +{ + private BitwigDeviceSetting(UUID id, Map params) + { + super(id, params); + } + + /** + * Constructs a BitwigDeviceSetting object from a TOML table. + * + * @param table The TOML table from which to create the object. + * + * @return A new BitwigDeviceSetting. Throws on errors. + */ + public static BitwigDeviceSetting fromToml(TomlTable table) + { + final UUID id = UUID.fromString(table.getString("id")); + + final Map params = new HashMap<>(); + final TomlTable tomlParams = table.getTable("params"); + + for (String key : tomlParams.keySet()) { + final String paramId = tomlParams.getString(key); + + if (paramId == null || paramId.isEmpty()) { + throw new IllegalArgumentException("Parameter ID must not be null or empty"); + } + + params.put(key, paramId); + } + + return new BitwigDeviceSetting(id, params); + } + + @Override + public Parameter createParameter(Device device, String key) + { + return device.createSpecificBitwigDevice(id).createParameter(params.get(key)); + } +} diff --git a/src/main/java/io/github/dozius/settings/SpecificDeviceSettings.java b/src/main/java/io/github/dozius/settings/SpecificDeviceSettings.java new file mode 100644 index 0000000..e6f0929 --- /dev/null +++ b/src/main/java/io/github/dozius/settings/SpecificDeviceSettings.java @@ -0,0 +1,239 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.settings; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Function; + +import org.tomlj.Toml; +import org.tomlj.TomlArray; +import org.tomlj.TomlParseError; +import org.tomlj.TomlParseResult; +import org.tomlj.TomlTable; + +/** + * Represents data loaded from a specific devices settings file. + * + * This data can be used to programmatically setup specific devices using the specific device + * portion of the extension API. Since the API provides no way to query device and param IDs, this + * allows for more flexibility than a hardcoded approach to specific device setup. + * + * The TOML file is required to a have a specific structure. + * + * A table called "controls". This table can have any number of string array keys. These string + * arrays are loaded into the controlMap. This table is optional. + * + * Three table arrays, "bitwig", "vst3" and "vst2". These represent all the device settings. These + * arrays are optional. + * + * Each table requires an id key that is equal to the device ID taken from Bitwig. For Bitwig and + * VST3 devices it is a string, for VST2 it is an integer. + * + * Each table has a sub table called "params". This table contains any number of keys that are equal + * to parameter IDs taken from Bitwig. Bitwig device parameters are strings, VST3 and VST2 device + * parameters are integers. + * + * Example: + * + *

+ * [controls]
+ * knob1 = ["mix"]
+ * knob2 = ["output_gain", "decay_time"]
+ *
+ * [[bitwig]]
+ * id = "b5b2b08e-730e-4192-be71-f572ceb5069b"
+ * params.mix = "MIX"
+ * params.output_gain = "LEVEL"
+ *
+ * [[vst3]]
+ * id = "5653547665653376616C68616C6C6176"
+ * params.mix = 48
+ * params.decay_time = 50
+ *
+ * [[vst2]]
+ * id = 1315513406
+ * params.mix = 11
+ * 
+ * + * These table arrays end up as the bitwigDevices, vst3Devices and vst2Devices lists. + */ +public class SpecificDeviceSettings +{ + private final Map> controlMap; + private final List bitwigDevices; + private final List vst3Devices; + private final List vst2Devices; + + /** + * Constructs a SpecificDeviceSettings object from the specified TOML file. + * + * @param settingsPath The path to the TOML file to parse. + */ + public SpecificDeviceSettings(Path settingsPath) + { + try { + final TomlParseResult toml = Toml.parse(settingsPath); + + if (toml.hasErrors()) { + final ArrayList errorMessages = new ArrayList<>(); + + for (final TomlParseError error : toml.errors()) { + errorMessages.add(error.toString()); + } + + throw new ParseException(String.join("\n", errorMessages), 0); + } + + controlMap = loadControls(toml); + bitwigDevices = loadDevices(toml, "bitwig", BitwigDeviceSetting::fromToml); + vst3Devices = loadDevices(toml, "vst3", Vst3DeviceSetting::fromToml); + vst2Devices = loadDevices(toml, "vst2", Vst2DeviceSetting::fromToml); + } + catch (Exception e) { + throw new RuntimeException(e); + } + } + + /** + * Constructs a SpecificDeviceSettings object from the specified TOML file. + * + * @param settingsPath The path to the TOML file to parse as a string. + */ + public SpecificDeviceSettings(String settingsPath) + { + this(Paths.get(settingsPath)); + } + + /** + * @return Map of controls with parameter keys. + */ + public Map> controlMap() + { + return controlMap; + } + + /** + * @return List of Bitwig devices. + */ + public List bitwigDevices() + { + return bitwigDevices; + } + + /** + * @return List of VST3 devices. + */ + public List vst3Devices() + { + return vst3Devices; + } + + /** + * @return List of VST2 devices. + */ + public List vst2Devices() + { + return vst2Devices; + } + + /** + * Loads all the controls and their device parameter key arrays from the controls table. + * + * @param result The parse result of the the TOML config file. + * + * @return A set of control keys mapped to lists of device parameter keys. + */ + private Map> loadControls(TomlParseResult result) + { + final TomlTable controlsTable = result.getTable("controls"); + + if (controlsTable == null) { + return null; + } + + final Map> output = new HashMap<>(); + + for (String key : controlsTable.keySet()) { + final TomlArray controlParams = controlsTable.getArray(key); + + if (controlParams == null) { + continue; + } + + Set params = new HashSet<>(); + + for (int i = 0; i < controlParams.size(); ++i) { + final String param = controlParams.getString(i); + + if (param == null) { + continue; + } + + params.add(param); + } + + output.put(key, params); + } + + return output; + } + + /** + * Loads all the devices of a specific type. + * + * @param The type of the device ID. + * @param The settings type for the device. + * @param result The parse result of the TOML config file. + * @param key The key of the array of device tables. + * @param deviceBuilder A function that will construct the device setting from a TOML table. + * + * @return A list of valid device settings. + */ + private > List loadDevices(TomlParseResult result, + String key, + Function deviceBuilder) + { + final TomlArray devices = result.getArray(key); + + if (devices == null) { + return null; + } + + final Map settings = new HashMap<>(); + + for (int idx = 0; idx < devices.size(); ++idx) { + final SettingType device = deviceBuilder.apply(devices.getTable(idx)); + + if (settings.containsKey(device.id())) { + throw new RuntimeException("Duplicate " + key + " device ID found: " + device.id()); + } + + settings.put(device.id(), device); + } + + return new ArrayList<>(settings.values()); + } +} diff --git a/src/main/java/io/github/dozius/settings/UserColorSettings.java b/src/main/java/io/github/dozius/settings/UserColorSettings.java new file mode 100644 index 0000000..1a54ea2 --- /dev/null +++ b/src/main/java/io/github/dozius/settings/UserColorSettings.java @@ -0,0 +1,129 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.settings; + +import java.util.List; + +import com.bitwig.extension.controller.api.ControllerHost; +import com.bitwig.extension.controller.api.DocumentState; +import com.bitwig.extension.controller.api.RelativeHardwarControlBindable; +import com.bitwig.extension.controller.api.SettableEnumValue; +import com.bitwig.extension.controller.api.SettableRangedValue; +import com.bitwig.extension.controller.api.Setting; + +import io.github.dozius.twister.Twister; +import io.github.dozius.util.MathUtil; + +/** + * Color settings for the individual RGB lights in each user mappable bank. + * + * These settings can be accessed in the I/O panel. There is also a helper function to create + * bindable targets for a setting so that it can be controlled via hardware. + */ +public class UserColorSettings +{ + private static final int NUM_USER_BANKS = 3; + private static final int NUM_KNOBS_PER_BANK = Twister.Bank.NUM_KNOBS; + + private final List options = List.of("Hide", "2", "3", "4"); + private final SettableRangedValue[][] settings = new SettableRangedValue[NUM_USER_BANKS][NUM_KNOBS_PER_BANK]; + private final SettableEnumValue selector; + + /** + * Creates all the settings from the document state. + * + * @param documentState The document state of the host. + */ + public UserColorSettings(DocumentState documentState) + { + // Setup the bank selector + final String[] strings = options.toArray(String[]::new); + selector = documentState.getEnumSetting("Bank", "Colors", strings, options.get(0)); + selector.addValueObserver((value) -> showBank(options.indexOf(value) - 1)); + + // Create all the individual settings + for (int bank = 0; bank < settings.length; ++bank) { + final SettableRangedValue[] settingsBank = settings[bank]; + + for (int idx = 0; idx < settingsBank.length; ++idx) { + final String label = String.format("Color %02d%" + (bank + 1) + "s", idx + 1, " "); + final SettableRangedValue colorSetting = documentState.getNumberSetting(label, "Colors", 0, + 125, 1, null, 0); + settingsBank[idx] = colorSetting; + ((Setting) colorSetting).hide(); + } + } + } + + /** + * Gets a specific setting. + * + * @param colorBankIndex Bank index of the desired setting. + * @param knobIndex Knob index of the desired setting. + * + * @return The setting for the given bank and index. + */ + public SettableRangedValue getSetting(int colorBankIndex, int knobIndex) + { + return settings[colorBankIndex][knobIndex]; + } + + /** + * Creates a target to a color setting that is able to be bound to hardware. + * + * Despite being a SettableRangedValue, the settings are not compatible targets and this proxy + * target must be created instead. + * + * @param host The controller host. + * @param setting The setting to create a target for. + * + * @return A bindable target to the setting. + */ + public static RelativeHardwarControlBindable createTarget(ControllerHost host, + SettableRangedValue setting) + { + return host.createRelativeHardwareControlAdjustmentTarget((value) -> { + final double adjustedValue = MathUtil.clamp(setting.get() + value, 0.0, 1.0); + setting.set(adjustedValue); + }); + } + + /** Hides all the settings from the UI panel. */ + private void hideAll() + { + for (final SettableRangedValue[] settingsBank : settings) { + for (final SettableRangedValue colorSetting : settingsBank) { + ((Setting) colorSetting).hide(); + } + } + } + + /** Handles bank visibility */ + private void showBank(int index) + { + hideAll(); + + if (index < 0) { + return; + } + + for (final SettableRangedValue colorSetting : settings[index]) { + ((Setting) colorSetting).show(); + } + } +} diff --git a/src/main/java/io/github/dozius/settings/Vst2DeviceSetting.java b/src/main/java/io/github/dozius/settings/Vst2DeviceSetting.java new file mode 100644 index 0000000..e8f69de --- /dev/null +++ b/src/main/java/io/github/dozius/settings/Vst2DeviceSetting.java @@ -0,0 +1,77 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.settings; + +import java.util.HashMap; +import java.util.Map; + +import com.bitwig.extension.controller.api.Device; +import com.bitwig.extension.controller.api.Parameter; + +import org.tomlj.TomlTable; + +/** + * VST2 specific device settings. + * + * Contains an ID as well as any parameter IDs that were set during construction. + */ +public class Vst2DeviceSetting extends AbstractDeviceSetting +{ + private Vst2DeviceSetting(Integer id, Map params) + { + super(id, params); + } + + /** + * Constructs a Vst2DeviceSetting object from a TOML table. + * + * @param table The TOML table from which to create the object. + * + * @return A new Vst2DeviceSetting. Throws on errors. + */ + public static Vst2DeviceSetting fromToml(TomlTable table) + { + final Integer id = Math.toIntExact(table.getLong("id")); + + // All VST2 IDs seem to be positive integers + if (id < 0) { + throw new IllegalArgumentException("VST2 device ID must not be negative"); + } + + final Map params = new HashMap<>(); + final TomlTable tomlParams = table.getTable("params"); + + for (String key : tomlParams.keySet()) { + final Integer paramId = Math.toIntExact(tomlParams.getLong(key)); + + if (paramId < 0) { + throw new IllegalArgumentException("Parameter ID must not be negative"); + } + + params.put(key, paramId); + } + + return new Vst2DeviceSetting(id, params); + } + + @Override + public Parameter createParameter(Device device, String key) + { + return device.createSpecificVst2Device(id).createParameter(params.get(key)); + } +} diff --git a/src/main/java/io/github/dozius/settings/Vst3DeviceSetting.java b/src/main/java/io/github/dozius/settings/Vst3DeviceSetting.java new file mode 100644 index 0000000..8f3f9b8 --- /dev/null +++ b/src/main/java/io/github/dozius/settings/Vst3DeviceSetting.java @@ -0,0 +1,77 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.settings; + +import java.util.HashMap; +import java.util.Map; + +import com.bitwig.extension.controller.api.Device; +import com.bitwig.extension.controller.api.Parameter; + +import org.tomlj.TomlTable; + +/** + * VST3 specific device settings. + * + * Contains an ID as well as any parameter IDs that were set during construction. + */ +public class Vst3DeviceSetting extends AbstractDeviceSetting +{ + private Vst3DeviceSetting(String id, Map params) + { + super(id, params); + } + + /** + * Constructs a Vst3DeviceSetting object from a TOML table. + * + * @param table The TOML table from which to create the object. + * + * @return A new Vst3DeviceSetting. Throws on errors. + */ + public static Vst3DeviceSetting fromToml(TomlTable table) + { + final String id = table.getString("id"); + + // All VST3 IDs seem to be a 32 character hex strings + if (id.length() != 32) { + throw new IllegalArgumentException("VST3 device ID must be 32 characters long"); + } + + final Map params = new HashMap<>(); + final TomlTable tomlParams = table.getTable("params"); + + for (String key : tomlParams.keySet()) { + final Integer paramId = Math.toIntExact(tomlParams.getLong(key)); + + if (paramId < 0) { + throw new IllegalArgumentException("Parameter ID must not be negative"); + } + + params.put(key, paramId); + } + + return new Vst3DeviceSetting(id, params); + } + + @Override + public Parameter createParameter(Device device, String key) + { + return device.createSpecificVst3Device(id).createParameter(params.get(key)); + } +} diff --git a/src/main/java/io/github/dozius/twister/KnobMidiInfo.java b/src/main/java/io/github/dozius/twister/KnobMidiInfo.java new file mode 100644 index 0000000..ccd6fef --- /dev/null +++ b/src/main/java/io/github/dozius/twister/KnobMidiInfo.java @@ -0,0 +1,38 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +/** + * Contains MIDI information for a Twister knob. This include the encoder, button and both lights. + */ +public class KnobMidiInfo +{ + public final MidiInfo encoder; + public final MidiInfo button; + public final LightMidiInfo rgbLight; + public final LightMidiInfo ringLight; + + public KnobMidiInfo(MidiInfo encoder, MidiInfo button, LightMidiInfo rgbLight, + LightMidiInfo ringLight) + { + this.encoder = encoder; + this.button = button; + this.rgbLight = rgbLight; + this.ringLight = ringLight; + } +} diff --git a/src/main/java/io/github/dozius/twister/LightMidiInfo.java b/src/main/java/io/github/dozius/twister/LightMidiInfo.java new file mode 100644 index 0000000..495fdc7 --- /dev/null +++ b/src/main/java/io/github/dozius/twister/LightMidiInfo.java @@ -0,0 +1,31 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +/** Contains MIDI information for a Twister light. */ +public class LightMidiInfo +{ + public final MidiInfo light; + public final MidiInfo animation; + + public LightMidiInfo(int channel, int animationChannel, int cc) + { + this.light = new MidiInfo(channel, cc); + this.animation = new MidiInfo(animationChannel, cc); + } +} diff --git a/src/main/java/io/github/dozius/twister/MidiInfo.java b/src/main/java/io/github/dozius/twister/MidiInfo.java new file mode 100644 index 0000000..3316b4e --- /dev/null +++ b/src/main/java/io/github/dozius/twister/MidiInfo.java @@ -0,0 +1,35 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +import com.bitwig.extension.api.util.midi.ShortMidiMessage; + +/** Contains basic Twister hardware MIDI information. */ +public class MidiInfo +{ + public final int channel; + public final int cc; + public final int statusByte; + + public MidiInfo(int channel, int cc) + { + this.channel = channel; + this.cc = cc; + this.statusByte = ShortMidiMessage.CONTROL_CHANGE + channel; + } +} diff --git a/src/main/java/io/github/dozius/twister/Twister.java b/src/main/java/io/github/dozius/twister/Twister.java new file mode 100644 index 0000000..ac8c6b1 --- /dev/null +++ b/src/main/java/io/github/dozius/twister/Twister.java @@ -0,0 +1,197 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +import com.bitwig.extension.api.util.midi.ShortMidiMessage; +import com.bitwig.extension.controller.api.ControllerHost; +import com.bitwig.extension.controller.api.HardwareSurface; +import com.bitwig.extension.controller.api.MidiIn; +import com.bitwig.extension.controller.api.MidiOut; + +import io.github.dozius.TwisterSisterExtension; + +/** + * Twister hardware. + * + * All the hardware available on the MIDI Fighter Twister is setup on construction and accessible + * through this class. + */ +public class Twister +{ + /** Twister MIDI channels. Zero indexed. */ + public static class MidiChannel + { + public static final int ENCODER = 0; + public static final int BUTTON = 1; + public static final int RGB_ANIMATION = 2; + public static final int SIDE_BUTTON = 3; + public static final int SYSTEM = 3; + public static final int SHIFT = 4; + public static final int RING_ANIMATION = 5; + public static final int SEQUENCER = 7; + } + + /** A single bank of Twister hardware. */ + public class Bank + { + public static final int NUM_KNOBS = 16; + public static final int NUM_LEFT_SIDE_BUTTONS = 3; + public static final int NUM_RIGHT_SIDE_BUTTONS = 3; + public static final int NUM_SIDE_BUTTONS = NUM_LEFT_SIDE_BUTTONS + NUM_RIGHT_SIDE_BUTTONS; + + public final TwisterKnob[] knobs = new TwisterKnob[NUM_KNOBS]; + public final TwisterButton[] leftSideButtons = new TwisterButton[NUM_LEFT_SIDE_BUTTONS]; + public final TwisterButton[] rightSideButtons = new TwisterButton[NUM_RIGHT_SIDE_BUTTONS]; + } + + public static final int NUM_BANKS = 4; + + public final Bank[] banks = new Bank[NUM_BANKS]; + + private final MidiOut midiOut; + private final HardwareSurface hardwareSurface; + private final ControllerHost host; + + private boolean popupEnabled = false; + + /** + * Creates a new Twister. + * + * @param extension The parent Bitwig extension. + */ + public Twister(TwisterSisterExtension extension) + { + this.midiOut = extension.midiOut; + this.hardwareSurface = extension.hardwareSurface; + this.host = extension.getHost(); + + createHardware(extension); + createSequencerInput(extension.midiIn); + createBankSwitchListener(extension.midiIn); + } + + /** + * Sets the active bank to the desired index. + * + * @param index Desired bank index. + */ + public void setActiveBank(int index) + { + assert index > 0 && index < NUM_BANKS : "index is invalid"; + midiOut.sendMidi(ShortMidiMessage.CONTROL_CHANGE + MidiChannel.SYSTEM, index, 127); + showBankChangePopup(index); + } + + /** + * Enables/disables any popup notifications related to Twister activity. + * + * @param enabled True to enable, false to disable. + */ + public void setPopupEnabled(boolean enabled) + { + popupEnabled = enabled; + } + + /** Turns off all lights on the Twister. */ + public void lightsOff() + { + // Helps with "stuck" lights when quitting Bitwig + hardwareSurface.updateHardware(); + + for (Twister.Bank bank : banks) { + for (TwisterKnob knob : bank.knobs) { + knob.lightsOff(); + } + } + } + + /** Creates all the hardware for the Twister. */ + private void createHardware(TwisterSisterExtension extension) + { + final int sideButtonsFirstLeftCC = 8; + final int sideButtonsFirstRightCC = sideButtonsFirstLeftCC + Twister.Bank.NUM_LEFT_SIDE_BUTTONS; + + for (int bank = 0; bank < banks.length; ++bank) { + banks[bank] = new Bank(); + + TwisterKnob[] hardwareKnobs = banks[bank].knobs; + TwisterButton[] hardwareLSBs = banks[bank].leftSideButtons; + TwisterButton[] hardwareRSBs = banks[bank].rightSideButtons; + + final int knobsBankOffset = Twister.Bank.NUM_KNOBS * bank; + final int sideButtonsBankOffset = Twister.Bank.NUM_SIDE_BUTTONS * bank; + + for (int knob = 0; knob < hardwareKnobs.length; ++knob) { + final int cc = knob + knobsBankOffset; + final MidiInfo encoder = new MidiInfo(MidiChannel.ENCODER, cc); + final MidiInfo button = new MidiInfo(MidiChannel.BUTTON, cc); + final LightMidiInfo rgbLight = new LightMidiInfo(MidiChannel.BUTTON, + MidiChannel.RGB_ANIMATION, cc); + final LightMidiInfo ringLight = new LightMidiInfo(MidiChannel.ENCODER, + MidiChannel.RING_ANIMATION, cc); + final KnobMidiInfo knobInfo = new KnobMidiInfo(encoder, button, rgbLight, ringLight); + + hardwareKnobs[knob] = new TwisterKnob(extension, knobInfo); + } + + for (int button = 0; button < hardwareLSBs.length; ++button) { + final int cc = sideButtonsFirstLeftCC + button + sideButtonsBankOffset; + final MidiInfo midiInfo = new MidiInfo(MidiChannel.SIDE_BUTTON, cc); + + hardwareLSBs[button] = new TwisterButton(extension, midiInfo, "Side"); + } + + for (int button = 0; button < hardwareRSBs.length; ++button) { + final int cc = sideButtonsFirstRightCC + button + sideButtonsBankOffset; + final MidiInfo midiInfo = new MidiInfo(MidiChannel.SIDE_BUTTON, cc); + + hardwareRSBs[button] = new TwisterButton(extension, midiInfo, "Side"); + } + } + } + + /** + * Create a listener for bank switch messages. Shows popup notification on bank switch if popups + * are enabled. + */ + private void createBankSwitchListener(MidiIn midiIn) + { + midiIn.setMidiCallback((status, data1, data2) -> { + // Filter everything except bank change messages + if (status != 0xB3 || data1 > 3 || data2 != 0x7F) { + return; + } + + showBankChangePopup(data1); + }); + } + + /** Creates a note input for the sequencer channel on the Twister. */ + private void createSequencerInput(MidiIn midiIn) + { + midiIn.createNoteInput("Sequencer", "?7????"); + } + + /** Shows a bank change popup notification if notifications are enabled. */ + private void showBankChangePopup(int index) + { + if (popupEnabled) { + host.showPopupNotification("Twister Bank " + (index + 1)); + } + } +} diff --git a/src/main/java/io/github/dozius/twister/TwisterButton.java b/src/main/java/io/github/dozius/twister/TwisterButton.java new file mode 100644 index 0000000..c1e39e7 --- /dev/null +++ b/src/main/java/io/github/dozius/twister/TwisterButton.java @@ -0,0 +1,230 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +import java.util.HashSet; +import java.util.Set; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.Timer; + +import com.bitwig.extension.controller.api.ControllerHost; +import com.bitwig.extension.controller.api.HardwareButton; +import com.bitwig.extension.controller.api.MidiIn; + +import io.github.dozius.TwisterSisterExtension; + +/** + * A button on the Twister. Can be either a knob button or side button. + * + * Provides a clicked, double clicked and long press action that can be observed. + */ +public class TwisterButton +{ + private static final long DOUBLE_CLICK_DURATION = 300 * 1000000; // ms + private static final int LONG_PRESS_DURATION = 250; // ms + private static final int PRESSED_VALUE = 127; + private static final int RELEASED_VALUE = 0; + + private final Set clickedObservers = new HashSet<>(); + private final Set doubleClickedObservers = new HashSet<>(); + private final Set longPressedObservers = new HashSet<>(); + private final Timer longPressTimer; + private final HardwareButton button; + + private long lastReleasedTime; + + /** + * Creates a new TwisterButton. + * + * @param extension The parent Bitwig extension. + * @param midiInfo MIDI info for the button. + * @param idPrefix A prefix string to use when creating the hardware object ID. + */ + public TwisterButton(TwisterSisterExtension extension, MidiInfo midiInfo, String idPrefix) + { + assert !idPrefix.isEmpty() : "ID prefix is empty"; + + final MidiIn midiIn = extension.midiIn; + final ControllerHost host = extension.getHost(); + final int channel = midiInfo.channel; + final int cc = midiInfo.cc; + + button = extension.hardwareSurface.createHardwareButton(idPrefix + " Button " + midiInfo.cc); + + button.pressedAction() + .setActionMatcher(midiIn.createCCActionMatcher(channel, cc, PRESSED_VALUE)); + + button.releasedAction() + .setActionMatcher(midiIn.createCCActionMatcher(channel, cc, RELEASED_VALUE)); + + button.pressedAction() + .setBinding(host.createAction(this::handlePressed, () -> "Handle button pressed")); + + button.releasedAction() + .setBinding(host.createAction(this::handleReleased, () -> "Handle button released")); + + longPressTimer = new Timer(LONG_PRESS_DURATION, new ActionListener() { + @Override + public void actionPerformed(ActionEvent evt) + { + notifyLongPressedObservers(); + } + }); + + longPressTimer.setRepeats(false); + } + + /** + * Sets an observer of the double clicked action. This will then be the only observer. + * + * A convenience function that clears and then adds the observer. + * + * @param observer Observer to add. + */ + public void setDoubleClickedObserver(Runnable observer) + { + doubleClickedObservers.clear(); + doubleClickedObservers.add(observer); + } + + /** + * Adds an observer of the double clicked action. + * + * @param observer Observer to add. + * + * @return True if the observer was already added. + */ + public boolean addDoubleClickedObserver(Runnable observer) + { + return doubleClickedObservers.add(observer); + } + + /** Clears all observers of the double clicked action. */ + public void clearDoubleClickedObservers() + { + doubleClickedObservers.clear(); + } + + /** + * Sets an observer of the clicked action. This will then be the only observer. + * + * A convenience function that clears and then adds the observer. + * + * @param observer Observer to add. + */ + public boolean setClickedObserver(Runnable observer) + { + clickedObservers.clear(); + return clickedObservers.add(observer); + } + + /** + * Adds an observer of the clicked action. + * + * @param observer Observer to add. + * + * @return True if the observer was already added. + */ + public boolean addClickedObserver(Runnable observer) + { + return clickedObservers.add(observer); + } + + /** Clears all observers of the clicked action. */ + public void clearClickedObservers() + { + clickedObservers.clear(); + } + + /** + * Sets an observer of the long pressed action. This will then be the only observer. + * + * A convenience function that clears and then adds the observer. + * + * @param observer Observer to add. + */ + public boolean setLongPressedObserver(Runnable observer) + { + longPressedObservers.clear(); + return longPressedObservers.add(observer); + } + + /** + * Adds an observer of the long pressed action. + * + * @param observer Observer to add. + * + * @return True if the observer was already added. + */ + public boolean addLongPressedObserver(Runnable observer) + { + return longPressedObservers.add(observer); + } + + /** Clears all observers of the long pressed action. */ + public void clearLongPressedObserver() + { + longPressedObservers.clear(); + } + + /** Internal handler of the hardware pressed action. */ + private void handlePressed() + { + longPressTimer.start(); + } + + /** Internal handler of the hardware released action. */ + private void handleReleased() + { + if (longPressTimer.isRunning()) { + longPressTimer.stop(); + notifyClickedObservers(); + + long now = System.nanoTime(); + + if ((now - lastReleasedTime) < DOUBLE_CLICK_DURATION) { + notifyDoubleClickedObservers(); + } + + lastReleasedTime = now; + } + } + + private void notifyClickedObservers() + { + for (Runnable observer : clickedObservers) { + observer.run(); + } + } + + private void notifyDoubleClickedObservers() + { + for (Runnable observer : doubleClickedObservers) { + observer.run(); + } + } + + private void notifyLongPressedObservers() + { + for (Runnable observer : longPressedObservers) { + observer.run(); + } + } +} diff --git a/src/main/java/io/github/dozius/twister/TwisterColors.java b/src/main/java/io/github/dozius/twister/TwisterColors.java new file mode 100644 index 0000000..6b76f8e --- /dev/null +++ b/src/main/java/io/github/dozius/twister/TwisterColors.java @@ -0,0 +1,194 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import com.bitwig.extension.api.Color; + +/** + * Colors from the Twister source code. + * + * Index corresponds to MIDI values 0 to 127. + * + * Note that MIDI values 0 and 127 are special values and won't set the device to the color in the + * list. Value 0 resets the color override and changes back to the "off color" that was set in the + * MIDI Fighter Utility. Value 127 sets the color to the "on color" that was set in the MIDI Fighter + * Utility. + * + * The manual states that 126 should be an override color, but this not the case due to a bug in the + * Twister software. https://github.com/DJ-TechTools/Midi_Fighter_Twister_Open_Source/issues/9 + */ +public class TwisterColors +{ + // All 128 colors from the Twister source code + public static final List ALL = Collections.unmodifiableList(colorList()); + + // Colors settable on the Twister that match the Bitwig device remote parameter colors + public static final List BITWIG_PARAMETERS = Collections.unmodifiableList(parameterColorList()); + + /** Generates the list of all Twister colors. */ + private static List colorList() + { + return Arrays.asList(Color.fromRGB255(0, 0, 0), // 0 + Color.fromRGB255(0, 0, 255), // 1 - Blue + Color.fromRGB255(0, 21, 255), // 2 - Blue (Green Rising) + Color.fromRGB255(0, 34, 255), // + Color.fromRGB255(0, 46, 255), // + Color.fromRGB255(0, 59, 255), // + Color.fromRGB255(0, 68, 255), // + Color.fromRGB255(0, 80, 255), // + Color.fromRGB255(0, 93, 255), // + Color.fromRGB255(0, 106, 255), // + Color.fromRGB255(0, 119, 255), // + Color.fromRGB255(0, 127, 255), // + Color.fromRGB255(0, 140, 255), // + Color.fromRGB255(0, 153, 255), // + Color.fromRGB255(0, 165, 255), // + Color.fromRGB255(0, 178, 255), // + Color.fromRGB255(0, 191, 255), // + Color.fromRGB255(0, 199, 255), // + Color.fromRGB255(0, 212, 255), // + Color.fromRGB255(0, 225, 255), // + Color.fromRGB255(0, 238, 255), // + Color.fromRGB255(0, 250, 255), // 21 - End of Blue's Reign + Color.fromRGB255(0, 255, 250), // 22 - Green (Blue Fading) + Color.fromRGB255(0, 255, 237), // + Color.fromRGB255(0, 255, 225), // + Color.fromRGB255(0, 255, 212), // + Color.fromRGB255(0, 255, 199), // + Color.fromRGB255(0, 255, 191), // + Color.fromRGB255(0, 255, 178), // + Color.fromRGB255(0, 255, 165), // + Color.fromRGB255(0, 255, 153), // + Color.fromRGB255(0, 255, 140), // + Color.fromRGB255(0, 255, 127), // + Color.fromRGB255(0, 255, 119), // + Color.fromRGB255(0, 255, 106), // + Color.fromRGB255(0, 255, 93), // + Color.fromRGB255(0, 255, 80), // + Color.fromRGB255(0, 255, 67), // + Color.fromRGB255(0, 255, 59), // + Color.fromRGB255(0, 255, 46), // + Color.fromRGB255(0, 255, 33), // + Color.fromRGB255(0, 255, 21), // + Color.fromRGB255(0, 255, 8), // + Color.fromRGB255(0, 255, 0), // 43 - Green + Color.fromRGB255(12, 255, 0), // 44 - Green/Red Rising + Color.fromRGB255(25, 255, 0), // + Color.fromRGB255(38, 255, 0), // + Color.fromRGB255(51, 255, 0), // + Color.fromRGB255(63, 255, 0), // + Color.fromRGB255(72, 255, 0), // + Color.fromRGB255(84, 255, 0), // + Color.fromRGB255(97, 255, 0), // + Color.fromRGB255(110, 255, 0), // + Color.fromRGB255(123, 255, 0), // + Color.fromRGB255(131, 255, 0), // + Color.fromRGB255(144, 255, 0), // + Color.fromRGB255(157, 255, 0), // + Color.fromRGB255(170, 255, 0), // + Color.fromRGB255(182, 255, 0), // + Color.fromRGB255(191, 255, 0), // + Color.fromRGB255(203, 255, 0), // + Color.fromRGB255(216, 255, 0), // + Color.fromRGB255(229, 255, 0), // + Color.fromRGB255(242, 255, 0), // + Color.fromRGB255(255, 255, 0), // 64 - Green + Red (Yellow) + Color.fromRGB255(255, 246, 0), // 65 - Red, Green Fading + Color.fromRGB255(255, 233, 0), // + Color.fromRGB255(255, 220, 0), // + Color.fromRGB255(255, 208, 0), // + Color.fromRGB255(255, 195, 0), // + Color.fromRGB255(255, 187, 0), // + Color.fromRGB255(255, 174, 0), // + Color.fromRGB255(255, 161, 0), // + Color.fromRGB255(255, 148, 0), // + Color.fromRGB255(255, 135, 0), // + Color.fromRGB255(255, 127, 0), // + Color.fromRGB255(255, 114, 0), // + Color.fromRGB255(255, 102, 0), // + Color.fromRGB255(255, 89, 0), // + Color.fromRGB255(255, 76, 0), // + Color.fromRGB255(255, 63, 0), // + Color.fromRGB255(255, 55, 0), // + Color.fromRGB255(255, 42, 0), // + Color.fromRGB255(255, 29, 0), // + Color.fromRGB255(255, 16, 0), // + Color.fromRGB255(255, 4, 0), // 85 - End Red/Green Fading + Color.fromRGB255(255, 0, 4), // 86 - Red/ Blue Rising + Color.fromRGB255(255, 0, 16), // + Color.fromRGB255(255, 0, 29), // + Color.fromRGB255(255, 0, 42), // + Color.fromRGB255(255, 0, 55), // + Color.fromRGB255(255, 0, 63), // + Color.fromRGB255(255, 0, 76), // + Color.fromRGB255(255, 0, 89), // + Color.fromRGB255(255, 0, 102), // + Color.fromRGB255(255, 0, 114), // + Color.fromRGB255(255, 0, 127), // + Color.fromRGB255(255, 0, 135), // + Color.fromRGB255(255, 0, 148), // + Color.fromRGB255(255, 0, 161), // + Color.fromRGB255(255, 0, 174), // + Color.fromRGB255(255, 0, 186), // + Color.fromRGB255(255, 0, 195), // + Color.fromRGB255(255, 0, 208), // + Color.fromRGB255(255, 0, 221), // + Color.fromRGB255(255, 0, 233), // + Color.fromRGB255(255, 0, 246), // + Color.fromRGB255(255, 0, 255), // 107 - Blue + Red + Color.fromRGB255(242, 0, 255), // 108 - Blue/ Red Fading + Color.fromRGB255(229, 0, 255), // + Color.fromRGB255(216, 0, 255), // + Color.fromRGB255(204, 0, 255), // + Color.fromRGB255(191, 0, 255), // + Color.fromRGB255(182, 0, 255), // + Color.fromRGB255(169, 0, 255), // + Color.fromRGB255(157, 0, 255), // + Color.fromRGB255(144, 0, 255), // + Color.fromRGB255(131, 0, 255), // + Color.fromRGB255(123, 0, 255), // + Color.fromRGB255(110, 0, 255), // + Color.fromRGB255(97, 0, 255), // + Color.fromRGB255(85, 0, 255), // + Color.fromRGB255(72, 0, 255), // + Color.fromRGB255(63, 0, 255), // + Color.fromRGB255(50, 0, 255), // + Color.fromRGB255(38, 0, 255), // + Color.fromRGB255(25, 0, 255), // 126 - Blue-ish + Color.fromRGB255(240, 240, 225) // 127 - White ? + ); + } + + /** Generates the list of Twister colors that match Bitwig parameters. */ + private static List parameterColorList() + { + // Tweaked by eye for closest match to Bitwig parameter colors + return Arrays.asList(ALL.get(86), // RGB(244, 27, 62) + ALL.get(70), // RGB(255, 127, 23) + ALL.get(64), // RGB(252, 235, 35) + ALL.get(51), // RGB(91, 197, 21) + ALL.get(37), // RGB(101, 206, 146) + ALL.get(14), // RGB(92, 168, 238) + ALL.get(111), // RGB(195, 110, 255) + ALL.get(97)); // RGB(255, 84, 176) + } +} diff --git a/src/main/java/io/github/dozius/twister/TwisterKnob.java b/src/main/java/io/github/dozius/twister/TwisterKnob.java new file mode 100644 index 0000000..9f2d601 --- /dev/null +++ b/src/main/java/io/github/dozius/twister/TwisterKnob.java @@ -0,0 +1,191 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +import com.bitwig.extension.api.Color; +import com.bitwig.extension.controller.api.RelativeHardwareKnob; +import com.bitwig.extension.controller.api.DoubleValue; +import com.bitwig.extension.controller.api.HardwareBindable; +import com.bitwig.extension.controller.api.RelativeHardwareControlBinding; + +import io.github.dozius.TwisterSisterExtension; + +/** A twister knob, including encoder, shift encoder, button and lights. */ +public class TwisterKnob +{ + private static final int FULL_ROTATION = 127; + + private final RelativeHardwareKnob knob; + private final TwisterButton button; + private final TwisterRGBLight rgbLight; + private final TwisterRingLight ringLight; + private final RelativeHardwareKnob shiftKnob; + private final TwisterRingLight shiftRingLight; + + private boolean isFineSensitivity = false; + private double fineSensitivity = 0.25; + private double sensitivity = 1.0; + + /** + * Creates a new TwisterKnob. + * + * @param extension The parent Bitwig extension. + * @param midiInfo MIDI info for the knob. + */ + public TwisterKnob(TwisterSisterExtension extension, KnobMidiInfo midiInfo) + { + this(extension, midiInfo, Color.nullColor()); + } + + /** + * Creates a new TwisterKnob and sets the RGB light color. + * + * @param extension The parent Bitwig extension. + * @param midiInfo MIDI info for the knob. + * @param color Desired light color. + */ + public TwisterKnob(TwisterSisterExtension extension, KnobMidiInfo midiInfo, Color color) + { + final int cc = midiInfo.encoder.cc; + final int channel = midiInfo.encoder.channel; + + knob = extension.hardwareSurface.createRelativeHardwareKnob("Knob " + cc); + knob.setAdjustValueMatcher(extension.midiIn.createRelativeBinOffsetCCValueMatcher(channel, cc, + FULL_ROTATION)); + + button = new TwisterButton(extension, midiInfo.button, "Knob"); + rgbLight = new TwisterRGBLight(extension, midiInfo.rgbLight, color); + ringLight = new TwisterRingLight(extension, midiInfo.ringLight); + + final int shiftChannel = Twister.MidiChannel.SHIFT; + + shiftKnob = extension.hardwareSurface.createRelativeHardwareKnob("Shift Knob " + cc); + shiftKnob.setAdjustValueMatcher(extension.midiIn.createRelativeBinOffsetCCValueMatcher(shiftChannel, + cc, + FULL_ROTATION)); + shiftRingLight = new TwisterRingLight(extension, + new LightMidiInfo(shiftChannel, + midiInfo.ringLight.animation.channel, + cc)); + } + + /** The associated button for this knob. */ + public TwisterButton button() + { + return button; + } + + /** The associated RGB light for this knob. */ + public TwisterRGBLight rgbLight() + { + return rgbLight; + } + + /** The associated ring light for this knob. */ + public TwisterRingLight ringLight() + { + return ringLight; + } + + /** The associated shift ring light for this knob. */ + public TwisterRingLight shiftRingLight() + { + return shiftRingLight; + } + + /** The value of the target that this knob has been bound to (0-1). */ + public DoubleValue targetValue() + { + return knob.targetValue(); + } + + /** The value of the target that this shift knob has been bound to (0-1). */ + public DoubleValue shiftTargetValue() + { + return shiftKnob.targetValue(); + } + + /** + * Sets the regular sensitivity factor for the knob. If regular sensitivity is active it is + * applied immediately. + * + * @param factor The sensitivity factor to apply. + */ + public void setSensitivity(double factor) + { + sensitivity = factor; + + if (!isFineSensitivity) { + knob.setSensitivity(sensitivity); + } + } + + /** + * Sets the fine sensitivity factor for the knob. If fine sensitivity is active it is applied + * immediately. + * + * @param factor The sensitivity factor to apply. + */ + public void setFineSensitivity(double factor) + { + fineSensitivity = factor; + + if (isFineSensitivity) { + knob.setSensitivity(fineSensitivity); + } + } + + /** Toggles between regular and fine sensitivity. */ + public void toggleSensitivity() + { + isFineSensitivity = !isFineSensitivity; + knob.setSensitivity(isFineSensitivity ? fineSensitivity : sensitivity); + } + + /** + * Binds the knob to the supplied target. + * + * @param target Target to bind. + * + * @return The created binding. + */ + public RelativeHardwareControlBinding setBinding(HardwareBindable target) + { + return knob.setBinding(target); + } + + /** + * Binds the shift knob to the supplied target. + * + * @param target Target to bind. + * + * @return The created binding. + */ + public RelativeHardwareControlBinding setShiftBinding(HardwareBindable target) + { + return shiftKnob.setBinding(target); + } + + /** Resets all animations and turns off all lights. */ + public void lightsOff() + { + ringLight.lightOff(); + shiftRingLight.lightOff(); + rgbLight.lightOff(); + } +} diff --git a/src/main/java/io/github/dozius/twister/TwisterLight.java b/src/main/java/io/github/dozius/twister/TwisterLight.java new file mode 100644 index 0000000..43057de --- /dev/null +++ b/src/main/java/io/github/dozius/twister/TwisterLight.java @@ -0,0 +1,147 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +import java.util.EnumMap; + +import com.bitwig.extension.controller.api.MidiOut; + +import io.github.dozius.TwisterSisterExtension; +import io.github.dozius.util.MathUtil; + +/** Twister light base class. */ +public abstract class TwisterLight +{ + /** The available animation states of the light. */ + public static enum AnimationState + { + OFF, // animation off + STROBE_8_1, // 8/1 + STROBE_4_1, // 4/1 + STROBE_2_1, // 2/1 + STROBE_1_1, // 1/1 + STROBE_1_2, // 1/2 + STROBE_1_4, // 1/4 + STROBE_1_8, // 1/8 + STROBE_1_16, // 1/16 + PULSE_8_1, // 8/1 + PULSE_4_1, // 4/1 + PULSE_2_1, // 2/1 + PULSE_1_1, // 1/1 + PULSE_1_2, // 1/2 + PULSE_1_4, // 1/4 + PULSE_1_8, // 1/8 + PULSE_1_16, // 1/16 + RAINBOW; + } + + protected final MidiOut midiOut; + + private final MidiInfo midiInfo; + private final EnumMap animationMap; + private final int brightnessStartValue; + + /** + * Creates a new TwisterLight. + * + * @param extension The parent Bitwig extension. + * @param animationMidiInfo MIDI information for animations. + * @param animationStartValue Animation range starting value. + * @param brightnessStartValue Brightness range starting value. + */ + public TwisterLight(TwisterSisterExtension extension, MidiInfo animationMidiInfo, + int animationStartValue, int brightnessStartValue) + { + this.midiOut = extension.midiOut; + this.midiInfo = animationMidiInfo; + this.animationMap = createAnimationMap(animationStartValue); + this.brightnessStartValue = brightnessStartValue; + } + + /** + * Sets the desired animation state. + * + * @param state Animation state. + */ + public void setAnimationState(AnimationState state) + { + assert animationMap.containsKey(state) : "Invalid state"; + sendAnimation(animationMap.get(state)); + } + + /** + * Overrides the brightness setting with a new brightness value. + * + * @param brightness The desired brightness. + */ + public void overrideBrightness(double brightness) + { + final double value = MathUtil.clamp(brightness, 0.0, 1.0); + sendAnimation((int) ((value * 30.0) + brightnessStartValue)); + } + + /** Resets the brightness override. */ + public void resetBrightness() + { + sendAnimation(0); + } + + /** Turns the light off and resets all animations. */ + public abstract void lightOff(); + + /** + * Generates the animation value map based on the start value. + * + * The ring light and RGB light have different starting MIDI values for the animations. By + * providing the starting offset value, the sub class will create the correct value map for + * itself. + * + * @param startValue Starting value of the animation range. + * + * @return A populated animation value map. + */ + private static EnumMap createAnimationMap(int startValue) + { + EnumMap map = new EnumMap<>(AnimationState.class); + + map.put(AnimationState.OFF, 0); + map.put(AnimationState.RAINBOW, 127); + + int i = startValue; + for (AnimationState state : AnimationState.values()) { + if (state == AnimationState.OFF || state == AnimationState.RAINBOW) { + continue; + } + + map.put(state, i); + ++i; + } + + return map; + } + + /** + * Sends the raw animation MIDI value to the device. + * + * @param value The raw MIDI value. + */ + private void sendAnimation(int value) + { + midiOut.sendMidi(midiInfo.statusByte, midiInfo.cc, value); + } +} diff --git a/src/main/java/io/github/dozius/twister/TwisterRGBLight.java b/src/main/java/io/github/dozius/twister/TwisterRGBLight.java new file mode 100644 index 0000000..b41e68d --- /dev/null +++ b/src/main/java/io/github/dozius/twister/TwisterRGBLight.java @@ -0,0 +1,232 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +import com.bitwig.extension.api.Color; +import com.bitwig.extension.controller.api.HardwareLightVisualState; +import com.bitwig.extension.controller.api.InternalHardwareLightState; +import com.bitwig.extension.controller.api.MidiOut; +import com.bitwig.extension.controller.api.MultiStateHardwareLight; + +import io.github.dozius.TwisterSisterExtension; + +/** The RGB light on a twister knob. */ +public class TwisterRGBLight extends TwisterLight +{ + private static final int ANIMATION_START_VALUE = 1; + private static final int BRIGHTNESS_START_VALUE = 17; + + private final MultiStateHardwareLight light; + private final MidiInfo midiInfo; + + /** + * Creates a new TwisterRGBLight. + * + * @param extension The parent Bitwig extension. + * @param lightMidiInfo MIDI information for the light. + */ + public TwisterRGBLight(TwisterSisterExtension extension, LightMidiInfo lightMidiInfo) + { + this(extension, lightMidiInfo, Color.nullColor()); + } + + /** + * Creates a new TwisterRGBLight and sets the color. + * + * @param extension The parent Bitwig extension. + * @param lightMidiInfo MIDI information for the light. + * @param color Color to set the light. + */ + public TwisterRGBLight(TwisterSisterExtension extension, LightMidiInfo lightMidiInfo, Color color) + { + super(extension, lightMidiInfo.animation, ANIMATION_START_VALUE, BRIGHTNESS_START_VALUE); + + midiInfo = lightMidiInfo.light; + + light = extension.hardwareSurface.createMultiStateHardwareLight("RGB Light " + midiInfo.cc); + + light.setColorToStateFunction(col -> new LightState(col)); + light.state().onUpdateHardware(new LightStateSender(midiOut, midiInfo)); + light.setColor(color); + } + + /** + * Sets the color of the light. + * + * @param color Desired color. + */ + public void setColor(Color color) + { + light.setColor(color); + } + + /** + * Sets the color of the light using a raw MIDI value. + * + * @param value Desired color as a MIDI value. + */ + public void setRawValue(int value) + { + light.setColor(TwisterColors.ALL.get(value)); + } + + /** + * Sets the color supplier for the light. + * + * @param colorSupplier Color supplier for the light. + */ + public void setColorSupplier(Supplier colorSupplier) + { + light.setColorSupplier(colorSupplier); + } + + @Override + public void lightOff() + { + setAnimationState(AnimationState.OFF); + + light.setColor(Color.blackColor()); + + // Force MIDI to be sent immediately + midiOut.sendMidi(midiInfo.statusByte, midiInfo.cc, 0); + } + + /** Handler of internal light state. */ + private class LightState extends InternalHardwareLightState + { + private int colorIndex = 0; + private Color color = Color.nullColor(); + + /** + * Creates a LightState with the desired color. + * + * @param color Desired color. + */ + public LightState(Color color) + { + colorToState(color); + } + + @Override + public HardwareLightVisualState getVisualState() + { + return HardwareLightVisualState.createForColor(color); + } + + @Override + public boolean equals(final Object obj) + { + if (this == obj) { + return true; + } + + if (obj == null) { + return false; + } + + if (getClass() != obj.getClass()) { + return false; + } + + return colorIndex == ((LightState) obj).getColorIndex(); + } + + /** + * Converts a color to the the nearest representable color of the twister. + * + * @param color Desired color. + */ + public void colorToState(Color color) + { + // Find if an exact match exists and use this MIDI value if it does + int existingIndex = TwisterColors.ALL.indexOf(color); + + if (existingIndex >= 0) { + colorIndex = existingIndex; + this.color = color; + return; + } + + // No exact match found, proceed with approximation + final int r = color.getRed255(); + final int g = color.getGreen255(); + final int b = color.getBlue255(); + + // hue = 0, saturation = 1, brightness = 2 + final float[] hsb = java.awt.Color.RGBtoHSB(r, g, b, null); + final float hue = hsb[0]; + final float saturation = hsb[1]; + + /* + * 0 turns off the color override and returns to the inactive color set via sysex. Both 126 & + * 127 enable override but set the color to the active color set via sysex. Seems that the + * inclusion of 126 for this behaviour is a bug. + * + * ref: process_sw_rgb_update() in encoders.c + */ + if (saturation > 0.0) { + final double baseSaturation = 2.0 / 3.0; // RGB 0000FF + colorIndex = Math.min(Math.floorMod((int) (125 * (baseSaturation - hue) + 1), 126), 125); + this.color = color; + } + else { + colorIndex = 0; // Desaturated colors turn off LED + this.color = Color.blackColor(); + } + } + + /** @return Twister color index of the current color state. */ + public int getColorIndex() + { + return colorIndex; + } + } + + /** Consumer that sends the light state to the twister. */ + private class LightStateSender implements Consumer + { + private final MidiOut midiOut; + private final MidiInfo midiInfo; + + /** + * Creates a LightStateSender. + * + * @param midiOut MIDI output port to use. + * @param midiInfo MIDI info for the light. + */ + protected LightStateSender(final MidiOut midiOut, final MidiInfo midiInfo) + { + super(); + this.midiOut = midiOut; + this.midiInfo = midiInfo; + } + + @Override + public void accept(final LightState state) + { + if (state == null) { + return; + } + + midiOut.sendMidi(midiInfo.statusByte, midiInfo.cc, state.getColorIndex()); + } + } +} diff --git a/src/main/java/io/github/dozius/twister/TwisterRingLight.java b/src/main/java/io/github/dozius/twister/TwisterRingLight.java new file mode 100644 index 0000000..59821f1 --- /dev/null +++ b/src/main/java/io/github/dozius/twister/TwisterRingLight.java @@ -0,0 +1,124 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.twister; + +import com.bitwig.extension.controller.api.DoubleValue; +import com.bitwig.extension.controller.api.SettableRangedValue; + +import io.github.dozius.TwisterSisterExtension; +import io.github.dozius.util.CursorNormalizedValue; +import io.github.dozius.util.MathUtil; + +/** The ring light on a Twister knob. */ +public class TwisterRingLight extends TwisterLight +{ + private static final int ANIMATION_START_VALUE = 49; + private static final int BRIGHTNESS_START_VALUE = 65; + + private final MidiInfo midiInfo; + + /** + * Creates a new TwisterRingLight. + * + * @param extension The parent bitwig extension. + * @param lightMidiInfo Midi information for the light. + */ + public TwisterRingLight(TwisterSisterExtension extension, LightMidiInfo lightMidiInfo) + { + super(extension, lightMidiInfo.animation, ANIMATION_START_VALUE, BRIGHTNESS_START_VALUE); + this.midiInfo = lightMidiInfo.light; + } + + /** + * Sets the ring value using raw MIDI data. + * + * @param value The desired ring value in MIDI. + */ + public void setRawValue(int value) + { + midiOut.sendMidi(midiInfo.statusByte, midiInfo.cc, MathUtil.clamp(value, 0, 127)); + } + + /** + * Sets the ring value using a normalized 0-1 range. + * + * @param value The desired ring value in normalized range. + */ + public void setValue(double value) + { + setRawValue((int) (value * 127.0)); + } + + /** + * A special normalized 0-1 range value for ring lights being used as cursors in "dot" mode. + * + * Intended to be used with the value from a CursorNormalizedValue wrapper. + * + * Values in the 0-1 range will show the dot, even when at 0. Negative values hide the dot. + * + * @param value The cursor value to set. + */ + public void setCursorValue(double value) + { + if (value < 0) { + setRawValue(0); + return; + } + + setRawValue((int) ((value * 126.0) + 1.0)); + } + + /** + * Makes this light an observer of the passed in value. + * + * @param value The value to observe. + */ + public void observeValue(SettableRangedValue value) + { + value.markInterested(); + value.addValueObserver(128, this::setRawValue); + } + + /** + * Makes this light an observer of the passed in value. + * + * @param value The value to observe. + */ + public void observeValue(DoubleValue value) + { + value.markInterested(); + value.addValueObserver(this::setValue); + } + + /** + * Makes this light an observer of the passed in wrapper. + * + * @param wrapper The wrapper to observe. + */ + public void observeValue(CursorNormalizedValue wrapper) + { + wrapper.addValueObserver(this::setCursorValue); + } + + @Override + public void lightOff() + { + setAnimationState(AnimationState.OFF); + setRawValue(0); + } +} diff --git a/src/main/java/io/github/dozius/util/CursorNormalizedValue.java b/src/main/java/io/github/dozius/util/CursorNormalizedValue.java new file mode 100644 index 0000000..f77feb6 --- /dev/null +++ b/src/main/java/io/github/dozius/util/CursorNormalizedValue.java @@ -0,0 +1,134 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.util; + +import java.util.HashSet; +import java.util.Set; + +import com.bitwig.extension.callback.DoubleValueChangedCallback; +import com.bitwig.extension.controller.api.CursorDevice; +import com.bitwig.extension.controller.api.CursorRemoteControlsPage; +import com.bitwig.extension.controller.api.CursorTrack; +import com.bitwig.extension.controller.api.DeviceBank; +import com.bitwig.extension.controller.api.TrackBank; + +/** + * Wraps a cursor and bank in order to provide a normalized 0-1 value for the cursor position. + * + * Sends -1.0 if there are no items in the bank. + */ +public class CursorNormalizedValue +{ + private final Set observers = new HashSet<>(); + private int cursorIndex = -1; + private int cursorCount = -1; + + /** + * Creates a wrapper for a track cursor. + * + * @param cursorTrack The track cursor to wrap. + * @param trackBank The bank for the cursor. + */ + public CursorNormalizedValue(CursorTrack cursorTrack, TrackBank trackBank) + { + trackBank.channelCount().markInterested(); + trackBank.channelCount().addValueObserver(this::setCursorCount); + + cursorTrack.position().markInterested(); + cursorTrack.position().addValueObserver(this::setCursorIndex); + } + + /** + * Creates a wrapper for a device cursor. + * + * @param cursorDevice The device cursor to wrap. + * @param deviceBank The bank for the cursor. + */ + public CursorNormalizedValue(CursorDevice cursorDevice, DeviceBank deviceBank) + { + deviceBank.itemCount().markInterested(); + deviceBank.itemCount().addValueObserver(this::setCursorCount); + + cursorDevice.position().markInterested(); + cursorDevice.position().addValueObserver(this::setCursorIndex); + } + + /** + * Creates a wrapper for remote controls pages. + * + * @param cursorRemoteControlsPage The remote control pages to wrap. + */ + public CursorNormalizedValue(CursorRemoteControlsPage cursorRemoteControlsPage) + { + cursorRemoteControlsPage.pageCount().markInterested(); + cursorRemoteControlsPage.pageCount().addValueObserver(this::setCursorCount); + + cursorRemoteControlsPage.selectedPageIndex().markInterested(); + cursorRemoteControlsPage.selectedPageIndex().addValueObserver(this::setCursorIndex); + } + + /** + * Adds and observer for the wrapped value. + * + * @param callback The observer callback. + * + * @return True if this set did not already contain the specified element. + */ + public Boolean addValueObserver(DoubleValueChangedCallback callback) + { + return observers.add(callback); + } + + /** Handles when the cursor index changes. */ + private void setCursorIndex(int index) + { + cursorIndex = index; + updateCursorFeedback(); + } + + /** Handles when the bank item count changes. */ + private void setCursorCount(int count) + { + cursorCount = count; + updateCursorFeedback(); + } + + /** Generates the normalized value and notifies observers. */ + private void updateCursorFeedback() + { + if (cursorCount < 1 || cursorIndex < 0) { + notifyObservers(-1); + return; + } + + if (cursorCount < 2) { + notifyObservers(0); + return; + } + + final double normalized = cursorIndex / (cursorCount - 1.0); + notifyObservers(MathUtil.clamp(normalized, 0.0, 1.0)); + } + + private void notifyObservers(double value) + { + for (DoubleValueChangedCallback observer : observers) { + observer.valueChanged(value); + } + } +} diff --git a/src/main/java/io/github/dozius/util/DevUtil.java b/src/main/java/io/github/dozius/util/DevUtil.java new file mode 100644 index 0000000..75d0dc0 --- /dev/null +++ b/src/main/java/io/github/dozius/util/DevUtil.java @@ -0,0 +1,57 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.util; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; + +import com.bitwig.extension.controller.api.Action; +import com.bitwig.extension.controller.api.ActionCategory; +import com.bitwig.extension.controller.api.Application; +import com.bitwig.extension.controller.api.ControllerHost; + +/** Extension development utilities. */ +public class DevUtil +{ + /** + * Dumps all the available Bitwig actions to a text file. + * + * @param host The extension controller host. + * @param outputFile The path of the output file. + * + * @throws IOException + */ + public static void dumpBitwigActions(ControllerHost host, Path outputFile) throws IOException + { + final Application app = host.createApplication(); + final List output = new ArrayList<>(); + + for (ActionCategory actionCat : app.getActionCategories()) { + output.add(actionCat.getName()); + for (Action action : actionCat.getActions()) { + output.add("--- ID: " + action.getId() + " Name: " + action.getName()); + } + } + + Files.write(outputFile, output, StandardCharsets.UTF_8); + } +} diff --git a/src/main/java/io/github/dozius/util/Logger.java b/src/main/java/io/github/dozius/util/Logger.java new file mode 100644 index 0000000..42ff60a --- /dev/null +++ b/src/main/java/io/github/dozius/util/Logger.java @@ -0,0 +1,62 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.util; + +import com.bitwig.extension.controller.api.ControllerHost; + +/** Global logger intended for debugging. */ +public final class Logger +{ + private static ControllerHost host; + + private Logger() + { + } + + /** + * Initialize the Logger. Must be called before any logging can happen. + * + * @param controllerHost The extension controller host. + */ + public static void init(ControllerHost controllerHost) + { + host = controllerHost; + } + + /** + * Logs a message to the Bitwig console with a timestamp. + * + * @param message The message to log. + */ + public static void logTimeStamped(String message) + { + log("[" + java.time.LocalTime.now().toString() + "] " + message); + } + + /** + * Logs a message to the Bitwig console. + * + * @param message The message to log. + */ + public static void log(String message) + { + if (host != null) { + host.println(message); + } + } +} diff --git a/src/main/java/io/github/dozius/util/MathUtil.java b/src/main/java/io/github/dozius/util/MathUtil.java new file mode 100644 index 0000000..747ee5a --- /dev/null +++ b/src/main/java/io/github/dozius/util/MathUtil.java @@ -0,0 +1,68 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.util; + +/** + * Generic math utilities. + */ +public class MathUtil +{ + // clamp - note we don't use generics here to avoid boxing/unboxing + + /** + * Clamps the value to be between min and max. + * + * @param val Value to clamp. + * @param min Clamp min. + * @param max Clamp max. + * + * @return The clamped value. + */ + public static float clamp(float val, float min, float max) + { + return Math.max(min, Math.min(max, val)); + } + + /** + * Clamps the value to be between min and max. + * + * @param val Value to clamp. + * @param min Clamp min. + * @param max Clamp max. + * + * @return The clamped value. + */ + public static int clamp(int val, int min, int max) + { + return Math.max(min, Math.min(max, val)); + } + + /** + * Clamps the value to be between min and max. + * + * @param val Value to clamp. + * @param min Clamp min. + * @param max Clamp max. + * + * @return The clamped value. + */ + public static double clamp(double val, double min, double max) + { + return Math.max(min, Math.min(max, val)); + } +} diff --git a/src/main/java/io/github/dozius/util/OnOffColorSupplier.java b/src/main/java/io/github/dozius/util/OnOffColorSupplier.java new file mode 100644 index 0000000..94143b7 --- /dev/null +++ b/src/main/java/io/github/dozius/util/OnOffColorSupplier.java @@ -0,0 +1,95 @@ +/* + * Copyright 2021 Dan Smith + * + * This file is part of Twister Sister. + * + * Twister Sister is free software: you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Twister Sister is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with Twister + * Sister. If not, see . + * + */ +package io.github.dozius.util; + +import java.util.function.Supplier; + +import com.bitwig.extension.api.Color; + +/** A color supplier that can toggle between two color states, an "on" color and "off" color. */ +public class OnOffColorSupplier implements Supplier +{ + private Color onColor; + private Color offColor; + private boolean isOn; + + /** + * Constructs a new OnOffColorSupplier. + * + * @param onColor The color to use for the "on" state. + * @param offColor The color to use for the "off" state. + */ + public OnOffColorSupplier(Color onColor, Color offColor) + { + this.onColor = onColor; + this.offColor = offColor; + } + + /** + * Constructs a new OnOffColorSupplier with the "off" state set to black. + * + * @param onColor The color to use for the "on" state. + */ + public OnOffColorSupplier(Color onColor) + { + this(onColor, Color.blackColor()); + } + + /** Constructs a new OnOffColorSupplier with the "on" and "off" state set to black. */ + public OnOffColorSupplier() + { + this(Color.blackColor(), Color.blackColor()); + } + + /** + * Sets the color for the "on" state. + * + * @param onColor The desired color. + */ + public void setOnColor(Color onColor) + { + this.onColor = onColor; + } + + /** + * Sets the color for the "off" state. + * + * @param offColor The desired color. + */ + public void setOffColor(Color offColor) + { + this.offColor = offColor; + } + + /** + * Sets the state. + * + * @param on "on" if true, "off" if false. + */ + public void setOn(boolean on) + { + this.isOn = on; + } + + /** @return The current state color. */ + @Override + public Color get() + { + return isOn ? onColor : offColor; + } +} diff --git a/src/main/resources/META-INF/services/com.bitwig.extension.ExtensionDefinition b/src/main/resources/META-INF/services/com.bitwig.extension.ExtensionDefinition new file mode 100644 index 0000000..de7f125 --- /dev/null +++ b/src/main/resources/META-INF/services/com.bitwig.extension.ExtensionDefinition @@ -0,0 +1 @@ +io.github.dozius.TwisterSisterExtensionDefinition