23 #include "JackError.h"
24 #include "JackCoreMidiUtil.h"
25 #include "JackCoreMidiVirtualOutputPort.h"
29 JackCoreMidiVirtualOutputPort::
30 JackCoreMidiVirtualOutputPort(
const char *alias_name,
const char *client_name,
31 const char *driver_name,
int base_index,
int index,
32 MIDIClientRef client,
double time_ratio,
35 JackCoreMidiOutputPort(time_ratio, max_bytes,
38 std::stringstream stream;
39 stream <<
"virtual" << (base_index + 1);
40 CFStringRef name = CFStringCreateWithCString(0, stream.str().c_str(),
41 CFStringGetSystemEncoding());
43 throw std::bad_alloc();
45 MIDIEndpointRef source;
46 OSStatus status = MIDISourceCreate(client, name, &source);
57 if (status != noErr) {
58 throw std::runtime_error(GetMacOSErrorString(status));
60 Initialize(alias_name, client_name, driver_name, index, source, 0);
63 endpoint_list.insert(GetEndpoint());
66 JackCoreMidiVirtualOutputPort::~JackCoreMidiVirtualOutputPort()
68 OSStatus status = MIDIEndpointDispose(GetEndpoint());
69 if (status != noErr) {
70 WriteMacOSError(
"JackCoreMidiVirtualOutputPort [destructor]",
71 "MIDIEndpointDispose", status);
76 JackCoreMidiVirtualOutputPort::SendPacketList(MIDIPacketList *packet_list)
78 OSStatus status = MIDIReceived(endpoint, packet_list);
79 bool result = status == noErr;
81 WriteMacOSError(
"JackCoreMidiVirtualOutputPort::SendPacketList",
82 "MIDIReceived", status);