Changeset 2095

Show
Ignore:
Timestamp:
06/11/09 14:48:27 (15 months ago)
Author:
drobilla
Message:

Updated port groups extension (simplified merge of lars' and mine).

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/lv2/ext/port_groups/lv2_port_groups.ttl

    r2062 r2095  
    22# PROVISIONAL 
    33# Copyright (C) 2009 Dave Robillard <dave@drobilla.net> 
     4# Based on <http://ll-plugins.nongnu.org/lv2/ext/portgroups#> 
     5# by Lars Luthman 
    46# 
    57# Permission is hereby granted, free of charge, to any person obtaining a 
     
    2123# OTHER DEALINGS IN THE SOFTWARE. 
    2224 
    23 @prefix    <http://lv2plug.in/ns/dev/port-groups#> . 
     25@prefix pg:   <http://lv2plug.in/ns/dev/port-groups#> . 
    2426@prefix lv2:  <http://lv2plug.in/ns/lv2core#> . 
    2527@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
     
    3234<http://lv2plug.in/ns/dev/port-groups> a lv2:Specification ; 
    3335        doap:license <http://usefulinc.com/doap/licenses/mit> ; 
    34         doap:name    "LV2 Port Groups" ; 
    35         rdfs:comment "Defines groupings of LV2 ports into multi-channel streams" ; 
     36        doap:name       "LV2 Port Groups" ; 
     37        rdfs:comment "Defines meaningful groupings of LV2 ports" ; 
     38        doap:developer [ 
     39                a foaf:Person ; 
     40                foaf:name        "Lars Luthman" ; 
     41                foaf:mbox     <mailto:lars.luthman@gmail.com> 
     42        ] ; 
    3643        doap:maintainer [ 
    3744                a foaf:Person ; 
    38                 foaf:name    "Dave Robillard" ; 
     45                foaf:name        "Dave Robillard" ; 
    3946                foaf:homepage <http://drobilla.net/> ; 
    4047                rdfs:seeAlso  <http://drobilla.net/drobilla.rdf> 
     
    4451## Core Classes / Properties 
    4552 
    46 :Group a rdfs:Class ; 
    47     rdfs:label   "LV2 Port Group" ; 
    48     rdfs:comment """ 
     53pg:Group a rdfs:Class ; 
     54        rdfs:label   "LV2 Port Group" ; 
     55        rdfs:comment """ 
    4956A grouping of ports that can be logically considered a "stream", e.g. 
    5057two audio ports in a group forming a stereo stream.  Both inputs and 
     
    5562""" . 
    5663 
    57 :mainGroup a rdf:Property ; 
     64pg:requiredRole a rdf:Property ; 
     65        rdfs:domain  pg:Group ; 
     66        rdfs:range   lv2:Port ; 
     67        rdfs:label   "Has port with role" ; 
     68        rdfs:comment """ 
     69Indicates that a group always has a port with a particular role. 
     70""" . 
     71 
     72pg:optionalRole a rdf:Property ; 
     73        rdfs:domain  pg:Group ; 
     74        rdfs:range   lv2:Port ; 
     75        rdfs:label   "May have port with role" ; 
     76        rdfs:comment """ 
     77Indicates that a group may have a port with a particular role. 
     78""" . 
     79 
     80pg:sideChainOf a rdf:Property ; 
     81        rdfs:domain  pg:Group ; 
     82        rdfs:range   pg:Group ; 
     83        rdfs:label   "Side-chain of" ; 
     84        rdfs:comment """ 
     85Indicates that this port group should be considered a "side chain" of some 
     86other group.  The precise definition of "side chain" depends on the plugin, 
     87but in general this group should be considered a modifier to some other 
     88group, rather than an independent input itself. 
     89""" . 
     90 
     91pg:mainGroup a rdf:Property ; 
    5892        rdfs:domain  lv2:Plugin ; 
    59         rdfs:range   :Group ; 
    60     rdfs:label   "Main port group" ; 
    61     rdfs:comment """ 
     93        rdfs:range   pg:Group ; 
     94        rdfs:label   "Main port group" ; 
     95        rdfs:comment """ 
    6296Indicates that this port group should be considered the "main" inputs/outputs 
    6397of the plugin, e.g. a stereo effect has a "main" group with 2 inputs and 2 
    64 outputs.  A plugin MUST have at most one :mainGroup property. 
    65 """ . 
    66  
    67 :inGroup a rdf:Property ; 
     98outputs.  A plugin MUST NOT have more than one :mainGroup property.  High-level 
     99hosts that simply want to insert an plugin in a given stream should use 
     100this property to determine where the plugin 'fits'. 
     101""" . 
     102 
     103pg:inGroup a rdf:Property ; 
    68104        rdfs:domain  lv2:Port ; 
    69         rdfs:range   :Group ; 
    70     rdfs:label   "In port group" ; 
    71     rdfs:comment """ 
     105        rdfs:range   pg:Group ; 
     106        rdfs:label   "In port group" ; 
     107        rdfs:comment """ 
    72108Indicates that this port is a part of a group of ports on the plugin. 
    73109Ports that have a meaningful "role" that may be useful to hosts SHOULD 
     
    75111order.""" . 
    76112 
    77 :Role a rdfs:Class ; 
    78     rdfs:label   "Port role" ; 
    79     rdfs:comment """ 
     113pg:Role a rdfs:Class ; 
     114        rdfs:label   "Port role" ; 
     115        rdfs:comment """ 
    80116The role of a port with respect to its plugin or group. 
    81117 
     
    85121""" . 
    86122 
    87 :hasRole a rdf:Property ; 
     123pg:hasRole a rdf:Property ; 
    88124        rdfs:domain  lv2:Port ; 
    89         rdfs:range   :Role ; 
    90     rdfs:label   "Has role" ; 
    91     rdfs:comment """ 
     125        rdfs:range   pg:Role ; 
     126        rdfs:label   "Has role" ; 
     127        rdfs:comment """ 
    92128Indicates that this port has a particular role with respect to its enclosing 
    93129plugin or group (whichever is smaller).  A port may have several roles if it 
    94 makes sense to do so; some roles may forbid this or define more specific 
    95 restrictions. 
     130makes sense to do so (though some Role or Group definition may forbid this). 
    96131""" . 
    97132 
    98133 
    99134## Standard Roles 
    100 # 
    101 # These can be used to describe stereo, 3.0, 4.0, 5.1, 6.1, 7.1, and more. 
    102  
    103 :left a :Role ; 
    104         rdfs:label "Left" ; 
    105         rdfs:comment "A port with this role MUST NOT also have the role :right" . 
    106  
    107 :right a :Role ; 
    108         rdfs:label "Right" ; 
    109         rdfs:comment "A port with this role MUST NOT also have the role :left" . 
    110  
    111 :center a :Role ; 
    112         rdfs:label "Center" ; 
    113         rdfs:comment """ 
    114 The 'center' along the :left to :right axis. 
    115 Alone, it indicates the port is in the exact center of :left and :right. 
    116 It may also be combined with :left or :right to describe positions in-between, 
    117 describing 5 positions along the :left to :right axis: 
    118  
    119  left (L), center-left (CL), center (C), center-right (CR), right (R) 
    120 """ . 
    121  
    122 :front a :Role ; 
    123         rdfs:label "Front" ; 
    124         rdfs:comment "A port with this role MUST NOT also have the role :back" . 
    125  
    126 :back a :Role ; 
    127         rdfs:label "Back" ; 
    128         rdfs:comment "A port with this role MUST NOT also have the role :front" . 
    129  
    130 :side a :Role ; 
    131         rdfs:label "Side" ; 
    132         rdfs:comment """ 
    133 The 'center' along the :front to :back axis. 
    134 This may be combined with :front to :back in the same way :center may be 
    135 combined with :left and :right, though no common audio setups require this. 
    136 """ . 
    137  
    138 :sub a :Role ; 
    139         rdfs:label "Sub" ; 
    140         rdfs:comment """ 
    141 A subwoofer, or "low frequency effects" (LFE) channel. 
    142 This role may be associated with a position using other roles, 
    143 but is usually used alone to designate a non-positional sub channel. 
    144 """ . 
     135 
     136pg:leftChannel          a pg:Role ; rdfs:label "Left" . 
     137pg:rightChannel         a pg:Role ; rdfs:label "Right" . 
     138pg:centerChannel        a pg:Role ; rdfs:label "Center" . 
     139pg:sideChannel          a pg:Role ; rdfs:label "Side" . 
     140pg:surroundChannel      a pg:Role ; rdfs:label "Surround" . 
     141pg:leftSurroundChannel  a pg:Role ; rdfs:label "Left Surround" . 
     142pg:rightSurroundChannel a pg:Role ; rdfs:label "Right Surround" . 
     143pg:leftRearChannel      a pg:Role ; rdfs:label "Left Rear" . 
     144pg:rightRearChannel     a pg:Role ; rdfs:label "Right Rear" . 
     145pg:subChannel           a pg:Role ; rdfs:label "Sub (LFE)" . 
     146pg:amplitude            a pg:Role ; rdfs:label "Amplitude" . 
     147pg:attack               a pg:Role ; rdfs:label "Attach" . 
     148pg:cutoffFrequency      a pg:Role ; rdfs:label "Cutoff Frequency" . 
     149pg:decay                a pg:Role ; rdfs:label "Decay" . 
     150pg:delay                a pg:Role ; rdfs:label "Delay" . 
     151pg:frequency            a pg:Role ; rdfs:label "Frequency" . 
     152pg:hold                 a pg:Role ; rdfs:label "Hold" . 
     153pg:pulseWidth           a pg:Role ; rdfs:label "Pulse Width" . 
     154pg:ratio                a pg:Role ; rdfs:label "Ratio" . 
     155pg:release              a pg:Role ; rdfs:label "Release" . 
     156pg:resonance            a pg:Role ; rdfs:label "Resonance" . 
     157pg:sustain              a pg:Role ; rdfs:label "Sustain" . 
     158pg:threshold            a pg:Role ; rdfs:label "Threshold" . 
     159pg:waveform             a pg:Role ; rdfs:label "Waveform" . 
    145160 
    146161 
    147162## Standard Groups  
    148 # 
    149 # Plugins may either use these groups directly, or define their own groups 
    150 # which MAY be rdfs:subClassOf these groups.  If a group is a subclass of 
    151 # another group G, it must have at least the ports required by G, and any 
    152 # other ports in the group MUST be lv2:connectionOptional. 
    153  
    154 :Mono a :Group ; 
     163 
     164pg:MonoGroup a pg:Group ; 
    155165        rdfs:label "Mono" ; 
    156         rdfs:comment """A group with: 
    157  * 1 :center 
    158 """ . 
    159  
    160 :Stereo a :Group ; 
     166        pg:hasPort pg:centerChannel . 
     167 
     168pg:StereoGroup a pg:Group ; 
    161169        rdfs:label "Stereo" ; 
    162         rdfs:comment """A group with: 
    163  * 1 :left 
    164  * 1 :right 
    165 """ . 
    166  
    167 :FourPointZero a :Group ; 
    168         rdfs:label "4.0 Surround" ; 
    169         rdfs:comment """4.0 Surround (Quadraphonic), a group with: 
    170  * 1 :front :left 
    171  * 1 :front :right 
    172  * 1 :rear  :left 
    173  * 1 :rear  :right 
    174 """ . 
    175  
    176 :FivePointOne a :Group ; 
    177         rdfs:label "5.1 Surround" ; 
    178         rdfs:comment """5.1 Surround (3-2 stereo), a group with: 
    179  * 1 :front :left 
    180  * 1 :front :right 
    181  * 1 :front :center (:front may be omitted) 
    182  * 1 :rear  :left 
    183  * 1 :rear  :right 
    184  * 1 :sub 
    185 """ . 
    186  
    187 :SixPointOne a :Group ; 
     170        pg:hasPort pg:leftChannel ; 
     171        pg:hasPort pg:rightChannel . 
     172 
     173pg:MidSideGroup a pg:Group ; 
     174        rdfs:label "Mid-Side Stereo" ; 
     175        pg:hasPort pg:centerChannel ; 
     176        pg:hasPort pg:sideChannel . 
     177 
     178pg:ThreePointZeroGroup a pg:Group ; 
     179        rdfs:label "3.0 Surround" ; 
     180        pg:hasPort pg:leftChannel ; 
     181        pg:hasPort pg:rightChannel ; 
     182        pg:hasPort pg:surroundChannel . 
     183 
     184pg:FourPointZeroGroup a pg:Group ; 
     185        rdfs:label "4.0 Surround (Quadraphonic)" ; 
     186        pg:hasPort pg:leftChannel ; 
     187        pg:hasPort pg:rightChannel ; 
     188        pg:hasPort pg:centerChannel ; 
     189        pg:hasPort pg:surroundChannel . 
     190 
     191pg:FivePointZeroGroup a pg:Group ; 
     192        rdfs:label "5.0 Surround (3-2 stereo)" ; 
     193        pg:hasPort pg:leftChannel ; 
     194        pg:hasPort pg:rightChannel ; 
     195        pg:hasPort pg:centerChannel ; 
     196        pg:hasPort pg:leftSurroundChannel ; 
     197        pg:hasPort pg:rightSurroundChannel . 
     198 
     199pg:FivePointOneGroup a pg:Group ; 
     200        rdfs:label "5.1 Surround (3-2 stereo)" ; 
     201        pg:hasPort pg:leftChannel ; 
     202        pg:hasPort pg:rightChannel ; 
     203        pg:hasPort pg:centerChannel ; 
     204        pg:hasPort pg:leftSurroundChannel ; 
     205        pg:hasPort pg:rightSurroundChannel ; 
     206        pg:hasPort pg:lfeChannel . 
     207 
     208pg:SixPointOneGroup a pg:Group ; 
    188209        rdfs:label "6.1 Surround" ; 
    189         rdfs:comment """6.1 Surround, a group with: 
    190  * 1 :front :left 
    191  * 1 :front :right 
    192  * 1 :front :center 
    193  * 1 :side  :left 
    194  * 1 :side  :right 
    195  * 1 :rear  :center 
    196  * 1 :sub 
    197 """ . 
    198  
    199 :SevenPointOne a :Group ; 
     210        pg:hasPort pg:leftChannel ; 
     211        pg:hasPort pg:rightChannel ; 
     212        pg:hasPort pg:centerChannel ; 
     213        pg:hasPort pg:leftSurroundChannel ; 
     214        pg:hasPort pg:rightSurroundChannel ; 
     215        pg:hasPort pg:centerRearChannel ; 
     216        pg:hasPort pg:lfeChannel . 
     217 
     218pg:SevenPointOneGroup a pg:Group ; 
    200219        rdfs:label "7.1 Surround" ; 
    201         rdfs:comment """7.1 Surround, a group with: 
    202  * 1 :front :left 
    203  * 1 :front :right 
    204  * 1 :front :center 
    205  * 1 :side  :left 
    206  * 1 :side  :right 
    207  * 1 :rear  :left 
    208  * 1 :rear  :right 
    209  * 1 :sub 
    210 """ . 
    211  
    212 :SevenPointOneWide a :Group ; 
    213         rdfs:label "7.1 Surround (Wide)" ; 
    214         rdfs:comment """7.1 Surround (Wide), a group with: 
    215  * 1 :front :left 
    216  * 1 :front :left :center 
    217  * 1 :front :center 
    218  * 1 :front :right :center 
    219  * 1 :front :right 
    220  * 1 :rear  :left 
    221  * 1 :rear  :right 
    222  * 1 :sub 
    223 """ . 
    224  
    225  
     220        pg:hasPort pg:leftChannel ; 
     221        pg:hasPort pg:rightChannel ; 
     222        pg:hasPort pg:centerChannel ; 
     223        pg:hasPort pg:leftSurroundChannel ; 
     224        pg:hasPort pg:rightSurroundChannel ; 
     225        pg:hasPort pg:leftRearChannel ; 
     226        pg:hasPort pg:rightRearChannel ; 
     227        pg:hasPort pg:lfeChannel . 
     228 
     229pg:AmbisonicBH1V0Group a pg:Group ; 
     230        rdfs:label "Ambisonic B stream of horizontal order 1 and vertical order 0." ; 
     231        pg:hasPort pg:wChannel ; 
     232        pg:hasPort pg:xChannel ; 
     233        pg:hasPort pg:yChannel . 
     234 
     235pg:AmbisonicBH1V1Group a pg:Group ; 
     236        rdfs:label "Ambisonic B stream of horizontal order 1 and vertical order 1." ; 
     237        pg:hasPort pg:wChannel ; 
     238        pg:hasPort pg:xChannel ; 
     239        pg:hasPort pg:yChannel ; 
     240        pg:hasPort pg:zChannel . 
     241 
     242pg:AmbisonicBH2V0Group a pg:Group ; 
     243        rdfs:label "Ambisonic B stream of horizontal order 2 and vertical order 0." ; 
     244        pg:hasPort pg:wChannel ; 
     245        pg:hasPort pg:xChannel ; 
     246        pg:hasPort pg:yChannel ; 
     247        pg:hasPort pg:uChannel ; 
     248        pg:hasPort pg:vChannel . 
     249 
     250pg:AmbisonicBH2V1Group a pg:Group ; 
     251        rdfs:label "Ambisonic B stream of horizontal order 2 and vertical order 1." ; 
     252        pg:hasPort pg:wChannel ; 
     253        pg:hasPort pg:xChannel ; 
     254        pg:hasPort pg:yChannel ; 
     255        pg:hasPort pg:zChannel ; 
     256        pg:hasPort pg:uChannel ; 
     257        pg:hasPort pg:vChannel . 
     258 
     259pg:AmbisonicBH2V2Group a pg:Group ; 
     260        rdfs:label "Ambisonic B stream of horizontal order 2 and vertical order 2." ; 
     261        pg:hasPort pg:wChannel ; 
     262        pg:hasPort pg:xChannel ; 
     263        pg:hasPort pg:yChannel ; 
     264        pg:hasPort pg:zChannel ; 
     265        pg:hasPort pg:rChannel ; 
     266        pg:hasPort pg:sChannel ; 
     267        pg:hasPort pg:tChannel ; 
     268        pg:hasPort pg:uChannel ; 
     269        pg:hasPort pg:vChannel . 
     270 
     271pg:AmbisonicBH3V0Group a pg:Group ; 
     272        rdfs:label "Ambisonic B stream of horizontal order 3 and vertical order 0." ; 
     273        pg:hasPort pg:wChannel ; 
     274        pg:hasPort pg:xChannel ; 
     275        pg:hasPort pg:yChannel ; 
     276        pg:hasPort pg:uChannel ; 
     277        pg:hasPort pg:vChannel ; 
     278        pg:hasPort pg:pChannel ; 
     279        pg:hasPort pg:qChannel . 
     280 
     281pg:AmbisonicBH3V1Group a pg:Group ; 
     282        rdfs:label "Ambisonic B stream of horizontal order 3 and vertical order 1." ; 
     283        pg:hasPort pg:wChannel ; 
     284        pg:hasPort pg:xChannel ; 
     285        pg:hasPort pg:yChannel ; 
     286        pg:hasPort pg:zChannel ; 
     287        pg:hasPort pg:uChannel ; 
     288        pg:hasPort pg:vChannel ; 
     289        pg:hasPort pg:pChannel ; 
     290        pg:hasPort pg:qChannel . 
     291 
     292pg:AmbisonicBH3V2Group a pg:Group ; 
     293        rdfs:label "Ambisonic B stream of horizontal order 3 and vertical order 2." ; 
     294        pg:hasPort pg:wChannel ; 
     295        pg:hasPort pg:xChannel ; 
     296        pg:hasPort pg:yChannel ; 
     297        pg:hasPort pg:zChannel ; 
     298        pg:hasPort pg:rChannel ; 
     299        pg:hasPort pg:sChannel ; 
     300        pg:hasPort pg:tChannel ; 
     301        pg:hasPort pg:uChannel ; 
     302        pg:hasPort pg:vChannel ; 
     303        pg:hasPort pg:pChannel ; 
     304        pg:hasPort pg:qChannel . 
     305 
     306pg:AmbisonicBH3V3Group a pg:Group ; 
     307        rdfs:label "Ambisonic B stream of horizontal order 3 and vertical order 3." ; 
     308        pg:hasPort pg:wChannel ; 
     309        pg:hasPort pg:xChannel ; 
     310        pg:hasPort pg:yChannel ; 
     311        pg:hasPort pg:zChannel ; 
     312        pg:hasPort pg:rChannel ; 
     313        pg:hasPort pg:sChannel ; 
     314        pg:hasPort pg:tChannel ; 
     315        pg:hasPort pg:uChannel ; 
     316        pg:hasPort pg:vChannel ; 
     317        pg:hasPort pg:kChannel ; 
     318        pg:hasPort pg:lChannel ; 
     319        pg:hasPort pg:mChannel ; 
     320        pg:hasPort pg:nChannel ; 
     321        pg:hasPort pg:oChannel ; 
     322        pg:hasPort pg:pChannel ; 
     323        pg:hasPort pg:qChannel . 
     324 
     325pg:EnvelopeControlGroup a pg:Group ; 
     326        rdfs:label "The controls for an envelope." ; 
     327        pg:mayHavePort pg:delay ; 
     328        pg:mayHavePort pg:attack ; 
     329        pg:mayHavePort pg:hold ; 
     330        pg:mayHavePort pg:decay ; 
     331        pg:mayHavePort pg:sustain ; 
     332        pg:mayHavePort pg:release . 
     333 
     334pg:OscillatorControlGroup a pg:Group ; 
     335        rdfs:label "The controls for an oscillator." ; 
     336        pg:mayHavePort pg:frequency ; 
     337        pg:mayHavePort pg:amplitude ; 
     338        pg:mayHavePort pg:waveform ; 
     339        pg:mayHavePort pg:pulseWidth . 
     340 
     341pg:FilterControlGroup 
     342        rdfs:label "The controls for a filter." ; 
     343        pg:mayHavePort pg:cutoffFrequency ; 
     344        pg:mayHavePort pg:resonance . 
     345 
     346pg:CompressorControlGroup 
     347        rdfs:label "The controls for a compressor." ; 
     348        pg:mayHavePort pg:threshold ; 
     349        pg:mayHavePort pg:ratio . 
     350