         return 0
     }
     
-    var data1: UInt8 {
+    func statusFrom(rawByte:UInt8)->AKMIDIStatus?{
+        return AKMIDIStatus(rawValue: Int(rawByte >> 4))
+    }
+    func channelFrom(rawByte:UInt8)->Int{
+        let status = rawByte >> 4
+        if status < 16 {
+            return Int(rawByte.lowbit())
+        }
+        return 0
+    }
+    
+    public var data1: UInt8 {
         return internalData[1]
     }
     
-    var data2: UInt8 {
+    public var data2: UInt8 {
         return internalData[2]
     }
     

        internalData = Array(internalData.prefix(Int(length!)))
    }
    
    /// Initialize the MIDI Event from a status message
    ///
    /// - Parameters:

    }
    
    /// MIDI Channel
    public var channel: UInt8 {
        let status = internalData[0] >> 4
        if status < 16 {
            return internalData[0].lowbit()
