#!/bin/bash out_file="drummer.ttl" outport_nb=32 add_port() { echo -e >>${out_file} " [" case "$#" in "2") printf >>${out_file} "$2" "${idx}" ;; "3") printf >>${out_file} "$2" "${idx}" "$3" ;; "4") printf >>${out_file} "$2" "${idx}" "$3" "$4" ;; "5") printf >>${out_file} "$2" "${idx}" "$3" "$4" "$5" ;; esac echo -e >>${out_file} "\n ]$1" idx=$((${idx} + 1)) } add_group() { echo -e >>${out_file} "" case "$#" in "2") printf >>${out_file} "$2" "${idx}" ;; "3") printf >>${out_file} "$2" "${idx}" "$3" ;; "4") printf >>${out_file} "$2" "${idx}" "$3" "$4" ;; "5") printf >>${out_file} "$2" "${idx}" "$3" "$4" "$5" ;; esac echo -e >>${out_file} " $1" idx=$((${idx} + 1)) } >${out_file} echo -n >>${out_file} '@prefix lv2: . @prefix foaf: . @prefix doap: . @prefix rdf: . @prefix rdfs: . @prefix ui: . @prefix atom: . @prefix urid: . @prefix pg: . @prefix drummer: . a lv2:InstrumentPlugin, lv2:Plugin; lv2:binary ; doap:name "Drummer Sampler"; doap:maintainer [ foaf:name "AlkorZ3"; foaf:homepage ; foaf:mbox ] ; doap:license ; lv2:requiredFeature urid:map; ui:ui ; lv2:extensionData ; lv2:port' idx=0 add_port "," " a lv2:InputPort , atom:AtomPort; atom:bufferType atom:Sequence ; atom:supports , ; lv2:index %d; lv2:symbol \"control\"; lv2:name \"Control\";" add_port "," " a lv2:AudioPort, lv2:OutputPort; lv2:index %d; lv2:symbol \"master_out_1\"; lv2:name \"Master - Out 1\"; lv2:designation pg:left; pg:group drummer:audio_master_out;" add_port "," " a lv2:AudioPort, lv2:OutputPort; lv2:index %d; lv2:symbol \"master_out_2\"; lv2:name \"Master - Out 2\"; lv2:designation pg:right; pg:group drummer:audio_master_out;" out_id=0 while [[ "${out_id}" -lt "${outport_nb}" ]] do add_port "," " a lv2:AudioPort, lv2:OutputPort; lv2:index %d; lv2:symbol \"audio_%02d_out_1\"; lv2:name \"Audio %02d - Out 1\"; lv2:designation pg:left; pg:group drummer:audio_%02d_out;" "${out_id}" "${out_id}" "${out_id}" add_port "," " a lv2:AudioPort, lv2:OutputPort; lv2:index %d; lv2:symbol \"audio_%02d_out_2\"; lv2:name \"Audio %02d - Out 2\"; lv2:designation pg:right; pg:group drummer:audio_%02d_out;" "${out_id}" "${out_id}" "${out_id}" out_id=$((${out_id} + 1)) done add_port "," " a lv2:ControlPort, lv2:InputPort; lv2:index %d; lv2:symbol \"channel_id\"; lv2:name \"Midi Channel Id\"; lv2:minimum 0; lv2:maximum 15; lv2:default 10; lv2:portProperty lv2:integer;" add_port "," " a lv2:ControlPort, lv2:InputPort; lv2:index %d; lv2:symbol \"base_note\"; lv2:name \"Midi Base Note\"; lv2:minimum 21; lv2:maximum 107; lv2:default 36; lv2:portProperty lv2:integer;" add_port "," " a lv2:ControlPort, lv2:InputPort; lv2:index %d; lv2:symbol \"velocity_ignore_note\"; lv2:name \"MIDI Velocity Ignore Note\"; lv2:minimum 21; lv2:maximum 107; lv2:default 24; lv2:portProperty lv2:integer;" add_port "," " a lv2:ControlPort, lv2:InputPort; lv2:index %d; lv2:symbol \"note_off_ignore_note\"; lv2:name \"MIDI Note Off Ignore Note\"; lv2:minimum 21; lv2:maximum 107; lv2:default 25; lv2:portProperty lv2:integer;" add_port "," " a lv2:ControlPort, lv2:InputPort; lv2:index %d; lv2:symbol \"velocity_ignore_flag\"; lv2:name \"Velocity Ignore Flag\"; lv2:default 0; lv2:portProperty lv2:toggled;" add_port "," " a lv2:ControlPort, lv2:InputPort; lv2:index %d; lv2:symbol \"note_off_ignore_flag\"; lv2:name \"Note Off Ignore Flag\"; lv2:default 1; lv2:portProperty lv2:toggled;" out_id=0 while [[ "${out_id}" -lt "32" ]] do add_port "," " a lv2:ControlPort, lv2:InputPort; lv2:index %d; lv2:symbol \"gain_%02d\"; lv2:name \"Sample Gain %02d\"; lv2:minimum -60.0; lv2:maximum 6.0; lv2:default 0.0; lv2:scalePoint [ rdfs:label \"-inf\" ; rdf:value -60.0; ]" "${out_id}" "${out_id}" out_id=$((${out_id} + 1)) done out_id=0 while [[ "${out_id}" -lt "32" ]] do add_port "," " a lv2:ControlPort, lv2:InputPort; lv2:index %d; lv2:symbol \"pan_%02d\"; lv2:name \"Sample Pan %02d\"; lv2:minimum -1.0; lv2:maximum 1.0; lv2:default 0.0;" "${out_id}" "${out_id}" out_id=$((${out_id} + 1)) done add_port "." " a lv2:OutputPort , atom:AtomPort ; atom:bufferType atom:Sequence ; atom:supports ; lv2:index %d ; lv2:symbol \"core_events\" ; lv2:name \"Core Events\"" echo >>${out_file} ' drummer:audio_master_out a pg:StereoGroup, pg:OutputGroup ; lv2:name "Audio Master Out" ; lv2:symbol "audio_master_out" .' out_id=0 idx=0 while [[ "${out_id}" -lt "32" ]] do add_group "." "drummer:audio_%02d_out a pg:StereoGroup, pg:OutputGroup ; lv2:name \"Audio %02d Out\" ; lv2:symbol \"audio_%02d_out\"" "${out_id}" "${out_id}" out_id=$((${out_id} + 1)) done echo >>${out_file} ' a ui:GtkUI ; ui:binary .'