# Copyright (c) 2015-2019 Hanspeter Portner (dev@open-music-kontrollers.ch)
#
# 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.

@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ui: <http://lv2plug.in/ns/extensions/ui#> .
@prefix pset:	<http://lv2plug.in/ns/ext/presets#> .
@prefix kx: <http://kxstudio.sf.net/ns/lv2ext/external-ui#> .

@prefix canvas:   <http://open-music-kontrollers.ch/lv2/canvas#> .
@prefix moony: <http://open-music-kontrollers.ch/lv2/moony#> .

# to please sord_validate
kx:Widget
	a rdfs:Class, owl:Class ;
	rdfs:subClassOf ui:UI .
kx:Host
	a lv2:Feature .

# control in, control out
moony:c1xc1
	a lv2:Plugin ;
	lv2:minorVersion 30 ;
	lv2:microVersion 0 ;
	lv2:binary <moony.so> ;
	ui:ui moony:moony_ui ;
	##ui:ui moony:moony_zimple_ui ;
	#ui:ui moony:moony_zimple_kx ;
	rdfs:seeAlso <moony.ttl> .

moony:c2xc2
	a lv2:Plugin ;
	lv2:minorVersion 30 ;
	lv2:microVersion 0 ;
	lv2:binary <moony.so> ;
	ui:ui moony:moony_ui ;
	##ui:ui moony:moony_zimple_ui ;
	#ui:ui moony:moony_zimple_kx ;
	rdfs:seeAlso <moony.ttl> .

moony:c4xc4
	a lv2:Plugin ;
	lv2:minorVersion 30 ;
	lv2:microVersion 0 ;
	lv2:binary <moony.so> ;
	ui:ui moony:moony_ui ;
	##ui:ui moony:moony_zimple_ui ;
	#ui:ui moony:moony_zimple_kx ;
	rdfs:seeAlso <moony.ttl> .

# atom in, atom out
moony:a1xa1
	a lv2:Plugin ;
	lv2:minorVersion 30 ;
	lv2:microVersion 0 ;
	lv2:binary <moony.so> ;
	ui:ui moony:moony_ui ;
	##ui:ui moony:moony_zimple_ui ;
	#ui:ui moony:moony_zimple_kx ;
	rdfs:seeAlso <moony.ttl> .

moony:a2xa2
	a lv2:Plugin ;
	lv2:minorVersion 30 ;
	lv2:microVersion 0 ;
	lv2:binary <moony.so> ;
	ui:ui moony:moony_ui ;
	##ui:ui moony:moony_zimple_ui ;
	#ui:ui moony:moony_zimple_kx ;
	rdfs:seeAlso <moony.ttl> .

moony:a4xa4
	a lv2:Plugin ;
	lv2:minorVersion 30 ;
	lv2:microVersion 0 ;
	lv2:binary <moony.so> ;
	ui:ui moony:moony_ui ;
	##ui:ui moony:moony_zimple_ui ;
	#ui:ui moony:moony_zimple_kx ;
	rdfs:seeAlso <moony.ttl> .

# control/atom in, control/atom out
moony:c1a1xc1a1
	a lv2:Plugin ;
	lv2:minorVersion 30 ;
	lv2:microVersion 0 ;
	lv2:binary <moony.so> ;
	ui:ui moony:moony_ui ;
	##ui:ui moony:moony_zimple_ui ;
	#ui:ui moony:moony_zimple_kx ;
	rdfs:seeAlso <moony.ttl> .

moony:c2a1xc2a1
	a lv2:Plugin ;
	lv2:minorVersion 30 ;
	lv2:microVersion 0 ;
	lv2:binary <moony.so> ;
	ui:ui moony:moony_ui ;
	##ui:ui moony:moony_zimple_ui ;
	#ui:ui moony:moony_zimple_kx ;
	rdfs:seeAlso <moony.ttl> .

moony:c4a1xc4a1
	a lv2:Plugin ;
	lv2:minorVersion 30 ;
	lv2:microVersion 0 ;
	lv2:binary <moony.so> ;
	ui:ui moony:moony_ui ;
	##ui:ui moony:moony_zimple_ui ;
	#ui:ui moony:moony_zimple_kx ;
	rdfs:seeAlso <moony.ttl> .

# UI
moony:moony_ui
	a ui:X11UI ;
	ui:binary <moony_ui.so> ;
	rdfs:seeAlso <moony_ui.ttl> .
moony:moony_zimple_ui
	a ui:UI ;
	ui:binary <moony_ui.so> ;
	rdfs:seeAlso <moony_ui.ttl> .
moony:moony_zimple_kx
	a kx:Widget ;
	ui:binary <moony_ui.so> ;
	rdfs:seeAlso <moony_ui.ttl> .

# Banks
moony:bank-through
	a pset:Bank ;
	rdfs:label "Through bank" .
moony:bank-multiplex
	a pset:Bank ;
	rdfs:label "Multiplex bank" .
moony:bank-midi
	a pset:Bank ;
	rdfs:label "MIDI bank" .
moony:bank-osc
	a pset:Bank ;
	rdfs:label "OSC bank" .
moony:bank-time
	a pset:Bank ;
	rdfs:label "Time bank" .
moony:bank-state
	a pset:Bank ;
	rdfs:label "State bank" .
moony:bank-canvas
	a pset:Bank ;
	rdfs:label "Canvas bank" .
moony:bank-tutorial
	a pset:Bank ;
	rdfs:label "Tutorial bank" .
moony:bank-template
	a pset:Bank ;
	rdfs:label "Template bank" .

# Through bank
moony:bank-through_control-through
	a pset:Preset ;
	lv2:appliesTo moony:c1xc1 ,
		moony:c2xc2 ,
		moony:c4xc4 ;
	pset:bank moony:bank-through ;
	rdfs:label "Through" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-through_atom-through
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-through ;
	rdfs:label "Through" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-through_atom-through2
	a pset:Preset ;
	lv2:appliesTo moony:a2xa2 ;
	pset:bank moony:bank-through ;
	rdfs:label "Through" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-through_atom-through4
	a pset:Preset ;
	lv2:appliesTo moony:a4xa4 ;
	pset:bank moony:bank-through ;
	rdfs:label "Through" ;
	rdfs:seeAlso <presets.ttl> .

# Bank multiplex
moony:bank-multiplex_atom-multiplex2
	a pset:Preset ;
	lv2:appliesTo moony:a2xa2 ;
	pset:bank moony:bank-multiplex ;
	rdfs:label "Multiplex" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-multiplex_atom-multiplex4
	a pset:Preset ;
	lv2:appliesTo moony:a4xa4 ;
	pset:bank moony:bank-multiplex ;
	rdfs:label "Multiplex" ;
	rdfs:seeAlso <presets.ttl> .

# Bank MIDI
moony:bank-midi_midi-responder
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-midi ;
	rdfs:label "MIDI: Responder" ;
	rdfs:seeAlso <presets.ttl> .

# Bank time
moony:bank-time_midi-sequencer
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-time ;
	rdfs:label "Time: Sequencer" ;
	rdfs:seeAlso <presets.ttl> .
moony:bank-time_lindenmayer-system
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-time ;
	rdfs:label "Time: Lindenmayer" ;
	rdfs:seeAlso <presets.ttl> .

# Bank OSC
moony:bank-osc_osc-responder
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-osc ;
	rdfs:label "OSC: Responder" ;
	rdfs:seeAlso <presets.ttl> .

# Bank state
moony:bank-state_state-responder
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ,
		moony:c1xc1 ,
		moony:c2xc2 ,
		moony:c4xc4 ;
	pset:bank moony:bank-state ;
	rdfs:label "State: Responder" ;
	rdfs:seeAlso <presets.ttl> .

# Bank canvas
moony:bank-canvas_lv2-logo
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ,
		moony:c1xc1 ,
		moony:c2xc2 ,
		moony:c4xc4 ;
	pset:bank moony:bank-canvas ;
	rdfs:label "Canvas: LV2 Logo" ;
	rdfs:seeAlso <presets.ttl> .

# Bank tutorials
moony:bank-tutorial_part-1
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-tutorial ;
	rdfs:label "Tutorial 1: MIDI Channel Blocker" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-tutorial_part-2
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-tutorial ;
	rdfs:label "Tutorial 2: MIDI Chorder" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-tutorial_part-3
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-tutorial ;
	rdfs:label "Tutorial 3: MIDI Sample & Hold" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-tutorial_part-4
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-tutorial ;
	rdfs:label "Tutorial 4: MIDI Arpeggiator" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-tutorial_part-5
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-tutorial ;
	rdfs:label "Tutorial 5: MIDI Velocity Curve Interpolater" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-tutorial_part-6
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-tutorial ;
	rdfs:label "Tutorial 6: MIDI Sequencer" ;
	rdfs:seeAlso <presets.ttl> .

# Bank templates
moony:bank-template_part-1
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-template;
	rdfs:label "Template 1: MIDI Responder" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-template_part-2
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-template;
	rdfs:label "Template 2: Time Responder" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-template_part-3
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ;
	pset:bank moony:bank-template;
	rdfs:label "Template 3: OSC Responder" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-template_part-4
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ,
		moony:c1xc1 ,
		moony:c2xc2 ,
		moony:c4xc4 ;
	pset:bank moony:bank-template;
	rdfs:label "Template 4: State Responder" ;
	rdfs:seeAlso <presets.ttl> .

moony:bank-template_part-5
	a pset:Preset ;
	lv2:appliesTo moony:a1xa1 ,
		moony:a2xa2 ,
		moony:a4xa4 ,
		moony:c1a1xc1a1 ,
		moony:c2a1xc2a1 ,
		moony:c4a1xc4a1 ,
		moony:c1xc1 ,
		moony:c2xc2 ,
		moony:c4xc4 ;
	pset:bank moony:bank-template;
	rdfs:label "Template 5: Code Injector" ;
	rdfs:seeAlso <presets.ttl> .
