So the iPhone 3.0 SDK does allow you to play music from the iPod library from within your application. However, you do not have file access to the mp3s, nor can you control the output other than the standard iPod player controls, i.e. play, stop, skip, and volume. This means you can’t add effects, you can’t speed up or slow down a song, and I don’t think you can even crossfade songs from the library.
That sucks. The 3.0 SDK is still too restrictive. Imagine the amazing 3.0 apps that would come out if you could manipulate the output of your library. A real scratch interface for DJs. A live BPM counter. Reaktor-like stutter and loop apps. A pedometer that syncs music to your step. All of these ideas are things I wanted to try with the 3.0 SDK, and none of them are possible.
Likewise, accessories that come out are more or less going to be limited to one application. You could make a MIDI interface but it’s only going to work with your app. You could make a keyboard accessory, but it’s only going to work with your application. You’d have to copy and paste what you typed from your application to other apps. Even if you allowed other developers to use your keyboard framework to allow it to work in their applications, the keyboard still wouldn’t work in native apps like Safari, Mail, SMS, etc.
Apple, the iPhone is an amazing device, and you’re still being far too restrictive with it! Opening up the library to at least read access, allowing device makers to write drivers for their accessories, and giving users and developers at least limited shared file system access would do wonders for the potential for the iPhone.