From 732894a0fbcccb2c688368dd75b077a30fabc0fa Mon Sep 17 00:00:00 2001 From: Matt Jenkins Date: Mon, 22 Jul 2019 10:43:53 +0100 Subject: [PATCH] Add Chain effect to connect effects together --- .../audiobookrecorder/AudiobookRecorder.java | 15 +++++ .../co/majenko/audiobookrecorder/Chain.java | 58 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/uk/co/majenko/audiobookrecorder/Chain.java diff --git a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java index 24a6208..17effd0 100644 --- a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java +++ b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java @@ -2715,6 +2715,11 @@ public class AudiobookRecorder extends JFrame { if (eff != null) { group.addEffect(eff); } + } else if (e.getTagName().equals("chain")) { + Effect eff = (Effect)loadChain(e); + if (eff != null) { + group.addEffect(eff); + } } else if (e.getTagName().equals("group")) { Effect eff = (Effect)loadEffectGroup(e); if (eff != null) { @@ -2815,6 +2820,11 @@ public class AudiobookRecorder extends JFrame { if (eff != null) { store.addEffect(eff); } + } else if (ie.getTagName().equals("chain")) { + Effect eff = (Effect)loadChain(ie); + if (eff != null) { + store.addEffect(eff); + } } else if (ie.getTagName().equals("group")) { Effect eff = (Effect)loadEffectGroup(ie); if (eff != null) { @@ -2850,6 +2860,11 @@ public class AudiobookRecorder extends JFrame { return a; } + public Chain loadChain(Element root) { + Chain c = new Chain(root.getAttribute("src")); + return c; + } + public Pan loadPan(Element root) { Pan p = new Pan(Utils.s2d(root.getAttribute("pan"))); return p; diff --git a/src/uk/co/majenko/audiobookrecorder/Chain.java b/src/uk/co/majenko/audiobookrecorder/Chain.java new file mode 100644 index 0000000..fe5b74e --- /dev/null +++ b/src/uk/co/majenko/audiobookrecorder/Chain.java @@ -0,0 +1,58 @@ +package uk.co.majenko.audiobookrecorder; + +import java.util.ArrayList; + +public class Chain implements Effect { + String target; + + public Chain(String t) { + target = t; + } + + public Chain() { + target = null; + } + + public void process(Sample[] samples) { + if (target != null) { + Effect t = AudiobookRecorder.window.effects.get(target); + if (t != null) { + t.process(samples); + } + } + } + + public void setTarget(String t) { + target = t; + } + + public String getTarget() { + return target; + } + + public String toString() { + return "Chain to " + target; + } + + public void dump() { + System.out.println(toString()); + } + + public void init(double sf) { + if (target != null) { + Effect t = AudiobookRecorder.window.effects.get(target); + if (t != null) { + t.init(sf); + } + } + } + + public ArrayList getChildEffects() { + return null; + } + + public String getName() { + return toString(); + } + +}