Conceptually a channel is a time line that runs for the length of a Division. One or more abstractions that have time as their domain may be embedded in the channel in such a way that every time point in the channel that is within the data structure's domain can be used to access the data value of an abstraction at that point. The red and purple lines in the two greenish bars represent the values of two different abstractions both defined on the same channel.
Thus between t0 and tw we can supply a time, say tx1, to "rhythmic energy" and get its value at that point, here, 4. Between tx2 and tx3 we can retrieve time dependent values for both "rhythmic energy" and another abstraction also embedded in the channel. Such abstraction value types are not restricted to numbers, they may be any data type, simple or complex. In their implementation channels take a different form, with the same end results. The domain and its data references are stored in units called ChannelBars. Each channel has one ChannelBar instance in every Measure, each of which may be accessed with the channel's index. In the figure below the dotted rectangle represents the concept of a channel superimposed over its implementation.

Thus the implementation segments the channel data stream into ChannelBars breaking it at bar lines as shown. Within each measure, ChannelBars are stored in an array and accessed by their corresponding channel's Index. The music API provides methods that read channel data either as a continuous stream over the length of a division or by segment, i.e. by measure.
[Serializable]
// inherts from GNode
so it can be placed in graph structures
public
class Channel
: GNode
{
public double
m_staffSSUHeight = 0;
private ChannelInfo m_channelInfo =
null;
The ChannelClassType corresponds to ChannelBar types indicating which subclass of ChannelBars make up the channel.
public
enum
ChannelClassType
{
Undefined,
DiatonicStaff,
PercussionStaff,
Carrier,
Analysis,
}
For for diatonic channel channel bars, ChBarDiatonic, the valid symbols are the cleff symbols. The initial clef of the ChBarDiatonic of the first measure of a division takes this value. ChBarDiatoncis may change cleff but the general tessitura is expected to remain constant and the ChannelClassType remains fixed even if the cleff type changes over the course of the channel.
The m_channeID member is the ID value of the Channel of which this ChannelInfo instance is a member. The Channel
inherits its ID from GNode