 
     /// Send Messsage from MIDI event data
     /// - Parameter event: Event so send
-    public func sendEvent(_ event: MIDIEvent) {
-        sendMessage(event.data)
+    public func sendEvent(_ event: MIDIEvent, endpointsUIDs: [MIDIUniqueID]? = nil) {
+        sendMessage(event.data, endpointsUIDs: endpointsUIDs)
     }
 
     /// Send a Note On Message

    public func sendNoteOffMessageWithTime(noteNumber: MIDINoteNumber,
                                           velocity: MIDIVelocity,
                                           channel: MIDIChannel = 0,
                                           time: MIDITimeStamp = 0) {
        let noteCommand: MIDIByte = MIDIByte(0x80) + channel
        let message: [MIDIByte] = [noteCommand, noteNumber, velocity]
        self.sendMessageWithTime(message, time: time)
    }

    /// Send Message with data with timestamp

        var packet: UnsafeMutablePointer<MIDIPacket> = MIDIPacketListInit(packetListPointer)
        packet = MIDIPacketListAdd(packetListPointer, 1_024, packet, time, data.count, data)

        var endpointsRef: [MIDIEndpointRef] = []

        if let endpointsUIDS = endpointsUIDs {
            for endpointUID in endpointsUIDS {
                if let endpoint = endpoints[endpointUID] {endpointsRef.append(endpoint)}
            }
        } else {
            endpointsRef = Array(endpoints.values)
        }

        for endpoint in endpointsRef {
            let result = MIDISend(outputPort, endpoint, packetListPointer)
            if result != noErr {
                Log("error sending midi: \(result)", log: OSLog.midi, type: .error)
            }
        }

        if virtualOutputs != [0] {
            virtualOutputs.forEach {MIDIReceived($0, packetListPointer)}
        }
    }

