Inter-app audio compatibility for iOS apps made with libPD

Inter-app audio in iOS apps is a feature that allows compatible apps to either send and/or receive audio to and/or from other compatible apps. So, how can you make your app inter-app audio compatible when you’ve used libPD/pd-for-iOS (Pure Data patch translator for iOS) to build it?

Making an audio app that supports inter-app Audio might be quite troublesome because of the lack of information resources… Especially when it comes to an audio app built with libPD, there seems to be literally no information at all available online! Here’s what I’ve found out while making the inter-app Audio compatible version of Echo Pitch. The most helpful text I’ve found online is the one provided by the www.raywenderlich.com tutorials. Before you start developing, make sure that you have an app able to bridge inter-app audio compatible apps, like garage band or the free app Audreio (which I’m also using for testing).

The steps described below are summarising the aforementioned tutorial pdf, but give additional info on the following:

1) integrating an app built with libPD for iOS (and not with directly using audio units) and

2) making the app both an audio sender and a receiver in the inter-app audio “conversation” between apps.

The steps are the following:

1) Enable inter-app audio int he app capabilities:

app_capabilities.png

2) Tweak the Info.plist file of your app by adding the necessary audio component description addition. You need to right click on the info.plist file and “Open As -> Source Code”. For making the app both a sender (“aurg”) and a receiver (“aurx”) you need to add both descriptions before the last </dict> line:

<key>AudioComponents</key>
    <array>
        <dict>
            <key>manufacturer</key>
            <string>avax</string>
            <key>name</key>
            <string>EchoPitch</string>
            <key>type</key>
            <string>aurx</string>
            <key>subtype</key>
            <string>iasp</string>
            <key>version</key>
            <integer>1</integer>
        </dict>
        <dict>
            <key>manufacturer</key>
            <string>avax</string>
            <key>name</key>
            <string>EchoPitch</string>
            <key>type</key>
            <string>aurg</string>
            <key>subtype</key>
            <string>iasp</string>
            <key>version</key>
            <integer>1</integer>
        </dict>
    </array> Read More