The events visible to one Custom node for one block. More...
#include <custom_node_events.hpp>
Public Attributes | |
| const midi::MidiBuffer * | in = nullptr |
| midi::MidiBuffer * | out = nullptr |
| TriggerContext * | triggers = nullptr |
The events visible to one Custom node for one block.
in is the node's gathered inbound MIDI. A null in means "no events this block" and is not an error: the routed path only allocates an event input port when the compiled shape carries MIDI, so an audio-only graph hands the callback nothing while the reference walk hands it an empty buffer. A conforming callback must treat the two as identical, which is why the parity test compares rendered audio rather than buffer identity.
out is the node's own MIDI output buffer: a real, writable destination that downstream nodes gather from, cleared by the caller immediately before dispatch so nothing a previous block emitted survives into this one. It is nullable on exactly the same terms as in — the routed path's per-node scratch is null when the compiled shape carries no MIDI at all (an audio-only graph), while the reference walk always hands over its per-node buffer — so a conforming callback must null-check it and treat a null as "this graph has no event lane", never as an error. Appends respect the buffer's realtime capacity: an add() past capacity is dropped and recorded, and the executor derives this node's out_incomplete from those drops after the callback returns, exactly as it does for a plugin node.
| const midi::MidiBuffer* pulp::host::CustomNodeEventBlock::in = nullptr |
| midi::MidiBuffer* pulp::host::CustomNodeEventBlock::out = nullptr |
| TriggerContext* pulp::host::CustomNodeEventBlock::triggers = nullptr |