Fiddle allows you to visualize intricacies of your ChucK compositions by scanning for special OSC messages produced as your compositions run. The
Plot Panelsupports multiple plotting surfaces and the Fiddle Runtime includes a number of nodes that route signals and events to the Plot Panel for your inspection.
A signal plot depicts time-dependent values associated with an audio or control signal.
Note that a
Plot Surfaces Menu is available by clicking on the menu
in the upper right corner of the panel. In this case there are three
in this panel.
Your ChucK compositions can trigger delivery of multiple
plotting surfaces and this menu allows you to switch between them. In
addition, a single plot can present multiple signals. In this example,
we have a single signal,
ch0 on the plot surface,
Since audio signals have a lot of dynamic range, it's common to need
to scale the plot according to your signal strength. Here we've scaled
the signal plot by 581, since the RMS is quite small in this example.
At right are the key parameters of the
CCSampler Node that are
found in this simple example.
Other plotting nodes include
NSPlot and are covered below.
As described elsewhere,
CCSampler samples an incoming
signal at a requested
sampling rate. The result can be routed to a
consumer of control signals and can also be plotted as a signal and/or
as an FFT.
If you select both, you'll get two distinct plotting surfaces
due to the fact that the units of an FFT and a Signal plot aren't
Sometimes your incoming signal doesn't fit well within the default bounds
of the plot. You can use your
Mouse Wheel to modify the vertical axis
scale. Typically values need to be greater than 1 to perceive the
signal detail. When you have both
generate an always positive RMS signal which is more accurate than the
positive and negative signal-sample obtained when not computing the FFT.
RMS signal values the scale factor must typically be larger still.
If you select
PlotFFT and 1024 FFT samples you'll get something like this.
The axes for a Spectrum plot are decibels on the y axis (ie: it's
logarithmic) and linear frequency on the X axis.
And here's one with 256 FFT samples (NB:this parameter can't be set "live").
You can choose an update rate with the CCSampler's
Rate parameter. Try Rate
1::second to get a feel for its affect.
Note-plots like the following can be generated via the
In this example, we see a range of
MIDI notes from note 60 to note 80.
note-column are three
channel-columns. This is the case
because this example has three "pianos" all contributing to the same "roll".
Here, channel 0 produces green notes and these appear on the left-most side in each note-column that was touched by this channel. In this display older notes are at the top of the display and the newest notes are below older notes. So this piano roll scrolls from bottom to top.
Each colored rectangle represents a note. Taller notes were held for a longer
time period. As with signal plots you can use the
Mouse Wheel to control
the scaling of the vertical axis. This is reflected in the value for
time-window as shown at the top of the graph.
At right we see the parameters for a single
NSPlot node. The
represents the plot surface that we'd like our notes to be associated with.
Each of the three NSPlot nodes in this example have the same value for this
NoteMax parameters configure
the note plot and the values from the first channel requesting the plot
surface are the values that are respected. Generally this values should be
the same for all nodes targeting a shared plot surface if only to prevent
NoteColor parameter can select the color of the notes that derive
from this channel. You can use standard css color notation.
Leaving the value empty will cause Fiddle to select a color randomly.
In addition to generating notestream plots, NSPlot offers the convenience of
also generating CC signal plots. The key difference between signal plots
that arise from
CCPlot nodes from those produced by
is that the CC sampling rate is controlled elsewhere. And, while audio signals
reside within the [-1, 1] value range CC values can take any values. The
CCMax values provide the default plotting range for the connected
CC generator. The
CCChannels is required to initialize a plot surface and
represents the number of CCs that are expected for plotting. Since a single
NoteStream connection can produce arbitrary CCs you may need to increase this
value to visualize the CCs you want.
The Box2D plotting surface presents a rendering of a Box2D world and is updated as the Box2D physics simulation proceeds within a running ChucK session. Here's an example of Box2D plot in action.
When enabled, ghosting draws a recent history of body locations in your scene. For complex scenes, this can result in drawing slowdowns or just too much slop. For simple pendula setups, there's no denying it, ghosting looks cool. For additional insight into your Box2D data, keep in mind that signal plots are a great way to focus on your control signals (eg the X channel of position or the velocity magnitude, etc).