You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
dexed/bin/dx7lv2sounds2preset

99 lines
3.3 KiB

#!/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";
}