23 #include "JackError.h"
24 #include "JackCoreMidiUtil.h"
25 #include "JackCoreMidiVirtualInputPort.h"
34 JackCoreMidiVirtualInputPort::
35 HandleInputEvent(
const MIDIPacketList *packet_list,
void *port,
45 JackCoreMidiVirtualInputPort::
46 JackCoreMidiVirtualInputPort(
const char *alias_name,
const char *client_name,
47 const char *driver_name,
int base_index,
int index,
48 MIDIClientRef client,
double time_ratio,
49 size_t max_bytes,
size_t max_messages):
50 JackCoreMidiInputPort(time_ratio, max_bytes, max_messages)
52 std::stringstream stream;
53 stream <<
"virtual" << (base_index + 1);
54 CFStringRef name = CFStringCreateWithCString(0, stream.str().c_str(),
55 CFStringGetSystemEncoding());
57 throw std::bad_alloc();
59 MIDIEndpointRef destination;
60 OSStatus status = MIDIDestinationCreate(client, name, HandleInputEvent,
72 if (status != noErr) {
73 throw std::runtime_error(GetMacOSErrorString(status));
75 Initialize(alias_name, client_name, driver_name, index, destination);
78 endpoint_list.insert(endpoint);
81 JackCoreMidiVirtualInputPort::~JackCoreMidiVirtualInputPort()
83 OSStatus status = MIDIEndpointDispose(GetEndpoint());
84 if (status != noErr) {
85 WriteMacOSError(
"JackCoreMidiVirtualInputPort [destructor]",
86 "MIDIEndpointDispose", status);