     ///   - value:      Value of the controller
     ///   - channel:    Channel on which the controller value has changed
     ///
-    static public func controllerChange(controller: MIDIByte,
-                                        value: MIDIByte,
-                                        channel: MIDIChannel) -> AKMIDIEvent {
-        return AKMIDIEvent(status: .controllerChange,
-                           channel: channel,
-                           byte1: controller,
-                           byte2: value)
-    }
-    
-    static public func midiEventsFrom(packetListPointer: UnsafePointer< MIDIPacketList>) -> [AKMIDIEvent]{
-        var outEvents: [AKMIDIEvent] = Array()
-        
-        for packet in packetListPointer.pointee {
-            // a coremidi packet may contain multiple midi events
-            outEvents.append(AKMIDIEvent(packet: packet))
-        }
-        return outEvents
+    public init(controllerChange controller: MIDIByte,
+                value: MIDIByte,
+                channel: MIDIChannel) {
+      self.init(status: .controllerChange,
+                channel: channel,
+                byte1: controller,
+                byte2: value)
+    }
+    
+    static public func midiEventsFrom(packetListPointer: UnsafePointer< MIDIPacketList>) -> [AKMIDIEvent] {
+        return packetListPointer.pointee.map { AKMIDIEvent(packet: $0) }
     }
 }

    ///   - velocity:   MIDI Note velocity (0-127)
    ///   - channel:    Channel on which the note appears
    ///
    static public func noteOn(noteNumber: MIDINoteNumber,
                              velocity: MIDIVelocity,
                              channel: MIDIChannel) -> AKMIDIEvent {
        return AKMIDIEvent(status: .noteOn,
                           channel: channel,
                           byte1: noteNumber,
                           byte2: velocity)
    }
    
    /// Create note off event

    ///   - data: Program change byte
    ///   - channel: Channel on which the program change appears
    ///
    public init(programChange data: MIDIByte,
                channel: MIDIChannel) {
      self.init(status: .programChange,
                channel: channel,
                byte1: data,
                byte2: 0)
    }
    
    /// Create controller event
