A Player performs notes on one or more instruments.
The role of a Player is to convert a stream of notes into control messages
in a form consumeable by Instruments. Specifically, Instruments consume
NoteOn/NoteOff messages in addition to a control stream carrying arbitrary
parameter value changes. The Player output, Inst
is meant to
be routed to an Instrument Controller
input parameter. Player can
also be connected to control stream consumers via the CC
output.
The only difference between these outputs is that Player manages
polyphony for Instrument connections.
As mentioned elsewhere, Players are autonomous and asynchronous. Notes can come at "any time" and have any duration. In ChucK, this translates to needing their own private shred in which to to take care of business. The Fiddle Runtime detects Players (actually any Controller) and creates+launches shreds for each one. In a Fiddle+ChucK session, the number of live shreds is driven largely by the number of Controllers in your session.
Here's a Player connected to MIDI Device notestream and controlling 4
Instrument instances. Most Instruments are monophonic, ie emit only a
single note at a time. For these instruments, a special Instances
parameter controls the number of copies of the instrument Fiddle will
make available for the Player. Now it's Player's job to distribute
incoming notes, chords, etc to produce as much polyphony as you've
provided for.
Below you can see Player connected to a MIDI Device, remapping CC names for use by BeeThree. A notestream provides the Player a combination of notes and control signals. In the case of MIDI keyboard, the MIDI CC names are often a fixed-feature of the device. Player can remap any input CC name to any output CC name and this allows you, say, to connect your keyboard's pitchwheel to an arbitrary parameter of your instrument.
This example shows a mapping between the MIDI Device's CC1
parameter
to the standard PitchWheel
parameter. It also shows a mapping from
CC2
to BeeThree's custom parameter, ControlTwo
.