Skip to content

Commit 50c4b23

Browse files
authored
Merge pull request #419 from stoermelder/v2-dev
v2.3.0
2 parents fcad9cc + e9d4a62 commit 50c4b23

150 files changed

Lines changed: 18674 additions & 1865 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build-plugin.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ jobs:
5252
run: |
5353
export PLUGIN_DIR=$GITHUB_WORKSPACE
5454
pushd ${{ env.rack-plugin-toolchain-dir }}
55+
git config --global --add safe.directory "$GITHUB_WORKSPACE"
5556
make plugin-build-${{ matrix.platform }}
5657
- name: Upload artifact
5758
uses: actions/upload-artifact@v4

.gitmodules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[submodule "dep/orca-c"]
2+
path = dep/orca-c
3+
url = https://github.com/hundredrabbits/Orca-c.git
4+
commit = 9df9786e2ad3c01955cdf4cdd5ae1fffad8fa5cc

CHANGELOG.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,34 @@
1+
## 2.3.0
2+
3+
### New modules
4+
5+
- Module [AHAB](./docs/ahab/Ahab.md)
6+
- A live programming environment for ORCA, an esoteric programming language designed to quickly create procedural sequencers
7+
8+
### Changes and Fixes
9+
10+
- Module [8FACE mk2](./docs/eightface/EightFaceMk2.md)
11+
- Added performance warning for large module presets (#396)
12+
- Fixed broken unbinding of modules (memory leak) (#396)
13+
- Module [GLUE](./docs/glue/Glue.md)
14+
- Added option to add labels to cables (#247)
15+
- Module [MIDI-CAT](./docs/midicat/MidiCat.md)
16+
- Added hotkey Ctrl/Cmd+Shift+R for resetting input-mode _Pickup (snap)_
17+
- Added hotkey Ctrl/Cmd+Shift+I for temporarily activating input-mode _Direct_ while held
18+
- Added hotkey Ctrl/Cmd+Shift+F for re-sending MIDI feedback
19+
- Module [MIDI-KEY](./docs/midi/MidiKey.md)
20+
- Fixed occasional crash in browser preview
21+
- Module [SAIL](./docs/sail/Sail.md)
22+
- Fixed occasional crash (#358)
23+
- Module [STROKE](./docs/stroke/Stroke.md)
24+
- Fixed broken _Zoom out_ command
25+
- Fixed broken Toggle-commands on different UI Scale (#415)
26+
- Module [TRANSIT](./docs/transit/Transit.md)
27+
- Added alternative parameter binding by selection box
28+
- Added custom color LED setting per slot
29+
- Added option to set the first usable snapshot (instead of starting at 1) (#265)
30+
- Added option to disable fade CV input clamping, allowing for more extreme fade times
31+
132
## 2.2.0
233

334
Modules [8FACE, 8FACEx2](./docs/eightface/EightFace.md) and [8FACE mk2](./docs/eightface/EightFaceMk2.md) are now considered stable again. A new _Safe-mode_ has been added, which loads presets into modules according to the supported way. This provides maximum stability. However, it may lock up the audio processing and cause stutters, pops, or other audible artifacts. This behavior is not caused by CPU overload but by fundamental design constraints in VCV Rack.
@@ -30,7 +61,7 @@ The old behavior can be restored using _Unsafe fast_-mode, which will load prese
3061
- Added new defects _Pitch_, _Crush_ and _Dropout_
3162
- Module [GOTO](./docs/goto/Goto.md)
3263
- Jump-points can be multiple modules/a selection instead of a single module
33-
- Nodule [MIDI-CAT](./docs/midicat/MidiCat.md)
64+
- Module [MIDI-CAT](./docs/midicat/MidiCat.md)
3465
- Added input-modes _Snapped_ and _Snapped (short/long)_ for CC and Notes for use with snapped parameters (e.g. "Steps" on VCV SEQ3)
3566
- Added handling for MIDI System Reset message for resetting input-mode _Pickup (snap)_
3667
- Added color setting for mapping indicators

LICENSE-dist.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
## FUNDAMENTAL
2+
3+
https://github.com/VCVRack/Fundamental
4+
5+
All **source code** is copyright © 2016-2023 VCV.
6+
7+
This program is free software: you can redistribute it and/or modify it under the terms of the [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0.en.html) as published by the [Free Software Foundation](https://www.fsf.org/), either version 3 of the License, or (at your option) any later version.
8+
9+
The **VCV logo and icon** are copyright © 2017 VCV and may not be used in derivative works.
10+
11+
The **"VCV" name** is trademarked and may not be used for unofficial products.
12+
13+
The **visual design of the Fundamental modules** is copyright © 2019-2023 [VCV](https://vcvrack.com/) and licensed under [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/).
14+
Commercial use and derivative works are not allowed.
15+
16+
17+
## AUDIBLE INSTRUMENTS
18+
19+
https://github.com/VCVRack/AudibleInstruments
20+
21+
All **source code** in the `src/` folder is copyright © 2016-2020 Andrew Belt and Audible Instruments contributers.
22+
23+
This program is free software: you can redistribute it and/or modify it under the terms of the [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0.en.html) as published by the [Free Software Foundation](https://www.fsf.org/), either version 3 of the License, or (at your option) any later version.
24+
25+
The **panel graphics** in the `res/` folder are copyright © Emilie Gillet and are used and distributed with permission.
26+
27+
**Dependencies** included in the binary distributable may have other licenses.
28+
See [LICENSE-dist.txt](LICENSE-dist.txt) for a full list.
29+
30+
31+
## CORE and VCV RACK
32+
33+
https://github.com/VCVRack/Rack
34+
35+
VCV Rack Free **source code and binaries** are copyright © 2016-2023 VCV.
36+
37+
This program is free software: you can redistribute it and/or modify it under the terms of the [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0.en.html) as published by the [Free Software Foundation](https://www.fsf.org/), either version 3 of the License, or (at your option) any later version.
38+
In addition, you are granted the "VCV Rack Non-Commercial Plugin License Exception", allowed under section 7 of GPLv3, and a commercial licensing option.
39+
40+
>#### VCV Rack Non-Commercial Plugin License Exception
41+
>
42+
>A Plugin is defined as a software library intended to be linked and executed by this software.
43+
>
44+
>You are granted the permission to use this software's Application Programming Interface (API) in your Plugin in source and binary forms, as well as link to this software with the Plugin, regardless of the Plugin's license terms even if it would otherwise violate the terms of this software's GPLv3, provided that the Plugin is distributed free of charge.
45+
>
46+
>Derived works of this software may keep or omit this Exception.
47+
48+
This means that non-commercial plugins do not need to be licensed under the GPLv3 and can be released under any license of your choice (e.g. open-source or proprietary freeware). However, plugins that copy a significant portion of non-API source code from Rack must be licensed under GPLv3.
49+
50+
51+
## BACONMUSIC
52+
53+
https://github.com/baconpaul/BaconPlugs/
54+
55+
Copyright © 2017-2019 Paul Walker
56+
Licensed under the Gnu Public License, version 3. https://www.gnu.org/licenses/gpl-3.0.en.html

LICENSE-dist.txt

Lines changed: 0 additions & 40 deletions
This file was deleted.

LICENSE-orca.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2017 Hundredrabbits
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
File renamed without changes.

Makefile

Lines changed: 62 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,74 @@
11
RACK_DIR ?= ../..
22

3+
# Orca-c dependency
4+
ORCA_SOURCES = \
5+
dep/orca-c/field.c \
6+
dep/orca-c/gbuffer.c \
7+
dep/orca-c/osc_out.c \
8+
dep/orca-c/sim.c \
9+
dep/orca-c/sysmisc.c \
10+
dep/orca-c/vmio.c \
11+
dep/orca-c/thirdparty/oso.c
12+
13+
ORCA_GENERATED_HEADER := src/modules/ahab/orca_examples.hpp
14+
315
# Add .cpp files to the build
416
SOURCES += $(wildcard src/*.cpp src/**/**/*.cpp)
17+
# Exclude test files from the main build
518
SOURCES := $(filter-out src/test/%.cpp,$(SOURCES))
19+
SOURCES := $(filter-out %.test.cpp,$(SOURCES))
20+
SOURCES += $(ORCA_SOURCES)
21+
22+
23+
orca-c:
24+
mkdir -p dep/orca-c
25+
git submodule update --init --recursive dep/orca-c
26+
cd dep/orca-c && git apply ../../orca-c.diff
27+
28+
# Creates a generated header embedding the ORCA example
29+
# files in `dep/orca-c/examples`. The header is regenerated when any example
30+
# file changes.
31+
orca-examples: $(ORCA_GENERATED_HEADER)
32+
33+
$(ORCA_GENERATED_HEADER): src/modules/ahab/orca_examples.py $(shell find dep/orca-c/examples -type f -name '*.orca')
34+
python3 src/modules/ahab/orca_examples.py dep/orca-c/examples > $@
35+
36+
include $(RACK_DIR)/arch.mk
37+
38+
# Link Winsock for Windows
39+
ifdef ARCH_WIN
40+
LDFLAGS += -lws2_32
41+
endif
42+
43+
# Ensure headers from the orca-c tree (and its thirdparty) are found
44+
INCLUDES += -Idep/orca-c -Idep/orca-c/thirdparty
45+
646

747
# Add files to the ZIP package when running `make dist`
848
# The compiled plugin and "plugin.json" are automatically added.
949
DISTRIBUTABLES += res
1050
DISTRIBUTABLES += $(wildcard LICENSE*)
1151
DISTRIBUTABLES += $(wildcard presets)
1252

53+
# Dependencies
54+
DEP_LOCAL := dep
55+
DEPS += orca-c
56+
57+
1358
include $(RACK_DIR)/plugin.mk
1459

1560
ifdef DEBUG
1661
CXXFLAGS := $(filter-out -fno-omit-frame-pointer,$(CXXFLAGS))
1762
CXXFLAGS := $(filter-out -funsafe-math-optimizations,$(CXXFLAGS))
1863
CXXFLAGS := $(filter-out -O3,$(CXXFLAGS))
1964
CXXFLAGS += -O0 -g
65+
CFLAGS := $(filter-out -O3,$(CFLAGS))
2066
CFLAGS += -O0 -g
2167
endif
2268

2369

24-
# Unit test build rules
70+
71+
# Test build rules
2572
# Use "make test" to build tests
2673
# Use "make testrun" to build and run tests
2774
# Use "make testrun SUCCESS=1" to print test success messages
@@ -30,20 +77,24 @@ ifdef SUCCESS
3077
TEST_SUCCESS_FLAG = --success
3178
endif
3279

33-
TEST_SOURCES += $(wildcard src/test/*.test.cpp)
34-
TEST_ADD_SOURCES := $(CURDIR)/src/test/catch2/catch_amalgamated.cpp
80+
TEST_SOURCES += $(wildcard src/**/*.test.cpp src/**/**/*.test.cpp)
81+
TEST_ADD_SOURCES := $(CURDIR)/src/test/catch_amalgamated.cpp
82+
83+
# Build each test source into its own executable under build/test/ using basenames
84+
TEST_NAMES := $(patsubst %.cpp,%,$(notdir $(TEST_SOURCES)))
85+
TEST_BINARIES := $(patsubst %,build/test/%,$(TEST_NAMES))
3586

36-
# Build each test source into its own executable under build/test/
37-
TEST_BINARIES := $(patsubst src/test/%.cpp,build/test/%,$(TEST_SOURCES))
87+
# Allow pattern rule to locate test source files by searching these directories
88+
VPATH := $(sort $(dir $(TEST_SOURCES)))
3889

3990
# Pattern rule to build an individual test executable
40-
build/test/%: src/test/%.cpp $(CURDIR)/src/test/catch2/catch_amalgamated.cpp $(CURDIR)/src/test/test_context.hpp
91+
build/test/%: %.cpp $(CURDIR)/src/test/test_context.hpp
4192
@mkdir -p $(dir $@)
42-
@echo "Building test $@..."
93+
@echo "Building $@..."
4394
@$(CXX) -std=c++14 \
44-
-I$(CURDIR)/src/test -I$(CURDIR)/src/test/catch2 $(FLAGS) -O0 \
95+
-I$(CURDIR)/src/test -I$(CURDIR)/src/test $(FLAGS) -O0 \
4596
-L$(RACK_DIR) -lRack \
46-
-o $@ $(TEST_ADD_SOURCES) $(CURDIR)/$(TARGET) $<
97+
-o $@ $(TEST_ADD_SOURCES) $(CURDIR)/$(TARGET) $<
4798

4899
# Build all test binaries
49100
# Also copy the Rack shared library to build/test/ to avoid runtime linking issues
@@ -62,6 +113,6 @@ test: $(TEST_BINARIES) $(TARGET)
62113
testrun: test
63114
echo "Running tests..."
64115
@set -e; for t in $(TEST_BINARIES); do \
65-
echo "Running test $$t..."; \
66-
DYLD_LIBRARY_PATH=$(RACK_DIR) ./$$t --order decl $(TEST_SUCCESS_FLAG); \
116+
echo "Running $$t..."; \
117+
DYLD_LIBRARY_PATH=$(RACK_DIR) ./$$t $(TEST_SUCCESS_FLAG); \
67118
done

0 commit comments

Comments
 (0)