1# Copyright (c) 2015-2021 Hanspeter Portner (dev@open-music-kontrollers.ch)
2#
3# This is free software: you can redistribute it and/or modify
4# it under the terms of the Artistic License 2.0 as published by
5# The Perl Foundation.
6#
7# This source is distributed in the hope that it will be useful,
8# but WITHOUT ANY WARRANTY; without even the implied warranty of
9# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10# Artistic License 2.0 for more details.
11#
12# You should have received a copy of the Artistic License 2.0
13# along the source as a COPYING file. If not, obtain it from
14# http://www.perlfoundation.org/artistic_license_2_0.
15
16@prefix foaf:	<http://xmlns.com/foaf/0.1/> .
17@prefix doap:	<http://usefulinc.com/ns/doap#> .
18@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
19@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
20@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
21@prefix atom:	<http://lv2plug.in/ns/ext/atom#> .
22@prefix midi:	<http://lv2plug.in/ns/ext/midi#> .
23@prefix time: <http://lv2plug.in/ns/ext/time#> .
24@prefix urid: <http://lv2plug.in/ns/ext/urid#> .
25@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
26@prefix state: <http://lv2plug.in/ns/ext/state#> .
27@prefix log: <http://lv2plug.in/ns/ext/log#> .
28
29@prefix xpress: <http://open-music-kontrollers.ch/lv2/xpress#> .
30@prefix osc: <http://open-music-kontrollers.ch/lv2/osc#> .
31@prefix omk: <http://open-music-kontrollers.ch/ventosus#> .
32@prefix proj:	<http://open-music-kontrollers.ch/lv2/> .
33@prefix sherlock: <http://open-music-kontrollers.ch/lv2/sherlock#> .
34
35osc:Event
36	a rdfs:Class ;
37	rdfs:subClassOf atom:Object ;
38	rdfs:label "OSC Event (Bundle or Message)" .
39
40xpress:Message
41	a rdfs:Class ,
42		rdfs:Datatype ;
43	rdfs:subClassOf atom:Atom .
44
45# Maintainer
46omk:me
47	a foaf:Person ;
48	foaf:name "Hanspeter Portner" ;
49	foaf:mbox <mailto:dev@open-music-kontrollers.ch> ;
50	foaf:homepage <http://open-music-kontrollers.ch> .
51
52# Project
53proj:sherlock
54	a doap:Project ;
55	doap:maintainer omk:me ;
56	doap:name "Sherlock Bundle" .
57
58sherlock:overwrite
59	a lv2:Parameter ;
60	rdfs:label "Overwrite" ;
61	rdfs:comment "Overwrite buffer when maximum number of events reached" ;
62	rdfs:range atom:Bool .
63
64sherlock:block
65	a lv2:Parameter ;
66	rdfs:label "Block" ;
67	rdfs:comment "Block addition of newly received events" ;
68	rdfs:range atom:Bool .
69
70sherlock:follow
71	a lv2:Parameter ;
72	rdfs:label "Follow" ;
73	rdfs:comment "Automatically scroll to and show last added event" ;
74	rdfs:range atom:Bool .
75
76sherlock:pretty
77	a lv2:Parameter ;
78	rdfs:label "Pretty" ;
79	rdfs:comment "Toggle whether to pretty print or not" ;
80	rdfs:range atom:Bool .
81
82sherlock:trace
83	a lv2:Parameter ;
84	rdfs:label "Trace" ;
85	rdfs:comment "Toggle whether to show trace output on console" ;
86	rdfs:range atom:Bool .
87
88sherlock:filter
89	a lv2:Parameter ;
90	rdfs:label "Match" ;
91	rdfs:comment "Match events according to type or object type" ;
92	rdfs:range atom:URI .
93
94sherlock:negate
95	a lv2:Parameter ;
96	rdfs:label "Negate" ;
97	rdfs:comment "Toggle negation of filter" ;
98	rdfs:range atom:Bool .
99
100# Atom Inspector Plugin
101sherlock:atom_inspector
102	a lv2:Plugin,
103		lv2:AnalyserPlugin ;
104	doap:name "Sherlock Atom Inspector" ;
105	doap:license <https://spdx.org/licenses/Artistic-2.0> ;
106	lv2:project proj:sherlock ;
107	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, state:threadSafeRestore, log:log ;
108	lv2:requiredFeature urid:map, urid:unmap, state:loadDefaultState ;
109	lv2:extensionData state:interface ;
110
111	lv2:port [
112		# input event port
113	  a lv2:InputPort ,
114			atom:AtomPort ;
115		atom:bufferType atom:Sequence ;
116		atom:supports midi:MidiEvent ,
117			time:Position ,
118			patch:Message ,
119			osc:Event ,
120		 	xpress:Message	;
121		lv2:index 0 ;
122		lv2:symbol "control" ;
123		lv2:name "Control" ;
124		lv2:designation lv2:control ;
125	] , [
126		# output event port
127	  a lv2:OutputPort ,
128			atom:AtomPort ;
129		atom:bufferType atom:Sequence ;
130		atom:supports midi:MidiEvent ,
131			time:Position ,
132			patch:Message ,
133			osc:Event ,
134			xpress:Message ;
135		lv2:index 1 ;
136		lv2:symbol "through" ;
137		lv2:name "Through" ;
138	] , [
139		# output notify port
140	  a lv2:OutputPort ,
141			atom:AtomPort ;
142		atom:bufferType atom:Sequence ;
143		atom:supports atom:Sequence ,
144			patch:Message ;
145		lv2:index 2 ;
146		lv2:symbol "notify" ;
147		lv2:name "Notify" ;
148		lv2:designation lv2:control ;
149	] ;
150
151	patch:writable
152		sherlock:overwrite ,
153		sherlock:block ,
154		sherlock:follow ,
155		sherlock:pretty ,
156		sherlock:trace ,
157		sherlock:filter ,
158		sherlock:negate ;
159
160	state:state [
161		sherlock:overwrite true ;
162		sherlock:block false ;
163		sherlock:follow true ;
164		sherlock:pretty true ;
165		sherlock:trace false ;
166		sherlock:filter sherlock:matchAll ;
167		sherlock:negate false ;
168	] .
169
170# MIDI Inspector Plugin
171sherlock:midi_inspector
172	a lv2:Plugin,
173		lv2:AnalyserPlugin ;
174	doap:name "Sherlock MIDI Inspector" ;
175	doap:license <https://spdx.org/licenses/Artistic-2.0> ;
176	lv2:project proj:sherlock ;
177	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, state:threadSafeRestore, log:log ;
178	lv2:requiredFeature urid:map, urid:unmap, state:loadDefaultState ;
179	lv2:extensionData state:interface ;
180
181	lv2:port [
182		# input event port
183	  a lv2:InputPort ,
184			atom:AtomPort ;
185		atom:bufferType atom:Sequence ;
186		atom:supports midi:MidiEvent ,
187			time:Position ,
188			patch:Message ;
189		lv2:index 0 ;
190		lv2:symbol "control" ;
191		lv2:name "Control" ;
192		lv2:designation lv2:control ;
193	] , [
194		# output event port
195	  a lv2:OutputPort ,
196			atom:AtomPort ;
197		atom:bufferType atom:Sequence ;
198		atom:supports midi:MidiEvent ;
199		lv2:index 1 ;
200		lv2:symbol "through" ;
201		lv2:name "Through" ;
202	] , [
203		# output notify port
204	  a lv2:OutputPort ,
205			atom:AtomPort ;
206		atom:bufferType atom:Sequence ;
207		atom:supports atom:Sequence ,
208	 		patch:Message	;
209		lv2:index 2 ;
210		lv2:symbol "notify" ;
211		lv2:name "Notify" ;
212		lv2:designation lv2:control ;
213	] ;
214
215	patch:writable
216		sherlock:overwrite ,
217		sherlock:block ,
218		sherlock:follow ;
219
220	state:state [
221		sherlock:overwrite true ;
222		sherlock:block false ;
223		sherlock:follow true ;
224	] .
225
226# OSC Inspector Plugin
227sherlock:osc_inspector
228	a lv2:Plugin,
229		lv2:AnalyserPlugin ;
230	doap:name "Sherlock OSC Inspector" ;
231	doap:license <https://spdx.org/licenses/Artistic-2.0> ;
232	lv2:project proj:sherlock ;
233	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, state:threadSafeRestore, log:log ;
234	lv2:requiredFeature urid:map, urid:unmap, state:loadDefaultState ;
235	lv2:extensionData state:interface ;
236
237	lv2:port [
238		# input event port
239	  a lv2:InputPort ,
240			atom:AtomPort ;
241		atom:bufferType atom:Sequence ;
242		atom:supports osc:Event ,
243			time:Position ,
244			patch:Message ;
245		lv2:index 0 ;
246		lv2:symbol "control" ;
247		lv2:name "Control" ;
248		lv2:designation lv2:control ;
249	] , [
250		# output event port
251	  a lv2:OutputPort ,
252			atom:AtomPort ;
253		atom:bufferType atom:Sequence ;
254		atom:supports osc:Event ;
255		lv2:index 1 ;
256		lv2:symbol "through" ;
257		lv2:name "Through" ;
258	] , [
259		# output notify port
260	  a lv2:OutputPort ,
261			atom:AtomPort ;
262		atom:bufferType atom:Sequence ;
263		atom:supports atom:Sequence ,
264			patch:Message ;
265		lv2:index 2 ;
266		lv2:symbol "notify" ;
267		lv2:name "Notify" ;
268		lv2:designation lv2:control ;
269	] ;
270
271	patch:writable
272		sherlock:overwrite ,
273		sherlock:block ,
274		sherlock:follow ;
275
276	state:state [
277		sherlock:overwrite true ;
278		sherlock:block false ;
279		sherlock:follow true ;
280	] .
281