Skip to content

Commit 8951053

Browse files
committed
Add custom ttl for Freezer, require hvcc from system
Signed-off-by: falkTX <falktx@falktx.com>
1 parent 2eb4d78 commit 8951053

File tree

16 files changed

+337
-16
lines changed

16 files changed

+337
-16
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ jobs:
2121
- uses: distrho/dpf-makefile-action@v1
2222
with:
2323
target: ${{ matrix.target }}
24+
hvcc: true
2425

2526
macos:
2627
strategy:
@@ -34,6 +35,7 @@ jobs:
3435
- uses: distrho/dpf-makefile-action@v1
3536
with:
3637
target: ${{ matrix.target }}
38+
hvcc: true
3739

3840
windows:
3941
strategy:
@@ -47,6 +49,7 @@ jobs:
4749
- uses: distrho/dpf-makefile-action@v1
4850
with:
4951
target: ${{ matrix.target }}
52+
hvcc: true
5053

5154
pluginval:
5255
runs-on: ubuntu-22.04
@@ -57,3 +60,4 @@ jobs:
5760
- uses: distrho/dpf-makefile-action@v1
5861
with:
5962
target: pluginval
63+
hvcc: true

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
/bin/
22
/build/
3+
*.dll
4+
*.dylib
5+
*.so

Makefile

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ include dpf/Makefile.base.mk
1111

1212
PLUGINS = $(subst plugins/,,$(wildcard plugins/*))
1313

14-
# CUSTOM_TTL = $(subst custom-ttl/,,$(wildcard custom-ttl/*))
15-
# MODGUIS = $(subst custom-ttl/,,$(subst /modgui,,$(wildcard custom-ttl/*/modgui)))
14+
CUSTOM_TTL = $(subst custom-ttl/,,$(wildcard custom-ttl/*))
15+
MODGUIS = $(subst custom-ttl/,,$(subst /modgui,,$(wildcard custom-ttl/*/modgui)))
1616

1717
# ---------------------------------------------------------------------------------------------------------------------
1818
# build rules
1919

2020
all: pregen
21-
# $(foreach p,$(CUSTOM_TTL),cp custom-ttl/${p}/*.ttl bin/${p}.lv2/;)
22-
# $(foreach p,$(MODGUIS),cp -r custom-ttl/${p}/modgui bin/${p}.lv2/;)
21+
$(foreach p,$(CUSTOM_TTL),cp custom-ttl/${p}/*.ttl bin/$(lastword $(subst -, ,${p})).lv2/;)
22+
$(foreach p,$(MODGUIS),cp -r custom-ttl/${p}/modgui bin/$(lastword $(subst -, ,${p})).lv2/;)
2323

2424
pregen: plugins dpf/utils/lv2_ttl_generator$(APP_EXT)
2525
@$(CURDIR)/dpf/utils/generate-ttl.sh
@@ -35,9 +35,8 @@ build/%/dpf-widgets: dpf-widgets
3535
-@mkdir -p build/$*
3636
ln -s $(abspath $<) $@
3737

38-
build/%/Makefile: hvcc/build/lib/hvcc/__init__.py plugins/%/plugin.json plugins/%/plugin.pd
39-
env PYTHONPATH=$(CURDIR)/hvcc/build/lib \
40-
python3 ./hvcc/build/lib/hvcc/__init__.py \
38+
build/%/Makefile: plugins/%/plugin.json plugins/%/plugin.pd
39+
hvcc \
4140
plugins/$*/plugin.pd \
4241
-m plugins/$*/plugin.json \
4342
-n "$(lastword $(subst -, ,$*))" \
@@ -47,11 +46,6 @@ build/%/Makefile: hvcc/build/lib/hvcc/__init__.py plugins/%/plugin.json plugins/
4746
dpf/utils/lv2_ttl_generator$(APP_EXT):
4847
$(MAKE) -C dpf/utils/lv2-ttl-generator
4948

50-
hvcc/build/lib/hvcc/__init__.py:
51-
cd hvcc && \
52-
python3 -m pip install --isolated --no-cache-dir --no-input -q -r requirements.txt && \
53-
[ -e build ] || python3 setup.py build
54-
5549
# ---------------------------------------------------------------------------------------------------------------------
5650
# cleanup
5751

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ And finally a readme just to give some details on the plugin and any relevant in
3737

3838
### BUILDING
3939

40-
For building you will need a POSIX-compliant compiler (GCC or Clang) plus GNU Make.
40+
For building you will need a POSIX-compliant compiler (GCC or Clang), plus [hvcc](https://wasted-audio.github.io/hvcc/) and GNU Make.
4141
Building is a simple as running `make` after cloning this repository, assuming you have the needed tools installed.
4242

4343
Note that this repository uses git submodules, so cloning with `git clone --recursive` is required.
@@ -55,7 +55,7 @@ make moddwarf
5555

5656
Change `moddwarf` to `modduo` or `modduox` if applicable.
5757

58-
After building, you can directly push the bundle into a MOD unit over USB by running:
58+
After building, you can directly push the plugin bundles into a MOD unit over USB by running:
5959

6060
```sh
6161
make modpush
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
2+
@prefix doap: <http://usefulinc.com/ns/doap#> .
3+
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
4+
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
5+
@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
6+
@prefix mod: <http://moddevices.com/ns/mod#> .
7+
@prefix opts: <http://lv2plug.in/ns/ext/options#> .
8+
@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> .
9+
@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
10+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
11+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
12+
@prefix rsz: <http://lv2plug.in/ns/ext/resize-port#> .
13+
@prefix spdx: <http://spdx.org/rdf/terms#> .
14+
@prefix unit: <http://lv2plug.in/ns/extensions/units#> .
15+
16+
<urn:hvcc:Freezer>
17+
a lv2:UtilityPlugin, lv2:Plugin, doap:Project ;
18+
19+
lv2:extensionData opts:interface ;
20+
21+
lv2:optionalFeature <http://lv2plug.in/ns/lv2core#hardRTCapable> ,
22+
<http://lv2plug.in/ns/ext/buf-size#boundedBlockLength> ;
23+
24+
lv2:requiredFeature opts:options ,
25+
<http://lv2plug.in/ns/ext/urid#map> ;
26+
27+
opts:supportedOption <http://lv2plug.in/ns/ext/buf-size#nominalBlockLength> ,
28+
<http://lv2plug.in/ns/ext/buf-size#maxBlockLength> ,
29+
<http://lv2plug.in/ns/ext/parameters#sampleRate> ;
30+
31+
lv2:port [
32+
a lv2:InputPort, lv2:AudioPort ;
33+
lv2:index 0 ;
34+
lv2:symbol "lv2_audio_in_1" ;
35+
lv2:name "Audio Input 1" ;
36+
] ;
37+
38+
lv2:port [
39+
a lv2:OutputPort, lv2:AudioPort ;
40+
lv2:index 1 ;
41+
lv2:symbol "lv2_audio_out_1" ;
42+
lv2:name "Audio Output 1" ;
43+
] ;
44+
45+
lv2:port [
46+
a lv2:InputPort, atom:AtomPort ;
47+
lv2:index 2 ;
48+
lv2:name "Events Input" ;
49+
lv2:symbol "lv2_events_in" ;
50+
rsz:minimumSize 2048 ;
51+
atom:bufferType atom:Sequence ;
52+
atom:supports <http://lv2plug.in/ns/ext/time#Position> ;
53+
] ;
54+
55+
lv2:port [
56+
a lv2:InputPort, lv2:ControlPort ;
57+
lv2:index 3 ;
58+
lv2:name "attack" ;
59+
lv2:symbol "attack" ;
60+
lv2:default 100 ;
61+
lv2:minimum 0 ;
62+
lv2:maximum 2000 ;
63+
] ,
64+
[
65+
a lv2:InputPort, lv2:ControlPort ;
66+
lv2:index 4 ;
67+
lv2:name "current step" ;
68+
lv2:symbol "current_step" ;
69+
lv2:default 1 ;
70+
lv2:minimum 1 ;
71+
lv2:maximum 6 ;
72+
lv2:portProperty lv2:integer ;
73+
] ,
74+
[
75+
a lv2:InputPort, lv2:ControlPort ;
76+
lv2:index 5 ;
77+
lv2:name "decay" ;
78+
lv2:symbol "decay" ;
79+
lv2:default 100 ;
80+
lv2:minimum 0 ;
81+
lv2:maximum 2000 ;
82+
] ,
83+
[
84+
a lv2:InputPort, lv2:ControlPort ;
85+
lv2:index 6 ;
86+
lv2:name "decay x10" ;
87+
lv2:symbol "decay_x10" ;
88+
lv2:default 1 ;
89+
lv2:minimum 1 ;
90+
lv2:maximum 10 ;
91+
lv2:portProperty lv2:toggled ;
92+
] ,
93+
[
94+
a lv2:InputPort, lv2:ControlPort ;
95+
lv2:index 7 ;
96+
lv2:name "dry" ;
97+
lv2:symbol "dry" ;
98+
lv2:default 1 ;
99+
lv2:minimum 0 ;
100+
lv2:maximum 1 ;
101+
] ,
102+
[
103+
a lv2:InputPort, lv2:ControlPort ;
104+
lv2:index 8 ;
105+
lv2:name "freeze" ;
106+
lv2:symbol "freeze" ;
107+
lv2:default 0 ;
108+
lv2:minimum 0 ;
109+
lv2:maximum 1 ;
110+
lv2:portProperty lv2:toggled , mod:preferMomentaryOnByDefault ;
111+
] ,
112+
[
113+
a lv2:InputPort, lv2:ControlPort ;
114+
lv2:index 9 ;
115+
lv2:name "layers number" ;
116+
lv2:symbol "layers_number" ;
117+
lv2:default 1 ;
118+
lv2:minimum 1 ;
119+
lv2:maximum 6 ;
120+
lv2:portProperty lv2:integer ;
121+
] ,
122+
[
123+
a lv2:InputPort, lv2:ControlPort ;
124+
lv2:index 10 ;
125+
lv2:name "layers volume" ;
126+
lv2:symbol "layers_volume" ;
127+
lv2:default 0.8 ;
128+
lv2:minimum 0 ;
129+
lv2:maximum 1 ;
130+
] ,
131+
[
132+
a lv2:InputPort, lv2:ControlPort ;
133+
lv2:index 11 ;
134+
lv2:name "mode" ;
135+
lv2:symbol "mode" ;
136+
lv2:default 0 ;
137+
lv2:minimum 0 ;
138+
lv2:maximum 1 ;
139+
lv2:portProperty lv2:enumeration , lv2:integer ;
140+
lv2:scalePoint
141+
[
142+
rdfs:label "MOMENT" ;
143+
rdf:value 1
144+
] , [
145+
rdfs:label "LATCH" ;
146+
rdf:value 0
147+
]
148+
] ,
149+
[
150+
a lv2:InputPort, lv2:ControlPort ;
151+
lv2:index 12 ;
152+
lv2:name "sample length" ;
153+
lv2:symbol "sample_length" ;
154+
lv2:default 1 ;
155+
lv2:minimum 0.2 ;
156+
lv2:maximum 1 ;
157+
] ,
158+
[
159+
a lv2:InputPort, lv2:ControlPort ;
160+
lv2:index 13 ;
161+
lv2:name "speed" ;
162+
lv2:symbol "speed" ;
163+
lv2:default 1 ;
164+
lv2:minimum 0 ;
165+
lv2:maximum 2 ;
166+
] ,
167+
[
168+
a lv2:InputPort, lv2:ControlPort ;
169+
lv2:index 14 ;
170+
lv2:name "wet" ;
171+
lv2:symbol "wet" ;
172+
lv2:default 1 ;
173+
lv2:minimum 0 ;
174+
lv2:maximum 1 ;
175+
] ;
176+
177+
rdfs:comment "Freezer sample and hold notes or chords with infinite sustain" ;
178+
179+
doap:name "Freezer" ;
180+
mod:brand "BattNotIncluded" ;
181+
mod:label "Freezer" ;
182+
183+
doap:maintainer [
184+
foaf:name "J.Velcl@seznam.cz" ;
185+
] ;
186+
187+
lv2:microVersion 0 ;
188+
lv2:minorVersion 0 .
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
@prefix modgui: <http://moddevices.com/ns/modgui#> .
2+
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
3+
4+
<urn:hvcc:Freezer>
5+
modgui:gui [
6+
modgui:resourcesDirectory <modgui> ;
7+
modgui:iconTemplate <modgui/icon.html> ;
8+
modgui:stylesheet <modgui/stylesheet.css> ;
9+
modgui:screenshot <modgui/screen.png> ;
10+
modgui:thumbnail <modgui/thumbnail.png> ;
11+
12+
13+
14+
15+
] .
237 KB
Loading
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<div class="mod-pedal mod-pedal-freezer mod-no-shadow">
2+
3+
<div mod-role="drag-handle" class="mod-drag-handle"></div>
4+
5+
<div class="mod-toggle" mod-role="input-control-port" mod-port-symbol="freeze"></div>
6+
7+
<div class="mod-switch mode" mod-role="input-control-port" mod-port-symbol="mode"></div>
8+
9+
10+
<div class="mod-pedal-knob dry_knob" mod-role="input-control-port" mod-port-symbol="dry"></div>
11+
<div class="mod-pedal-knob wet_knob" mod-role="input-control-port" mod-port-symbol="wet"></div>
12+
<div class="mod-pedal-knob_small layer_knob" mod-role="input-control-port" mod-port-symbol="layers_number"></div>
13+
<div class="mod-pedal-knob_small vol_knob" mod-role="input-control-port" mod-port-symbol="layers_volume"></div>
14+
<div class="mod-pedal-knob attack_knob" mod-role="input-control-port" mod-port-symbol="attack"></div>
15+
<div class="mod-pedal-knob decay_knob" mod-role="input-control-port" mod-port-symbol="decay"></div>
16+
17+
<div class="mod-pedal-input">
18+
<div class="mod-input" title="Audio Input 1" mod-role="input-audio-port" mod-port-symbol="lv2_audio_in_1"></div>
19+
</div>
20+
<div class="mod-pedal-output">
21+
<div class="mod-output" title="Audio Output 1" mod-role="output-audio-port" mod-port-symbol="lv2_audio_out_1"></div>
22+
</div>
23+
24+
</div>
498 KB
Loading
282 KB
Loading

0 commit comments

Comments
 (0)