Skip to content
This repository has been archived by the owner on Sep 15, 2020. It is now read-only.

Commit

Permalink
working architecture for oscillator control panel
Browse files Browse the repository at this point in the history
  • Loading branch information
mimetaur committed Jun 25, 2011
1 parent 5b951fd commit 2a0e5fd
Show file tree
Hide file tree
Showing 4 changed files with 120 additions and 68 deletions.
22 changes: 22 additions & 0 deletions src/modulatorp5/ControlPanel.java
@@ -0,0 +1,22 @@
package modulatorp5;

import controlP5.Slider;

public interface ControlPanel {

public static final int SLIDER_WIDTH = 200;
public static final int SLIDER_HEIGHT = 20;
public static final int SLIDER_VERTICAL_SPACER = new Float(SLIDER_HEIGHT * 0.66).intValue();

public void buildInterface();

public void addInitialControls();

public Slider addSlider(String name, float minVal, float maxVal, float curVal);

public void advanceCursorForSlider();

public void rateSlider(float newRate);

public void amountSlider(float newAmount);
}
26 changes: 26 additions & 0 deletions src/modulatorp5/ModulatorP5.java
Expand Up @@ -27,11 +27,13 @@

import processing.core.*;
import java.util.ArrayList;
import controlP5.*;

public class ModulatorP5 {

// parent is a reference to the parent sketch
PApplet parent;
ControlP5 controlP5;

public final static String VERSION = "##version##";

Expand All @@ -40,7 +42,16 @@ public class ModulatorP5 {
public ModulatorP5(PApplet theParent) {
parent = theParent;
parent.registerDraw(this);
controlP5 = new ControlP5(parent);
allModulators = new ArrayList<Modulator>();

welcomeMessage();
}

public ModulatorP5(PApplet theParent, ControlP5 controlP5_) {
parent = theParent;
parent.registerDraw(this);
controlP5 = controlP5_;
allModulators = new ArrayList<Modulator>();

welcomeMessage();
Expand Down Expand Up @@ -73,5 +84,20 @@ public NoiseOscillator createNoiseOscillator() {
allModulators.add(newOsc);
return newOsc;
}

public OscillatorControlPanel createControlPanel(Oscillator oscillator) {
OscillatorControlPanel cp = new OscillatorControlPanel(parent, controlP5, oscillator);
return cp;
}

public OscillatorControlPanel createControlPanel(int x, int y, Oscillator oscillator) {
OscillatorControlPanel cp = new OscillatorControlPanel(parent, controlP5, x, y, oscillator);
return cp;
}

public OscillatorControlPanel createControlPanel(int x, int y, String name, Oscillator oscillator) {
OscillatorControlPanel cp = new OscillatorControlPanel(parent, controlP5, x, y, name, oscillator);
return cp;
}
}

72 changes: 72 additions & 0 deletions src/modulatorp5/OscillatorControlPanel.java
@@ -0,0 +1,72 @@
package modulatorp5;

import java.util.ArrayList;

import processing.core.PApplet;
import controlP5.*;

public class OscillatorControlPanel implements ControlPanel {

private PApplet parent;
private ControlP5 controlP5;
private int x, y;
private int yCursor;
private String groupName;

private ControlGroup controlGroup;

Oscillator oscillator;

OscillatorControlPanel(PApplet parent_, ControlP5 controlP5_, Oscillator oscillator_) {
this(parent_, controlP5_, 0, 0, "Entity", oscillator_);
}

OscillatorControlPanel(PApplet parent_, ControlP5 controlP5_, int x_, int y_, Oscillator oscillator_) {
this(parent_, controlP5_, x_, y_, "Entity", oscillator_);
}

OscillatorControlPanel(PApplet parent_, ControlP5 controlP5_, int x_, int y_, String groupName_, Oscillator oscillator_) {
parent = parent_;
controlP5 = controlP5_;
x = x_;
y = y_;
yCursor = 0;
groupName = groupName_;

oscillator = oscillator_;

buildInterface();
addInitialControls();
}

public void buildInterface() {
controlGroup = controlP5.addGroup(groupName, x, y);
}

public void addInitialControls() {
addSlider("rateSlider", oscillator.getMinRate(), oscillator.getMaxRate(), oscillator.getRate());
addSlider("amountSlider", oscillator.MIN_AMOUNT, oscillator.MAX_AMOUNT, oscillator.getAmount());
}

public Slider addSlider(String name, float minVal, float maxVal, float curVal) {
Slider slider = controlP5.addSlider(name, minVal, maxVal, curVal, 0, yCursor, SLIDER_WIDTH, SLIDER_HEIGHT);
advanceCursorForSlider();
slider.setLabel(controlGroup.name() + " " + name);
slider.setGroup(controlGroup.name());
slider.plugTo(this);
return slider;
}

public void advanceCursorForSlider() {
yCursor = yCursor + (SLIDER_HEIGHT + SLIDER_VERTICAL_SPACER);
}

public void rateSlider(float newRate) {
oscillator.setRate(newRate);
}

public void amountSlider(float newAmount) {
oscillator.setAmount(newAmount);
}

}
68 changes: 0 additions & 68 deletions src/modulatorp5/OscillatorUI.java

This file was deleted.

0 comments on commit 2a0e5fd

Please sign in to comment.