Cleanup
[carla.git] / source / includes / clap / ext / note-ports.h
blob10bb2d87e0dc90dc24954360076aa8c330b99bc7
1 #pragma once
3 #include "../plugin.h"
4 #include "../string-sizes.h"
6 /// @page Note Ports
7 ///
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";
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
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.
35 clap_id id;
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
44 // [main-thread]
45 uint32_t (*count)(const clap_plugin_t *plugin, bool is_input);
47 // get info about about a note port.
48 // [main-thread]
49 bool (*get)(const clap_plugin_t *plugin,
50 uint32_t index,
51 bool is_input,
52 clap_note_port_info_t *info);
53 } clap_plugin_note_ports_t;
55 enum {
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
68 // [main-thread]
69 uint32_t (*supported_dialects)(const clap_host_t *host);
71 // Rescan the full list of note ports according to the flags.
72 // [main-thread]
73 void (*rescan)(const clap_host_t *host, uint32_t flags);
74 } clap_host_note_ports_t;
76 #ifdef __cplusplus
78 #endif