Merge branch 'DISTRHO:main' into CVfunk
This commit is contained in:
commit
e8776010d4
29 changed files with 226 additions and 142 deletions
2
.github/ISSUE_TEMPLATE/bug.yaml
vendored
2
.github/ISSUE_TEMPLATE/bug.yaml
vendored
|
|
@ -5,7 +5,7 @@ body:
|
||||||
id: version
|
id: version
|
||||||
attributes:
|
attributes:
|
||||||
label: Version
|
label: Version
|
||||||
value: "24.05"
|
value: "24.09"
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
|
|
|
||||||
18
.github/workflows/build.yml
vendored
18
.github/workflows/build.yml
vendored
|
|
@ -159,12 +159,20 @@ jobs:
|
||||||
macos:
|
macos:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
|
debug: [0, 1]
|
||||||
target: [universal-10.15]
|
target: [universal-10.15]
|
||||||
runs-on: macos-12
|
runs-on: macos-12
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
- name: Set debug or release
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ "${{ matrix.debug }}" -eq 1 ]; then
|
||||||
|
echo "TARGET_SUFFIX=-debug" >> $GITHUB_ENV
|
||||||
|
echo "PAWPAW_DEBUG=1" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
- name: Set up cache
|
- name: Set up cache
|
||||||
id: cache
|
id: cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
|
|
@ -179,7 +187,7 @@ jobs:
|
||||||
src/Rack/dep/libarchive-3.4.3
|
src/Rack/dep/libarchive-3.4.3
|
||||||
src/Rack/dep/libsamplerate-0.1.9
|
src/Rack/dep/libsamplerate-0.1.9
|
||||||
src/Rack/dep/zstd-1.4.5
|
src/Rack/dep/zstd-1.4.5
|
||||||
key: macos-${{ matrix.target }}-v${{ env.CACHE_VERSION }}
|
key: macos-${{ matrix.target }}${{ env.TARGET_SUFFIX }}-v${{ env.CACHE_VERSION }}
|
||||||
- name: Setup dependencies
|
- name: Setup dependencies
|
||||||
run: |
|
run: |
|
||||||
./deps/PawPaw/.github/workflows/bootstrap-deps.sh macos-${{ matrix.target }}
|
./deps/PawPaw/.github/workflows/bootstrap-deps.sh macos-${{ matrix.target }}
|
||||||
|
|
@ -191,7 +199,7 @@ jobs:
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
key: ccache-macos-${{ matrix.target }}-v${{ env.CACHE_VERSION }}
|
key: ccache-macos-${{ matrix.target }}${{ env.TARGET_SUFFIX }}-v${{ env.CACHE_VERSION }}
|
||||||
- name: Build macOS (base)
|
- name: Build macOS (base)
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
@ -215,14 +223,14 @@ jobs:
|
||||||
- name: Rename macOS bundle
|
- name: Rename macOS bundle
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
if: steps.cache.outputs.cache-hit == 'true'
|
||||||
run: |
|
run: |
|
||||||
mv ${{ github.event.repository.name }}-macOS.pkg ${{ github.event.repository.name }}-macOS-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}.pkg
|
mv ${{ github.event.repository.name }}-macOS.pkg ${{ github.event.repository.name }}-macOS-${{ matrix.target }}${{ env.TARGET_SUFFIX }}-${{ github.event.pull_request.number || env.SHA8 }}.pkg
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ github.event.repository.name }}-macOS-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
|
name: ${{ github.event.repository.name }}-macOS-${{ matrix.target }}${{ env.TARGET_SUFFIX }}-${{ github.event.pull_request.number || env.SHA8 }}
|
||||||
path: |
|
path: |
|
||||||
${{ github.event.repository.name }}-*.pkg
|
${{ github.event.repository.name }}-*.pkg
|
||||||
- uses: softprops/action-gh-release@v1
|
- uses: softprops/action-gh-release@v1
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: ${{ matrix.debug == '0' && startsWith(github.ref, 'refs/tags/') }}
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ github.ref_name }}
|
tag_name: ${{ github.ref_name }}
|
||||||
name: ${{ github.ref_name }}
|
name: ${{ github.ref_name }}
|
||||||
|
|
|
||||||
3
.gitmodules
vendored
3
.gitmodules
vendored
|
|
@ -200,6 +200,9 @@
|
||||||
[submodule "plugins/forsitan-modulare"]
|
[submodule "plugins/forsitan-modulare"]
|
||||||
path = plugins/forsitan-modulare
|
path = plugins/forsitan-modulare
|
||||||
url = https://github.com/gosub/forsitan-modulare.git
|
url = https://github.com/gosub/forsitan-modulare.git
|
||||||
|
[submodule "plugins/MUS-X"]
|
||||||
|
path = plugins/MUS-X
|
||||||
|
url = https://github.com/Jojosito/MUS-X.git
|
||||||
[submodule "plugins/myth-modules"]
|
[submodule "plugins/myth-modules"]
|
||||||
path = plugins/myth-modules
|
path = plugins/myth-modules
|
||||||
url = https://github.com/Ahineya/vcv-myth-plugin.git
|
url = https://github.com/Ahineya/vcv-myth-plugin.git
|
||||||
|
|
|
||||||
2
Makefile
2
Makefile
|
|
@ -15,7 +15,7 @@ include $(ROOT)/Makefile.base.mk
|
||||||
# src/CardinalPlugin.cpp `getVersion`
|
# src/CardinalPlugin.cpp `getVersion`
|
||||||
# utils/macOS/Info_{JACK,Native}.plist
|
# utils/macOS/Info_{JACK,Native}.plist
|
||||||
# .github/ISSUE_TEMPLATE/bug.yaml src/CardinalCommon.cpp src/CardinalPlugin.cpp utils/macOS/Info_{JACK,Native}.plist
|
# .github/ISSUE_TEMPLATE/bug.yaml src/CardinalCommon.cpp src/CardinalPlugin.cpp utils/macOS/Info_{JACK,Native}.plist
|
||||||
VERSION = 24.05
|
VERSION = 24.09
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
# Build targets
|
# Build targets
|
||||||
|
|
|
||||||
|
|
@ -174,6 +174,7 @@ At the moment the following 3rd-party modules are provided:
|
||||||
- [Mog](https://github.com/JustMog/Mog-VCV)
|
- [Mog](https://github.com/JustMog/Mog-VCV)
|
||||||
- [mscHack](https://github.com/mschack/VCV-Rack-Plugins)
|
- [mscHack](https://github.com/mschack/VCV-Rack-Plugins)
|
||||||
- [MSM](https://github.com/netboy3/MSM-vcvrack-plugin)
|
- [MSM](https://github.com/netboy3/MSM-vcvrack-plugin)
|
||||||
|
- [MUS-X](https://github.com/Jojosito/MUS-X)
|
||||||
- [Myth](https://github.com/Ahineya/vcv-myth-plugin)
|
- [Myth](https://github.com/Ahineya/vcv-myth-plugin)
|
||||||
- [Nonlinear Circuits](https://github.com/mhetrick/nonlinearcircuits)
|
- [Nonlinear Circuits](https://github.com/mhetrick/nonlinearcircuits)
|
||||||
- [Orbits](https://github.com/RareBreeds/Orbits)
|
- [Orbits](https://github.com/RareBreeds/Orbits)
|
||||||
|
|
|
||||||
2
carla
2
carla
|
|
@ -1 +1 @@
|
||||||
Subproject commit c37d53a4216654118e711fa41e88e7e801d5bd9b
|
Subproject commit e39f04d2d8587327e741ad881617c427f5014d48
|
||||||
3
deps/Makefile
vendored
3
deps/Makefile
vendored
|
|
@ -78,6 +78,9 @@ export MACOSX_DEPLOYMENT_TARGET = $(subst -mmacosx-version-min=,,$(filter -mmaco
|
||||||
CMAKE += -DCMAKE_OSX_DEPLOYMENT_TARGET=$(MACOSX_DEPLOYMENT_TARGET)
|
CMAKE += -DCMAKE_OSX_DEPLOYMENT_TARGET=$(MACOSX_DEPLOYMENT_TARGET)
|
||||||
else ifeq ($(CIBUILD),true)
|
else ifeq ($(CIBUILD),true)
|
||||||
$(error CI build requires -mmacosx-version-min flag on macOS)
|
$(error CI build requires -mmacosx-version-min flag on macOS)
|
||||||
|
else
|
||||||
|
export MACOSX_DEPLOYMENT_TARGET = 10.15
|
||||||
|
CMAKE += -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15
|
||||||
endif
|
endif
|
||||||
CMAKE += -DCMAKE_OSX_SYSROOT="macosx"
|
CMAKE += -DCMAKE_OSX_SYSROOT="macosx"
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
2
deps/PawPaw
vendored
2
deps/PawPaw
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0edef2120e7fd493493e66967438c0b2ea8c8552
|
Subproject commit e0a81ba6f24b194c7aa0c6828d422f1354256a09
|
||||||
|
|
@ -47,16 +47,17 @@ Bellow follows a list of features comparing the official plugin to Cardinal.
|
||||||
Additionally, Cardinal contains the following built-in modules not present in the official plugin or standalone:
|
Additionally, Cardinal contains the following built-in modules not present in the official plugin or standalone:
|
||||||
|
|
||||||
* Aria Salvatrice modules (except Arcane related modules, due to their online requirement)
|
* Aria Salvatrice modules (except Arcane related modules, due to their online requirement)
|
||||||
|
* Arable Instruments and Parable Instruments (never updated to v2)
|
||||||
* Mog (never updated to v2)
|
* Mog (never updated to v2)
|
||||||
* mscHack (never updated to v2)
|
* Rackwindows (never updated to v2)
|
||||||
* rackwindows
|
* The DISTRHO collection, including:
|
||||||
* AIDA-X
|
* AIDA-X
|
||||||
* Audio File
|
* Audio File
|
||||||
* Audio to CV Pitch converter
|
* Audio to CV Pitch converter
|
||||||
* Carla Plugin Host
|
* Carla Plugin Host
|
||||||
* Ildaeil Host
|
* Ildaeil Host
|
||||||
* glBars (OpenGL bars visualization, as seen in XMMS and XBMC/Kodi)
|
* glBars (OpenGL bars visualization, as seen in XMMS and XBMC/Kodi)
|
||||||
* Text Editor (resizable and with syntax highlight)
|
* Text Editor (resizable and with syntax highlight)
|
||||||
* Host Parameters (24 host-exposed parameters as CV sources)
|
* Host Parameters (24 host-exposed parameters as CV sources)
|
||||||
* Host Time (play, reset, bar, beat, tick, bar-phase and beat-phase CV sources)
|
* Host Time (play, reset, bar, beat, tick, bar-phase and beat-phase CV sources)
|
||||||
* Host CV (for the Raw-CV plugin variant, allows direct CV access to/from the DAW)
|
* Host CV (for the Raw-CV plugin variant, allows direct CV access to/from the DAW)
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,12 @@ While Cardinal itself is licensed under GPLv3+, some modules/plugins used by it
|
||||||
And since Cardinal builds the entire Rack and modules as a static library,
|
And since Cardinal builds the entire Rack and modules as a static library,
|
||||||
the more restrictive of the **code licenses** will apply to the final binary.
|
the more restrictive of the **code licenses** will apply to the final binary.
|
||||||
|
|
||||||
Bellow follows a list of all code licenses used in Cardinal and linked submodules.
|
Below follows a list of all code licenses used in Cardinal and linked submodules.
|
||||||
|
|
||||||
| Name | License(s) | Additional notes |
|
| Name | License(s) | Additional notes |
|
||||||
|-------------------------|--------------------------|------------------|
|
|-------------------------|--------------------------|------------------|
|
||||||
| Carla | GPL-2.0-or-later | Used as plugin host within Cardinal |
|
| Carla | GPL-2.0-or-later | Used as plugin host within Cardinal |
|
||||||
| DPF | ISC, GPL-2.0-or-later | Used as the plugin framework, VST2 binary GPLv2+ licensed |
|
| DPF | ISC | Used as the plugin framework |
|
||||||
| Rack | GPL-3.0-or-later | The actual Rack code, internal dependencies are compatible with GPLv3+ |
|
| Rack | GPL-3.0-or-later | The actual Rack code, internal dependencies are compatible with GPLv3+ |
|
||||||
| 21kHz | MIT | |
|
| 21kHz | MIT | |
|
||||||
| 8Mode | BSD-3-Clause | |
|
| 8Mode | BSD-3-Clause | |
|
||||||
|
|
@ -68,6 +68,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule
|
||||||
| Mog | CC0-1.0 | |
|
| Mog | CC0-1.0 | |
|
||||||
| mscHack | BSD-3-Clause | |
|
| mscHack | BSD-3-Clause | |
|
||||||
| MSM | MIT | Repo's [LICENSE-dist.md](https://github.com/netboy3/MSM-vcvrack-plugin/issues/10) includes wrong information |
|
| MSM | MIT | Repo's [LICENSE-dist.md](https://github.com/netboy3/MSM-vcvrack-plugin/issues/10) includes wrong information |
|
||||||
|
| MUS-X | GPL-3.0-or-later | |
|
||||||
| Myth | GPL-3.0-or-later | |
|
| Myth | GPL-3.0-or-later | |
|
||||||
| Nonlinear Circuits | CC0-1.0 | |
|
| Nonlinear Circuits | CC0-1.0 | |
|
||||||
| Orbits | GPL-3.0-or-later | |
|
| Orbits | GPL-3.0-or-later | |
|
||||||
|
|
@ -227,6 +228,7 @@ Below is a list of artwork licenses from plugins
|
||||||
| MSM/Fonts/DejaVuSansMono.ttf | Bitstream-Vera | |
|
| MSM/Fonts/DejaVuSansMono.ttf | Bitstream-Vera | |
|
||||||
| MSM/Fonts/Segment7Standard.ttf | OFL-1.1-RFN | |
|
| MSM/Fonts/Segment7Standard.ttf | OFL-1.1-RFN | |
|
||||||
| MSM/Fonts/Sudo.ttf | OFL-1.1-no-RFN | |
|
| MSM/Fonts/Sudo.ttf | OFL-1.1-no-RFN | |
|
||||||
|
| MUS-X/* | GPL-3.0-or-later | No artwork specific license provided |
|
||||||
| Myth/* | GPL-3.0-or-later | No artwork specific license provided |
|
| Myth/* | GPL-3.0-or-later | No artwork specific license provided |
|
||||||
| nonlinearcircuits/* | CC0-1.0 | No artwork specific license provided |
|
| nonlinearcircuits/* | CC0-1.0 | No artwork specific license provided |
|
||||||
| nonlinearcircuits/Audiowide-Regular.ttf | OFL-1.1-RFN | |
|
| nonlinearcircuits/Audiowide-Regular.ttf | OFL-1.1-RFN | |
|
||||||
|
|
|
||||||
2
dpf
2
dpf
|
|
@ -1 +1 @@
|
||||||
Subproject commit 470c5b7a77091bbea2154cd1d96d3cb1be737aa3
|
Subproject commit 6b042628933f220a05571bde6a02fe0198a96b5d
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit d3ad6c6732cee8a80197aa351dd9efef9c278d4c
|
Subproject commit b24e1c373c7c54871d33247d40216e311dc00849
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit f2a7d717e2ae066ba0127fa5ffade775baba1512
|
Subproject commit e4eb7adaff1afa731563e09c83e35d87319d4654
|
||||||
1
plugins/MUS-X
Submodule
1
plugins/MUS-X
Submodule
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit f622217ec6b709b7707fb76f85026e0faa93b893
|
||||||
|
|
@ -551,7 +551,7 @@ MINIPLUGIN_FILES += BaconPlugs/src/Style.cpp
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
# Befaco
|
# Befaco
|
||||||
|
|
||||||
PLUGIN_FILES += $(filter-out Befaco/src/plugin.cpp,$(wildcard Befaco/src/*.cpp))
|
PLUGIN_FILES += $(filter-out Befaco/src/plugin.cpp Befaco/src/MidiThing.cpp,$(wildcard Befaco/src/*.cpp))
|
||||||
PLUGIN_FILES += $(wildcard Befaco/src/noise-plethora/*/*.cpp)
|
PLUGIN_FILES += $(wildcard Befaco/src/noise-plethora/*/*.cpp)
|
||||||
|
|
||||||
# modules/types which are present in other plugins
|
# modules/types which are present in other plugins
|
||||||
|
|
@ -930,6 +930,11 @@ PLUGIN_FILES += $(filter-out MSM/src/MSM.cpp,$(wildcard MSM/src/*.cpp))
|
||||||
# modules/types which are present in other plugins
|
# modules/types which are present in other plugins
|
||||||
MSM_CUSTOM = ADSR BlankPanel Delay LFO LowFrequencyOscillator Mult Noise OP VCA VCO sawTable triTable
|
MSM_CUSTOM = ADSR BlankPanel Delay LFO LowFrequencyOscillator Mult Noise OP VCA VCO sawTable triTable
|
||||||
|
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
# MUS-X
|
||||||
|
|
||||||
|
PLUGIN_FILES += $(filter-out MUS-X/src/plugin.cpp,$(wildcard MUS-X/src/*.cpp))
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
# myth-modules
|
# myth-modules
|
||||||
|
|
||||||
|
|
@ -1301,9 +1306,10 @@ VALLEYAUDIO_CUSTOM_PER_FILE = TempoKnob
|
||||||
# Voxglitch
|
# Voxglitch
|
||||||
|
|
||||||
PLUGIN_FILES += $(filter-out voxglitch/src/plugin.cpp,$(wildcard voxglitch/src/*.cpp))
|
PLUGIN_FILES += $(filter-out voxglitch/src/plugin.cpp,$(wildcard voxglitch/src/*.cpp))
|
||||||
|
PLUGIN_FILES += voxglitch/src/vgLib-2.0/constants.cpp
|
||||||
|
|
||||||
# modules/types which are present in other plugins
|
# modules/types which are present in other plugins
|
||||||
VOXGLITCH_CUSTOM = ADSR AudioFile Looper Readout
|
VOXGLITCH_CUSTOM = $(DRWAV) ADSR AudioFile Looper Quantizer Random Readout SlewLimiter constants
|
||||||
VOXGLITCH_CUSTOM_PER_FILE = AudioBuffer GateSequencer Grain SamplePlayer Sequencer SequencerDisplay VoltageSequencer
|
VOXGLITCH_CUSTOM_PER_FILE = AudioBuffer GateSequencer Grain SamplePlayer Sequencer SequencerDisplay VoltageSequencer
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
|
|
@ -1466,6 +1472,7 @@ RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityShapes
|
||||||
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/MindMeldPresets
|
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/MindMeldPresets
|
||||||
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/MindMeldShapes
|
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/MindMeldShapes
|
||||||
RESOURCE_FILES += Mog/res
|
RESOURCE_FILES += Mog/res
|
||||||
|
RESOURCE_FILES += MUS-X/presets
|
||||||
RESOURCE_FILES += nonlinearcircuits/res
|
RESOURCE_FILES += nonlinearcircuits/res
|
||||||
RESOURCE_FILES += ParableInstruments/res/Neil.png
|
RESOURCE_FILES += ParableInstruments/res/Neil.png
|
||||||
RESOURCE_FILES += surgext/build/surge-data/configuration.xml
|
RESOURCE_FILES += surgext/build/surge-data/configuration.xml
|
||||||
|
|
@ -2620,6 +2627,13 @@ $(BUILD_DIR)/MSM/%.cpp.o: MSM/%.cpp
|
||||||
$(foreach m,$(MSM_CUSTOM),$(call custom_module_names,$(m),MSM)) \
|
$(foreach m,$(MSM_CUSTOM),$(call custom_module_names,$(m),MSM)) \
|
||||||
-DpluginInstance=pluginInstance__MSM
|
-DpluginInstance=pluginInstance__MSM
|
||||||
|
|
||||||
|
$(BUILD_DIR)/MUS-X/%.cpp.o: MUS-X/%.cpp
|
||||||
|
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
|
||||||
|
@echo "Compiling $<"
|
||||||
|
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \
|
||||||
|
$(foreach m,$(MUS_X_CUSTOM),$(call custom_module_names,$(m),MUS_X)) \
|
||||||
|
-DpluginInstance=pluginInstance__MUS_X
|
||||||
|
|
||||||
$(BUILD_DIR)/myth-modules/%.cpp.o: myth-modules/%.cpp
|
$(BUILD_DIR)/myth-modules/%.cpp.o: myth-modules/%.cpp
|
||||||
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
|
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
|
||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0bcc1f4a48a7a7d59013f5f4a12574f7453a5edf
|
Subproject commit b5d2fc122382d7934b3ea92e05ad91a9aec89504
|
||||||
|
|
@ -759,6 +759,9 @@ extern Model* modelBlankPanel;
|
||||||
#undef modelVCA
|
#undef modelVCA
|
||||||
#undef modelVCO
|
#undef modelVCO
|
||||||
|
|
||||||
|
// MUS-X
|
||||||
|
#include "MUS-X/src/plugin.hpp"
|
||||||
|
|
||||||
// myth-modules
|
// myth-modules
|
||||||
#include "myth-modules/src/plugin.hpp"
|
#include "myth-modules/src/plugin.hpp"
|
||||||
|
|
||||||
|
|
@ -955,6 +958,7 @@ Plugin* pluginInstance__MockbaModular;
|
||||||
Plugin* pluginInstance__Mog;
|
Plugin* pluginInstance__Mog;
|
||||||
extern Plugin* pluginInstance__mscHack;
|
extern Plugin* pluginInstance__mscHack;
|
||||||
Plugin* pluginInstance__MSM;
|
Plugin* pluginInstance__MSM;
|
||||||
|
Plugin* pluginInstance__MUS_X;
|
||||||
Plugin* pluginInstance__myth_modules;
|
Plugin* pluginInstance__myth_modules;
|
||||||
Plugin* pluginInstance__nonlinearcircuits;
|
Plugin* pluginInstance__nonlinearcircuits;
|
||||||
Plugin* pluginInstance__Orbits;
|
Plugin* pluginInstance__Orbits;
|
||||||
|
|
@ -1590,9 +1594,13 @@ static void initStatic__Befaco()
|
||||||
p->addModel(modelMotionMTR);
|
p->addModel(modelMotionMTR);
|
||||||
p->addModel(modelBurst);
|
p->addModel(modelBurst);
|
||||||
p->addModel(modelVoltio);
|
p->addModel(modelVoltio);
|
||||||
|
p->addModel(modelOctaves);
|
||||||
#undef modelADSR
|
#undef modelADSR
|
||||||
#undef modelMixer
|
#undef modelMixer
|
||||||
#undef modelBurst
|
#undef modelBurst
|
||||||
|
|
||||||
|
// NOTE disabled in Cardinal due to MIDI usage
|
||||||
|
spl.removeModule("MidiThingV2");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2846,6 +2854,30 @@ static void initStatic__MSM()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void initStatic__MUS_X()
|
||||||
|
{
|
||||||
|
Plugin* const p = new Plugin;
|
||||||
|
pluginInstance__MUS_X = p;
|
||||||
|
|
||||||
|
const StaticPluginLoader spl(p, "MUS-X");
|
||||||
|
if (spl.ok())
|
||||||
|
{
|
||||||
|
p->addModel(musx::modelADSR);
|
||||||
|
p->addModel(musx::modelDelay);
|
||||||
|
p->addModel(musx::modelDrift);
|
||||||
|
p->addModel(musx::modelFilter);
|
||||||
|
p->addModel(musx::modelLast);
|
||||||
|
p->addModel(musx::modelLFO);
|
||||||
|
p->addModel(musx::modelModMatrix);
|
||||||
|
p->addModel(musx::modelOnePole);
|
||||||
|
p->addModel(musx::modelOnePoleLP);
|
||||||
|
p->addModel(musx::modelOscillators);
|
||||||
|
p->addModel(musx::modelSplitStack);
|
||||||
|
p->addModel(musx::modelSynth);
|
||||||
|
p->addModel(musx::modelTuner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void initStatic__myth_modules()
|
static void initStatic__myth_modules()
|
||||||
{
|
{
|
||||||
Plugin* const p = new Plugin;
|
Plugin* const p = new Plugin;
|
||||||
|
|
@ -3074,17 +3106,23 @@ static void initStatic__Sapphire()
|
||||||
const StaticPluginLoader spl(p, "Sapphire");
|
const StaticPluginLoader spl(p, "Sapphire");
|
||||||
if (spl.ok())
|
if (spl.ok())
|
||||||
{
|
{
|
||||||
p->addModel(modelElastika);
|
p->addModel(modelSapphireElastika);
|
||||||
p->addModel(modelFrolic);
|
p->addModel(modelSapphireFrolic);
|
||||||
p->addModel(modelGlee);
|
p->addModel(modelSapphireGalaxy);
|
||||||
p->addModel(modelHiss);
|
p->addModel(modelSapphireGlee);
|
||||||
p->addModel(modelMoots);
|
p->addModel(modelSapphireGravy);
|
||||||
p->addModel(modelNucleus);
|
p->addModel(modelSapphireHiss);
|
||||||
p->addModel(modelPolynucleus);
|
p->addModel(modelSapphireMoots);
|
||||||
p->addModel(modelTin);
|
p->addModel(modelSapphireNucleus);
|
||||||
p->addModel(modelTout);
|
p->addModel(modelSapphirePivot);
|
||||||
p->addModel(modelTricorder);
|
p->addModel(modelSapphirePolynucleus);
|
||||||
p->addModel(modelTubeUnit);
|
p->addModel(modelSapphirePop);
|
||||||
|
p->addModel(modelSapphireRotini);
|
||||||
|
p->addModel(modelSapphireSam);
|
||||||
|
p->addModel(modelSapphireTin);
|
||||||
|
p->addModel(modelSapphireTout);
|
||||||
|
p->addModel(modelSapphireTricorder);
|
||||||
|
p->addModel(modelSapphireTubeUnit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3341,26 +3379,33 @@ static void initStatic__Voxglitch()
|
||||||
if (spl.ok())
|
if (spl.ok())
|
||||||
{
|
{
|
||||||
#define modelLooper modelVoxglitchLooper
|
#define modelLooper modelVoxglitchLooper
|
||||||
p->addModel(modelAutobreak);
|
p->addModel(modelArpSeq);
|
||||||
p->addModel(modelByteBeat);
|
p->addModel(modelAutobreak);
|
||||||
p->addModel(modelDigitalProgrammer);
|
p->addModel(modelAutobreakStudio);
|
||||||
p->addModel(modelDigitalSequencer);
|
p->addModel(modelByteBeat);
|
||||||
p->addModel(modelDigitalSequencerXP);
|
p->addModel(modelDigitalProgrammer);
|
||||||
p->addModel(modelGlitchSequencer);
|
p->addModel(modelDigitalSequencer);
|
||||||
p->addModel(modelGhosts);
|
p->addModel(modelDigitalSequencerXP);
|
||||||
p->addModel(modelGrainEngineMK2);
|
p->addModel(modelDrumRandomizer);
|
||||||
p->addModel(modelGrainEngineMK2Expander);
|
p->addModel(modelGlitchSequencer);
|
||||||
p->addModel(modelGrainFx);
|
p->addModel(modelGhosts);
|
||||||
p->addModel(modelGrooveBox);
|
p->addModel(modelGrainEngineMK2);
|
||||||
p->addModel(modelGrooveBoxExpander);
|
p->addModel(modelGrainEngineMK2Expander);
|
||||||
p->addModel(modelHazumi);
|
p->addModel(modelGrainFx);
|
||||||
p->addModel(modelLooper);
|
p->addModel(modelGrooveBox);
|
||||||
p->addModel(modelRepeater);
|
p->addModel(modelGrooveBoxExpander);
|
||||||
p->addModel(modelSamplerX8);
|
p->addModel(modelHazumi);
|
||||||
p->addModel(modelSatanonaut);
|
p->addModel(modelOnePoint);
|
||||||
p->addModel(modelWavBank);
|
p->addModel(modelOneZero);
|
||||||
p->addModel(modelWavBankMC);
|
p->addModel(modelLooper);
|
||||||
p->addModel(modelXY);
|
p->addModel(modelNoteDetector);
|
||||||
|
p->addModel(modelRepeater);
|
||||||
|
p->addModel(modelSamplerX8);
|
||||||
|
p->addModel(modelSampler16P);
|
||||||
|
p->addModel(modelSatanonaut);
|
||||||
|
p->addModel(modelWavBank);
|
||||||
|
p->addModel(modelWavBankMC);
|
||||||
|
p->addModel(modelXY);
|
||||||
#undef modelLooper
|
#undef modelLooper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3479,6 +3524,7 @@ void initStaticPlugins()
|
||||||
initStatic__Mog();
|
initStatic__Mog();
|
||||||
initStatic__mscHack();
|
initStatic__mscHack();
|
||||||
initStatic__MSM();
|
initStatic__MSM();
|
||||||
|
initStatic__MUS_X();
|
||||||
initStatic__myth_modules();
|
initStatic__myth_modules();
|
||||||
initStatic__nonlinearcircuits();
|
initStatic__nonlinearcircuits();
|
||||||
initStatic__Orbits();
|
initStatic__Orbits();
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 55186974eeb6c068f2687d7bb4f5c5e1884bf7da
|
Subproject commit 3792a1ee01240c70e4a9d9e9aed6ec90518ac293
|
||||||
|
|
@ -99,7 +99,7 @@ void destroyStaticPlugins();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string CARDINAL_VERSION = "24.05";
|
const std::string CARDINAL_VERSION = "24.09";
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -362,6 +362,15 @@ static int osc_hello_handler(const char*, const char*, lo_arg**, int, const lo_m
|
||||||
d_stdout("Hello received from OSC, saying hello back to them o/");
|
d_stdout("Hello received from OSC, saying hello back to them o/");
|
||||||
const lo_address source = lo_message_get_source(m);
|
const lo_address source = lo_message_get_source(m);
|
||||||
const lo_server server = static_cast<Initializer*>(self)->oscServer;
|
const lo_server server = static_cast<Initializer*>(self)->oscServer;
|
||||||
|
|
||||||
|
// send list of features first
|
||||||
|
#ifdef CARDINAL_INIT_OSC_THREAD
|
||||||
|
lo_send_from(source, server, LO_TT_IMMEDIATE, "/resp", "ss", "features", ":screenshot:");
|
||||||
|
#else
|
||||||
|
lo_send_from(source, server, LO_TT_IMMEDIATE, "/resp", "ss", "features", "");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// then finally hello reply
|
||||||
lo_send_from(source, server, LO_TT_IMMEDIATE, "/resp", "ss", "hello", "ok");
|
lo_send_from(source, server, LO_TT_IMMEDIATE, "/resp", "ss", "hello", "ok");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -386,7 +395,10 @@ static int osc_load_handler(const char*, const char* types, lo_arg** argv, int a
|
||||||
std::vector<uint8_t> data(size);
|
std::vector<uint8_t> data(size);
|
||||||
std::memcpy(data.data(), blob, size);
|
std::memcpy(data.data(), blob, size);
|
||||||
|
|
||||||
|
#ifdef CARDINAL_INIT_OSC_THREAD
|
||||||
rack::contextSet(context);
|
rack::contextSet(context);
|
||||||
|
#endif
|
||||||
|
|
||||||
rack::system::removeRecursively(context->patch->autosavePath);
|
rack::system::removeRecursively(context->patch->autosavePath);
|
||||||
rack::system::createDirectories(context->patch->autosavePath);
|
rack::system::createDirectories(context->patch->autosavePath);
|
||||||
try {
|
try {
|
||||||
|
|
@ -397,7 +409,10 @@ static int osc_load_handler(const char*, const char* types, lo_arg** argv, int a
|
||||||
catch (rack::Exception& e) {
|
catch (rack::Exception& e) {
|
||||||
WARN("%s", e.what());
|
WARN("%s", e.what());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CARDINAL_INIT_OSC_THREAD
|
||||||
rack::contextSet(nullptr);
|
rack::contextSet(nullptr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
const lo_address source = lo_message_get_source(m);
|
const lo_address source = lo_message_get_source(m);
|
||||||
|
|
@ -423,10 +438,18 @@ static int osc_param_handler(const char*, const char* types, lo_arg** argv, int
|
||||||
const int paramId = argv[1]->i;
|
const int paramId = argv[1]->i;
|
||||||
const float paramValue = argv[2]->f;
|
const float paramValue = argv[2]->f;
|
||||||
|
|
||||||
|
#ifdef CARDINAL_INIT_OSC_THREAD
|
||||||
|
rack::contextSet(context);
|
||||||
|
#endif
|
||||||
|
|
||||||
rack::engine::Module* const module = context->engine->getModule(moduleId);
|
rack::engine::Module* const module = context->engine->getModule(moduleId);
|
||||||
DISTRHO_SAFE_ASSERT_RETURN(module != nullptr, 0);
|
DISTRHO_SAFE_ASSERT_RETURN(module != nullptr, 0);
|
||||||
|
|
||||||
context->engine->setParamValue(module, paramId, paramValue);
|
context->engine->setParamValue(module, paramId, paramValue);
|
||||||
|
|
||||||
|
#ifdef CARDINAL_INIT_OSC_THREAD
|
||||||
|
rack::contextSet(nullptr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -414,7 +414,7 @@ protected:
|
||||||
|
|
||||||
uint32_t getVersion() const override
|
uint32_t getVersion() const override
|
||||||
{
|
{
|
||||||
return d_version(0, 24, 5);
|
return d_version(0, 24, 9);
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t getUniqueId() const override
|
int64_t getUniqueId() const override
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* DISTRHO Cardinal Plugin
|
* DISTRHO Cardinal Plugin
|
||||||
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
|
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
|
||||||
*
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 3 of
|
|
||||||
* the License, or any later version.
|
|
||||||
*
|
|
||||||
* This program 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 General Public License for more details.
|
|
||||||
*
|
|
||||||
* For a full copy of the GNU General Public License see the LICENSE file.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <engine/Engine.hpp>
|
#include <engine/Engine.hpp>
|
||||||
|
|
@ -40,6 +29,12 @@
|
||||||
# include <lo/lo.h>
|
# include <lo/lo.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
namespace rack {
|
||||||
|
namespace engine {
|
||||||
|
void Engine_setRemoteDetails(Engine*, remoteUtils::RemoteDetails*);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace remoteUtils {
|
namespace remoteUtils {
|
||||||
|
|
@ -53,8 +48,15 @@ static int osc_handler(const char* const path, const char* const types, lo_arg**
|
||||||
{
|
{
|
||||||
d_stdout("osc_handler(\"%s\", ...) - got resp | '%s' '%s'", path, &argv[0]->s, &argv[1]->s);
|
d_stdout("osc_handler(\"%s\", ...) - got resp | '%s' '%s'", path, &argv[0]->s, &argv[1]->s);
|
||||||
|
|
||||||
if (std::strcmp(&argv[0]->s, "hello") == 0 && std::strcmp(&argv[1]->s, "ok") == 0)
|
if (std::strcmp(&argv[0]->s, "hello") == 0)
|
||||||
static_cast<RemoteDetails*>(self)->connected = true;
|
{
|
||||||
|
if (std::strcmp(&argv[1]->s, "ok") == 0)
|
||||||
|
static_cast<RemoteDetails*>(self)->connected = true;
|
||||||
|
}
|
||||||
|
else if (std::strcmp(&argv[0]->s, "features") == 0)
|
||||||
|
{
|
||||||
|
static_cast<RemoteDetails*>(self)->screenshot = std::strstr(&argv[1]->s, ":screenshot:") != nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -92,8 +94,10 @@ bool connectToRemote(const char* const url)
|
||||||
ui->remoteDetails = remoteDetails = new RemoteDetails;
|
ui->remoteDetails = remoteDetails = new RemoteDetails;
|
||||||
remoteDetails->handle = ui;
|
remoteDetails->handle = ui;
|
||||||
remoteDetails->url = strdup(url);
|
remoteDetails->url = strdup(url);
|
||||||
remoteDetails->connected = true;
|
|
||||||
remoteDetails->autoDeploy = true;
|
remoteDetails->autoDeploy = true;
|
||||||
|
remoteDetails->connected = true;
|
||||||
|
remoteDetails->first = false;
|
||||||
|
remoteDetails->screenshot = false;
|
||||||
}
|
}
|
||||||
#elif defined(HAVE_LIBLO)
|
#elif defined(HAVE_LIBLO)
|
||||||
const lo_address addr = lo_address_new_from_url(url);
|
const lo_address addr = lo_address_new_from_url(url);
|
||||||
|
|
@ -107,10 +111,16 @@ bool connectToRemote(const char* const url)
|
||||||
ui->remoteDetails = remoteDetails = new RemoteDetails;
|
ui->remoteDetails = remoteDetails = new RemoteDetails;
|
||||||
remoteDetails->handle = oscServer;
|
remoteDetails->handle = oscServer;
|
||||||
remoteDetails->url = strdup(url);
|
remoteDetails->url = strdup(url);
|
||||||
|
remoteDetails->autoDeploy = true;
|
||||||
|
remoteDetails->first = true;
|
||||||
remoteDetails->connected = false;
|
remoteDetails->connected = false;
|
||||||
remoteDetails->autoDeploy = false;
|
remoteDetails->screenshot = false;
|
||||||
|
|
||||||
lo_server_add_method(oscServer, "/resp", nullptr, osc_handler, remoteDetails);
|
lo_server_add_method(oscServer, "/resp", nullptr, osc_handler, remoteDetails);
|
||||||
|
|
||||||
|
sendFullPatchToRemote(remoteDetails);
|
||||||
|
|
||||||
|
Engine_setRemoteDetails(context->engine, remoteDetails);
|
||||||
}
|
}
|
||||||
else if (std::strcmp(remoteDetails->url, url) != 0)
|
else if (std::strcmp(remoteDetails->url, url) != 0)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* DISTRHO Cardinal Plugin
|
* DISTRHO Cardinal Plugin
|
||||||
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
|
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
|
||||||
*
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 3 of
|
|
||||||
* the License, or any later version.
|
|
||||||
*
|
|
||||||
* This program 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 General Public License for more details.
|
|
||||||
*
|
|
||||||
* For a full copy of the GNU General Public License see the LICENSE file.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
@ -27,8 +16,10 @@ namespace remoteUtils {
|
||||||
struct RemoteDetails {
|
struct RemoteDetails {
|
||||||
void* handle;
|
void* handle;
|
||||||
const char* url;
|
const char* url;
|
||||||
bool connected;
|
|
||||||
bool autoDeploy;
|
bool autoDeploy;
|
||||||
|
bool first;
|
||||||
|
bool connected;
|
||||||
|
bool screenshot;
|
||||||
};
|
};
|
||||||
|
|
||||||
RemoteDetails* getRemote();
|
RemoteDetails* getRemote();
|
||||||
|
|
|
||||||
|
|
@ -1041,7 +1041,7 @@ protected:
|
||||||
if (inSelfTest) return false;
|
if (inSelfTest) return false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const rack::math::Vec scrollDelta = rack::math::Vec(-ev.delta.getX(), ev.delta.getY());
|
const rack::math::Vec scrollDelta = rack::math::Vec(-ev.delta.getX(), ev.delta.getY()) * 50 ;
|
||||||
|
|
||||||
const int mods = glfwMods(ev.mod);
|
const int mods = glfwMods(ev.mod);
|
||||||
const ScopedContext sc(this, mods);
|
const ScopedContext sc(this, mods);
|
||||||
|
|
|
||||||
|
|
@ -464,6 +464,7 @@ static const struct {
|
||||||
{ kModeBefaco, "/Befaco/res/panels/SpringReverb.svg" },
|
{ kModeBefaco, "/Befaco/res/panels/SpringReverb.svg" },
|
||||||
{ kModeBefaco, "/Befaco/res/panels/StereoStrip.svg" },
|
{ kModeBefaco, "/Befaco/res/panels/StereoStrip.svg" },
|
||||||
{ kModeBefaco, "/Befaco/res/panels/Voltio.svg" },
|
{ kModeBefaco, "/Befaco/res/panels/Voltio.svg" },
|
||||||
|
{ kModeBefaco, "/Befaco/res/panels/Octaves.svg" },
|
||||||
// GPLv3+
|
// GPLv3+
|
||||||
{ kModeCardinal, "/Cardinal/res/AudioFile.svg" },
|
{ kModeCardinal, "/Cardinal/res/AudioFile.svg" },
|
||||||
{ kModeCardinal, "/Cardinal/res/AudioToCVPitch.svg" },
|
{ kModeCardinal, "/Cardinal/res/AudioToCVPitch.svg" },
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* DISTRHO Cardinal Plugin
|
* DISTRHO Cardinal Plugin
|
||||||
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
|
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
|
||||||
*
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 3 of
|
|
||||||
* the License, or any later version.
|
|
||||||
*
|
|
||||||
* This program 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 General Public License for more details.
|
|
||||||
*
|
|
||||||
* For a full copy of the GNU General Public License see the LICENSE file.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -295,7 +284,7 @@ static void Engine_stepFrame(Engine* that) {
|
||||||
Param* smoothParam = &smoothModule->params[smoothParamId];
|
Param* smoothParam = &smoothModule->params[smoothParamId];
|
||||||
float value = smoothParam->value;
|
float value = smoothParam->value;
|
||||||
float newValue;
|
float newValue;
|
||||||
if (internal->remoteDetails != nullptr) {
|
if (internal->remoteDetails != nullptr && internal->remoteDetails->connected) {
|
||||||
newValue = value;
|
newValue = value;
|
||||||
sendParamChangeToRemote(internal->remoteDetails, smoothModule->id, smoothParamId, value);
|
sendParamChangeToRemote(internal->remoteDetails, smoothModule->id, smoothParamId, value);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1094,7 +1083,7 @@ void Engine::setParamValue(Module* module, int paramId, float value) {
|
||||||
internal->smoothModule = NULL;
|
internal->smoothModule = NULL;
|
||||||
internal->smoothParamId = 0;
|
internal->smoothParamId = 0;
|
||||||
}
|
}
|
||||||
if (internal->remoteDetails != nullptr) {
|
if (internal->remoteDetails != nullptr && internal->remoteDetails->connected) {
|
||||||
sendParamChangeToRemote(internal->remoteDetails, module->id, paramId, value);
|
sendParamChangeToRemote(internal->remoteDetails, module->id, paramId, value);
|
||||||
}
|
}
|
||||||
module->params[paramId].setValue(value);
|
module->params[paramId].setValue(value);
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* DISTRHO Cardinal Plugin
|
* DISTRHO Cardinal Plugin
|
||||||
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
|
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
|
||||||
*
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 3 of
|
|
||||||
* the License, or any later version.
|
|
||||||
*
|
|
||||||
* This program 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 General Public License for more details.
|
|
||||||
*
|
|
||||||
* For a full copy of the GNU General Public License see the LICENSE file.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -207,14 +196,19 @@ void Scene::step() {
|
||||||
if (remoteUtils::RemoteDetails* const remoteDetails = remoteUtils::getRemote()) {
|
if (remoteUtils::RemoteDetails* const remoteDetails = remoteUtils::getRemote()) {
|
||||||
idleRemote(remoteDetails);
|
idleRemote(remoteDetails);
|
||||||
|
|
||||||
if (remoteDetails->autoDeploy) {
|
if (remoteDetails->autoDeploy && remoteDetails->connected) {
|
||||||
const int actionIndex = APP->history->actionIndex;
|
const int actionIndex = APP->history->actionIndex;
|
||||||
const double time = system::getTime();
|
const double time = system::getTime();
|
||||||
|
|
||||||
if (internal->historyActionIndex == -1) {
|
if (internal->historyActionIndex == -1) {
|
||||||
internal->historyActionIndex = actionIndex;
|
internal->historyActionIndex = actionIndex;
|
||||||
internal->lastSceneChangeTime = time;
|
internal->lastSceneChangeTime = time;
|
||||||
} else if (internal->historyActionIndex != actionIndex && actionIndex > 0 && time - internal->lastSceneChangeTime >= 1.0) {
|
} else if (remoteDetails->first ||
|
||||||
|
(internal->historyActionIndex != actionIndex
|
||||||
|
&& actionIndex > 0
|
||||||
|
&& time - internal->lastSceneChangeTime >= 1.0)) {
|
||||||
|
remoteDetails->first = false;
|
||||||
|
|
||||||
const std::string& name(APP->history->actions[actionIndex - 1]->name);
|
const std::string& name(APP->history->actions[actionIndex - 1]->name);
|
||||||
static const std::vector<std::string> ignoredNames = {
|
static const std::vector<std::string> ignoredNames = {
|
||||||
"move knob",
|
"move knob",
|
||||||
|
|
@ -224,7 +218,10 @@ void Scene::step() {
|
||||||
if (std::find(ignoredNames.cbegin(), ignoredNames.cend(), name) == ignoredNames.cend()) {
|
if (std::find(ignoredNames.cbegin(), ignoredNames.cend(), name) == ignoredNames.cend()) {
|
||||||
printf("action '%s'\n", APP->history->actions[actionIndex - 1]->name.c_str());
|
printf("action '%s'\n", APP->history->actions[actionIndex - 1]->name.c_str());
|
||||||
remoteUtils::sendFullPatchToRemote(remoteDetails);
|
remoteUtils::sendFullPatchToRemote(remoteDetails);
|
||||||
window::generateScreenshot();
|
|
||||||
|
if (remoteDetails->screenshot) {
|
||||||
|
window::generateScreenshot();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
internal->historyActionIndex = actionIndex;
|
internal->historyActionIndex = actionIndex;
|
||||||
internal->lastSceneChangeTime = time;
|
internal->lastSceneChangeTime = time;
|
||||||
|
|
@ -334,8 +331,13 @@ void Scene::onHoverKey(const HoverKeyEvent& e) {
|
||||||
if (e.key == GLFW_KEY_F7 && (e.mods & RACK_MOD_MASK) == 0) {
|
if (e.key == GLFW_KEY_F7 && (e.mods & RACK_MOD_MASK) == 0) {
|
||||||
if (remoteUtils::RemoteDetails* const remoteDetails = remoteUtils::getRemote())
|
if (remoteUtils::RemoteDetails* const remoteDetails = remoteUtils::getRemote())
|
||||||
{
|
{
|
||||||
remoteUtils::sendFullPatchToRemote(remoteDetails);
|
if (remoteDetails->connected) {
|
||||||
window::generateScreenshot();
|
remoteUtils::sendFullPatchToRemote(remoteDetails);
|
||||||
|
|
||||||
|
if (remoteDetails->screenshot) {
|
||||||
|
window::generateScreenshot();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* DISTRHO Cardinal Plugin
|
* DISTRHO Cardinal Plugin
|
||||||
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
|
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
|
||||||
*
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 3 of
|
|
||||||
* the License, or any later version.
|
|
||||||
*
|
|
||||||
* This program 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 General Public License for more details.
|
|
||||||
*
|
|
||||||
* For a full copy of the GNU General Public License see the LICENSE file.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -598,7 +587,7 @@ static void Window__writeImagePNG(void* context, void* data, int size) {
|
||||||
CardinalBaseUI* const ui = static_cast<CardinalBaseUI*>(context);
|
CardinalBaseUI* const ui = static_cast<CardinalBaseUI*>(context);
|
||||||
if (char* const screenshot = String::asBase64(data, size).getAndReleaseBuffer()) {
|
if (char* const screenshot = String::asBase64(data, size).getAndReleaseBuffer()) {
|
||||||
ui->setState("screenshot", screenshot);
|
ui->setState("screenshot", screenshot);
|
||||||
if (ui->remoteDetails != nullptr)
|
if (ui->remoteDetails != nullptr && ui->remoteDetails->connected && ui->remoteDetails->screenshot)
|
||||||
remoteUtils::sendScreenshotToRemote(ui->remoteDetails, screenshot);
|
remoteUtils::sendScreenshotToRemote(ui->remoteDetails, screenshot);
|
||||||
std::free(screenshot);
|
std::free(screenshot);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>studio.kx.distrho.cardinal.jack</string>
|
<string>studio.kx.distrho.cardinal.jack</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>24.05</string>
|
<string>24.09</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>10.15</string>
|
<string>10.15</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>studio.kx.distrho.cardinal.native</string>
|
<string>studio.kx.distrho.cardinal.native</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>24.05</string>
|
<string>24.09</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>10.15</string>
|
<string>10.15</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue