# drumgen/profile.ttl
#
# GENERATED by bin/write-profile.js. Do not edit: the digests are of the
# files on disk, and editing them by hand is how a profile comes to describe
# artefacts that no longer exist. Edit profile.json and run ./build.sh.

@base <https://strandz.it/jigdaw/plugins/drumgen/> .

@prefix jig:   <http://purl.org/stuff/jigdaw/> .
@prefix trn:   <http://purl.org/stuff/transmissions/> .
@prefix pu:    <http://purl.org/stuff/plugin-universe/> .
@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
@prefix midi:  <http://lv2plug.in/ns/ext/midi#> .
@prefix units: <http://lv2plug.in/ns/extensions/units#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix doap:  <http://usefulinc.com/ns/doap#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .

<>
    a jig:WebPlugin , trn:PluginProfile ;
    rdfs:label "DrumGen" ;
    rdfs:comment "Transport synced MIDI drum generator. Genre, style mode and resolution shape a seeded pattern that plays in time with the session, with fills on the last bar of the loop and Conductor CC control." ;
    trn:vendor "danja" ;
    doap:revision "1.0.0" ;
    doap:developer <http://danny.ayers.name> ;
    foaf:homepage <> ;
    trn:role trn:MidiGenerator ;
    trn:accepts trn:ControlMidi ;
    trn:produces trn:Midi , trn:DrumMidi ;
    trn:genre "Breakbeat" , "Amen" , "Jungle" , "Hip Hop" , "Jazz" , "Rock" , "Dub" , "Fugue" ;
    trn:caution "Silent until the host transport is rolling and reports a tempo and a beat position. A generator with no idea what time it is would be guessing, and this one says so by producing nothing." ;
    trn:caution "Pure MIDI, no audio: route its MIDI output to a drum instrument. New, Mutate and Fill are triggers that fire on the rising edge, so each press is one action." ;
    trn:caution "A held note with no note off is a stuck note, so stopping the transport sounds the ringing notes now rather than leaving them held." ;
    trn:format trn:Jig , trn:WebAudio ;
    pu:licenceId "Apache-2.0" ;
    trn:requires jig:MidiEvents ;
    trn:requires jig:MidiOut ;
    trn:requires trn:HostTransport ;

    jig:stateless true ;
    jig:audioInputs 0 ;
    jig:audioOutputs 0 ;
    jig:renderQuantum 128 ;
    jig:latencyFrames 0 ;

    jig:module <#module> ;
    jig:processor <#processor> ;

    lv2:port <#genre> , <#style_mode> , <#channel> , <#kit_map> , <#bars> , <#resolution> , <#density> , <#variation> , <#fill_amount> , <#seed> , <#kick_amt> , <#backbeat_amt> , <#hat_amt> , <#aux_amt> , <#new> , <#mutate> , <#fill> , <#tom_amt> , <#metal_amt> , <#vary> , <#conductor_ch> .

<#module>
    a jig:Module ;
    jig:location <drumgen.wasm> ;
    jig:mediaType "application/wasm" ;
    jig:abi jig:Abi2 ;
    jig:integrity "sha384-a4VFoCgnKnUDh2uptgQ/ps3V5yiyiLgec1R3Wk1OX/0KpWrSt5lZ5PbFSsvJEHqz" .

<#processor>
    a jig:Processor ;
    jig:location <drumgen-processor.js> ;
    jig:mediaType "text/javascript" ;
    jig:registeredName "drumgen" ;
    jig:integrity "sha384-pJc9mcfCvemwpvMnHdiQGrJBzkCnMZvvjJfayycs9KNsfrBZmabrjlpsWcjZkxR1" .

<#genre>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "genre" ; lv2:name "Genre" ;
    lv2:default 0 ; lv2:minimum 0 ; lv2:maximum 13 ;
    jig:paramIndex 0 ;
    lv2:portProperty lv2:enumeration ;
    lv2:scalePoint
        <#genre-0> ,
        <#genre-1> ,
        <#genre-2> ,
        <#genre-3> ,
        <#genre-4> ,
        <#genre-5> ,
        <#genre-6> ,
        <#genre-7> ,
        <#genre-8> ,
        <#genre-9> ,
        <#genre-10> ,
        <#genre-11> ,
        <#genre-12> ,
        <#genre-13> .

<#genre-0> rdfs:label "Rock" ; rdf:value 0 .

<#genre-1> rdfs:label "Disco" ; rdf:value 1 .

<#genre-2> rdfs:label "Shuffle" ; rdf:value 2 .

<#genre-3> rdfs:label "Electro" ; rdf:value 3 .

<#genre-4> rdfs:label "Dub" ; rdf:value 4 .

<#genre-5> rdfs:label "Motorik" ; rdf:value 5 .

<#genre-6> rdfs:label "Bossa" ; rdf:value 6 .

<#genre-7> rdfs:label "Afro" ; rdf:value 7 .

<#genre-8> rdfs:label "Breakbeat" ; rdf:value 8 .

<#genre-9> rdfs:label "Amen" ; rdf:value 9 .

<#genre-10> rdfs:label "Jungle" ; rdf:value 10 .

<#genre-11> rdfs:label "Hip Hop" ; rdf:value 11 .

<#genre-12> rdfs:label "Jazz" ; rdf:value 12 .

<#genre-13> rdfs:label "Fugue" ; rdf:value 13 .

<#style_mode>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "style_mode" ; lv2:name "Style" ;
    lv2:default 0 ; lv2:minimum 0 ; lv2:maximum 6 ;
    jig:paramIndex 1 ;
    lv2:portProperty lv2:enumeration ;
    lv2:scalePoint
        <#style_mode-0> ,
        <#style_mode-1> ,
        <#style_mode-2> ,
        <#style_mode-3> ,
        <#style_mode-4> ,
        <#style_mode-5> ,
        <#style_mode-6> .

<#style_mode-0> rdfs:label "Auto" ; rdf:value 0 .

<#style_mode-1> rdfs:label "Straight" ; rdf:value 1 .

<#style_mode-2> rdfs:label "Reel" ; rdf:value 2 .

<#style_mode-3> rdfs:label "Waltz" ; rdf:value 3 .

<#style_mode-4> rdfs:label "Jig" ; rdf:value 4 .

<#style_mode-5> rdfs:label "Slip Jig" ; rdf:value 5 .

<#style_mode-6> rdfs:label "Diddley" ; rdf:value 6 .

<#channel>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "channel" ; lv2:name "Channel" ;
    lv2:default 10 ; lv2:minimum 1 ; lv2:maximum 16 ;
    jig:paramIndex 2 .

<#kit_map>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "kit_map" ; lv2:name "Kit Map" ;
    lv2:default 0 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 3 ;
    lv2:portProperty lv2:enumeration ;
    lv2:scalePoint
        <#kit_map-0> ,
        <#kit_map-1> .

<#kit_map-0> rdfs:label "Flues Drumkit" ; rdf:value 0 .

<#kit_map-1> rdfs:label "GM" ; rdf:value 1 .

<#bars>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "bars" ; lv2:name "Bars" ;
    lv2:default 2 ; lv2:minimum 1 ; lv2:maximum 4 ;
    jig:paramIndex 4 .

<#resolution>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "resolution" ; lv2:name "Resolution" ;
    lv2:default 1 ; lv2:minimum 0 ; lv2:maximum 3 ;
    jig:paramIndex 5 ;
    lv2:portProperty lv2:enumeration ;
    lv2:scalePoint
        <#resolution-0> ,
        <#resolution-1> ,
        <#resolution-2> ,
        <#resolution-3> .

<#resolution-0> rdfs:label "Eighth" ; rdf:value 0 .

<#resolution-1> rdfs:label "Sixteenth" ; rdf:value 1 .

<#resolution-2> rdfs:label "Sixteenth Triplet" ; rdf:value 2 .

<#resolution-3> rdfs:label "Quarter" ; rdf:value 3 .

<#density>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "density" ; lv2:name "Density" ;
    lv2:default 0.58 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 6 .

<#variation>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "variation" ; lv2:name "Variation" ;
    lv2:default 0.35 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 7 .

<#fill_amount>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "fill_amount" ; lv2:name "Fill Amount" ;
    lv2:default 0.3 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 8 .

<#seed>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "seed" ; lv2:name "Seed" ;
    lv2:default 1 ; lv2:minimum 0 ; lv2:maximum 65535 ;
    jig:paramIndex 9 .

<#kick_amt>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "kick_amt" ; lv2:name "Kick Amount" ;
    lv2:default 0.78 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 10 .

<#backbeat_amt>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "backbeat_amt" ; lv2:name "Backbeat Amount" ;
    lv2:default 0.76 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 11 .

<#hat_amt>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "hat_amt" ; lv2:name "Hat Amount" ;
    lv2:default 0.82 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 12 .

<#aux_amt>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "aux_amt" ; lv2:name "Perc Amount" ;
    lv2:default 0.28 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 13 .

<#new>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "new" ; lv2:name "New" ;
    lv2:default 0 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 14 ;
    lv2:portProperty lv2:toggled .

<#mutate>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "mutate" ; lv2:name "Mutate" ;
    lv2:default 0 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 15 ;
    lv2:portProperty lv2:toggled .

<#fill>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "fill" ; lv2:name "Fill" ;
    lv2:default 0 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 16 ;
    lv2:portProperty lv2:toggled .

<#tom_amt>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "tom_amt" ; lv2:name "Tom Amount" ;
    lv2:default 0.3 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 17 .

<#metal_amt>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "metal_amt" ; lv2:name "Metal Amount" ;
    lv2:default 0.26 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 18 .

<#vary>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "vary" ; lv2:name "Vary" ;
    lv2:default 0 ; lv2:minimum 0 ; lv2:maximum 1 ;
    jig:paramIndex 19 .

<#conductor_ch>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "conductor_ch" ; lv2:name "Conductor Ch" ;
    lv2:default 0 ; lv2:minimum 0 ; lv2:maximum 16 ;
    jig:paramIndex 20 .
