4 #include "../string-sizes.h"
8 /// This extension provides a way for the plugin to describe its current note ports.
9 /// If the plugin does not implement this extension, it won't have note input or output.
10 /// The plugin is only allowed to change its note ports configuration while it is deactivated.
12 static CLAP_CONSTEXPR
const char CLAP_EXT_NOTE_PORTS
[] = "clap.note-ports";
18 enum clap_note_dialect
{
19 // Uses clap_event_note and clap_event_note_expression.
20 CLAP_NOTE_DIALECT_CLAP
= 1 << 0,
22 // Uses clap_event_midi, no polyphonic expression
23 CLAP_NOTE_DIALECT_MIDI
= 1 << 1,
25 // Uses clap_event_midi, with polyphonic expression (MPE)
26 CLAP_NOTE_DIALECT_MIDI_MPE
= 1 << 2,
28 // Uses clap_event_midi2
29 CLAP_NOTE_DIALECT_MIDI2
= 1 << 3,
32 typedef struct clap_note_port_info
{
33 // id identifies a port and must be stable.
34 // id may overlap between input and output ports.
36 uint32_t supported_dialects
; // bitfield, see clap_note_dialect
37 uint32_t preferred_dialect
; // one value of clap_note_dialect
38 char name
[CLAP_NAME_SIZE
]; // displayable name, i18n?
39 } clap_note_port_info_t
;
41 // The note ports scan has to be done while the plugin is deactivated.
42 typedef struct clap_plugin_note_ports
{
43 // number of ports, for either input or output
45 uint32_t (*count
)(const clap_plugin_t
*plugin
, bool is_input
);
47 // get info about about a note port.
49 bool (*get
)(const clap_plugin_t
*plugin
,
52 clap_note_port_info_t
*info
);
53 } clap_plugin_note_ports_t
;
56 // The ports have changed, the host shall perform a full scan of the ports.
57 // This flag can only be used if the plugin is not active.
58 // If the plugin active, call host->request_restart() and then call rescan()
59 // when the host calls deactivate()
60 CLAP_NOTE_PORTS_RESCAN_ALL
= 1 << 0,
62 // The ports name did change, the host can scan them right away.
63 CLAP_NOTE_PORTS_RESCAN_NAMES
= 1 << 1,
66 typedef struct clap_host_note_ports
{
67 // Query which dialects the host supports
69 uint32_t (*supported_dialects
)(const clap_host_t
*host
);
71 // Rescan the full list of note ports according to the flags.
73 void (*rescan
)(const clap_host_t
*host
, uint32_t flags
);
74 } clap_host_note_ports_t
;