Event Inputs clarification

Can someone provide me with some context around Event buses

The again example sets up one event bus with one channel which seems normal.

What would be the scenarios you would use more than one channel on an event bus?

I can sort of imagine several event buses if you had several midi instruments - but not multiple channels within a bus.

(I am trying to work out how to handle some initialization routines in my own code - and don’t want to default myself into a corner)

For a bus of type MediaTypes::kEvent the channelCount corresponds to the number of supported MIDI channels by this bus.

If you have an event bus with channelCount == 2, the host should only send for example NoteOnEvent with channel set to 0 or 1 to the plug-in.

Is it safe to assume that multiple event buses are redundant?

There seems to be a single event list in the process call with no way to distinguish which bus it came in on.

Different channels on a single bus - as per the previous reply - correspond to different midi channels. So that’s cool I will pull them out and put them on their own channels. Things such as scale, data and chord events don’t have channels, so I will assume they control all midi events on all channels until the next chord event as per this cubase user guide http://images.junostatic.com/manual/571131-01U.pdf

Chord events are representations of chords that control or transpose playback on
MIDI and instrument tracks.
Chord events alter the pitches of MIDI notes, if their track is set up to follow the
chord track.
Chord events have a specific start position. Their end, however, is determined by
the start of the next chord event. They can have a root note, a type, a tension, and
a bass note

Is it safe to assume that multiple event buses are redundant?

No, the other way around, channels are an old MIDI concept. An Event Bus can have a name, so it’s intention can be expressed.
So if you have a multi timbral instrument, you set up as much event busses as you have audio busses. For example you have two audio busses, the first one outputs a Piano and the second one an Organ. Now you can set the name of the event bus that feeds the piano to ‘Piano’ and the other one to ‘Organ’.
Now the user can better identify where it’s event data is going. If you would use two channels in one event bus, the user has only a number as identifier.

There seems to be a single event list in the process call with no way to distinguish which bus it came in on.

It’s in the Event struct (see busIndex member).

cheers
Arne

Ahhhh the light dawns!!

That’s good. It means I can map individual buses to what I am calling “nodes” - and each node can have a list of the channels its handling - and thanks to units nodes can have child nodes.

WooHoo!