BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

commit 38df4e71a96f3c04388ea2af33fb19b764933689
parent a0058d71a71a72972779848691d6ec07f4195833
Author: Matt Demanett <matt@demanett.net>
Date:   Sun,  2 Aug 2020 22:52:54 -0400

Script to copy widget position variables from svg into the relevant cpp.

Diffstat:
Mres-pp/DADSRH-pp.svg | 4++--
Mres-src/DADSRH-src.svg | 2+-
Ascripts/svg_variables_to_cpp.rb | 70++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/Analyzer.cpp | 8++++----
Msrc/DADSRH.cpp | 28++++++++++++++--------------
Msrc/DADSRHPlus.cpp | 28++++++++++++++--------------
Msrc/Inv.cpp | 4++--
Msrc/Mono.cpp | 4++--
Msrc/Shaper.cpp | 18+++++++++---------
Msrc/ShaperPlus.cpp | 18+++++++++---------
Msrc/Switch.cpp | 2+-
Msrc/VCAmp.cpp | 2+-
Msrc/Walk.cpp | 2+-
Msrc/XCO.cpp | 4++--
Msrc/XFade.cpp | 2+-
15 files changed, 133 insertions(+), 63 deletions(-)

diff --git a/res-pp/DADSRH-pp.svg b/res-pp/DADSRH-pp.svg @@ -140,8 +140,8 @@ text.brand { <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/> </g> </symbol> - <symbol id="light-small" viewBox="0 0 6.4px 6.4px"> - <rect width="6.4" height="6.4" fill="#0f0"/> + <symbol id="light-tiny" viewBox="0 0 1.1px 1.1px"> + <rect width="3.2" height="3.2" fill="#0f0"/> </symbol> </defs> diff --git a/res-src/DADSRH-src.svg b/res-src/DADSRH-src.svg @@ -11,7 +11,7 @@ <def id="switch"/> <def id="input"/> <def id="output"/> - <def id="light-small"/> + <def id="light-tiny"/> </defs> <rect width="100%" height="100%" fill="#ddd"/> diff --git a/scripts/svg_variables_to_cpp.rb b/scripts/svg_variables_to_cpp.rb @@ -0,0 +1,70 @@ +#!/usr/bin/env ruby + +require 'optparse' +require 'pathname' + +options = {} +option_parser = OptionParser.new do |opts| + opts.banner = "Usage: #{$0} [options] [res-pp/MODULE-pp.svg] [...more files...]" + opts.on_tail('-h', '--help', 'Show this message') do + puts opts + exit + end +end +begin + option_parser.parse! +rescue => e + STDERR.puts e.to_s + STDERR.puts "\n" + STDERR.puts option_parser.help + exit 1 +end +if ARGV.empty? + STDERR.puts option_parser.help + exit 1 +end + +ARGV.each do |svg_file| + unless File.readable?(svg_file) + STDERR.puts "No such file: #{svg_file}" + exit 1 + end + slug = nil + if File.basename(svg_file) =~ /^(.*)-pp.svg$/ + slug = $1 + else + STDERR.puts "Input file #{file} must be named *-pp.svg" + exit 1 + end + + cpp_file = Pathname.new(File.join(File.dirname(svg_file), '..', 'src', "#{slug}.cpp")).cleanpath + if File.readable?(cpp_file) + cpp = File.read(cpp_file) + if cpp =~ /\n([ \t]+)\/\/ generated by svg_widgets\.rb.*\/\/ end generated by svg_widgets\.rb/m + spaces = $1 + + cmd = "#{File.join(File.dirname($0), 'svg_widgets.rb')} --variables #{svg_file}" + out = `#{cmd}` + unless $?.success? + STDERR.puts "Calling '#{cmd}' failed:\n#{out}" + exit 1 + end + if out =~ /auto/ + out.gsub!(/auto/, "#{spaces}auto") + new_cpp = cpp.sub(/(\/\/ generated by svg_widgets\.rb).*(\/\/ end generated by svg_widgets\.rb)/m, "\\1\n#{out}#{spaces}\\2") + if new_cpp != cpp + File.write(cpp_file, new_cpp) + puts "Wrote: #{cpp_file}" + else + puts "Unchanged: #{cpp_file}" + end + else + STDERR.puts "#{cmd} didn't produce any variables" + end + else + STDERR.puts "Module source file doesn't seem to have replaceable variables: #{cpp_file}" + end + else + STDERR.puts "Module source file doesn't exist: #{cpp_file}" + end +end diff --git a/src/Analyzer.cpp b/src/Analyzer.cpp @@ -107,10 +107,10 @@ struct AnalyzerWidget : ModuleWidget { addChild(createWidget<ScrewSilver>(Vec(box.size.x - 30, 365))); // generated by svg_widgets.rb - auto range2ParamPosition = Vec(30.08, 271.08); - auto smoothParamPosition = Vec(103.08, 271.08); - auto qualityParamPosition = Vec(179.02, 306.02); - auto windowParamPosition = Vec(250.02, 306.02); + auto range2ParamPosition = Vec(30.0, 271.0); + auto smoothParamPosition = Vec(103.0, 271.0); + auto qualityParamPosition = Vec(179.0, 306.0); + auto windowParamPosition = Vec(250.0, 306.0); auto signalaInputPosition = Vec(13.5, 323.0); auto signalbInputPosition = Vec(86.0, 323.0); diff --git a/src/DADSRH.cpp b/src/DADSRH.cpp @@ -123,20 +123,20 @@ struct DADSRHWidget : TriggerOnLoadModuleWidget { addChild(createWidget<ScrewSilver>(Vec(box.size.x - 15, 365))); // generated by svg_widgets.rb - auto delayParamPosition = Vec(27.08, 33.08); - auto attackParamPosition = Vec(27.08, 89.08); - auto decayParamPosition = Vec(27.08, 145.08); - auto sustainParamPosition = Vec(27.08, 201.08); - auto releaseParamPosition = Vec(27.08, 257.08); - auto holdParamPosition = Vec(82.38, 313.08); - auto attackShapeParamPosition = Vec(77.02, 124.02); - auto decayShapeParamPosition = Vec(77.02, 180.52); - auto releaseShapeParamPosition = Vec(77.02, 292.52); - auto triggerParamPosition = Vec(90.04, 43.04); - auto modeParamPosition = Vec(120.0, 95.0); - auto loopParamPosition = Vec(120.0, 145.0); - auto speedParamPosition = Vec(20.0, 321.0); - auto retriggerParamPosition = Vec(55.0, 321.0); + auto delayParamPosition = Vec(27.0, 33.0); + auto attackParamPosition = Vec(27.0, 89.0); + auto decayParamPosition = Vec(27.0, 145.0); + auto sustainParamPosition = Vec(27.0, 201.0); + auto releaseParamPosition = Vec(27.0, 257.0); + auto holdParamPosition = Vec(82.3, 313.0); + auto attackShapeParamPosition = Vec(77.0, 124.0); + auto decayShapeParamPosition = Vec(77.0, 180.5); + auto releaseShapeParamPosition = Vec(77.0, 292.5); + auto triggerParamPosition = Vec(90.0, 43.0); + auto modeParamPosition = Vec(119.5, 94.5); + auto loopParamPosition = Vec(119.5, 144.5); + auto speedParamPosition = Vec(19.5, 320.5); + auto retriggerParamPosition = Vec(54.5, 320.5); auto triggerInputPosition = Vec(115.0, 40.0); diff --git a/src/DADSRHPlus.cpp b/src/DADSRHPlus.cpp @@ -123,20 +123,20 @@ struct DADSRHPlusWidget : TriggerOnLoadModuleWidget { addChild(createWidget<ScrewSilver>(Vec(box.size.x - 30, 365))); // generated by svg_widgets.rb - auto delayParamPosition = Vec(27.08, 33.08); - auto attackParamPosition = Vec(27.08, 89.08); - auto decayParamPosition = Vec(27.08, 145.08); - auto sustainParamPosition = Vec(27.08, 201.08); - auto releaseParamPosition = Vec(27.08, 257.08); - auto holdParamPosition = Vec(82.38, 313.08); - auto attackShapeParamPosition = Vec(77.02, 124.02); - auto decayShapeParamPosition = Vec(77.02, 180.52); - auto releaseShapeParamPosition = Vec(77.02, 292.52); - auto triggerParamPosition = Vec(90.04, 43.04); - auto modeParamPosition = Vec(120.0, 95.0); - auto loopParamPosition = Vec(120.0, 145.0); - auto speedParamPosition = Vec(20.0, 321.0); - auto retriggerParamPosition = Vec(55.0, 321.0); + auto delayParamPosition = Vec(27.0, 33.0); + auto attackParamPosition = Vec(27.0, 89.0); + auto decayParamPosition = Vec(27.0, 145.0); + auto sustainParamPosition = Vec(27.0, 201.0); + auto releaseParamPosition = Vec(27.0, 257.0); + auto holdParamPosition = Vec(82.3, 313.0); + auto attackShapeParamPosition = Vec(77.0, 124.0); + auto decayShapeParamPosition = Vec(77.0, 180.5); + auto releaseShapeParamPosition = Vec(77.0, 292.5); + auto triggerParamPosition = Vec(90.0, 43.0); + auto modeParamPosition = Vec(119.5, 94.5); + auto loopParamPosition = Vec(119.5, 144.5); + auto speedParamPosition = Vec(19.5, 320.5); + auto retriggerParamPosition = Vec(54.5, 320.5); auto delayInputPosition = Vec(152.0, 40.0); auto attackInputPosition = Vec(152.0, 96.0); diff --git a/src/Inv.cpp b/src/Inv.cpp @@ -120,9 +120,9 @@ struct InvWidget : ModuleWidget { // generated by svg_widgets.rb auto gate1ParamPosition = Vec(13.5, 22.0); - auto latch1ParamPosition = Vec(29.4, 81.9); + auto latch1ParamPosition = Vec(29.5, 82.0); auto gate2ParamPosition = Vec(13.5, 187.0); - auto latch2ParamPosition = Vec(29.4, 246.9); + auto latch2ParamPosition = Vec(29.5, 247.0); auto gate1InputPosition = Vec(10.5, 44.0); auto in1InputPosition = Vec(10.5, 96.0); diff --git a/src/Mono.cpp b/src/Mono.cpp @@ -162,9 +162,9 @@ struct MonoWidget : ModuleWidget { auto compressionParamPosition = Vec(9.5, 99.5); auto levelParamPosition = Vec(9.5, 205.5); - auto polyInputPosition = Vec(10.5, 253.0); + auto polyInputPosition = Vec(10.5, 254.0); - auto monoOutputPosition = Vec(10.5, 291.0); + auto monoOutputPosition = Vec(10.5, 292.0); // end generated by svg_widgets.rb addParam(createParam<Knob26>(compressionParamPosition, module, Mono::COMPRESSION_PARAM)); diff --git a/src/Shaper.cpp b/src/Shaper.cpp @@ -106,15 +106,15 @@ struct ShaperWidget : TriggerOnLoadModuleWidget { addChild(createWidget<ScrewSilver>(Vec(box.size.x - 15, 365))); // generated by svg_widgets.rb - auto attackParamPosition = Vec(29.08, 33.08); - auto triggerParamPosition = Vec(89.04, 43.04); - auto onParamPosition = Vec(29.08, 89.08); - auto speedParamPosition = Vec(119.0, 96.0); - auto decayParamPosition = Vec(29.08, 145.08); - auto loopParamPosition = Vec(119.0, 152.0); - auto offParamPosition = Vec(29.08, 201.08); - auto envParamPosition = Vec(82.38, 257.08); - auto signalParamPosition = Vec(82.38, 313.08); + auto attackParamPosition = Vec(29.0, 33.0); + auto triggerParamPosition = Vec(89.0, 43.0); + auto onParamPosition = Vec(29.0, 89.0); + auto speedParamPosition = Vec(118.5, 95.5); + auto decayParamPosition = Vec(29.0, 145.0); + auto loopParamPosition = Vec(118.5, 151.5); + auto offParamPosition = Vec(29.0, 201.0); + auto envParamPosition = Vec(82.3, 257.0); + auto signalParamPosition = Vec(82.3, 313.0); auto triggerInputPosition = Vec(114.0, 40.0); auto signalInputPosition = Vec(11.5, 320.0); diff --git a/src/ShaperPlus.cpp b/src/ShaperPlus.cpp @@ -106,15 +106,15 @@ struct ShaperPlusWidget : TriggerOnLoadModuleWidget { addChild(createWidget<ScrewSilver>(Vec(box.size.x - 30, 365))); // generated by svg_widgets.rb - auto attackParamPosition = Vec(29.08, 33.08); - auto triggerParamPosition = Vec(89.04, 43.04); - auto onParamPosition = Vec(29.08, 89.08); - auto speedParamPosition = Vec(119.0, 96.0); - auto decayParamPosition = Vec(29.08, 145.08); - auto loopParamPosition = Vec(119.0, 152.0); - auto offParamPosition = Vec(29.08, 201.08); - auto envParamPosition = Vec(82.38, 257.08); - auto signalParamPosition = Vec(82.38, 313.08); + auto attackParamPosition = Vec(29.0, 33.0); + auto triggerParamPosition = Vec(89.0, 43.0); + auto onParamPosition = Vec(29.0, 89.0); + auto speedParamPosition = Vec(118.5, 95.5); + auto decayParamPosition = Vec(29.0, 145.0); + auto loopParamPosition = Vec(118.5, 151.5); + auto offParamPosition = Vec(29.0, 201.0); + auto envParamPosition = Vec(82.3, 257.0); + auto signalParamPosition = Vec(82.3, 313.0); auto triggerInputPosition = Vec(114.0, 40.0); auto attackInputPosition = Vec(152.0, 40.0); diff --git a/src/Switch.cpp b/src/Switch.cpp @@ -138,7 +138,7 @@ struct SwitchWidget : ModuleWidget { // generated by svg_widgets.rb auto gateParamPosition = Vec(13.5, 22.0); - auto latchParamPosition = Vec(31.4, 83.9); + auto latchParamPosition = Vec(31.5, 84.0); auto gateInputPosition = Vec(10.5, 44.0); auto high1InputPosition = Vec(10.5, 100.0); diff --git a/src/VCAmp.cpp b/src/VCAmp.cpp @@ -52,7 +52,7 @@ struct VCAmpWidget : ModuleWidget { addChild(createWidget<ScrewSilver>(Vec(box.size.x - 15, 365))); // generated by svg_widgets.rb - auto levelParamPosition = Vec(13.5, 18.0); + auto levelParamPosition = Vec(13.5, 20.5); auto cvInputPosition = Vec(10.5, 213.0); auto inInputPosition = Vec(10.5, 248.0); diff --git a/src/Walk.cpp b/src/Walk.cpp @@ -144,7 +144,7 @@ struct WalkWidget : ModuleWidget { addChild(createWidget<ScrewSilver>(Vec(box.size.x - 15, 365))); // generated by svg_widgets.rb - auto rateParamPosition = Vec(8.0, 36.0); + auto rateParamPosition = Vec(8.0, 36.5); auto offsetParamPosition = Vec(14.5, 91.0); auto scaleParamPosition = Vec(14.5, 130.0); diff --git a/src/XCO.cpp b/src/XCO.cpp @@ -319,7 +319,7 @@ struct XCOWidget : ModuleWidget { auto frequencyParamPosition = Vec(40.0, 45.0); auto fineParamPosition = Vec(47.0, 153.0); auto slowParamPosition = Vec(112.0, 157.2); - auto fmParamPosition = Vec(55.0, 194.0); + auto fmDepthParamPosition = Vec(55.0, 194.0); auto fmTypeParamPosition = Vec(101.5, 256.5); auto squarePwParamPosition = Vec(147.0, 60.0); auto squarePhaseParamPosition = Vec(147.0, 148.0); @@ -361,7 +361,7 @@ struct XCOWidget : ModuleWidget { addParam(createParam<Knob68>(frequencyParamPosition, module, XCO::FREQUENCY_PARAM)); addParam(createParam<Knob16>(fineParamPosition, module, XCO::FINE_PARAM)); addParam(createParam<IndicatorButtonGreen9>(slowParamPosition, module, XCO::SLOW_PARAM)); - addParam(createParam<Knob38>(fmParamPosition, module, XCO::FM_DEPTH_PARAM)); + addParam(createParam<Knob38>(fmDepthParamPosition, module, XCO::FM_DEPTH_PARAM)); addParam(createParam<SliderSwitch2State14>(fmTypeParamPosition, module, XCO::FM_TYPE_PARAM)); addParam(createParam<Knob16>(squarePwParamPosition, module, XCO::SQUARE_PW_PARAM)); addParam(createParam<Knob16>(squarePhaseParamPosition, module, XCO::SQUARE_PHASE_PARAM)); diff --git a/src/XFade.cpp b/src/XFade.cpp @@ -63,7 +63,7 @@ struct XFadeWidget : ModuleWidget { // generated by svg_widgets.rb auto mixParamPosition = Vec(8.0, 36.0); auto curveParamPosition = Vec(14.5, 152.5); - auto linearParamPosition = Vec(25.4, 176.9); + auto linearParamPosition = Vec(25.5, 177.0); auto mixInputPosition = Vec(10.5, 77.0); auto aInputPosition = Vec(10.5, 213.0);