From 6574741b4cf5fe582bec518097ae5bf529279dc7 Mon Sep 17 00:00:00 2001 From: brummer10 Date: Tue, 10 Oct 2023 07:23:24 +0200 Subject: [PATCH] Add MOD UI --- Makefile | 12 +- plugins/NeuralRecord/MOD/manifest.ttl | 17 ++ plugins/NeuralRecord/MOD/modgui.ttl | 21 ++ .../MOD/modgui/icon-profiler.html | 53 +++++ .../MOD/modgui/screenshot-profiler.png | Bin 0 -> 22866 bytes .../MOD/modgui/script-profiler.js | 80 +++++++ .../MOD/modgui/stylesheet-profiler.css | 202 ++++++++++++++++++ .../MOD/modgui/thumbnail-profiler.png | Bin 0 -> 3637 bytes plugins/NeuralRecord/MOD/neuralrecord_dsp.ttl | 101 +++++++++ plugins/NeuralRecord/MOD/presets.ttl | 9 + plugins/NeuralRecord/Makefile | 28 ++- 11 files changed, 520 insertions(+), 3 deletions(-) create mode 100644 plugins/NeuralRecord/MOD/manifest.ttl create mode 100644 plugins/NeuralRecord/MOD/modgui.ttl create mode 100644 plugins/NeuralRecord/MOD/modgui/icon-profiler.html create mode 100644 plugins/NeuralRecord/MOD/modgui/screenshot-profiler.png create mode 100644 plugins/NeuralRecord/MOD/modgui/script-profiler.js create mode 100644 plugins/NeuralRecord/MOD/modgui/stylesheet-profiler.css create mode 100644 plugins/NeuralRecord/MOD/modgui/thumbnail-profiler.png create mode 100644 plugins/NeuralRecord/MOD/neuralrecord_dsp.ttl create mode 100644 plugins/NeuralRecord/MOD/presets.ttl diff --git a/Makefile b/Makefile index c6675dc..409a38e 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ endif # -------------------------------------------------------------- # Installation directories +BUIDL_MOD ?= false PREFIX ?= /usr/local BINDIR ?= $(PREFIX)/bin LIBDIR ?= $(PREFIX)/lib @@ -78,6 +79,8 @@ export USER_DSSI_DIR USER_LADSPA_DIR USER_LV2_DIR USER_VST2_DIR USER_VST3_DIR US all: libs plugins gen +mod: MOD + # -------------------------------------------------------------- submodules: @@ -89,6 +92,10 @@ libs: plugins: libs $(MAKE) all -C plugins/NeuralRecord +MOD: clean + @BUIDL_MOD=true + $(MAKE) mod -C plugins/NeuralRecord + ifneq ($(CROSS_COMPILING),true) gen: plugins dpf/utils/lv2_ttl_generator $(CURDIR)/dpf/utils/generate-ttl.sh @@ -117,6 +124,9 @@ install: all install-user: all $(MAKE) install-user -C plugins/NeuralRecord +install-mod: mod + $(MAKE) install-mod -C plugins/NeuralRecord + # -------------------------------------------------------------- -.PHONY: all clean install install-user submodules libs plugins gen +.PHONY: all mod clean install install-user install-mod submodules libs plugins gen diff --git a/plugins/NeuralRecord/MOD/manifest.ttl b/plugins/NeuralRecord/MOD/manifest.ttl new file mode 100644 index 0000000..da6f40e --- /dev/null +++ b/plugins/NeuralRecord/MOD/manifest.ttl @@ -0,0 +1,17 @@ +@prefix lv2: . +@prefix rdfs: . +@prefix pset: . +@prefix ui: . + + + a lv2:Plugin ; + lv2:binary ; + rdfs:seeAlso ; + rdfs:seeAlso . + + + a pset:Preset ; + lv2:appliesTo ; + rdfs:label "" ; + rdfs:seeAlso . + diff --git a/plugins/NeuralRecord/MOD/modgui.ttl b/plugins/NeuralRecord/MOD/modgui.ttl new file mode 100644 index 0000000..9403e22 --- /dev/null +++ b/plugins/NeuralRecord/MOD/modgui.ttl @@ -0,0 +1,21 @@ +@prefix modgui: . +@prefix lv2: . + + + modgui:gui [ + modgui:resourcesDirectory ; + modgui:iconTemplate ; + modgui:stylesheet ; + modgui:screenshot ; + modgui:thumbnail ; + modgui:javascript ; + modgui:brand "brummer" ; + modgui:label "Neural Record" ; + modgui:model "profiler" ; + modgui:monitoredOutputs [ lv2:symbol "METER" ] , [ lv2:symbol "STATE" ] , [ lv2:symbol "ERRORS" ] ; + modgui:port [ + lv2:index 0 ; + lv2:symbol "PROFILE" ; + lv2:name "PROFILE" ; + ] ; + ] . diff --git a/plugins/NeuralRecord/MOD/modgui/icon-profiler.html b/plugins/NeuralRecord/MOD/modgui/icon-profiler.html new file mode 100644 index 0000000..06f17d5 --- /dev/null +++ b/plugins/NeuralRecord/MOD/modgui/icon-profiler.html @@ -0,0 +1,53 @@ +
+ +
+ +
+

{{label}}

+
+ {{#controls.0}} +
+ {{/controls.0}} +
+
+
+
+
+
+
+
+ {{#effect.ports.audio.input}} +
+
+
+ {{/effect.ports.audio.input}} + {{#effect.ports.midi.input}} +
+
+
+ {{/effect.ports.midi.input}} + {{#effect.ports.cv.input}} +
+
+
+ {{/effect.ports.cv.input}} +
+
+ {{#effect.ports.audio.output}} +
+
+
+ {{/effect.ports.audio.output}} + {{#effect.ports.midi.output}} +
+
+
+ {{/effect.ports.midi.output}} + {{#effect.ports.cv.output}} +
+
+
+ {{/effect.ports.cv.output}} +
+
+
diff --git a/plugins/NeuralRecord/MOD/modgui/screenshot-profiler.png b/plugins/NeuralRecord/MOD/modgui/screenshot-profiler.png new file mode 100644 index 0000000000000000000000000000000000000000..14e83562d79e480a99ccb4f5325abf7a23792c28 GIT binary patch literal 22866 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 Kz%@HwNdG@!JC3dZ literal 0 HcmV?d00001 diff --git a/plugins/NeuralRecord/MOD/modgui/script-profiler.js b/plugins/NeuralRecord/MOD/modgui/script-profiler.js new file mode 100644 index 0000000..f27994e --- /dev/null +++ b/plugins/NeuralRecord/MOD/modgui/script-profiler.js @@ -0,0 +1,80 @@ +function (event) { + + const meter = event.icon.find ('[mod-role=METER]'); + const state = event.icon.find ('[mod-role=STATE]'); + const popup = event.icon.find ('[mod-role=POPUP]'); + + var position = "0"; + + function log_meter (db) { + var def = 0.000001; /* Meter deflection %age */ + + if (db < -70.0) { + def = 0.0000001; + } else if (db < -60.0) { + def = (db + 70.0) * 0.25; + } else if (db < -50.0) { + def = (db + 60.0) * 0.5 + 2.5; + } else if (db < -40.0) { + def = (db + 50.0) * 0.75 + 7.5; + } else if (db < -30.0) { + def = (db + 40.0) * 1.5 + 15.0; + } else if (db < -20.0) { + def = (db + 30.0) * 2.0 + 30.0; + } else if (db < 6.0) { + def = (db + 20.0) * 2.5 + 50.0; + } else { + def = 115.0; + } + + return (Math.floor((def/115.0)* 100 ) ).toFixed(1); + } + + function handle_event (symbol, value) { + switch (symbol) { + case 'METER': + position = log_meter (value); + meter.css({height: position + `%`}); + if (value >= 0) { + meter.css({boxShadow: `5px 5px 15px red`}); + } else if (value > -6) { + meter.css({boxShadow: `5px 5px 15px rgba(242, 121, 0, 0.8)`}); + } else { + meter.css({boxShadow: `5px 5px 15px rgba(35, 145, 0, 0.8)`}); + } + break; + case 'STATE': + position = (Math.floor(value * 100)).toFixed(); + state.css({width: `${position}%`}); + state.text(`${position}%`); + break; + case 'ERRORS': + if (value >= 3.0) { + popup.text(`Neural Record Error: Sample Rate mismatch, please use 48kHz`); + popup.css({display: 'block'}); + setTimeout(function() { popup.css({display: 'none'}); }, 5000); + } else if (value >= 2.0) { + popup.text(`Neural Record Error: Seems we receive only garbage, we stop the process now`); + popup.css({display: 'block'}); + setTimeout(function() { popup.css({display: 'none'}); }, 5000); + } else if (value >= 1.0) { + popup.text(`Neural Record Error: No signal comes in, we stop the process now`); + popup.css({display: 'block'}); + setTimeout(function() { popup.css({display: 'none'}); }, 5000); + } + break; + default: + break; + } + } + + if (event.type == 'start') { + var ports = event.ports; + for (var p in ports) { + handle_event (ports[p].symbol, ports[p].value); + } + } + else if (event.type == 'change') { + handle_event (event.symbol, event.value); + } +} diff --git a/plugins/NeuralRecord/MOD/modgui/stylesheet-profiler.css b/plugins/NeuralRecord/MOD/modgui/stylesheet-profiler.css new file mode 100644 index 0000000..95b6a67 --- /dev/null +++ b/plugins/NeuralRecord/MOD/modgui/stylesheet-profiler.css @@ -0,0 +1,202 @@ +/* SIZE */ +.profiler{{{cns}}} { + height: 215px; + position: relative; + width: 295px; + border-radius: 30px; +} + +/* SKIN */ +.profiler{{{cns}}} .background { + background: #333; + box-shadow: 5px 5px 15px #222, inset 5px 5px 10px #444, inset -5px -5px 10px #222; + background-size: 295px 215px; + background-position: center center; + background-repeat: no-repeat; + font-family: Helvetica,Arial,Sans-serif; + height: 215px; + position: absolute; + width: 295px; + border-radius: 30px; +} + +/* THE AUTHOR */ +.profiler{{{cns}}} .mod-plugin-brand h1 { + bottom: 90px; + color: #fff; + font-size: 14px; + left: 54px; + line-height: 1; + margin: 0; + position: absolute; +} + +/* PLUGIN'S NAME */ +.profiler{{{cns}}} .mod-plugin-name h1 { + bottom: 25px; + font-family: Helvetica,Arial,Sans-serif; + font-weight: bold; + font-size: 26px; + left: 65px; + line-height: 1; + margin: 0; + position: absolute; + color: rgba(0,0,0,0.4); + text-shadow: 2px 2px 3px rgba(255,255,255,0.1); +} + +/* Progress Bar */ +.profiler{{{cns}}} .progressbar { + background: #2b2b2b; + border-radius: 13px; + margin-top: -60px; + margin-left: 60px; + height: 20px; + width: 180px; + padding: 2px; + box-shadow: 2px 2px 3px rgba(255,255,255,0.1); +} + +.profiler{{{cns}}} .progress { + display: block; + background: #3e3e3e; + width: 0%; + height: 100%; + border-radius: 9px; + text-align: center; + font-family: Helvetica,Arial,Sans-serif; + font-weight: bold; + color: #fff; + font-size: 11px; + box-shadow: -5px -5px 15px rgba(219, 39, 44, 0.8), 5px 5px 15px #222, inset 5px 5px 10px rgba(219, 39, 44, 0.8), inset -5px -5px 10px #222; +} + +/* CONTROLS */ +.profiler{{{cns}}} .mod-control-group { + cursor: pointer; + height: 50px; + width: 160px; + left: 70px; + position: absolute; + top: 30px; +} + +.profiler{{{cns}}} .mod-control-group > div { + margin-right: 2px; +} + +/* Button */ +.profiler{{{cns}}} .mod-control-group .button { + height: 50px; + width: 160px; + border-radius: 10px; + background: #333; + box-shadow: -5px -5px 15px #444, 5px 5px 15px #222, inset 5px 5px 10px #444, inset -5px -5px 10px #222; + font-family: Helvetica,Arial,Sans-serif; + border: none; + font-size: 16px; + color: rgb(161, 161, 161); + transition: 500ms; +} + +.profiler{{{cns}}} .mod-control-group .button:before { + content: "CAPTURE"; + font-family: Helvetica,Arial,Sans-serif; + font-size: 16px; + font-weight: bold; + position: absolute; + top: 18px; + left: 44px; + color: rgb(161, 161, 161); +} + + +.profiler{{{cns}}} .mod-control-group .button.on { + margin: 4px; + margin-top: 5px; + height: 46px; + width: 158px; + border-radius: 12px; + box-shadow: -5px -5px 15px #292929, 5px 5px 15px #444, inset 5px 5px 10px #2b2b2b, inset -5px -5px 10px #292929; + color: #d6d6d6; + text-shadow: 0 1px 0 rgba(255, 5, 5, 0.8); + transition: 500ms; +} + +.profiler{{{cns}}} .mod-control-group .button.off { + margin: 2px; + margin-top: 5px; + height: 50px; + width: 160px; + box-shadow: -5px -5px 15px #444, 5px 5px 15px #222, inset 5px 5px 10px #444, inset -5px -5px 10px #222; + color: #d6d6d6; + transition: 500ms; +} + +/* Led */ +.profiler{{{cns}}} .mod-led { + background: #2b2b2b; + background-position: left 0px; + background-repeat: no-repeat; + position: absolute; + margin-top: 35px; + margin-left: 30px; + height: 10px; + width: 10px; + z-index: 3; + border-radius: 10px; + box-shadow: 2px 2px 3px rgba(255,255,255,0.1); +} + +/* VU-Meter */ +.profiler{{{cns}}} .meterbar{ + + background: #2b2b2b; + border-radius: 13px; + margin-top: 40px; + margin-left: 30px; + height: 142px; + width: 10px; + padding: 3px; + transform: rotate(180deg); + box-shadow: -2px -2px 3px rgba(255,255,255,0.1); +} + +.profiler{{{cns}}} .meter{ + margin-left: -1px; + width: 6px; + height: 0%; + background-size: 20px 142px; + background-image: + linear-gradient( + rgba(35, 145, 0, 0.8), + rgba(255, 255, 0, 0.8), + rgba(255, 255, 0, 0.8), + rgba(242, 121, 0, 0.8), + red + ); + box-shadow: 5px 5px 15px rgba(35, 145, 0, 0.8); + border-radius: 13px; +} + +/* PopUp Box */ +.profiler{{{cns}}} .popup { + display: none; + position: absolute; + top: 50%; + left: 50%; + width: 560px; + height: 60px; + transform: translate(-50%, -50%); + background-color: #333; + text-align: center; + font-family: Helvetica,Arial,Sans-serif; + font-weight: bold; + font-size: 26px; + line-height: 1; + color: rgba(0,0,0,0.4); + border: solid; + border-radius: 5px; + z-index: 40; +} + diff --git a/plugins/NeuralRecord/MOD/modgui/thumbnail-profiler.png b/plugins/NeuralRecord/MOD/modgui/thumbnail-profiler.png new file mode 100644 index 0000000000000000000000000000000000000000..2f71d659608a4c3ce86341f32b0aa2ef52c7b540 GIT binary patch literal 3637 zcmV-54$AR~P)O^7oBK zN<{#m^#9ls+T#Fl^ytySS6_YgSB7Ey6X)C$LO>}6 zr4)!Z+F|TTO*~s5A~43lIfqh82_gQoTCM(C2yw?W%{pVOX4`giZf-6{iV53MkC)43 zzP7fODHe-gxUTzt5CjlHNTn1fBBqJ2JAICX7DPnE7-N=Yu`mqptgf#9G7Q5%c%Jts zA;e0tSoG7Hu!VY)lap4ZQc>k{`M0j?ei8&hB&D>ZluS#0ngP%8Bhtc1M8Y&pGmhh% zD=RC%G)?o4QtF{)S*vHyp7p1urXOSl+gTnIs&^Y<;w`d&&Ia?aNQ1ONm8nbrV4Jv}Y5+3W;>$ta4LQi@9{ zJ0d<~EFpgSvmX!6`Ia$v2&R+*fShTXuW`Y`Z<(@u$+5l1-P%fAG^z^iHU3bDT z3^R^nNkm3BiGNtMpvxwflv0c__977-0gwmauCK2f0N552#5o@Xkl6eEqFu5M0|U~; zS4x2~))5WTP)ZFFQ31dpW6a6ra+?`Yuh$tiCI&M-kWTGB=R7&m4Cn`Dv_D&#`1-R8 z(B7j3U;u#27_*zr=4KPr0w*HA-Qf1rW1IBr!!V5Go__VBG!qzOh@vRD26QGgj4=+t zW{g=%DMKm6kk)`82p9lHL~J*mX%*e+zBCg|bEB(HC-q(BiOCJCrgn*7G(vsFs(56R9nS4*9!}0PK zn3Qt+IAAwOPf*&d2qB(0IDM~_5;~vsG!1C?$Dj6nH*M?&ngK!x5K-cqw$EYvz_x!* z7!XAfLtCb9H{hHn(y|lUJ&dOzj$;^xkuXmw1=BPWt%>6pmSsUHm5ia42usEl$MGif zx0`;`6oe1Eo?4qobp^cI_H$+s5_l*D*dmjvxpyK0c1w*;x<~#>dA|sZ{Xb!2?*9 zwJWViGa{`?-DE<&US|iI*Wb;+l~QmV2NM$$_~x5$aQpUcyzs&cuq+G5jva$#S%{(t z$B!S!wQJX~wzh_ag#`=^4M8b|d_IqCHjBrPA7gZM6ooZrfDV`W7{@Lr4oRR`RL`BU&iwCGU7Py zn#A^k5eII9o(AoIU%7GxufP5}mY0|D!w)~;#*G`8n3#a?`sOP2rurfFheU;ryCE2vhha2y9SGc%Z(nE_)AOG`_e`kbAeg<%-U zB)-@2_tI7F83Wo=8T(0q&!>)$Ak>#F`)e+`cVrs(&>=&wO(M$f=p}a ztS3mTcRw!1w4NbCM+O>=#-`tO1%z?)=FRBik3atB$;rvTuh;8>?>Bk=9Gk!x zV?hw8H{N(-=+jR>{p-cWMeccCBHShbT)1$7-hA`T?B&as!$P4DT9#$?qnC16VHgHm zUS6hZwJLJCoTn=-fR+YaxNw0kUAok`c=2LIN~z6H*Eq1(8qIz>x<~_d{rdIAwY9Yd z0JQ3YHZ*`SHgxgg#eZ8`TAG}hnQ^3)WLZ{Mdf!b2L_b3pm38tA`oEuj_SqZf&z~=T z{`u#>YBUQ~<>Q&OkS)G80lKjtMW`JIE*w124stqQk z#M^JbePnEG?8wyA)QQ>IS@yvPAHW2_hKGj-@7%fbxY=wDYSrizy8frvk>o)jj$=5E zvnfTrAKbflk5*Pz$hK`4fKe+8H$tC3EYbplQNKL==97>2R0 zMSjjXeBZ~y!U7u}9%l3N^FMk)IwGxBt5{lE!rIyzOw;VRG@Wz4W3}92f?f_ydoO!| zX2AUXJS@w?!omVFnG7nG3QWcrip3&EMn;sBlJ4HU+wqE(9xxFli!X;6nM?+zX(9-M zeF>Bn@=~dUqeqX@i4!Mq<;oRIPEKxkLC20ALmbD0BO@a$o6VAxvg7g%#uz-$JM>09dhD+#HB4EG*Q&_~MI8`F#E*+qO&HAevr&Gz_Ds3mUzK z5CY9+v!mppPCkD7?YGTGj~*@GzI}T=lgZF`-+jkS0L=IOdtZI^)h`N#!uub7_~E}8 zhT$ls2)ig(-^~LYc61^% z`F!4$Qqpt6bq`7@%4V~0UAN%-zTliE_52By^Z9&%G4_||&Yk<$AP9aQMUjf*n74aG ztW~?IgOXygh&Yb_Y+TN6qE%l+&1RDoi^cV&rKSG~!|=a7&$|?c;ljws$m7J!WV6|D zZEfxHg9i`(qZM{{C4bPXWxZY{&AJUDf@zvqTwJUQAs)G|8#2Zc+9nKeT~`4Jv)OF7 zXb%8rHk-+L9LJsHQ_yTSlL$MGWB9(0)|*_qGFBqmG~RB3h~PL5Y}?-QzM%GrmUX*q z(D(ghL!VC0rC$lK9okDnG+L?h#0(mS0o%5>xQToHOrQ5Eh0>~v+R|{(3$t9;-IACK z!w^CUaL!@dHliqk>$=IlT>YEQy#Rpgx?2dQgQOq`003baCb5U(IA}JT5JJE(40xW0 zX0r(?B}~(VWm)ijf77`h^Fg8`S97-;E-cGJv)N4YLz>`12*h!`Y1gH$pmSXpN~xqI zU2nKc_v!mSYPDLDyNcr&uInO>Gw$JHqu40X_M6s*L7iFK>|fPRonCWCxFpGfdd_cO-eI1a)vObDQfpv%_7Fx>KL z0BwG@dtcF$+SQt5nr4zlsMqVsci;Du%IEZ!)@HMrXi1Mi*k+lxeGVY~a67it%5pXu zjUDgR1kw+j&1Mt(tV`BS(}e4~kW#|)yu|hs5j@XJ_5*8zX~sE@lW2`?+u)qTaU2LC zVB7Yl4Sb&GCDJa0fa|)+{G)eeYG!+$*Ohr7UFzOCCn8crq?A(1^E?7T2?JUeAf>Fg z2Jlp4xSN5dm-2LqTAKv`iL|zxgZBH<*VE_ecJ+j+?@8|q)BU7>Pq&fY;?&LEHmQ>L zm@y^+NXD32UtcF6H3`4;(n|_}6$HVY5F%t7C5j!7fZ!LI`PDmICnOBs?`WrN+m{&4&*k-jY)OzBSSI=U$>dhh{)) zI~F6N06-N$z!>u_%ZhB_0Z-<6JH2HM8uR*D@1gI zh?W6ViKxaoZw?I&Nnqy2E0szYOw;_^D2kvq{4>_iiLajm?ej~E z39NOkCWQE30M|L^vqUs2gt#39LA6?~`T*1xH?&kLMM8+WZQH9$OH2P=C=~u^n&!uh zvCQ)qw>}x^37$6G%?C=UKQPAb0JtTkyu&%Kx~}^;lgUKYYW0b(CLbFcb2#S(+qOr; zFf3V?^;eGLya!;Mh>p_6>n!z4{+@Z2XbB?$XcEziQtBZQJp%AY0Czd(w}lXQh-k4? zD%C2LN(f+E6Qp6DJ$u$!U0uyPjx!>q98yY^48!;t5e);#V&m<97E$6!J*$k^kYvUb z5k-tKpNM?U`KnTCk#qh~2(jq8?vh~`>vMB+O>De17Xa}8IToNok+_p!00000NkvXX Hu0mjfo)` . +@prefix foaf: . +@prefix lv2: . +@prefix midi: . +@prefix mod: . +@prefix opts: . +@prefix pg: . +@prefix patch: . +@prefix rdf: . +@prefix rdfs: . +@prefix spdx: . +@prefix ui: . +@prefix unit: . + + + a lv2:UtilityPlugin, lv2:Plugin, doap:Project ; + + lv2:extensionData opts:interface , + ; + + lv2:optionalFeature , + ; + + lv2:requiredFeature opts:options , + ; + + opts:supportedOption , + , + ; + + ui:ui ; + + lv2:port [ + a lv2:InputPort, lv2:AudioPort ; + lv2:index 0 ; + lv2:symbol "lv2_audio_in_1" ; + lv2:name "Audio Input 1" ; + ] ; + + lv2:port [ + a lv2:OutputPort, lv2:AudioPort ; + lv2:index 1 ; + lv2:symbol "lv2_audio_out_1" ; + lv2:name "Audio Output 1" ; + ] ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 2 ; + lv2:name "Capture" ; + lv2:symbol "PROFILE" ; + lv2:shortName """Capture""" ; + lv2:default 0 ; + lv2:minimum 0 ; + lv2:maximum 1 ; + lv2:portProperty lv2:toggled ; + lv2:portProperty lv2:integer ; + ] , + [ + a lv2:OutputPort, lv2:ControlPort ; + lv2:index 3 ; + lv2:name "State" ; + lv2:symbol "STATE" ; + lv2:shortName """State""" ; + lv2:minimum 0 ; + lv2:maximum 1 ; + ] , + [ + a lv2:OutputPort, lv2:ControlPort ; + lv2:index 4 ; + lv2:name "Meter" ; + lv2:symbol "METER" ; + lv2:shortName """Meter""" ; + lv2:minimum -130 ; + lv2:maximum 4 ; + ] , + [ + a lv2:OutputPort, lv2:ControlPort ; + lv2:index 5 ; + lv2:name "Error" ; + lv2:symbol "ERRORS" ; + lv2:shortName """Error""" ; + lv2:minimum 0 ; + lv2:maximum 4 ; + ] ; + + rdfs:comment "A Neural Record plug to make the process of cloning external soft/hardware a bit more comfortable " ; + + mod:brand "brummer" ; + mod:label "Neural Record" ; + + doap:name "Neural Record" ; + doap:license ; + + doap:maintainer [ + foaf:name "brummer" ; + foaf:homepage ; + ] ; + + lv2:microVersion 3 ; + lv2:minorVersion 1 . diff --git a/plugins/NeuralRecord/MOD/presets.ttl b/plugins/NeuralRecord/MOD/presets.ttl new file mode 100644 index 0000000..82ea13e --- /dev/null +++ b/plugins/NeuralRecord/MOD/presets.ttl @@ -0,0 +1,9 @@ +@prefix lv2: . +@prefix pset: . + + + lv2:port [ + lv2:symbol "PROFILE" ; + pset:value 0 ; + ] . + diff --git a/plugins/NeuralRecord/Makefile b/plugins/NeuralRecord/Makefile index 4954a6d..73d5557 100644 --- a/plugins/NeuralRecord/Makefile +++ b/plugins/NeuralRecord/Makefile @@ -11,7 +11,7 @@ NAME = neuralrecord # -------------------------------------------------------------- # Plugin types to build - +ifeq ($(BUILD_MOD),false) BUILD_LV2 ?= true BUILD_VST2 ?= false BUILD_VST3 ?= true @@ -19,6 +19,8 @@ BUILD_CLAP ?= false BUILD_JACK ?= true BUILD_DSSI ?= false BUILD_LADSPA ?= false +endif + # -------------------------------------------------------------- # Files to build @@ -40,6 +42,7 @@ BUILD_CXX_FLAGS += -pthread `pkg-config --cflags sndfile` `pkg-config --libs sn # -------------------------------------------------------------- # Enable all selected plugin types +ifeq ($(BUILD_MOD),false) ifeq ($(BUILD_LV2),true) ifeq ($(HAVE_CAIRO),true) TARGETS += lv2_sep @@ -80,6 +83,11 @@ ifeq ($(BUILD_LADSPA),true) TARGETS += ladspa endif +else +BUILD_LV2 = true +TARGETS += lv2_dsp +endif + all: $(TARGETS) ifeq ($(BUILD_VST3),true) @cp -r resources $(TARGET_DIR)/$(NAME).vst3/Contents/x86_64-linux/ @@ -88,6 +96,12 @@ ifeq ($(BUILD_LV2),true) @cp -r resources $(TARGET_DIR)/$(NAME).lv2/ endif +mod: $(TARGETS) +ifeq ($(BUILD_LV2),true) + @cp -r resources $(TARGET_DIR)/$(NAME).lv2/ + @cp -r MOD/* $(TARGET_DIR)/$(NAME).lv2/ +endif + install: all ifeq ($(BUILD_DSSI),true) ifneq ($(MACOS_OR_WINDOWS),true) @@ -157,7 +171,8 @@ endif ifeq ($(BUILD_LV2),true) @mkdir -p -m755 $(USER_LV2_DIR)/$(NAME).lv2 && \ install -m755 $(TARGET_DIR)/$(NAME).lv2/*$(LIB_EXT) $(USER_LV2_DIR)/$(NAME).lv2 && \ - install -m644 $(TARGET_DIR)/$(NAME).lv2/*.ttl $(USER_LV2_DIR)/$(NAME).lv2 + install -m644 $(TARGET_DIR)/$(NAME).lv2/*.ttl $(USER_LV2_DIR)/$(NAME).lv2 && \ + cp -r $(TARGET_DIR)/$(NAME).lv2/resources $(DESTDIR)$(LV2_DIR)/$(NAME).lv2 endif ifeq ($(BUILD_JACK),true) ifeq ($(HAVE_JACK),true) @@ -166,6 +181,15 @@ ifeq ($(HAVE_JACK),true) endif endif +install-mod: mod + @mkdir -p -m755 $(DESTDIR)$(LV2_DIR)/$(NAME).lv2 && \ + install -m755 $(TARGET_DIR)/$(NAME).lv2/*$(LIB_EXT) $(DESTDIR)$(LV2_DIR)/$(NAME).lv2 && \ + install -m644 $(TARGET_DIR)/$(NAME).lv2/*.ttl $(DESTDIR)$(LV2_DIR)/$(NAME).lv2 && \ + cp -r $(TARGET_DIR)/$(NAME).lv2/modgui $(DESTDIR)$(LV2_DIR)/$(NAME).lv2 && \ + cp -r $(TARGET_DIR)/$(NAME).lv2/resources $(DESTDIR)$(LV2_DIR)/$(NAME).lv2 + + + # -------------------------------------------------------------- .PHONY: all install install-user