diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2021-03-14 14:29:26 +0100 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2021-03-27 16:06:07 +0100 |
commit | ec601f8af0b09eefb1913bd1a7dfeeca1109da22 (patch) | |
tree | f1139dc4f910458de2dfd5e1748427f9ed92d403 | |
parent | 777f3406871ec6ea488602c108182444366d9137 (diff) | |
download | airwindows-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.rb | 2 | ||||
-rwxr-xr-x | plugins/LV2/makeplugin | 22 |
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) |