Tutorial   Class/Enum List   File List   Compound Members   C interface  

rtmidi_c.h
Go to the documentation of this file.
1 /************************************************************************/
13 /************************************************************************/
14 
19 #include <stdbool.h>
20 #include <stddef.h>
21 #ifndef RTMIDI_C_H
22 #define RTMIDI_C_H
23 
24 #if defined(RTMIDI_EXPORT)
25 #if defined _WIN32 || defined __CYGWIN__
26 #define RTMIDIAPI __declspec(dllexport)
27 #else
28 #define RTMIDIAPI __attribute__((visibility("default")))
29 #endif
30 #else
31 #define RTMIDIAPI //__declspec(dllimport)
32 #endif
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
39 struct RtMidiWrapper {
41  void* ptr;
42  void* data;
43 
45  bool ok;
46 
48  const char* msg;
49 };
50 
52 typedef struct RtMidiWrapper* RtMidiPtr;
53 
55 typedef struct RtMidiWrapper* RtMidiInPtr;
56 
58 typedef struct RtMidiWrapper* RtMidiOutPtr;
59 
61 enum RtMidiApi {
69 };
70 
84 };
85 
94 typedef void(* RtMidiCCallback) (double timeStamp, const unsigned char* message,
95  size_t messageSize, void *userData);
96 
97 
98 /* RtMidi API */
99 
113 RTMIDIAPI int rtmidi_get_compiled_api (enum RtMidiApi *apis, unsigned int apis_size);
114 
117 RTMIDIAPI const char *rtmidi_api_name(enum RtMidiApi api);
118 
121 RTMIDIAPI const char *rtmidi_api_display_name(enum RtMidiApi api);
122 
125 RTMIDIAPI enum RtMidiApi rtmidi_compiled_api_by_name(const char *name);
126 
128 RTMIDIAPI void rtmidi_error (enum RtMidiErrorType type, const char* errorString);
129 
137 RTMIDIAPI void rtmidi_open_port (RtMidiPtr device, unsigned int portNumber, const char *portName);
138 
146 RTMIDIAPI void rtmidi_open_virtual_port (RtMidiPtr device, const char *portName);
147 
151 RTMIDIAPI void rtmidi_close_port (RtMidiPtr device);
152 
156 RTMIDIAPI unsigned int rtmidi_get_port_count (RtMidiPtr device);
157 
165 RTMIDIAPI int rtmidi_get_port_name (RtMidiPtr device, unsigned int portNumber, char * bufOut, int * bufLen);
166 
167 /* RtMidiIn API */
168 
170 RTMIDIAPI RtMidiInPtr rtmidi_in_create_default (void);
171 
183 RTMIDIAPI RtMidiInPtr rtmidi_in_create (enum RtMidiApi api, const char *clientName, unsigned int queueSizeLimit);
184 
186 RTMIDIAPI void rtmidi_in_free (RtMidiInPtr device);
187 
190 RTMIDIAPI enum RtMidiApi rtmidi_in_get_current_api (RtMidiPtr device);
191 
194 RTMIDIAPI void rtmidi_in_set_callback (RtMidiInPtr device, RtMidiCCallback callback, void *userData);
195 
198 RTMIDIAPI void rtmidi_in_cancel_callback (RtMidiInPtr device);
199 
202 RTMIDIAPI void rtmidi_in_ignore_types (RtMidiInPtr device, bool midiSysex, bool midiTime, bool midiSense);
203 
216 RTMIDIAPI double rtmidi_in_get_message (RtMidiInPtr device, unsigned char *message, size_t *size);
217 
218 /* RtMidiOut API */
219 
221 RTMIDIAPI RtMidiOutPtr rtmidi_out_create_default (void);
222 
232 RTMIDIAPI RtMidiOutPtr rtmidi_out_create (enum RtMidiApi api, const char *clientName);
233 
235 RTMIDIAPI void rtmidi_out_free (RtMidiOutPtr device);
236 
239 RTMIDIAPI enum RtMidiApi rtmidi_out_get_current_api (RtMidiPtr device);
240 
243 RTMIDIAPI int rtmidi_out_send_message (RtMidiOutPtr device, const unsigned char *message, int length);
244 
245 
246 #ifdef __cplusplus
247 }
248 #endif
249 #endif
250 

©2003-2021 Gary P. Scavone, McGill University. All Rights Reserved.
Maintained by Gary P. Scavone, gary at music.mcgill.ca