             play()
             return
         }
-    }
-
-    // called in the connection chain to attach the playerNode
-    public func makeInternalConnections() {
-        guard let engine = mixerNode.engine else {
-            Log("Engine is nil", type: .error)
-            return
-        }
-        engine.attach(playerNode)
-        engine.connect(playerNode, to: mixerNode, format: file?.processingFormat)
     }
     
     // MARK: - Init

/// played from disk. If you want seamless looping then buffer it. You can still loop from disk, but the
/// loop will not be totally seamless.

public class AudioPlayer: Node, HasInternalConnections {

    /// Nodes providing input to this node.
    public var connections: [Node] { [] }

        self.buffer = buffer
    }
}

extension AudioPlayer: HasInternalConnections {

    // called in the connection chain to attach the playerNode
    public func makeInternalConnections() {
        guard let engine = mixerNode.engine else {
            Log("Engine is nil", type: .error)
            return
        }
        engine.attach(playerNode)
        engine.connect(playerNode, to: mixerNode, format: file?.processingFormat)
    }

}
