---
title: AVMIDIPlayer
framework: avfaudio
role: symbol
role_heading: Class
path: avfaudio/avmidiplayer
---

# AVMIDIPlayer

An object that plays MIDI data through a system sound module.

## Declaration

```swift
class AVMIDIPlayer
```

## Overview

Overview For more information about preparing your app to play audio, see Configuring your app for media playback. important: For more advanced MIDI playback capabilities, like playing MIDI data through an external synthesizer or sampler, use AVAudioEngine instead.

## Topics

### Creating a MIDI player

- [init(contentsOf:soundBankURL:)](avfaudio/avmidiplayer/init(contentsof:soundbankurl:).md)
- [init(data:soundBankURL:)](avfaudio/avmidiplayer/init(data:soundbankurl:).md)

### Controlling playback

- [prepareToPlay()](avfaudio/avmidiplayer/preparetoplay().md)
- [play(_:)](avfaudio/avmidiplayer/play(_:).md)
- [AVMIDIPlayerCompletionHandler](avfaudio/avmidiplayercompletionhandler.md)
- [stop()](avfaudio/avmidiplayer/stop().md)
- [isPlaying](avfaudio/avmidiplayer/isplaying.md)

### Configuring playback settings

- [rate](avfaudio/avmidiplayer/rate.md)

### Accessing player timing

- [currentPosition](avfaudio/avmidiplayer/currentposition.md)
- [duration](avfaudio/avmidiplayer/duration.md)

### Initializers

- [init(contentsOfURL:soundBankURL:)](avfaudio/avmidiplayer/init(contentsofurl:soundbankurl:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Basic playback and recording

- [AVAudioPlayer](avfaudio/avaudioplayer.md)
- [AVAudioRecorder](avfaudio/avaudiorecorder.md)
