aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2020-08-02 18:33:02 +0200
committerHarald Eilertsen <haraldei@anduin.net>2020-08-02 18:33:02 +0200
commit11e5228c0ac28e5feb3d69173af157f6677aa195 (patch)
treef29475643768dd28376babf132b890bc163ab649
parent8e1de3ce53f1e61d24578379bd38a42401fa37e8 (diff)
downloadairwindows-lv2-port-11e5228c0ac28e5feb3d69173af157f6677aa195.tar.gz
airwindows-lv2-port-11e5228c0ac28e5feb3d69173af157f6677aa195.tar.bz2
airwindows-lv2-port-11e5228c0ac28e5feb3d69173af157f6677aa195.zip
LV2: makeplugin create control port defs in ttl.
It has no way (yet) of knowing the specifics of the ports, so for now it will only create he correct number of ports, assign their symbols ('A', 'B' etc.) and corresponding index.
-rw-r--r--plugins/LV2/Template/Plugin.ttl28
-rwxr-xr-xplugins/LV2/makeplugin45
2 files changed, 45 insertions, 28 deletions
diff --git a/plugins/LV2/Template/Plugin.ttl b/plugins/LV2/Template/Plugin.ttl
index b149e85..1402c9e 100644
--- a/plugins/LV2/Template/Plugin.ttl
+++ b/plugins/LV2/Template/Plugin.ttl
@@ -14,31 +14,5 @@
# Define the ports for this plugin.
lv2:port [
- a lv2:InputPort , lv2:ControlPort ;
- lv2:index 0 ;
- lv2:symbol "A" ;
- lv2:name "Parameter A" ;
- lv2:default 0.5 ;
- lv2:minimum 0.0 ;
- lv2:maximum 1.0 ;
- ] , [
- a lv2:InputPort , lv2:AudioPort ;
- lv2:index 1 ;
- lv2:symbol "in_l" ;
- lv2:name "In left" ;
- ] , [
- a lv2:InputPort , lv2:AudioPort ;
- lv2:index 2 ;
- lv2:symbol "in_r" ;
- lv2:name "In right" ;
- ] , [
- a lv2:OutputPort , lv2:AudioPort ;
- lv2:index 3 ;
- lv2:symbol "out_l" ;
- lv2:name "Out left" ;
- ] , [
- a lv2:OutputPort , lv2:AudioPort ;
- lv2:index 4 ;
- lv2:symbol "out_r" ;
- lv2:name "Out right" ;
+@TTLPortDefs@
] .
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)