Jump to content
  • The Computer Audiophile
    The Computer Audiophile

    iOS Roon Audio Endpoint With iPeng - Almost Perfect

    Fairly recently Jörg Schwieder, the creator of iPeng, announced a really cool add-on to the app. The add-on, or in-app-purchase, enabled an iOS device to turn into a Roon audio endpoint. Yes, I know Android devices can be Roon endpoints without any hoops to jump through, but due to Apple's rules, the Roon team hasn't enabled this feature yet for iOS. 

     

    This is actually a really cool feature. I've been streaming audio to my Android Pixel phone for a while now and I love that Roon sees it as a Roon endpoint. Now, I can do the same with with my iPad. Not sold on this yet? In addition to streaming audio to your iOS device, say out in the backyard, it's also possible to connect a USB DAC to the iOS device and stream directly from a Roon core to iOS and a DAC. 

     

    I was talking to David Solomon of Peachtree Audio about an upcoming event we are doing in Atlanta (stay tuned for details), and I told him about using iPeng to make an iPad a Roon audio endpoint. He immediately connected his iPad to a Peachtree nova150 and flipped out. Seriously, he was super happy. There are many more use cases for this, even if it's not the ultimate in high end, knuckle dragging audiophiledom. 

     

    However, all is not perfect in the Roon audio endpoint / iOS device world just yet. I did several hours of testing and discovered an issue. Fortunately Jörg has been really cool to communicate with and is looking very hard into what may be happening. More details below. 

     

    roon.PNG

    Roon sending audio to iPad Air 2

     

     

     

    What you need

     

    To make this work, you need:

    1. Roon running with the Enable Squeezebox Support option enabled. 
    2. The Roon iOS app running on an iPad or iPhone or iPad Touch.
    3. The iPeng 9 iOS app with.

     

     

    Initial Setup

     

    The initial setup is very simple. As I mentioned, enable Squeezebox support within Roon on the Setting > Setup tab. 

     

     

    enable-sb-support.png

    Roon > Settings > Setup > Enable Squeezebox Support

     

     

    Launch iPeng and complete the iPeng Playback in-app-purchase for $4.99. I'd show screenshots of this, but I've already purchase it and the option is no longer available. Once this is purchased, iPeng displays a menu item that says Roon App. Tapping this, displays a large With to Roon App in the main window. Tapping the Switch to Roon App icon, launches the Roon iOS app. 

    Once the iOS Roon app is launched, go to Settings > Audio and look for the Squeezebox heading. Under this heading your iPad should be displayed and say iPeng. Enable this device and you're now ready to send audio to an iOS endpoint. 

     

     

    ipeng.PNG

    iPeng with Playback in-app-purchase installed

     

     

     

     

    audio-devices.png

    Roon > Settings > Audio > Enable iPad/iPeng endpoint

     

     


    The Caveats

     

    I've had terrific success sending 16 bit / 44.1 kHz audio to my iPad Air 2 from a Roon ROCK. The success has been largely whel I select the music for playback on the iPad itself in the Roon app. Switching to my desktop Roon remote app and trying to send audio to the iPad has given me mixed results. Sometimes the audio plays and sometimes it doesn't. 

     

    Back to the issue I found through my testing. At 16/44.1 the iPeng / Roon / iOS combination is bit perfect. Meaning, the bits are sent from the Roon core and output to a USB DAC unaltered. Unfortunately, when playing 24/88.2 and 24/96 music, something is altering the bits. Currently iPeng doesn't support sample rates over 96 kHz, so my testing of these was only to see if the music was downsampled and played, which it did nicely. 

     

    Back to the supported sample rates up through 24/96. Using a both a dCS Rossini DAC and the combination of a Berkeley Audio Design Alpha USB and Alpha DAC Reference Series 2, I was able to determine that 24/88.2 and 24/96 content is passed to the DAC at 24/88.2 and 24/96. There is no resampling going on, but the bit depth is altered in some fashion. Yes, the audio is still 24 bit, as indicated by the dCS Rossini, but the least significant bit is not being sent to the DAC without alteration, as identified by the Berkeley combination. 

     

    For example, when playing 24/96 audio through the Apple USB 3 camera connection kit and out to the Berkeley combo, all audio is bit perfect when using the FLAC Player app. This app is a standalone app that outputs local music from the iOS device. When playing the exact same music using Roon and iPeng, the 24/88.2 and 24/96 audio is altered after about 3-5 seconds of playback. The first tiny bit of audio is bit perfect, but is soon (3 to 5 seconds) altered. 

     

    Exchanging emails with Jörg, he was eager to identify what was happening. He suggested there could be several areas where this alteration is happening. Here is some of Jörg's email to me (without an confidential details).

     

    1. Volume control. iPeng usually doesn’t apply digital volume control (unlike the Squeezeboxes) but hands over volume information downstream to iOS but iOS might still apply digital volume control, under iOS Apps can’t speak directly to the USB driver. So to be sure output volume should be set to 100% or at least you should test with that setting.
    2. The equalizer in iPeng needs to be off (the default)
    3. The server must not apply any replay gain etc. This is a point where I’m not 100% sure how Roon’s Squeezebox emulation works. I’ll have to look into this, if this is the reason maybe we could just ignore it or something. In the Squeezebox system there are several different gain control mechanisms (and iPeng even has more) that are being applied in different ways. Basic volume control is usually digital (except in iPeng) so changes the data. Then there is an additional replay gain field that’s being used to normalize volume between tracks and to apply fade effects. This is separate from the main volume control and iPeng also uses a separate mixer for it if applied. What makes things more difficult is that this method is also being used temporarily during transitional volume changes, this has to do with the timing of volume changes (the gain information is sent earlier than the volume information which can lag by several seconds) but any effects due to this should be limited to the time during which you change volume. But any differences between how Roon handles these various gain fields and LMS does might make iPeng apply the gain mixer.
    4. Which formats do you use to stream? iPeng currently only supports linear PCM formats (no floating point PCM) and only 24 bit word size and a maximum of 96kHz sample rate, everything else probably will have to be transcoded by the server. 

     

     

    Taking Jörg's advice, I double-checked that all my volume controls were at 100% even the volume controls that didn't have any effect on the audio. With the camera connection kit and the dCS or Berkeley USB devices, the volume has no effect. Per Jörg's suggestion, I also tested Roon sending to a Sonore Signature Rendu SE setup as a Squeezelite endpoint. I was able to send audio bit perfect up through 24/192. This leads be to believe the issue is somewhere in iPeng or the Roon / iPeng combination. 

    At any rate, I'm sure Jörg will figure out what's going on. He is a very capable developer and was very willing to work with me on the issue. 

     

     

    Wrap-Up

     

    The combination of Roon, iPeng, and Roon Remote on iOS is really great for sending audio directly to the iOS device. There are many use cases that cry out for such a convenient way to play music. Audio that is 16 bit / 44.1 currently plays bit perfect when output to headphones directly connected to an iOS device or to a USB DAC connected to the iOS device. I tested this with many DACs including an AudioQuest DragonFly, dCS Rossini, and Berkeley Audio Design RS2. iOS doesn't support all USB DACs, but that has nothing to do with iPeng and Roon. Although iPeng supports audio up through 24/96, I was unable to send this content bit perfect to my DACs. There is some alteration taking place. I have confidence that iPeng developer Jörg will resolve the issue in the not too distant future. Plus, I believe he is working on some great additional features such as higher sample rate support and even DSD. All good stuff.  


     

    Links: iPeng | Roon

     

     

     

     




    User Feedback

    Recommended Comments



    On 8/6/2017 at 5:28 PM, Jörg Schwieder said:

    The music comes out of the iPhone or iPad. Speakers or headphones. Or a USB DAC connected to it.

    That's the idea :)

    And yes, you can redirect that to other devices through Bluetooth or AirPlay but most of the time that's not what you want.

    Sending music through my Samsung Note 4 might be a very useful End Point. This is probably a stupid question but how does one do this same thing with an Android phone? I cannot seem to find anything on this topic in the Roon Forums.

    Share this comment


    Link to comment
    Share on other sites

    53 minutes ago, mattinminneapolis said:

    Sending music through my Samsung Note 4 might be a very useful End Point. This is probably a stupid question but how does one do this same thing with an Android phone? I cannot seem to find anything on this topic in the Roon Forums.

     

    I thought the Roon Android app had playback already.

    Share this comment


    Link to comment
    Share on other sites

    20 hours ago, Dr Tone said:

     

    I thought the Roon Android app had playback already.

    You are correct. I tested out the Bluetooth and oh boy is the DAC in my phone terrible. Although I can see this capability as valuable for those that have newer DAPs from the likes of Onkyo, Pioneer, A&K etc.

    Share this comment


    Link to comment
    Share on other sites

    @The Computer Audiophile

     

    I just tried this on my iPhone, and after a few hiccups, got it working. The hiccup was that I had the old iPeng Classic app on my iPhone, back from a couple years ago when I was running a SBT. Once I "bought" iPeng 9, it all worked. I say bought in quotes, because even though I had to buy it on the App store, it seemed to recognize I had the Classic, and didn't charge me. Or maybe I got lucky. I did have to pay for the in-app purchase to "Enable Playback."

     

    Anyway, I think I discovered the non-bit-perfect issue from another angle. I wanted to play music files from my Roon Core, to my iPhone 7 connected to a Dragonfly Black via a CCK. Out of curiosity, I fired up some sample MQA files in my library, and without exception, the MQA shade (purple) would not light up on the DF. I ensured the volume was set to 100%, but to no avail.

     

    I sure hope Jörg finds a fix. Is there a way for me to contact him directly with this additional finding?

    Share this comment


    Link to comment
    Share on other sites

    14 minutes ago, austinpop said:

    @The Computer Audiophile

     

    I sure hope Jörg finds a fix. Is there a way for me to contact him directly with this additional finding?

     

    You can just write me through the App, there's a link under "Help" and it will give me details about your setup.
    I'm not 100% sure what Roon exactly sends to a non-MQA device like iPeng.
    I have recently done a lot of testing on the data flow through iPeng and I really can't see where iPeng would touch any data. I'll have to talk to Roon again whether there are any player specific modifications being made or the like but unless you have somehow enabled replay gain (unlikely, I haven't seen that in my Roon testing) or the equalizer iPeng just doesn't touch the data at all. iOS might do that downstream of iPeng but that would surprise me because my DoP testing works well.

    One thing, though: iPeng currently only supports up to 96kHz sample rate so if your MQA is converted to higher sample rate output this will be transcoded. And also, iPeng might insert silence before your track starts, if that affects any code detection it might also be an issue.

    I'm a bit surprised about your App Store experience, it should have been the other way around, you'd have to pay for the App (iPeng 9) but the playback feature is what you can migrate from iPeng Classic for free. That said, if you purchased iPeng 9 through one of the upgrade bundles you might come off pretty cheap under certain circumstances depending on the currency your store is on, prices here can fluctuate widely due to the somewhat complicated way in which Apple calculates price changes and exchange rate changes (compared to US$).

    Share this comment


    Link to comment
    Share on other sites

    48 minutes ago, Jörg Schwieder said:

     

    You can just write me through the App, there's a link under "Help" and it will give me details about your setup.
    I'm not 100% sure what Roon exactly sends to a non-MQA device like iPeng.
    I have recently done a lot of testing on the data flow through iPeng and I really can't see where iPeng would touch any data. I'll have to talk to Roon again whether there are any player specific modifications being made or the like but unless you have somehow enabled replay gain (unlikely, I haven't seen that in my Roon testing) or the equalizer iPeng just doesn't touch the data at all. iOS might do that downstream of iPeng but that would surprise me because my DoP testing works well.


    One thing, though: iPeng currently only supports up to 96kHz sample rate so if your MQA is converted to higher sample rate output this will be transcoded. And also, iPeng might insert silence before your track starts, if that affects any code detection it might also be an issue.

    I'm a bit surprised about your App Store experience, it should have been the other way around, you'd have to pay for the App (iPeng 9) but the playback feature is what you can migrate from iPeng Classic for free. That said, if you purchased iPeng 9 through one of the upgrade bundles you might come off pretty cheap under certain circumstances depending on the currency your store is on, prices here can fluctuate widely due to the somewhat complicated way in which Apple calculates price changes and exchange rate changes (compared to US$).

     

    Hi Jörg,

     

    Roon doesn't do any MQA unfolding (yet). The files I was referring to are 24/44.1 and 24/48 MQA-encoded files. But I just remembered something. The Dragonfly is an MQA renderer, which means it cannot do a full decode of the original MQA files. It needs a SW decoder, also known as an MQA Core, to do the first unfold to 24/88.2 or 24/96. Currently, only the Tidal desktop apps on Mac/Win, and Audirvana Plus 3 have licensed the MQA Core. Roon does not have an MQA core as yet.

     

    So - I will correct myself. I offered my original observation that MQA files were not being decoded on the Dragonfly as another proof point for what Chris was reporting - i.e. an issue with 24-bit files.

     

    But as explained, even if the problem did not exist, my experiment was flawed, as I won't get the DF to render MQA files via the Roon/iPeng route until Roon ships with an MQA Core.

     

    Sorry for the false alarm. FWIW - my use of the Roon/iPeng path on my iPhone is for casual listening, so this 24-bit-perfect issue isn't that big of a deal for me.

     

    As for the app purchase experience, yeah I can't explain it. I fired up iPeng Classic. After a bit, it gave me the option to purchase the playback feature for $4.99, which I did. Then I realized I wasn't seeing the Roon App option. At this point, I decided to "buy" iPeng 9 (for $8.99). I followed the usual path on the App Store, but looks like I was never charged.

    Share this comment


    Link to comment
    Share on other sites

    4 hours ago, austinpop said:

     

    1. Currently, only the Tidal desktop apps on Mac/Win, and Audirvana Plus 3 have licensed the MQA Core. Roon does not have an MQA core as yet.

     

    2. As for the app purchase experience, yeah I can't explain it. I fired up iPeng Classic. After a bit, it gave me the option to purchase the playback feature for $4.99, which I did. Then I realized I wasn't seeing the Roon App option. At this point, I decided to "buy" iPeng 9 (for $8.99). I followed the usual path on the App Store, but looks like I was never charged.

     

    1. Ah, ok, that makes sense.
    It's worse, iPeng would probably need an MQA core for this to work as well.

     

    2. Interesting. Could it be you purchased iPeng 9 before, too? Maybe when it was still called iPeng 7?

    Share this comment


    Link to comment
    Share on other sites

    4 hours ago, Jörg Schwieder said:

    2. Interesting. Could it be you purchased iPeng 9 before, too? Maybe when it was still called iPeng 7?

     

    You know, I think you're right! I had removed the app from my phone when I sold my SBT, so yesterday, when I reinstalled it, I just assumed I had been using classic, but maybe I'd already bought iPeng 7. It's ringing a bell.

     

    Hopefully that solves the mystery.

    Share this comment


    Link to comment
    Share on other sites




    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now




×
×
  • Create New...