23 #include "JackCoreMidiUtil.h"
24 #include "JackCoreMidiVirtualInputPort.h"
33 JackCoreMidiVirtualInputPort::
34 HandleInputEvent(
const MIDIPacketList *packet_list,
void *port,
44 JackCoreMidiVirtualInputPort::
45 JackCoreMidiVirtualInputPort(
const char *alias_name,
const char *client_name,
46 const char *driver_name,
int index,
47 MIDIClientRef client,
double time_ratio,
48 size_t max_bytes,
size_t max_messages):
49 JackCoreMidiInputPort(time_ratio, max_bytes, max_messages)
51 std::stringstream stream;
52 stream <<
"virtual" << (index + 1);
53 CFStringRef name = CFStringCreateWithCString(0, stream.str().c_str(),
54 CFStringGetSystemEncoding());
56 throw std::bad_alloc();
58 MIDIEndpointRef destination;
59 OSStatus status = MIDIDestinationCreate(client, name, HandleInputEvent,
62 if (status != noErr) {
63 throw std::runtime_error(GetMacOSErrorString(status));
65 Initialize(alias_name, client_name, driver_name, index, destination);
68 JackCoreMidiVirtualInputPort::~JackCoreMidiVirtualInputPort()
70 OSStatus status = MIDIEndpointDispose(GetEndpoint());
71 if (status != noErr) {
72 WriteMacOSError(
"JackCoreMidiVirtualInputPort [destructor]",
73 "MIDIEndpointDispose", status);