Coding control components
core:custom
is the base type for components that work with control signals within
any graph type. You have access to a range of useful functions - see the CORE Javadocs included
with the IDE to see a full, up-to-date list. The API is similar to the non-graphical
Processing APIs, but does not include functions not suitable for real-time operation.
Key method hooks
The key method hooks you can override inside a core:custom
component are -
init()
: called each time the pipeline is started and any time the code is updated. Because this method is called on code updates, it needs to be suitable for real-time usage.update()
: called every update cycle (audio buffer, video frame, etc.). If your component reacts solely to input and doesn't need to be called every cycle, remove this method for efficiency.starting()
: called after init whenever the pipeline is started (not called on code updates).
Input
Use the @In
annotation on a method to provide a port with which to receive control values -
@In(1) void in(double input) {
// do something with input
}
The method will be automatically be called at the correct time with the input value.
Supported types are double
, int
, String
and Value
subclasses.
You can also receive input using the @T
annotation on a method,
or using the @OnChange
annotation to define a
method to call when a property changes value.
Output
Use the @Out
annotation on a field of type Output
to provide
control signal output ports on your component.
The Output
object supports methods for sending double
, String
and Value
subclasses,
as well as an empty signal.
@Out(1) Output out;
@In(1) void in(double input) {
out.send(input);
}