diff --git a/plugins/Makefile b/plugins/Makefile index 070df55..0d4cc8e 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -1065,7 +1065,9 @@ RESOURCE_FILES += $(wildcard unless_modules/font/*.ttf) # MOD builds only have LV2 FX variant for now ifeq ($(MOD_BUILD),true) -LV2_RESOURCES = $(PLUGIN_LIST:%=../bin/CardinalFX.lv2/resources/PluginManifests/%.json) +LV2_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.lv2/resources/PluginManifests/%.json) +LV2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalFX.lv2/resources/PluginManifests/%.json) +LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/Cardinal.lv2/resources/%) LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.lv2/resources/%) else LV2_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.lv2/resources/PluginManifests/%.json) diff --git a/src/MOD/Cardinal.lv2/modgui.ttl b/src/MOD/Cardinal.lv2/modgui.ttl new file mode 100644 index 0000000..2b27f12 --- /dev/null +++ b/src/MOD/Cardinal.lv2/modgui.ttl @@ -0,0 +1,21 @@ +@prefix lv2: . +@prefix mod: . +@prefix modgui: . +@prefix state: . + + + lv2:requiredFeature state:loadDefaultState ; + modgui:gui [ + modgui:resourcesDirectory ; + modgui:documentation ; + modgui:iconTemplate ; + modgui:javascript ; + modgui:stylesheet ; + modgui:screenshot ; + modgui:thumbnail ; + ] ; + state:state [ + "" ; + """Welcome to Cardinal. +If this is your first time, make sure to check out the documentation link on the plugin info, have fun!""" ; + ] . diff --git a/src/MOD/Cardinal.lv2/modgui/distrho.svg b/src/MOD/Cardinal.lv2/modgui/distrho.svg new file mode 100644 index 0000000..30b9d9b --- /dev/null +++ b/src/MOD/Cardinal.lv2/modgui/distrho.svg @@ -0,0 +1,99 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/MOD/Cardinal.lv2/modgui/icon.html b/src/MOD/Cardinal.lv2/modgui/icon.html new file mode 100644 index 0000000..271838e --- /dev/null +++ b/src/MOD/Cardinal.lv2/modgui/icon.html @@ -0,0 +1,247 @@ +
+
+
+
+
+
+ +
DISTRHO
Cardinal
+
+
+
+
+ Show Audio + Show CV +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+ PARAM 1 +
+
+
+ PARAM 2 +
+
+
+ PARAM 3 +
+
+
+ PARAM 4 +
+
+
+ PARAM 5 +
+
+
+ PARAM 6 +
+
+
+ PARAM 7 +
+
+
+ PARAM 8 +
+
+
+ PARAM 9 +
+
+
+ PARAM 10 +
+
+
+ PARAM 11 +
+
+
+ PARAM 12 +
+
+
+ PARAM 13 +
+
+
+ PARAM 14 +
+
+
+ PARAM 15 +
+
+
+ PARAM 16 +
+
+
+ PARAM 17 +
+
+
+ PARAM 18 +
+
+
+ PARAM 19 +
+
+
+ PARAM 20 +
+
+
+ PARAM 21 +
+
+
+ PARAM 22 +
+
+
+ PARAM 23 +
+
+
+ PARAM 24 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/MOD/Cardinal.lv2/modgui/javascript.js b/src/MOD/Cardinal.lv2/modgui/javascript.js new file mode 100644 index 0000000..d1d64db --- /dev/null +++ b/src/MOD/Cardinal.lv2/modgui/javascript.js @@ -0,0 +1,49 @@ +function (event) { + + if (event.type == 'start') { + event.data['visibility-audio'] = true; + event.data['visibility-cv'] = true; + event.icon.find('.visibility-audio').click(function() { + var visible = event.data['visibility-audio']; + if (visible) { + event.icon.find('.mod-pedal-input .mod-audio-input').addClass('cardinal-expanded'); + event.icon.find('.mod-pedal-output .mod-audio-output').addClass('cardinal-expanded'); + $(this).text('Hide Audio'); + } else { + event.icon.find('.mod-pedal-input .mod-audio-input').removeClass('cardinal-expanded'); + event.icon.find('.mod-pedal-output .mod-audio-output').removeClass('cardinal-expanded'); + $(this).text('Show Audio'); + } + event.data['visibility-audio'] = !visible; + }); + event.icon.find('.visibility-cv').click(function() { + var visible = event.data['visibility-cv']; + if (visible) { + event.icon.find('.mod-pedal-input .mod-cv-input').addClass('cardinal-expanded'); + event.icon.find('.mod-pedal-output .mod-cv-output').addClass('cardinal-expanded'); + $(this).text('Hide CV'); + } else { + event.icon.find('.mod-pedal-input .mod-cv-input').removeClass('cardinal-expanded'); + event.icon.find('.mod-pedal-output .mod-cv-output').removeClass('cardinal-expanded'); + $(this).text('Show CV'); + } + event.data['visibility-cv'] = !visible; + }); + return; + } + + if (event.type == 'change') { + console.log("change", event) + if (event.uri === "https://distrho.kx.studio/plugins/cardinal#screenshot") { + if (event.value) { + event.icon.find('.screenshot').css({'background-image':'url(data:image/png;base64,'+event.value+')'}); + event.icon.find('.cardinal-main.mod-pedal .cardinal-patch-comment').hide(); + event.icon.find('.cardinal-main.mod-pedal .cardinal-patch-screeenshot').show(); + } else { + event.icon.find('.cardinal-main.mod-pedal .cardinal-patch-screeenshot').hide(); + event.icon.find('.cardinal-main.mod-pedal .cardinal-patch-comment').show(); + } + } + return; + } +} diff --git a/src/MOD/Cardinal.lv2/modgui/orange-knob.png b/src/MOD/Cardinal.lv2/modgui/orange-knob.png new file mode 100644 index 0000000..2f08b7d Binary files /dev/null and b/src/MOD/Cardinal.lv2/modgui/orange-knob.png differ diff --git a/src/MOD/Cardinal.lv2/modgui/screenshot.png b/src/MOD/Cardinal.lv2/modgui/screenshot.png new file mode 100644 index 0000000..8b81b66 Binary files /dev/null and b/src/MOD/Cardinal.lv2/modgui/screenshot.png differ diff --git a/src/MOD/Cardinal.lv2/modgui/stylesheet.css b/src/MOD/Cardinal.lv2/modgui/stylesheet.css new file mode 100644 index 0000000..1ae6cee --- /dev/null +++ b/src/MOD/Cardinal.lv2/modgui/stylesheet.css @@ -0,0 +1,205 @@ +/* main pedal */ +.cardinal-main.mod-pedal { + background: #333333; + background: linear-gradient(to bottom, #181919, #333333); + color: white; + width: 540px; + height: 590px; + font-size: 20px; + margin: 0; + padding: 0; +} +.cardinal-main.mod-pedal .border { + border: 2px solid #4c4d4d; + width: 540px; + height: 590px; + position: absolute; +} + +.cardinal-main.mod-pedal .mod-control-group { + position: relative; + z-index: 35; +} + +/* top and bottom area split */ +.cardinal-main.mod-pedal .cardinal-main-top { + width: 100%; + height: 240px; + position: absolute; + top: 0px; +} + +.cardinal-main.mod-pedal .cardinal-main-bottom { + width: 100%; + height: 180px; + position: absolute; + top: 240px; +} + +/* top area split */ +.cardinal-main.mod-pedal .cardinal-main-top-left { + width: 180px; + height: 240px; + position: absolute; + top: 0px; + left: 0px; + display: flex; + flex-direction: column; + justify-content: space-around; + text-align: center; +} + +.cardinal-main.mod-pedal .cardinal-main-top-right { + width: 350px; + height: 240px; + position: absolute; + top: 0px; + left: 180px; +} + +.cardinal-main.mod-pedal .cardinal-patch-comment, +.cardinal-main.mod-pedal .cardinal-patch-screeenshot { + width: 340px; + height: 210px; + margin: 20px 20px 10px 0px; +} + +.cardinal-main.mod-pedal .visibility-buttons { + width: 180px; + height: 40px; + font-size: 17px; + display: flex; + justify-content: space-evenly; + justify-content: space-between; +} + +.cardinal-main.mod-pedal .visibility-buttons span { + cursor: pointer; +} + +.cardinal-main.mod-pedal .cardinal-main-knobs { + margin: 10px; + display: flex; + flex-wrap: wrap; + justify-content: center; + text-align: center; + background-color: #181919; + border: 2px solid #4c4d4d; + border-radius: 10px; +} + +/* widgets */ +.cardinal-main.mod-pedal .mod-switch-image { + background-image: url(/resources/switch.png{{{ns}}}); + background-position: left center; + background-repeat: no-repeat; + background-size: auto 50px; + font-weight: bold; + width: 100px; + height: 50px; + cursor: pointer; + margin: 0 auto; +} +.cardinal-main.mod-pedal .mod-switch-image.off { + background-position: right center !important; +} +.cardinal-main.mod-pedal .mod-switch-image.on { + background-position: left center !important; +} + +.cardinal-main.mod-pedal .title { + font-size: 15px; + font-weight: bold; +} + +.cardinal-main.mod-pedal .mod-knob { + padding: 0px 5px; + width: 85px; +} + +.cardinal-main.mod-pedal .mod-knob-image { + background-image: url(/resources/orange-knob.png{{{ns}}}); + background-position: left center; + background-repeat: no-repeat; + background-size: auto 52px; + font-weight: bold; + height: 52px; + width: 52px; + margin: 0 auto; + position: relative; + overflow: hidden; +} + +.cardinal-main.mod-pedal .distrho-logo { + background-image: url(/resources/distrho.svg{{{ns}}}); + background-size: cover; + background-repeat: no-repeat; + height: 48px; + width: 48px; + margin: 0 auto; +} + +.cardinal-main.mod-pedal .cardinal-text { + font-size: 24px; +} + +.cardinal-main.mod-pedal .mod-string-value { + border: 2px solid #4c4d4d; +} + +.cardinal-main.mod-pedal .mod-string-content, +.cardinal-main.mod-pedal .mod-string-value { + height: 100%; + width: 100%; +} + +.cardinal-main.mod-pedal textarea { + background: black; + color: white; + resize: none; + white-space: pre-wrap; +} + .cardinal-main.mod-pedal textarea::selection { + background: #4c4d4d; +} + +.cardinal-main.mod-pedal .screenshot { + /* 1x1px black png */ + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2NgYGD4DwABBAEAwS2OUAAAAABJRU5ErkJggg==); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + width: 100%; + height: 100%; +} + +.cardinal-main.mod-pedal .mod-pedal-input, +.cardinal-main.mod-pedal .mod-pedal-output { + top: 10px; +} + +.cardinal-main.mod-pedal .jack-disconnected { + top: 0px !important; +} + +.cardinal-main.mod-pedal .mod-pedal-input .mod-audio-input, +.cardinal-main.mod-pedal .mod-pedal-input .mod-midi-input, +.cardinal-main.mod-pedal .mod-pedal-input .mod-cv-input, +.cardinal-main.mod-pedal .mod-pedal-output .mod-audio-output, +.cardinal-main.mod-pedal .mod-pedal-output .mod-midi-output, +.cardinal-main.mod-pedal .mod-pedal-output .mod-cv-output { + margin-bottom: 0px; +} + +.cardinal-main.mod-pedal .mod-pedal-input .mod-audio-input.input-disconnected:not(.cardinal-expanded), +.cardinal-main.mod-pedal .mod-pedal-input .mod-cv-input.input-disconnected:not(.cardinal-expanded), +.cardinal-main.mod-pedal .mod-pedal-output .mod-audio-output.output-disconnected:not(.cardinal-expanded), +.cardinal-main.mod-pedal .mod-pedal-output .mod-cv-output.output-disconnected:not(.cardinal-expanded) { + display: none; +} + +/* initial state */ +/*.cardinal-main.mod-pedal .cardinal-patch-comment,*/ +.cardinal-main.mod-pedal .cardinal-patch-screeenshot { + display: none; +} diff --git a/src/MOD/Cardinal.lv2/modgui/switch.png b/src/MOD/Cardinal.lv2/modgui/switch.png new file mode 100644 index 0000000..b576339 Binary files /dev/null and b/src/MOD/Cardinal.lv2/modgui/switch.png differ diff --git a/src/MOD/Cardinal.lv2/modgui/thumbnail.png b/src/MOD/Cardinal.lv2/modgui/thumbnail.png new file mode 100644 index 0000000..25b329a Binary files /dev/null and b/src/MOD/Cardinal.lv2/modgui/thumbnail.png differ diff --git a/src/MOD/CardinalFX.lv2/modgui/stylesheet.css b/src/MOD/CardinalFX.lv2/modgui/stylesheet.css index de03ec0..308ca39 100644 --- a/src/MOD/CardinalFX.lv2/modgui/stylesheet.css +++ b/src/MOD/CardinalFX.lv2/modgui/stylesheet.css @@ -149,7 +149,7 @@ } .cardinal-fx.mod-pedal .mod-string-value { - border: 1px solid #4c4d4d; + border: 2px solid #4c4d4d; } .cardinal-fx.mod-pedal .mod-string-content, diff --git a/src/Makefile b/src/Makefile index d9e5ee6..03f3d4a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -180,6 +180,7 @@ endif all: $(TARGET) ifeq ($(MOD_BUILD),true) + $(MAKE) -C Cardinal lv2 $(MAKE) -C CardinalFX lv2 else $(MAKE) -C Cardinal @@ -226,11 +227,6 @@ $(BUILD_DIR)/%.c.o: %.c @echo "Compiling $<" $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ -$(BUILD_DIR)/override/MIDI_CV.cpp.o: override/MIDI_CV.cpp - -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" - @echo "Compiling $<" - $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -UPRIVATE -c -o $@ - $(BUILD_DIR)/%.cpp.o: %.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<"