aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/LV2/makeplugin
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/LV2/makeplugin')
-rwxr-xr-xplugins/LV2/makeplugin45
1 files changed, 44 insertions, 1 deletions
diff --git a/plugins/LV2/makeplugin b/plugins/LV2/makeplugin
index 5b11a87..5fae69f 100755
--- a/plugins/LV2/makeplugin
+++ b/plugins/LV2/makeplugin
@@ -1,11 +1,53 @@
#!/usr/bin/env ruby
+def param_sym(n)
+ ('A'.ord + n).chr
+end
+
def make_param_assigns(num)
(0 ... num)
- .map { |n| "#{('A'.ord + n).chr} = *param[#{n}];" }
+ .map { |n| "#{param_sym(n)} = *param[#{n}];" }
.join("\n ")
end
+def make_ctrl_port(n)
+ %Q{ a lv2:InputPort , lv2:ControlPort ;
+ lv2:index #{n} ;
+ lv2:symbol "#{param_sym(n)}" ;
+ lv2:name "Parameter #{param_sym(n)}" ;
+ lv2:default 0.5 ;
+ lv2:minimum 0.0 ;
+ lv2:maximum 1.0 ;}
+end
+
+def make_lv2_port_defs(num)
+ ctrlports = (0 ... num)
+ .map { |n| make_ctrl_port(n) }
+ .join("\n ] , [\n")
+
+ ctrlports + %Q{
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index #{num} ;
+ lv2:symbol "in_l" ;
+ lv2:name "In left" ;
+ ] , [
+ a lv2:InputPort , lv2:AudioPort ;
+ lv2:index #{num + 1} ;
+ lv2:symbol "in_r" ;
+ lv2:name "In right" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index #{num + 2} ;
+ lv2:symbol "out_l" ;
+ lv2:name "Out left" ;
+ ] , [
+ a lv2:OutputPort , lv2:AudioPort ;
+ lv2:index #{num + 3} ;
+ lv2:symbol "out_r" ;
+ lv2:name "Out right" ;}
+end
+
if ARGV.length < 1
puts "Usage: #{__FILE__} <PluginName> [<NCtrlPorts>]"
exit
@@ -39,6 +81,7 @@ begin
.gsub('@plugin@', plugin_slug)
.gsub('@NCtrlPorts@', n_ctrl_ports)
.gsub('@AssignParams@', make_param_assigns(n_ctrl_ports.to_i))
+ .gsub('@TTLPortDefs@', make_lv2_port_defs(n_ctrl_ports.to_i))
fname = t.sub('Plugin', plugin_name)