moony.ttl 27.4 KB
Newer Older
1
# Copyright (c) 2015-2016 Hanspeter Portner (dev@open-music-kontrollers.ch)
Hanspeter Portner's avatar
Hanspeter Portner committed
2 3 4 5 6 7 8 9 10 11 12 13 14
#
# This is free software: you can redistribute it and/or modify
# it under the terms of the Artistic License 2.0 as published by
# The Perl Foundation.
#
# This source is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Artistic License 2.0 for more details.
#
# You should have received a copy of the Artistic License 2.0
# along the source as a COPYING file. If not, obtain it from
# http://www.perlfoundation.org/artistic_license_2_0.
Hanspeter Portner's avatar
Hanspeter Portner committed
15

Hanspeter Portner's avatar
Hanspeter Portner committed
16 17 18
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix doap: <http://usefulinc.com/ns/doap#> .
@prefix lv2:  <http://lv2plug.in/ns/lv2core#> .
19
@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
20
@prefix work: <http://lv2plug.in/ns/ext/worker#> .
21
@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
22
@prefix time: <http://lv2plug.in/ns/ext/time#> .
Hanspeter Portner's avatar
Hanspeter Portner committed
23
@prefix state: <http://lv2plug.in/ns/ext/state#> .
24
@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
Hanspeter Portner's avatar
Hanspeter Portner committed
25
@prefix rdfs:	<http://www.w3.org/2000/01/rdf-schema#> .
26
@prefix rsz:  <http://lv2plug.in/ns/ext/resize-port#> .
27
@prefix bufsz: <http://lv2plug.in/ns/ext/buf-size#> .
28
@prefix urid: <http://lv2plug.in/ns/ext/urid#> .
29 30 31
@prefix opts: <http://lv2plug.in/ns/ext/options#> .
@prefix param: <http://lv2plug.in/ns/ext/parameters#> .
@prefix ui: <http://lv2plug.in/ns/extensions/ui#> .
32
@prefix kx:		<http://kxstudio.sf.net/ns/lv2ext/external-ui#> .
Hanspeter Portner's avatar
Hanspeter Portner committed
33

34
@prefix xpress: <http://open-music-kontrollers.ch/lv2/xpress#> .
35
@prefix osc:  <http://open-music-kontrollers.ch/lv2/osc#> .
Hanspeter Portner's avatar
Hanspeter Portner committed
36 37 38
@prefix lic:	<http://opensource.org/licenses/> .
@prefix omk:	<http://open-music-kontrollers.ch/ventosus#> .
@prefix proj:	<http://open-music-kontrollers.ch/lv2/> .
Hanspeter Portner's avatar
Hanspeter Portner committed
39
@prefix moony:	<http://open-music-kontrollers.ch/lv2/moony#> .
Hanspeter Portner's avatar
Hanspeter Portner committed
40

41 42 43
xpress:voiceMap
	a lv2:Feature .

44 45 46
osc:schedule
	a lv2:Feature .

47 48 49 50 51
osc:Event
	a rdfs:Class ;
	rdfs:subClassOf atom:Object ;
	rdfs:label "OSC Event (Bundle or Message)" .

Hanspeter Portner's avatar
Hanspeter Portner committed
52
# Maintainer
Hanspeter Portner's avatar
Hanspeter Portner committed
53
omk:me
Hanspeter Portner's avatar
Hanspeter Portner committed
54 55
	a foaf:Person ;
	foaf:name "Hanspeter Portner" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
56
	foaf:mbox <mailto:dev@open-music-kontrollers.ch> ;
Hanspeter Portner's avatar
Hanspeter Portner committed
57 58 59
	foaf:homepage <http://open-music-kontrollers.ch> .

# Project
Hanspeter Portner's avatar
Hanspeter Portner committed
60
proj:moony
Hanspeter Portner's avatar
Hanspeter Portner committed
61
	a doap:Project ;
Hanspeter Portner's avatar
Hanspeter Portner committed
62
	doap:maintainer omk:me ;
63
	doap:developer omk:me ;
Hanspeter Portner's avatar
Hanspeter Portner committed
64
	doap:name "Moony Bundle" .
Hanspeter Portner's avatar
Hanspeter Portner committed
65

66 67 68 69 70 71 72
# Parameters
moony:error
	a lv2:Parameter ;
	rdfs:label "Error" ;
	rdfs:comment "shows current error message" ;
	rdfs:range atom:String .

73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
moony:editorHidden
	a lv2:Parameter ;
	rdfs:label "Editor hidden" ;
	rdfs:comment "hidden state of editor tab" ;
	rdfs:range atom:Bool .

moony:logHidden
	a lv2:Parameter ;
	rdfs:label "Log hidden" ;
	rdfs:comment "hidden state of log tab" ;
	rdfs:range atom:Bool .

moony:logFollow
	a lv2:Parameter ;
	rdfs:label "Log follow" ;
	rdfs:comment "follow state of log tab" ;
	rdfs:range atom:Bool .

91 92 93 94 95 96
moony:logReset
	a lv2:Parameter ;
	rdfs:label "Log reset" ;
	rdfs:comment "reset log upon code send" ;
	rdfs:range atom:Bool .

97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
moony:paramHidden
	a lv2:Parameter ;
	rdfs:label "Parameter hidden" ;
	rdfs:comment "hidden state of parameter tab" ;
	rdfs:range atom:Bool .

moony:paramCols
	a lv2:Parameter ;
	rdfs:label "Parameter columns" ;
	rdfs:comment "number of columns in parameter tab" ;
	rdfs:range atom:Int ;
	lv2:minimum 1 ;
	lv2:maximum 16 .

moony:paramRows
	a lv2:Parameter ;
	rdfs:label "Parameter rows" ;
	rdfs:comment "number of rows in parameter tab" ;
	rdfs:range atom:Int ;
	lv2:minimum 1 ;
	lv2:maximum 16 .

moony:code
	a lv2:Parameter ;
	rdfs:label "Code" ;
	rdfs:comment "shows script code" ;
	rdfs:range atom:String .

125
# C1XC1 Plugin
Hanspeter Portner's avatar
Hanspeter Portner committed
126
moony:c1xc1
127 128
	a lv2:Plugin ,
		lv2:ConverterPlugin ;
Hanspeter Portner's avatar
Hanspeter Portner committed
129
	doap:name "Moony C1 x C1" ;
130
	doap:license lic:Artistic-2.0 ;
131
	rdfs:comment "Realtime Lua as programmable glue in LV2";
Hanspeter Portner's avatar
Hanspeter Portner committed
132
	lv2:project proj:moony ;
133
	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, bufsz:boundedBlockLength, osc:schedule, state:loadDefaultState, xpress:voiceMap, state:threadSafeRestore, opts:options ;
134
	lv2:extensionData work:interface, state:interface ;
135
	lv2:requiredFeature work:schedule, urid:map, urid:unmap ;
136
	opts:supportedOption bufsz:minBlockLength, bufsz:maxBlockLength, bufsz:nominalBlockLength, bufsz:sequenceSize, ui:updateRate, param:sampleRate ;
137 138

	lv2:port [
139 140 141 142 143 144 145
	# input control ports
	  a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 0 ;
		lv2:symbol "input_1" ;
		lv2:name "Input 1" ;
		lv2:default 0.0;
146 147
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
148 149 150 151 152 153 154 155
	] , [
	# output control ports
	  a lv2:OutputPort ,
			lv2:ControlPort ;
		lv2:index 1 ;
		lv2:symbol "output_1" ;
		lv2:name "Output 1" ;
	] , [
156 157 158 159
	# input control port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
160
		atom:supports atom:Object ;
161
		atom:supports patch:Message ;
162
		lv2:index 2 ;
163 164
		lv2:symbol "control" ;
		lv2:name "Control" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
165
		rsz:minimumSize 131072 ;
166
		lv2:designation lv2:control ;
167 168 169 170 171
	] , [
	# output notify port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
172
		atom:supports atom:Object ;
173
		atom:supports patch:Message ;
174
		lv2:index 3 ;
175 176
		lv2:symbol "notify" ;
		lv2:name "Notify" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
177
		rsz:minimumSize 131072 ;
178
		lv2:designation lv2:control ;
179
	] ;
180 181 182

	patch:readable
		moony:error ;
183 184 185

	patch:writable
		moony:code ;
186 187
	
	state:state [
188
		moony:editorHidden false ;
189
		moony:logHidden true ;
190
		moony:logFollow true ;
191
		moony:logReset false ;
192 193
		moony:paramHidden true ;
		moony:paramCols 3 ;
194
		moony:paramRows 4 ;
195
		moony:code """function run(n, control, notify, c1)
196 197
	return c1
end"""
198 199 200
	] .

# C2XC2 Plugin
Hanspeter Portner's avatar
Hanspeter Portner committed
201
moony:c2xc2
Hanspeter Portner's avatar
Hanspeter Portner committed
202 203
	a lv2:Plugin ,
		lv2:ConverterPlugin ;
Hanspeter Portner's avatar
Hanspeter Portner committed
204
	doap:name "Moony C2 x C2" ;
205
	doap:license lic:Artistic-2.0 ;
206
	rdfs:comment "Realtime Lua as programmable glue in LV2";
Hanspeter Portner's avatar
Hanspeter Portner committed
207
	lv2:project proj:moony ;
208
	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, bufsz:boundedBlockLength, osc:schedule, state:loadDefaultState, xpress:voiceMap, state:threadSafeRestore, opts:options ;
209
	lv2:extensionData work:interface, state:interface ;
210
	lv2:requiredFeature work:schedule, urid:map, urid:unmap ;
211
	opts:supportedOption bufsz:minBlockLength, bufsz:maxBlockLength, bufsz:nominalBlockLength, bufsz:sequenceSize, ui:updateRate, param:sampleRate ;
212 213 214 215 216

	lv2:port [
	# input control ports
	  a lv2:InputPort ,
			lv2:ControlPort ;
217
		lv2:index 0 ;
218 219 220
		lv2:symbol "input_1" ;
		lv2:name "Input 1" ;
		lv2:default 0.0;
221 222
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
223 224 225
	] , [
	  a lv2:InputPort ,
			lv2:ControlPort ;
226
		lv2:index 1 ;
227 228 229
		lv2:symbol "input_2" ;
		lv2:name "Input 2" ;
		lv2:default 0.0;
230 231
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
232 233 234 235
	] , [
	# output control ports
	  a lv2:OutputPort ,
			lv2:ControlPort ;
236
		lv2:index 2 ;
237 238 239 240 241
		lv2:symbol "output_1" ;
		lv2:name "Output 1" ;
	] , [
	  a lv2:OutputPort ,
			lv2:ControlPort ;
242
		lv2:index 3 ;
243 244
		lv2:symbol "output_2" ;
		lv2:name "Output 2" ;
245
	] , [
246
	# input control port
Hanspeter Portner's avatar
Hanspeter Portner committed
247
	  a lv2:InputPort ,
248 249
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
250
		atom:supports atom:Object ;
251
		atom:supports patch:Message ;
252
		lv2:index 4 ;
253 254
		lv2:symbol "control" ;
		lv2:name "Control" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
255
		rsz:minimumSize 131072 ;
256
		lv2:designation lv2:control ;
Hanspeter Portner's avatar
Hanspeter Portner committed
257
	] , [
258 259 260 261
	# output notify port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
262
		atom:supports atom:Object ;
263
		atom:supports patch:Message ;
264
		lv2:index 5 ;
265 266
		lv2:symbol "notify" ;
		lv2:name "Notify" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
267
		rsz:minimumSize 131072 ;
268
		lv2:designation lv2:control ;
269
	] ;
270 271 272

	patch:readable
		moony:error ;
273 274 275

	patch:writable
		moony:code ;
276 277
	
	state:state [
278
		moony:editorHidden false ;
279
		moony:logHidden true ;
280
		moony:logFollow true ;
281
		moony:logReset false ;
282 283
		moony:paramHidden true ;
		moony:paramCols 3 ;
284
		moony:paramRows 4 ;
285
		moony:code """function run(n, control, notify, c1, c2)
286 287
	return c1, c2
end"""
288 289 290 291 292 293 294 295
	] .

# C4XC4 Plugin
moony:c4xc4
	a lv2:Plugin ,
		lv2:ConverterPlugin ;
	doap:name "Moony C4 x C4" ;
	doap:license lic:Artistic-2.0 ;
296
	rdfs:comment "Realtime Lua as programmable glue in LV2";
297
	lv2:project proj:moony ;
298
	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, bufsz:boundedBlockLength, osc:schedule, state:loadDefaultState, xpress:voiceMap, state:threadSafeRestore, opts:options ;
299
	lv2:extensionData work:interface, state:interface ;
300
	lv2:requiredFeature work:schedule, urid:map, urid:unmap ;
301
	opts:supportedOption bufsz:minBlockLength, bufsz:maxBlockLength, bufsz:nominalBlockLength, bufsz:sequenceSize, ui:updateRate, param:sampleRate ;
302 303

	lv2:port [
304
	# input control ports
Hanspeter Portner's avatar
Hanspeter Portner committed
305 306
	  a lv2:InputPort ,
			lv2:ControlPort ;
307
		lv2:index 0 ;
308 309
		lv2:symbol "input_1" ;
		lv2:name "Input 1" ;
310 311 312
		lv2:default 0.0 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
313
	] , [
Hanspeter Portner's avatar
Hanspeter Portner committed
314 315
	  a lv2:InputPort ,
			lv2:ControlPort ;
316
		lv2:index 1 ;
317 318
		lv2:symbol "input_2" ;
		lv2:name "Input 2" ;
319 320 321
		lv2:default 0.0 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
322
	] , [
Hanspeter Portner's avatar
Hanspeter Portner committed
323 324
	  a lv2:InputPort ,
			lv2:ControlPort ;
325
		lv2:index 2 ;
326 327
		lv2:symbol "input_3" ;
		lv2:name "Input 3" ;
328 329 330
		lv2:default 0.0 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
331
	] , [
Hanspeter Portner's avatar
Hanspeter Portner committed
332 333
	  a lv2:InputPort ,
			lv2:ControlPort ;
334
		lv2:index 3 ;
335 336
		lv2:symbol "input_4" ;
		lv2:name "Input 4" ;
337 338 339
		lv2:default 0.0 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
340
	] , [
Hanspeter Portner's avatar
Hanspeter Portner committed
341 342 343
	# output control ports
	  a lv2:OutputPort ,
			lv2:ControlPort ;
344
		lv2:index 4 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
345 346
		lv2:symbol "output_1" ;
		lv2:name "Output 1" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
347
	] , [
Hanspeter Portner's avatar
Hanspeter Portner committed
348 349
	  a lv2:OutputPort ,
			lv2:ControlPort ;
350
		lv2:index 5 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
351 352
		lv2:symbol "output_2" ;
		lv2:name "Output 2" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
353
	] , [
Hanspeter Portner's avatar
Hanspeter Portner committed
354 355
	  a lv2:OutputPort ,
			lv2:ControlPort ;
356
		lv2:index 6 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
357 358
		lv2:symbol "output_3" ;
		lv2:name "Output 3" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
359
	] , [
Hanspeter Portner's avatar
Hanspeter Portner committed
360 361
	  a lv2:OutputPort ,
			lv2:ControlPort ;
362
		lv2:index 7 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
363 364
		lv2:symbol "output_4" ;
		lv2:name "Output 4" ;
365
	] , [
366
	# input control port
367 368 369
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
370
		atom:supports atom:Object ;
371
		atom:supports patch:Message ;
372
		lv2:index 8 ;
373 374
		lv2:symbol "control" ;
		lv2:name "Control" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
375
		rsz:minimumSize 131072 ;
376
		lv2:designation lv2:control ;
Hanspeter Portner's avatar
Hanspeter Portner committed
377
	] , [
378
	# output notify port
379 380 381
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
382
		atom:supports atom:Object ;
383
		atom:supports patch:Message ;
384
		lv2:index 9 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
385 386
		lv2:symbol "notify" ;
		lv2:name "Notify" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
387
		rsz:minimumSize 131072 ;
388
		lv2:designation lv2:control ;
389
	] ;
390 391 392

	patch:readable
		moony:error ;
393 394 395

	patch:writable
		moony:code ;
396 397
	
	state:state [
398
		moony:editorHidden false ;
399
		moony:logHidden true ;
400
		moony:logFollow true ;
401
		moony:logReset false ;
402 403
		moony:paramHidden true ;
		moony:paramCols 3 ;
404
		moony:paramRows 4 ;
405
		moony:code """function run(n, control, notify, c1, c2, c3, c4)
406 407
	return c1, c2, c3, c4
end"""
408 409 410 411 412 413 414 415
	] .

# A1XA1 Plugin
moony:a1xa1
	a lv2:Plugin ,
		lv2:ConverterPlugin ;
	doap:name "Moony A1 x A1" ;
	doap:license lic:Artistic-2.0 ;
416
	rdfs:comment "Realtime Lua as programmable glue in LV2";
417
	lv2:project proj:moony ;
418
	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, bufsz:boundedBlockLength, osc:schedule, state:loadDefaultState, xpress:voiceMap, state:threadSafeRestore, opts:options ;
419
	lv2:extensionData work:interface, state:interface ;
420
	lv2:requiredFeature work:schedule, urid:map, urid:unmap ;
421
	opts:supportedOption bufsz:minBlockLength, bufsz:maxBlockLength, bufsz:nominalBlockLength, bufsz:sequenceSize, ui:updateRate, param:sampleRate ;
422 423

	lv2:port [
424
	# input event port
425 426 427
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
428
		atom:supports midi:MidiEvent ;
429
		atom:supports osc:Event ;
430 431
		atom:supports time:Position ;
		lv2:index 0 ;
432 433 434 435 436 437 438 439
		lv2:symbol "event_in_1" ;
		lv2:name "Event In 1" ;
	] , [
	# output event port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
440
		atom:supports osc:Event ;
441 442
		atom:supports time:Position ;
		lv2:index 1 ;
443 444
		lv2:symbol "event_out_1" ;
		lv2:name "Event Out 1" ;
445
	] , [
446 447 448 449
	# input control port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
450
		atom:supports atom:Object ;
451
		atom:supports patch:Message ;
452
		lv2:index 2 ;
453 454
		lv2:symbol "control" ;
		lv2:name "Control" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
455
		rsz:minimumSize 131072 ;
456
		lv2:designation lv2:control ;
Hanspeter Portner's avatar
Hanspeter Portner committed
457
	] , [
458
	# output notify port
459 460 461
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
462
		atom:supports atom:Object ;
463
		atom:supports patch:Message ;
464
		lv2:index 3 ;
465 466
		lv2:symbol "notify" ;
		lv2:name "Notify" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
467
		rsz:minimumSize 131072 ;
468
		lv2:designation lv2:control ;
469 470
	] ;

471 472 473
	patch:readable
		moony:error ;

474 475 476
	patch:writable
		moony:code ;

477
	state:state [
478
		moony:editorHidden false ;
479
		moony:logHidden true ;
480
		moony:logFollow true ;
481
		moony:logReset false ;
482 483
		moony:paramHidden true ;
		moony:paramCols 3 ;
484
		moony:paramRows 4 ;
485
		moony:code """function run(n, control, notify, seq, forge)
486 487 488 489
	for frames, atom in seq:foreach() do
		forge:time(frames):atom(atom)
	end
end"""
490 491 492 493 494 495 496 497
	] .

# A2XA2 Plugin
moony:a2xa2
	a lv2:Plugin ,
		lv2:ConverterPlugin ;
	doap:name "Moony A2 x A2" ;
	doap:license lic:Artistic-2.0 ;
498
	rdfs:comment "Realtime Lua as programmable glue in LV2";
499
	lv2:project proj:moony ;
500
	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, bufsz:boundedBlockLength, osc:schedule, state:loadDefaultState, xpress:voiceMap, state:threadSafeRestore, opts:options ;
501
	lv2:extensionData work:interface, state:interface ;
502
	lv2:requiredFeature work:schedule, urid:map, urid:unmap ;
503
	opts:supportedOption bufsz:minBlockLength, bufsz:maxBlockLength, bufsz:nominalBlockLength, bufsz:sequenceSize, ui:updateRate, param:sampleRate ;
504 505

	lv2:port [
506 507 508 509 510
	# input event port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
511
		atom:supports osc:Event ;
512 513
		atom:supports time:Position ;
		lv2:index 0 ;
514 515 516 517 518 519
		lv2:symbol "event_in_1" ;
		lv2:name "Event In 1" ;
	] , [
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
520
		atom:supports midi:MidiEvent ;
521
		atom:supports osc:Event ;
522 523
		atom:supports time:Position ;
		lv2:index 1 ;
524 525 526 527 528 529 530 531
		lv2:symbol "event_in_2" ;
		lv2:name "Event In 2" ;
	] , [
	# output event port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
532
		atom:supports osc:Event ;
533 534
		atom:supports time:Position ;
		lv2:index 2 ;
535 536 537 538 539 540 541
		lv2:symbol "event_out_1" ;
		lv2:name "Event Out 1" ;
	] , [
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
542
		atom:supports osc:Event ;
543 544
		atom:supports time:Position ;
		lv2:index 3 ;
545 546
		lv2:symbol "event_out_2" ;
		lv2:name "Event Out 2" ;
547
	] , [
548 549 550 551
	# input control port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
552
		atom:supports atom:Object ;
553
		atom:supports patch:Message ;
554
		lv2:index 4 ;
555 556
		lv2:symbol "control" ;
		lv2:name "Control" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
557
		rsz:minimumSize 131072 ;
558
		lv2:designation lv2:control ;
559 560 561 562 563
	] , [
	# output notify port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
564
		atom:supports atom:Object ;
565
		atom:supports patch:Message ;
566
		lv2:index 5 ;
567 568
		lv2:symbol "notify" ;
		lv2:name "Notify" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
569
		rsz:minimumSize 131072 ;
570
		lv2:designation lv2:control ;
571 572
	] ;

573 574 575
	patch:readable
		moony:error ;

576 577 578
	patch:writable
		moony:code ;

579
	state:state [
580
		moony:editorHidden false ;
581
		moony:logHidden true ;
582
		moony:logFollow true ;
583
		moony:logReset false ;
584 585
		moony:paramHidden true ;
		moony:paramCols 3 ;
586
		moony:paramRows 4 ;
587
		moony:code """function run(n, control, notify, seq1, forge1, seq2, forge2)
588 589 590 591 592 593 594 595
	for frames, atom in seq1:foreach() do
		forge1:time(frames):atom(atom)
	end

	for frames, atom in seq2:foreach() do
		forge2:time(frames):atom(atom)
	end
end"""
596 597 598 599 600 601 602 603
	] .

# A4XA4 Plugin
moony:a4xa4
	a lv2:Plugin ,
		lv2:ConverterPlugin ;
	doap:name "Moony A4 x A4" ;
	doap:license lic:Artistic-2.0 ;
604
	rdfs:comment "Realtime Lua as programmable glue in LV2";
605
	lv2:project proj:moony ;
606
	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, bufsz:boundedBlockLength, osc:schedule, state:loadDefaultState, xpress:voiceMap, state:threadSafeRestore, opts:options ;
607
	lv2:extensionData work:interface, state:interface ;
608
	lv2:requiredFeature work:schedule, urid:map, urid:unmap ;
609
	opts:supportedOption bufsz:minBlockLength, bufsz:maxBlockLength, bufsz:nominalBlockLength, bufsz:sequenceSize, ui:updateRate, param:sampleRate ;
610 611

	lv2:port [
612 613 614 615 616
	# input event port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
617
		atom:supports osc:Event ;
618 619
		atom:supports time:Position ;
		lv2:index 0 ;
620 621 622 623 624 625 626
		lv2:symbol "event_in_1" ;
		lv2:name "Event In 1" ;
	] , [
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
627
		atom:supports osc:Event ;
628 629
		atom:supports time:Position ;
		lv2:index 1 ;
630 631 632 633 634 635 636
		lv2:symbol "event_in_2" ;
		lv2:name "Event In 2" ;
	] , [
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
637
		atom:supports osc:Event ;
638 639
		atom:supports time:Position ;
		lv2:index 2 ;
640 641 642 643 644 645 646
		lv2:symbol "event_in_3" ;
		lv2:name "Event In 3" ;
	] , [
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
647
		atom:supports osc:Event ;
648 649
		atom:supports time:Position ;
		lv2:index 3 ;
650 651 652 653 654 655 656 657
		lv2:symbol "event_in_4" ;
		lv2:name "Event In 4" ;
	] , [
	# output event port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
658
		atom:supports osc:Event ;
659 660
		atom:supports time:Position ;
		lv2:index 4 ;
661 662 663 664 665 666 667
		lv2:symbol "event_out_1" ;
		lv2:name "Event Out 1" ;
	] , [
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
668
		atom:supports osc:Event ;
669 670
		atom:supports time:Position ;
		lv2:index 5 ;
671 672 673 674 675 676 677
		lv2:symbol "event_out_2" ;
		lv2:name "Event Out 2" ;
	] , [
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
678
		atom:supports osc:Event ;
679 680
		atom:supports time:Position ;
		lv2:index 6 ;
681 682 683 684 685 686 687
		lv2:symbol "event_out_3" ;
		lv2:name "Event Out 3" ;
	] , [
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
688
		atom:supports osc:Event ;
689 690
		atom:supports time:Position ;
		lv2:index 7 ;
691 692
		lv2:symbol "event_out_4" ;
		lv2:name "Event Out 4" ;
693
	] , [
694 695 696 697
	# input control port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
698
		atom:supports atom:Object ;
699
		atom:supports patch:Message ;
700
		lv2:index 8 ;
701 702
		lv2:symbol "control" ;
		lv2:name "Control" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
703
		rsz:minimumSize 131072 ;
704
		lv2:designation lv2:control ;
705 706 707 708 709
	] , [
	# output notify port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
710
		atom:supports atom:Object ;
711
		atom:supports patch:Message ;
712
		lv2:index 9 ;
713 714
		lv2:symbol "notify" ;
		lv2:name "Notify" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
715
		rsz:minimumSize 131072 ;
716
		lv2:designation lv2:control ;
717 718
	] ;

719 720 721
	patch:readable
		moony:error ;

722 723 724
	patch:writable
		moony:code ;

725
	state:state [
726
		moony:editorHidden false ;
727
		moony:logHidden true ;
728
		moony:logFollow true ;
729
		moony:logReset false ;
730 731
		moony:paramHidden true ;
		moony:paramCols 3 ;
732
		moony:paramRows 4 ;
733
		moony:code """function run(n, control, notify, seq1, forge1, seq2, forge2, seq3, forge3, seq4, forge4)
734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749
	for frames, atom in seq1:foreach() do
		forge1:time(frames):atom(atom)
	end

	for frames, atom in seq2:foreach() do
		forge2:time(frames):atom(atom)
	end

	for frames, atom in seq3:foreach() do
		forge3:time(frames):atom(atom)
	end

	for frames, atom in seq4:foreach() do
		forge4:time(frames):atom(atom)
	end
end"""
750 751
	] .

752 753
# C1A1XC1A1 Plugin
moony:c1a1xc1a1
754 755
	a lv2:Plugin ,
		lv2:ConverterPlugin ;
756
	doap:name "Moony C1+A1 x C1+A1" ;
757
	doap:license lic:Artistic-2.0 ;
758
	rdfs:comment "Realtime Lua as programmable glue in LV2";
759
	lv2:project proj:moony ;
760
	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, bufsz:boundedBlockLength, osc:schedule, state:loadDefaultState, xpress:voiceMap, state:threadSafeRestore, opts:options ;
761
	lv2:extensionData work:interface, state:interface ;
762
	lv2:requiredFeature work:schedule, urid:map, urid:unmap ;
763
	opts:supportedOption bufsz:minBlockLength, bufsz:maxBlockLength, bufsz:nominalBlockLength, bufsz:sequenceSize, ui:updateRate, param:sampleRate ;
764 765

	lv2:port [
766 767 768 769 770
	# input event port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
771
		atom:supports osc:Event ;
772 773
		atom:supports time:Position ;
		lv2:index 0 ;
774 775 776
		lv2:symbol "event_in_1" ;
		lv2:name "Event In 1" ;
	] , [
777
	# output event port
778 779 780 781
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
782
		atom:supports osc:Event ;
783 784
		atom:supports time:Position ;
		lv2:index 1 ;
785 786
		lv2:symbol "event_out_1" ;
		lv2:name "Event Out 1" ;
787
	] , [
788 789
	# input port
	  a lv2:InputPort ,
790
			lv2:ControlPort ;
791
		lv2:index 2 ;
792 793
		lv2:symbol "input_1" ;
		lv2:name "Input 1" ;
794 795 796
		lv2:default 0.0;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
797 798 799 800
	] , [
	# output port
	  a lv2:OutputPort ,
			lv2:ControlPort ;
801
		lv2:index 3 ;
802 803
		lv2:symbol "output_1" ;
		lv2:name "Output 1" ;
804
	] , [
805 806 807 808
	# input control port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
809
		atom:supports atom:Object ;
810
		atom:supports patch:Message ;
811
		lv2:index 4 ;
812 813
		lv2:symbol "control" ;
		lv2:name "Control" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
814
		rsz:minimumSize 131072 ;
815
		lv2:designation lv2:control ;
816 817 818 819 820
	] , [
	# output notify port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
821
		atom:supports atom:Object ;
822
		atom:supports patch:Message ;
823
		lv2:index 5 ;
824 825
		lv2:symbol "notify" ;
		lv2:name "Notify" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
826
		rsz:minimumSize 131072 ;
827
		lv2:designation lv2:control ;
828 829
	] ;

830 831 832
	patch:readable
		moony:error ;

833 834 835
	patch:writable
		moony:code ;

836
	state:state [
837
		moony:editorHidden false ;
838
		moony:logHidden true ;
839
		moony:logFollow true ;
840
		moony:logReset false ;
841 842
		moony:paramHidden true ;
		moony:paramCols 3 ;
843
		moony:paramRows 4 ;
844
		moony:code """function run(n, control, notify, seq, forge, c1)
845 846 847 848 849 850
	for frames, atom in seq:foreach() do
		forge:time(frames):atom(atom)
	end

	return c1
end"""
851 852
	] .

853 854
# C2A1XC2A1 Plugin
moony:c2a1xc2a1
855 856
	a lv2:Plugin ,
		lv2:ConverterPlugin ;
857
	doap:name "Moony C2+A1 x C2+A1" ;
858
	doap:license lic:Artistic-2.0 ;
859
	rdfs:comment "Realtime Lua as programmable glue in LV2";
860
	lv2:project proj:moony ;
861
	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, bufsz:boundedBlockLength, osc:schedule, state:loadDefaultState, xpress:voiceMap, state:threadSafeRestore, opts:options ;
862
	lv2:extensionData work:interface, state:interface ;
863
	lv2:requiredFeature work:schedule, urid:map, urid:unmap ;
864
	opts:supportedOption bufsz:minBlockLength, bufsz:maxBlockLength, bufsz:nominalBlockLength, bufsz:sequenceSize, ui:updateRate, param:sampleRate ;
865 866

	lv2:port [
867 868 869 870 871
	# input event port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
872
		atom:supports osc:Event ;
873 874
		atom:supports time:Position ;
		lv2:index 0 ;
875 876
		lv2:symbol "event_in_1" ;
		lv2:name "Event In 1" ;
877 878 879 880 881 882
	] , [
	# output event port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
883
		atom:supports osc:Event ;
884
		atom:supports time:Position ;
885
		lv2:index 1 ;
886 887 888 889 890 891
		lv2:symbol "event_out_1" ;
		lv2:name "Event Out 1" ;
	] , [
	# input port
	  a lv2:InputPort ,
			lv2:ControlPort ;
892
		lv2:index 2 ;
893 894
		lv2:symbol "input_1" ;
		lv2:name "Input 1" ;
895 896 897
		lv2:default 0.0;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
898 899 900
	] , [
	  a lv2:InputPort ,
			lv2:ControlPort ;
901
		lv2:index 3 ;
902 903
		lv2:symbol "input_2" ;
		lv2:name "Input 2" ;
904 905 906
		lv2:default 0.0;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
907
	] , [
908 909
	# output port
	  a lv2:OutputPort ,
910
			lv2:ControlPort ;
911 912 913
		lv2:index 4 ;
		lv2:symbol "output_1" ;
		lv2:name "Output 1" ;
914
	] , [
915
	  a lv2:OutputPort ,
916
			lv2:ControlPort ;
917 918 919
		lv2:index 5 ;
		lv2:symbol "output_2" ;
		lv2:name "Output 2" ;
920
	] , [
Hanspeter Portner's avatar
Hanspeter Portner committed
921 922 923 924
	# input control port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
925
		atom:supports atom:Object ;
926
		atom:supports patch:Message ;
927
		lv2:index 6 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
928 929
		lv2:symbol "control" ;
		lv2:name "Control" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
930
		rsz:minimumSize 131072 ;
931
		lv2:designation lv2:control ;
Hanspeter Portner's avatar
Hanspeter Portner committed
932 933 934 935 936
	] , [
	# output notify port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
937
		atom:supports atom:Object ;
938
		atom:supports patch:Message ;
939
		lv2:index 7 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
940 941
		lv2:symbol "notify" ;
		lv2:name "Notify" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
942
		rsz:minimumSize 131072 ;
943
		lv2:designation lv2:control ;
944 945
	] ;

946 947 948
	patch:readable
		moony:error ;

949 950 951
	patch:writable
		moony:code ;

952
	state:state [
953
		moony:editorHidden false ;
954
		moony:logHidden true ;
955
		moony:logFollow true ;
956
		moony:logReset false ;
957 958
		moony:paramHidden true ;
		moony:paramCols 3 ;
959
		moony:paramRows 4 ;
960
		moony:code """function run(n, control, notify, seq, forge, c1, c2)
961 962 963 964 965 966
	for frames, atom in seq:foreach() do
		forge:time(frames):atom(atom)
	end

	return c1, c2
end"""
967 968 969 970 971 972 973 974
	] .

# C4A1XC4A1 Plugin
moony:c4a1xc4a1
	a lv2:Plugin ,
		lv2:ConverterPlugin ;
	doap:name "Moony C4+A1 x C4+A1" ;
	doap:license lic:Artistic-2.0 ;
975
	rdfs:comment "Realtime Lua as programmable glue in LV2";
976
	lv2:project proj:moony ;
977
	lv2:optionalFeature lv2:isLive, lv2:hardRTCapable, bufsz:boundedBlockLength, osc:schedule, state:loadDefaultState, xpress:voiceMap, state:threadSafeRestore, opts:options ;
978
	lv2:extensionData work:interface, state:interface ;
979
	lv2:requiredFeature work:schedule, urid:map, urid:unmap ;
980
	opts:supportedOption bufsz:minBlockLength, bufsz:maxBlockLength, bufsz:nominalBlockLength, bufsz:sequenceSize, ui:updateRate, param:sampleRate ;
981 982

	lv2:port [
Hanspeter Portner's avatar
Hanspeter Portner committed
983 984 985 986 987
	# input event port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
988
		atom:supports osc:Event ;
989 990
		atom:supports time:Position ;
		lv2:index 0 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
991 992 993 994 995 996 997 998
		lv2:symbol "event_in_1" ;
		lv2:name "Event In 1" ;
	] , [
	# output event port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports midi:MidiEvent ;
999
		atom:supports osc:Event ;
1000 1001
		atom:supports time:Position ;
		lv2:index 1 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1002 1003 1004 1005 1006 1007
		lv2:symbol "event_out_1" ;
		lv2:name "Event Out 1" ;
	] , [
	# input port
	  a lv2:InputPort ,
			lv2:ControlPort ;
1008
		lv2:index 2 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1009 1010
		lv2:symbol "input_1" ;
		lv2:name "Input 1" ;
1011 1012 1013
		lv2:default 0.0 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1014 1015 1016
	] , [
	  a lv2:InputPort ,
			lv2:ControlPort ;
1017
		lv2:index 3 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1018 1019
		lv2:symbol "input_2" ;
		lv2:name "Input 2" ;
1020 1021 1022
		lv2:default 0.0 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1023 1024 1025
	] , [
	  a lv2:InputPort ,
			lv2:ControlPort ;
1026
		lv2:index 4 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1027 1028
		lv2:symbol "input_3" ;
		lv2:name "Input 3" ;
1029 1030 1031
		lv2:default 0.0 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1032 1033 1034
	] , [
	  a lv2:InputPort ,
			lv2:ControlPort ;
1035
		lv2:index 5 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1036 1037
		lv2:symbol "input_4" ;
		lv2:name "Input 4" ;
1038 1039 1040
		lv2:default 0.0 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1041 1042 1043 1044
	] , [
	# output port
	  a lv2:OutputPort ,
			lv2:ControlPort ;
1045
		lv2:index 6 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1046 1047 1048 1049 1050
		lv2:symbol "output_1" ;
		lv2:name "Output 1" ;
	] , [
	  a lv2:OutputPort ,
			lv2:ControlPort ;
1051
		lv2:index 7 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1052 1053 1054 1055 1056
		lv2:symbol "output_2" ;
		lv2:name "Output 2" ;
	] , [
	  a lv2:OutputPort ,
			lv2:ControlPort ;
1057
		lv2:index 8 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1058 1059 1060 1061 1062
		lv2:symbol "output_3" ;
		lv2:name "Output 3" ;
	] , [
	  a lv2:OutputPort ,
			lv2:ControlPort ;
1063
		lv2:index 9 ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1064 1065
		lv2:symbol "output_4" ;
		lv2:name "Output 4" ;
1066 1067 1068 1069 1070 1071
	] , [
	# input control port
	  a lv2:InputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports atom:Object ;
1072
		atom:supports patch:Message ;
1073 1074 1075
		lv2:index 10 ;
		lv2:symbol "control" ;
		lv2:name "Control" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1076
		rsz:minimumSize 131072 ;
1077
		lv2:designation lv2:control ;
1078 1079 1080 1081 1082 1083
	] , [
	# output notify port
	  a lv2:OutputPort ,
			atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports atom:Object ;
1084
		atom:supports patch:Message ;
1085 1086 1087
		lv2:index 11 ;
		lv2:symbol "notify" ;
		lv2:name "Notify" ;
Hanspeter Portner's avatar
Hanspeter Portner committed
1088
		rsz:minimumSize 131072 ;
1089
		lv2:designation lv2:control ;
1090 1091
	] ;

1092 1093 1094
	patch:readable
		moony:error ;

1095 1096 1097
	patch:writable
		moony:code ;

1098
	state:state [
1099
		moony:editorHidden false ;
1100
		moony:logHidden true ;