From 9596d6ca8eacc20d5a641ca3921ef25348b4fa55 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Thu, 28 Feb 2019 22:26:12 +0100 Subject: [PATCH] "Analyze Guitar Wiring" can figure out if wiring is hum-cancelling and in or out of phase for each position --- .../src/org/diylc/netlist/Tree.java | 41 +++++++++++++- diylc/diylc-library/lib/diylc-core.jar | Bin 267766 -> 268493 bytes .../diylc/netlist/GuitarDiagramAnalyzer.java | 52 ++++++++++++++++++ diylc/diylc-swing/lib/diylc-core.jar | Bin 267766 -> 268493 bytes diylc/diylc-swing/library/main.jar | Bin 605916 -> 607498 bytes .../src/org/diylc/swing/ActionFactory.java | 2 + diylc/diylc-swing/update.xml | 4 ++ 7 files changed, 98 insertions(+), 1 deletion(-) diff --git a/diylc/diylc-core/src/org/diylc/netlist/Tree.java b/diylc/diylc-core/src/org/diylc/netlist/Tree.java index fad41e30..b970a7c8 100644 --- a/diylc/diylc-core/src/org/diylc/netlist/Tree.java +++ b/diylc/diylc-core/src/org/diylc/netlist/Tree.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Set; public class Tree { @@ -158,6 +159,44 @@ public class Tree { protected Object clone() throws CloneNotSupportedException { if (leaf != null) return new Tree(leaf); - return new Tree(new ArrayList(children), connectionType); + List newChildren = new ArrayList(); + for (Tree t : children) + newChildren.add((Tree) t.clone()); + return new Tree(newChildren, connectionType); + } + + public Tree filter(Set types) { + if (leaf != null) { + if (types.contains(leaf.getComponent().getClass().getCanonicalName())) + return new Tree(leaf); + return null; + } + List newChildren = new ArrayList(); + for (Tree t : children) { + Tree child = t.filter(types); + if (child != null) + newChildren.add(child); + } + if (newChildren.isEmpty()) + return null; + return new Tree(newChildren, connectionType); + } + + public void walk(ITreeWalker walker) { + if (leaf != null) { + walker.visit(leaf); + } else { + for (Tree t : children) { + walker.visit(t); + t.walk(walker); + } + } + } + + public interface ITreeWalker { + + void visit(Tree t); + + void visit(TreeLeaf l); } } diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index d44183a23200e7efd0d0d31f2667dd129163bc17..56c9dec16e040989448a254f77eb32e235b639a2 100644 GIT binary patch delta 8098 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 Xol|Eg%8D^!%&cW1B3GX90~h%pAVZ23 diff --git a/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java b/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java index 9a2cc718..0062c42d 100644 --- a/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java +++ b/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java @@ -35,6 +35,7 @@ import org.diylc.components.guitar.P90Pickup; import org.diylc.components.guitar.PBassPickup; import org.diylc.components.guitar.SingleCoilPickup; import org.diylc.components.passive.PotentiometerPanel; +import org.diylc.netlist.Tree.ITreeWalker; public class GuitarDiagramAnalyzer extends NetlistAnalyzer implements INetlistAnalyzer { @@ -72,13 +73,64 @@ public class GuitarDiagramAnalyzer extends NetlistAnalyzer implements INetlistAn return summaries; } + private int positiveCount; + private int negativeCount; + private int noiseCount; + private Summary summarize(Netlist netlist, Node preferredOutput) throws TreeException { List notes = new ArrayList(); Tree tree = constructTree(netlist); + Tree pickupTree = tree.filter(PICKUP_TYPES); + + if (pickupTree == null || pickupTree.getChildren().isEmpty()) { + notes.add("No pickups are detected in this switch configuration"); + } else { + positiveCount = 0; + negativeCount = 0; + noiseCount = 0; + pickupTree.walk(new ITreeWalker() { + + @Override + public void visit(Tree t) { + } + + @Override + public void visit(TreeLeaf l) { + if ((l.toString().toLowerCase().contains("north") && (l.toString().toLowerCase().contains("->"))) || + (l.toString().toLowerCase().contains("south") && (l.toString().toLowerCase().contains("<-")))) + noiseCount++; + if ((l.toString().toLowerCase().contains("north") && (l.toString().toLowerCase().contains("<-"))) || + (l.toString().toLowerCase().contains("south") && (l.toString().toLowerCase().contains("->")))) + noiseCount--; + + if (l.toString().toLowerCase().contains("->")) + positiveCount++; + if (l.toString().toLowerCase().contains("<-")) + negativeCount++; + } + }); + + boolean humCancelling = noiseCount == 0; + + if (humCancelling) + notes.add("This position is hum-cancelling"); + else + notes.add("This position is NOT hum-cancelling"); + + if (positiveCount > 1 || negativeCount > 1) { + boolean inPhase = (positiveCount == 0 && negativeCount > 0) || (positiveCount > 0 && negativeCount == 0); + if (inPhase) + notes.add("The pickups are wired in-phase"); + else + notes.add("This pickups are wired out-of-phase"); + } + } + return new Summary(netlist, notes, tree); } + @Override public Tree constructTree(Netlist netlist) throws TreeException { diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index d44183a23200e7efd0d0d31f2667dd129163bc17..56c9dec16e040989448a254f77eb32e235b639a2 100644 GIT binary patch delta 8098 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 Xol|Eg%8D^!%&cW1B3GX90~h%pAVZ23 diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index e7d2c9badff24389d56117b41c619d835b7c0e72..9ef5922d0495dd7ee44917b4557ee440520b675b 100644 GIT binary patch delta 8418 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 configuration: ").append(summary.getNetlist().getSwitchSetup()).append("

"); sb.append("Parallel/Series connectivity tree:

").append(summary.getTree().toHTML(0)); + if (!summary.getNotes().isEmpty()) + sb.append("

Notes:
"); for (String v : summary.getNotes()) { sb.append("  ").append(v).append("
"); } diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index c9cdfca5..1bf0eea8 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -2526,6 +2526,10 @@ NEW_FEATURE Added 4-position Tele switch type to the "Lever Switch" component + + NEW_FEATURE + "Analyze Guitar Wiring" can figure out if wiring is hum-cancelling and in or out of phase for each position + IMPROVEMENT Increase the range of zoom slider for images to 500%