public class Matrix extends Controller<Matrix>
/**
* ControlP5 Matrix
*
* A matrix can be used for example as a sequencer, a drum machine.
*
* find a list of public methods available for the Matrix Controller
* at the bottom of this sketch.
*
* by Andreas Schlegel, 2012
* www.sojamo.de/libraries/controlp5
*
*/
import controlP5.*;
ControlP5 cp5;
Dong[][] d;
int nx = 10;
int ny = 10;
void setup() {
size(700, 400);
cp5 = new ControlP5(this);
cp5.addMatrix("myMatrix")
.setPosition(50, 100)
.setSize(200, 200)
.setGrid(nx, ny)
.setGap(10, 1)
.setInterval(200)
.setMode(ControlP5.MULTIPLES)
.setColorBackground(color(120))
.setBackground(color(40))
;
cp5.getController("myMatrix").getCaptionLabel().alignX(CENTER);
// use setMode to change the cell-activation which by
// default is ControlP5.SINGLE_ROW, 1 active cell per row,
// but can be changed to ControlP5.SINGLE_COLUMN or
// ControlP5.MULTIPLES
d = new Dong[nx][ny];
for (int x = 0;x
autoHeight, autoSpacing, autoWidth
acceptClassList, ACTION_BROADCAST, ACTION_CLICK, ACTION_DOUBLE_PRESS, ACTION_DRAG, ACTION_END_DRAG, ACTION_ENTER, ACTION_EXIT, ACTION_LEAVE, ACTION_MOVE, ACTION_PRESS, ACTION_PRESSED, ACTION_RELEASE, ACTION_RELEASE_OUTSIDE, ACTION_RELEASED, ACTION_RELEASEDOUTSIDE, ACTION_START_DRAG, ACTION_WHEEL, ACTIVE, ALL, ALT, AQUA, ARC, ARRAY, BACKSPACE, BASELINE, BITFONT, BLACK, BLUE, BOOLEAN, BOTTOM, BOTTOM_OUTSIDE, CAPTIONLABEL, CENTER, CHECKBOX, COMMANDKEY, CONTROL, controlEventClass, CUSTOM, DECREASE, DEFAULT, DELETE, delimiter, DONE, DOWN, DROPDOWN, ELLIPSE, ENTER, ESCAPE, EVENT, eventMethod, FADEIN, FADEOUT, FIELD, FLOAT, FUCHSIA, GRAY, GREEN, grixel, HALF_PI, HIDE, HIGHLIGHT, HORIZONTAL, IDLE, IMAGE, INACTIVE, INCREASE, INTEGER, INVALID, J2D, JSON, KEYCONTROL, LEFT, LEFT_OUTSIDE, LIME, LINE, LIST, LOAD, MAROON, MENU, METHOD, MOVE, MULTI, MULTIPLES, NAVY, OLIVE, ORANGE, OVER, P2D, P3D, pathdelimiter, PI, PRESS, PRESSED, PRINT, PURPLE, RED, RELEASE, RELEASED, RESET, RIGHT, RIGHT_OUTSIDE, SAVE, SERIALIZED, SHIFT, SILVER, SINGLE, SINGLE_COLUMN, SINGLE_ROW, SPRITE, standard56, standard58, STRING, SWITCH, SWITCH_BACK, SWITCH_FORE, synt24, TAB, TEAL, THEME_A, THEME_CP52014, THEME_CP5BLUE, THEME_GREY, THEME_RED, THEME_RETRO, TOP, TOP_OUTSIDE, TRANSITION_WAIT_FADEIN, TREE, TWO_PI, UP, VALUELABEL, VERBOSE, VERTICAL, WAIT, WHITE, YELLOW
Constructor and Description |
---|
Matrix(ControlP5 theControlP5,
ControllerGroup<?> theParent,
java.lang.String theName,
int theCellX,
int theCellY,
int theX,
int theY,
int theWidth,
int theHeight) |
Matrix(ControlP5 theControlP5,
java.lang.String theName)
Convenience constructor to extend Matrix.
|
Modifier and Type | Method and Description |
---|---|
Matrix |
clear() |
boolean |
get(int theX,
int theY) |
int[][] |
getCells() |
int |
getInterval() |
int |
getMode() |
static int |
getX(float thePosition) |
static int |
getX(int thePosition) |
static int |
getY(float thePosition) |
static int |
getY(int thePosition) |
boolean |
isPlaying() |
void |
mousePressed() |
void |
mouseReleased() |
Matrix |
pause() |
Matrix |
play() |
Matrix |
plugTo(java.lang.Object theObject) |
Matrix |
plugTo(java.lang.Object theObject,
java.lang.String thePlugName) |
void |
remove()
removes a controller from controlP5.
|
Matrix |
set(int theX,
int theY,
boolean theValue)
set the state of a particular cell inside a matrix.
|
Matrix |
setBackground(int c) |
Matrix |
setCells(int[][] theCells) |
Matrix |
setGap(int theX,
int theY) |
Matrix |
setGrid(int theCellX,
int theCellY) |
Matrix |
setInterval(int theInterval)
set the speed of intervals in millis iterating through the matrix.
|
Matrix |
setMode(int theMode)
use setMode to change the cell-activation which by default is ControlP5.SINGLE_ROW, 1 active
cell per row, but can be changed to ControlP5.SINGLE_COLUMN or ControlP5.MULTIPLES
|
Matrix |
setValue(float theValue) |
Matrix |
stop() |
Matrix |
trigger(int theColumn) |
Matrix |
update()
updates the value of the controller without having to set the value explicitly.
|
Matrix |
updateDisplayMode(int theMode) |
Matrix |
updateInternalEvents(processing.core.PApplet theApplet)
a method for putting input events like e.g.
|
add, addCallback, addListener, addListenerFor, align, bringToFront, bringToFront, changeValue, continuousUpdateEvents, draw, getAbsolutePosition, getAddress, getArrayValue, getArrayValue, getBehavior, getCaptionLabel, getColor, getControllerPlugList, getControlWindow, getDecimalPrecision, getDefaultValue, getHeight, getId, getInfo, getLabel, getMax, getMin, getName, getParent, getPickingColor, getPointer, getPosition, getProperty, getProperty, getStringValue, getTab, getValue, getValueLabel, getView, getWidth, getWindow, hide, init, isActive, isBroadcast, isInside, isLabelVisible, isListening, isLock, isMouseOver, isMousePressed, isMoveable, isUpdate, isUserInteraction, isVisible, keyEvent, linebreak, listen, listenerSize, lock, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, onChange, onClick, onDoublePress, onDrag, onDraw, onEndDrag, onEnter, onLeave, onMove, onPress, onRelease, onReleaseOutside, onStartDrag, onWheel, plugTo, plugTo, registerProperty, registerProperty, registerTooltip, remove, removeBehavior, removeCallback, removeCallback, removeListener, removeListenerFor, removeListenersFor, removeProperty, removeProperty, set, setAbsolutePosition, setAddress, setArrayValue, setArrayValue, setBehavior, setBroadcast, setCaptionLabel, setColor, setColorActive, setColorBackground, setColorCaptionLabel, setColorForeground, setColorLabel, setColorValue, setColorValueLabel, setDecimalPrecision, setDefaultValue, setGroup, setGroup, setHeight, setId, setImage, setImage, setImages, setImages, setImages, setLabel, setLabelVisible, setLock, setMax, setMin, setMouseOver, setMousePressed, setMoveable, setParent, setPosition, setPosition, setSize, setSize, setStringValue, setTab, setTab, setUpdate, setUserInteraction, setValueLabel, setValueSelf, setView, setView, setVisible, setWidth, show, toString, unlock, unplugFrom, unplugFrom, unregisterTooltip, updateAbsolutePosition, updateEvents, updateSize, x, y
public Matrix(ControlP5 theControlP5, ControllerGroup<?> theParent, java.lang.String theName, int theCellX, int theCellY, int theX, int theY, int theWidth, int theHeight)
public Matrix(ControlP5 theControlP5, java.lang.String theName)
theControlP5
- theName
- /**
* ControlP5 extending Controllers
*
* the following example shows how to extend the Controller class to
* create customizable Controllers. You can either extend the Controller class itself,
* or any class that extends Controller itself like the Slider, Button, DropdownList, etc.
*
* How to:
*
* 1) do a super call to the convenience constructor requiring
* 2 parameter (ControlP5 instance, name)
*
* 2) the Controller class has a set of empty methods that allow you to capture
* inputs from the mouse including
* onEnter(), onLeave(), onPress(), onRelease(), onClick(), onScroll(int), onDrag()
* These you can override and include functionality as needed.
*
* 3) use method getPointer() to return the local (relative)
* xy-coordinates of the controller
*
* 4) after instantiation custom controllers are treated the same
* as default controlP5 controllers.
*
* by Andreas Schlegel, 2012
* www.sojamo.de/libraries/controlp5
*
*/
import controlP5.*;
ControlP5 cp5;
PApplet p;
void setup() {
size(400, 400);
cp5 = new ControlP5(this);
// create 2 groups to show nesting of custom controllers and
//
Group g1 = cp5.addGroup("a").setPosition(0,100).setWidth(180);
Group g2 = cp5.addGroup("b").setPosition(0,10).setWidth(180);
g2.moveTo(g1);
// create 2 custom Controllers from class MyButton
// MyButton extends Controller and inherits all methods accordingly.
new MyButton(cp5, "b1").setPosition(0, 0).setSize(180, 200).moveTo(g2);
new MyButton(cp5, "b2").setPosition(205, 15).setSize(180, 200);
}
void draw() {
background(0);
}
// b1 will be called from Controller b1
public void b1(float theValue) {
println("yay button "+theValue);
}
public void controlEvent(ControlEvent theEvent) {
println("controlEvent : "+theEvent);
}
// Create a custom Controller, please not that
// MyButton extends Controller,
// is an indicator for the super class about the type of
// custom controller to be created.
class MyButton extends Controller {
int current = 0xffff0000;
float a = 128;
float na;
int y;
// use the convenience constructor of super class Controller
// MyButton will automatically registered and move to the
// default controlP5 tab.
MyButton(ControlP5 cp5, String theName) {
super(cp5, theName);
// replace the default view with a custom view.
setView(new ControllerView() {
public void display(PGraphics p, Object b) {
// draw button background
na += (a-na) * 0.1;
p.fill(current,na);
p.rect(0, 0, getWidth(), getHeight());
// draw horizontal line which can be moved on the x-axis
// using the scroll wheel.
p.fill(0,255,0);
p.rect(0,y,width,10);
// draw the custom label
p.fill(128);
translate(0,getHeight()+14);
p.text(getName(),0,0);
p.text(getName(),0,0);
}
}
);
}
// override various input methods for mouse input control
void onEnter() {
cursor(HAND);
println("enter");
a = 255;
}
void onScroll(int n) {
println("scrolling");
y -= n;
y = constrain(y,0,getHeight()-10);
}
void onPress() {
println("press");
current = 0xffffff00;
}
void onClick() {
Pointer p1 = getPointer();
println("clicked at "+p1.x()+", "+p1.y());
current = 0xffffff00;
setValue(y);
}
void onRelease() {
println("release");
current = 0xffffffff;
}
void onMove() {
println("moving "+this+" "+_myControlWindow.getMouseOverList());
}
void onDrag() {
current = 0xff0000ff;
Pointer p1 = getPointer();
float dif = dist(p1.px(),p1.py(),p1.x(),p1.y());
println("dragging at "+p1.x()+", "+p1.y()+" "+dif);
}
void onReleaseOutside() {
onLeave();
}
void onLeave() {
println("leave");
cursor(ARROW);
a = 128;
}
}
public Matrix clear()
public boolean get(int theX, int theY)
public int[][] getCells()
public int getInterval()
public int getMode()
public static int getX(float thePosition)
public static int getX(int thePosition)
public static int getY(float thePosition)
public static int getY(int thePosition)
public boolean isPlaying()
public void mousePressed()
public void mouseReleased()
public Matrix pause()
public Matrix play()
public Matrix plugTo(java.lang.Object theObject)
plugTo
in class Controller<Matrix>
public Matrix plugTo(java.lang.Object theObject, java.lang.String thePlugName)
plugTo
in class Controller<Matrix>
public void remove()
Controller
remove
in interface ControllerInterface<Matrix>
remove
in class Controller<Matrix>
public Matrix set(int theX, int theY, boolean theValue)
theX
- theY
- theValue
- public Matrix setBackground(int c)
public Matrix setCells(int[][] theCells)
public Matrix setGap(int theX, int theY)
public Matrix setGrid(int theCellX, int theCellY)
public Matrix setInterval(int theInterval)
theInterval
- intpublic Matrix setMode(int theMode)
theMode
- return Matrixpublic Matrix setValue(float theValue)
setValue
in interface ControllerInterface<Matrix>
setValue
in class Controller<Matrix>
theValue
- floatpublic Matrix stop()
public Matrix trigger(int theColumn)
public Matrix update()
Controller
update
in interface ControllerInterface<Matrix>
update
in class Controller<Matrix>
Controller.setUpdate(boolean)
,
Controller.isUpdate()
public Matrix updateDisplayMode(int theMode)
public Matrix updateInternalEvents(processing.core.PApplet theApplet)
ControllerInterface
updateInternalEvents
in interface ControllerInterface<Matrix>
updateInternalEvents
in class Controller<Matrix>
ControllerInterface.updateInternalEvents
processing library controlP5 by Andreas Schlegel. (c) 2006-2015