Skip to content

Instantly share code, notes, and snippets.

@aheze
Last active May 22, 2021 22:46
Show Gist options
  • Save aheze/5dc2be6f9bdfa5249ec4af960582b2b5 to your computer and use it in GitHub Desktop.
Save aheze/5dc2be6f9bdfa5249ec4af960582b2b5 to your computer and use it in GitHub Desktop.
How to play custom audio on Swift Playgrounds for iPad, using SwiftUI. Replace "slow-spring-board" with the name of your audio file.
import AVFoundation
import SwiftUI
import PlaygroundSupport
struct SwiftUIAudioPlayerView: View {
/// the audio player that will play your audio file. Can't be a local variable.
/// Must be a `@State` property because we need to modify it later
@State var audioPlayer: AVAudioPlayer?
var body: some View {
Button(action: {
self.playAudio() /// play audio when tapped
}) {
Text("Play Audio!") /// what the button looks like
}
}
func playAudio() { /// function to play audio
/// the URL of the audio file.
/// forResource = name of the file.
/// withExtension = extension, usually "mp3"
if let audioURL = Bundle.main.url(forResource: "slow-spring-board", withExtension: "mp3") {
do {
try self.audioPlayer = AVAudioPlayer(contentsOf: audioURL) /// make the audio player
self.audioPlayer?.numberOfLoops = 0 /// Number of times to loop the audio
self.audioPlayer?.play() /// start playing
} catch {
print("Couldn't play audio. Error: \(error)")
}
} else {
print("No audio file found")
}
}
}
let swiftuiAudioPlayerView = SwiftUIAudioPlayerView()
PlaygroundPage.current.setLiveView(swiftuiAudioPlayerView)
@aheze
Copy link
Author

aheze commented Jul 7, 2020

Before any of the code, you need to first have an audio file saved in the built-in Files app. Then, you must import it into your Swift Playgrounds project:

  1. Press the "+" icon
  2. Tap the paper icon
  3. Tap Insert From…, then select your audio file

Then replace "slow-spring-board" with its name.

UIKit version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment