Question

I'm a new developer working on an app that allows users to record vocals over a track. I have some tracks that I am selling on iTunes and I would like for users to be able to purchase the a tracks from inside the app and load them to be recorded over.

So what I want is for a user to select a track listing from a table, purchase the track in-app, and be able to press button that will switch views to an audio recorder that loads that track to be recorded over. I've been scouring the documentation and I'm struggling to figure out whether this is even possible.

Does anyone know if this is possible, and can anyone point me in the right direction as to where to begin piecing the code together?

Thank you!

Was it helpful?

Solution

Short answer: Yes it's possible to do what you're trying to do

Long answer: It's possible to access the audio data from any song in the music library using an AVAssetReader (more info here How would you connect an iPod library asset to an Audio Queue Service and process with an Audio Unit? and in a bunch of other SO questions)

You'll probably need to copy the song file into the app's documents directory first to work with it. Then you'll probably need to use Audio Units to mix the microphone input with the audio, but that's a whole other topic that I'm not particularly familiar with so you'll have to search SO for more info on that, there's plenty of related questions.

As for purchasing the song, the easiest way would probably be to just link to the song in the iTunes store and have them buy it there, I believe you can even be an iTunes affiliate so you can possibly make additional money on the purchases that way. Once they have the song, it will be in their library and you can use the AVAssetReader to get it.

You could have the songs listed in a table, and in the didSelectRowAtIndexPath: delegate method you could open the link to the iTunes store for that particular song.

Hope that helps.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top