#!/usr/bin/perl # # dx7lv2sounds2preset - create a presets.ttl and add this to manifest.ttl for # Dexed.lv2 - LV2 plugin # # This generator builds the presets-ttl and a suitable manifest.ttl # # (c) by H. Wirtz <dcoredump@googlemail.com> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program 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 # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # open(MANIFEST,">manifest.ttl")||die("Cannot open manifest.ttl for writing: $!\n"); print MANIFEST "\@prefix lv2: <http://lv2plug.in/ns/lv2core#> .\n"; print MANIFEST "\@prefix pset: <http://lv2plug.in/ns/ext/presets#> .\n"; print MANIFEST "\@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n"; print MANIFEST "\@prefix ui: <http://lv2plug.in/ns/extensions/ui#> .\n"; print MANIFEST "\@prefix mdap: <http://moddevices.com/plugins/mda/presets#> .\n"; print MANIFEST "\@prefix pset: <http://lv2plug.in/ns/ext/presets#> .\n"; print MANIFEST "\@prefix doap: <http://usefulinc.com/ns/doap#> .\n"; print MANIFEST "\@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n"; print MANIFEST "\n"; print MANIFEST "<https://github.com/dcoredump/dexed.lv2>\n"; print MANIFEST " a lv2:Plugin, doap:Project, lv2:SynthPlugin ;\n"; print MANIFEST " rdfs:seeAlso <Dexed.ttl> ;\n"; print MANIFEST " rdfs:seeAlso <modgui.ttl> .\n"; print MANIFEST "\n"; open(PRESETS,">presets.ttl")||die("Cannot open presets.ttl for writing: $!\n"); print PRESETS "\@prefix lv2: <http://lv2plug.in/ns/lv2core#> .\n"; print PRESETS "\@prefix pset: <http://lv2plug.in/ns/ext/presets#> .\n"; print PRESETS "\@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n"; print PRESETS "\n"; while($voice=shift(@ARGV)) { insert_data($voice); } close(PRESETS); close(MANIFEST); sub insert_data { my($voice)=@_; open(M_VOICE,"<".$voice."/manifest.ttl")||die("Cannot open ".$voice."/manifest.ttl: $!\n"); while($l=<M_VOICE>) { if($l=~/^\s*rdfs:label \"(.+)\"/) { $voice_name=$1 } elsif($l=~/\s*rdfs:seeAlso <(.+)>/) { $file=$1; } } close(M_VOICE); if($voice_name eq "" || $file eq "") { print "Voice data for ".$voice."/manifest.ttl is not consistent\n"; print "voice: [$voice_name] file: [$file]\n"; return; } print MANIFEST "<https://github.com/dcoredump/dexed.lv2#".$voice_name.">\n"; print MANIFEST " a pset:Preset ;\n"; print MANIFEST " rdfs:label \"".$voice_name."\" ;\n"; print MANIFEST " lv2:appliesTo <https://github.com/dcoredump/dexed.lv2> ;\n"; print MANIFEST " rdfs:seeAlso <presets.ttl> .\n"; print MANIFEST "\n"; print PRESETS "<https://github.com/dcoredump/dexed.lv2#".$voice_name.">\n"; open(VOICE,"<".$voice."/".$file)||die("Cannot open ".$voice."/".$file.": $!"); while($l=<VOICE>) { next if($l=~/^\s*$/); next if($l=~/^[^ ]/); print PRESETS $l; } close(VOICE); print PRESETS "\n"; }