aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2021-03-14 14:29:26 +0100
committerHarald Eilertsen <haraldei@anduin.net>2021-03-27 16:06:07 +0100
commitec601f8af0b09eefb1913bd1a7dfeeca1109da22 (patch)
treef1139dc4f910458de2dfd5e1748427f9ed92d403
parent777f3406871ec6ea488602c108182444366d9137 (diff)
downloadairwindows-lv2-port-ec601f8af0b09eefb1913bd1a7dfeeca1109da22.tar.gz
airwindows-lv2-port-ec601f8af0b09eefb1913bd1a7dfeeca1109da22.tar.bz2
airwindows-lv2-port-ec601f8af0b09eefb1913bd1a7dfeeca1109da22.zip
LV2/makeplugin: ctrl ports know their name and symbol.
Could possibly flesh out this to a proper class, but a hash is ok enough for now.
-rw-r--r--plugins/LV2/lib/makeplugin/plugin_info.rb2
-rwxr-xr-xplugins/LV2/makeplugin22
2 files changed, 10 insertions, 14 deletions
diff --git a/plugins/LV2/lib/makeplugin/plugin_info.rb b/plugins/LV2/lib/makeplugin/plugin_info.rb
index 0cbc896..f6644c8 100644
--- a/plugins/LV2/lib/makeplugin/plugin_info.rb
+++ b/plugins/LV2/lib/makeplugin/plugin_info.rb
@@ -91,7 +91,7 @@ module MakePlugin
if line =~ /void #{@name}::(\w+)/
fun = $1
elsif fun == 'getParameterName' and line =~ /case\s+kParam([A-Z])\:\s+vst_strncpy\s*\([^,]*,\s*\"(\w+)\",/
- @ctrl_ports << $2
+ @ctrl_ports << { sym: $1, name: $2 }
end
end
end
diff --git a/plugins/LV2/makeplugin b/plugins/LV2/makeplugin
index 809b967..48854e0 100755
--- a/plugins/LV2/makeplugin
+++ b/plugins/LV2/makeplugin
@@ -1,21 +1,17 @@
#!/usr/bin/env ruby
require_relative 'lib/makeplugin/plugin_info'
-def param_sym(n)
- ('A'.ord + n).chr
-end
-
-def make_param_assigns(num)
- (0 ... num)
- .map { |n| "#{param_sym(n)} = *param[#{n}];" }
+def make_param_assigns(ctrl_ports)
+ ctrl_ports
+ .map.with_index { |p, n| "#{p[:sym]} = *param[#{n}];" }
.join("\n ")
end
-def make_ctrl_port(n, name)
+def make_ctrl_port(n, ctrl_port)
%Q{ a lv2:InputPort , lv2:ControlPort ;
lv2:index #{n} ;
- lv2:symbol "#{param_sym(n)}" ;
- lv2:name "#{name}" ;
+ lv2:symbol "#{ctrl_port[:sym]}" ;
+ lv2:name "#{ctrl_port[:name]}" ;
lv2:default 0.5 ;
lv2:minimum 0.0 ;
lv2:maximum 1.0 ;}
@@ -23,8 +19,8 @@ end
def make_lv2_port_defs(pi)
num = pi.n_ctrl_ports
- ctrlports = (0 ... num)
- .map { |n| make_ctrl_port(n, pi.ctrl_ports[n]) }
+ ctrlports = pi.ctrl_ports
+ .map.with_index { |p, n| make_ctrl_port(n, p) }
.join("\n ] , [\n")
ctrlports + %Q{
@@ -87,7 +83,7 @@ begin
.gsub('@Plugin@', pi.name)
.gsub('@plugin@', plugin_slug)
.gsub('@NCtrlPorts@', pi.n_ctrl_ports.to_s)
- .gsub('@AssignParams@', make_param_assigns(pi.n_ctrl_ports))
+ .gsub('@AssignParams@', make_param_assigns(pi.ctrl_ports))
.gsub('@TTLPortDefs@', make_lv2_port_defs(pi))
.gsub('@TTLPluginType@', pi.type)