23 #include "JackCoreMidiUtil.h"
24 #include "JackCoreMidiVirtualOutputPort.h"
28 JackCoreMidiVirtualOutputPort::
29 JackCoreMidiVirtualOutputPort(
const char *alias_name,
const char *client_name,
30 const char *driver_name,
int index,
31 MIDIClientRef client,
double time_ratio,
34 JackCoreMidiOutputPort(time_ratio, max_bytes,
37 std::stringstream stream;
38 stream <<
"virtual" << (index + 1);
39 CFStringRef name = CFStringCreateWithCString(0, stream.str().c_str(),
40 CFStringGetSystemEncoding());
42 throw std::bad_alloc();
44 MIDIEndpointRef source;
45 OSStatus status = MIDISourceCreate(client, name, &source);
47 if (status != noErr) {
48 throw std::runtime_error(GetMacOSErrorString(status));
50 Initialize(alias_name, client_name, driver_name, index, source, 0);
53 JackCoreMidiVirtualOutputPort::~JackCoreMidiVirtualOutputPort()
55 OSStatus status = MIDIEndpointDispose(GetEndpoint());
56 if (status != noErr) {
57 WriteMacOSError(
"JackCoreMidiVirtualOutputPort [destructor]",
58 "MIDIEndpointDispose", status);
63 JackCoreMidiVirtualOutputPort::SendPacketList(MIDIPacketList *packet_list)
65 OSStatus status = MIDIReceived(endpoint, packet_list);
66 bool result = status == noErr;
68 WriteMacOSError(
"JackCoreMidiVirtualOutputPort::SendPacketList",
69 "MIDIReceived", status);