Qobuz, BubbleUPnP and Nova - gapless not working

Posted by: Alley Cat on 08 June 2018

I cannot play gapless albums on my Nova unless I play from downloaded files on:

1 - WD NAS with Twonky

2 - connected USB device

This is fine for CD rips or HD purchases (ignoring metadata issues), but what I really want to do is stream gapless albums using Qobuz Sublime.

So far these methods do not work with my Nova:

- Chromecasting via Qobuz iOS app

- Logging into Qobuz and playing via Audirvana on Mac

- Using Qobuz desktop app on Mac

For one reason or another I do not want Java on my Mac installation to run BubbleUPnP. I was planning to set up a Raspberry Pi for this but have not done so yet.

Now, this may be unconventional but I am running a Raspberry Pi distro on the Mac in Virtual Box.

First attempt at using BubbleUPnP a few weeks ago ended up in frustration - tonight I've tried a different approach

So, fired up the Virtual Pi then followed the Other Java platforms instructions copied at the bottom.

So I have the software in the Music folder on the Pi temporarily, have launched it and setup as follows:

1 - Selected Nova and ticked 'create an OpenHome media renderer' and named the Room 'Nova Pi'.

2 - Using Linn Kazoo on iOS Nova Pi is identified

3 - Entered Qobuz login credentials in Kazoo

4 - Selected a gapless album (Marillion's Misplaced Childhood)

5 - Used the play icon to play the whole album

6 - Kazoo responds saying '10 tracks send to DS' or similar

7 - Listened - not gapless

Any ideas/pointers here?  I'm starting to think my Nova simply cannot do UPnP playback gapless.

Thanks in advance.

Other Java platforms (Linux, Raspberry Pi, NAS, ...)

Download BubbleUPnP Server

BubbleUPnP Server is distributed as an archive containing a jar file.

  1. unpack the archive in a directory
  2. on unix platforms make launch.sh executable: chmod +x launch.sh
  3. on unix platforms run launch.sh, on Windows run launch.bat. Java 7 or higher must be installed and the "java" executable must be in your PATH
  4. point your Web Browser to http://localhost:58050 to show the configuration interface
  5. for Internet access with Android BubbleUPnP, configure your firewall / Router NAT to allow access to TCP port 58050 (see server configuration below)

If you want transcoding support you will need to install ffmpeg on your system.

Alternatively you can run the server with:

java -jar BubbleUPnPServerLauncher.jar
Posted on: 08 June 2018 by Alley Cat

Just tried mconnect player on iOS which supposedly supports gapless 'on renderer' if it supports it, or 'in app' but neither works for me.

I'm really starting to think that the Uniti devices do not support gapless streaming properly using DLNA/UPnp protocols, and I find it quite alarming that such a fundamental feature which seems to be present on older streamers and Musos may not have been implemented.  Gapless streaming should be a core feature of an audiophile player not something I'm scratching my head over and trying all manner of 'workarounds' to achieve.

https://forums.naimaudio.com/t...-from-display-remote

https://forums.naimaudio.com/t...63#73511715559159763

 

Posted on: 09 June 2018 by Simon-in-Suffolk

Interesting... the BubbleUPnP Server itself builds up the queued play list sent it by the control app... whether it be LUMIN, Kazoo etc. So the server sends media straight after the previous media has been teansferred irrespective of control app, and it’s down to renderer / server communication.

Now in the BubbleSoft UPnP Server ‘music renderer’ tab there is tick box for Gapless Playing under the Open Home setting... there is a note to say not all renderer support this... and there is a link to some documentation that lists tested renderers. There is no Naim device listed, but the NDX does appear to support pushed gapless operation... with only the occasional slightest of discontinuities. The guidance does say, if selected Gapless operation fails to work with your Open Home renderer, then it should be disabled.

BTW for if you really need transcoding you will need to compile and link a recent version of ffmpeg as well as LAME which appears a dependency of ffmpeg.. I haven’t bothered, as I use a separate DAC to my NDX renderer now and since doing so FLAC, ALAC and WAV male no real difference from a SQ perspective.. which is rather useful.

Posted on: 09 June 2018 by Eloise

I thought I read somewhere that the new platform (Nova, Atom, Star, etc) doesn’t support gapless via UPnP (only with the Naim app).  Hopefully it can be reintroduced via firmware!

Posted on: 09 June 2018 by Simon-in-Suffolk

If so that is disappointing, and feels kind of un intuitive, as Gapless playing is generally nothing to do with control app... In native Naim classic streamer operation, the media is pulled by the renderer, and simply the next media file in the renderer’s playlist memory is spooled into the buffer before the previous track has completed... hence Gapless is achieved... no real complexity.

DSD Gapless is  more involved because of how the codecs work and so its a little involved to remove ticks and blips between Gapless tracks, but that’s another matter.

Posted on: 09 June 2018 by nbpf

Qobuz gapless streaming works fine with the upmpdcli renderer, no matter whether this is controlled via Linn Kazoo, BubbleUPnP (in Android) or through the Lumin control point. Thus, this seems to be a deficiency of the Naim renderer or of the way the OpenHome renderer created by BubbleUPnP Server wraps the Naim renderer. It is perhaps not completely surprising given that Naim renderers are not UPnP/DLNA renderers, I understand.

Posted on: 09 June 2018 by nbpf
Eloise posted:

I thought I read somewhere that the new platform (Nova, Atom, Star, etc) doesn’t support gapless via UPnP (only with the Naim app).  Hopefully it can be reintroduced via firmware!

Than the new platform sucks, I would argue!

Posted on: 09 June 2018 by Simon-in-Suffolk
nbpf posted:

Qobuz gapless streaming works fine with the upmpdcli renderer, no matter whether this is controlled via Linn Kazoo, BubbleUPnP (in Android) or through the Lumin control point. Thus, this seems to be a deficiency of the Naim renderer or of the way the OpenHome renderer created by BubbleUPnP Server wraps the Naim renderer. It is perhaps not completely surprising given that Naim renderers are not UPnP/DLNA renderers, I understand.

Other than the classic series a Naim renderers support Gapless via BubbleUPnP Server fine... certainly my NDX does... there is no particular magic involved here.

it might be something with the new streamers to do with the larger spooling buffers and the latency before playback commences... just speculating here and not entirely convinced... would need to look at Wireshark on the line to see what is happening underneath the bonnet with the new streamers.

Posted on: 09 June 2018 by Nick Lees

The latest firmware doesn’t play well with BubbleUPnP Server on the Unitis. While I had the Star it was the only irritating thing about it. The previous firmware supported gapless IIRC.

According to Steve Harris this is down to a non-conformity in the Bubble software that the classic streamers tolerate but the Uniti stuff doesn’t. When I moaned about it, Steve said they were looking into making it work again.

Thankfully, form a Qobuz point of view in back on the NDX as a front end.

Posted on: 09 June 2018 by Alley Cat
nbpf posted:

Qobuz gapless streaming works fine with the upmpdcli renderer

I need to revisit that in the other thread.

I assume Tidal does gapless satisfactorily via Naim app due to the integration.

While I know it's partly due to the fact there isn't similar tight integration with Qobuz, I find it quite incredible that gapless playback doesn't seem to be easily supported (if at all) using standard DLNA/OpenHome  commands - I mean this is not a cheap streamer, and lack of gapless for internet streams makes many many albums unbearable.  If I have to purchase and download every gapless album  it makes streaming packages pretty expensive - like having a large part of their collection unplayable adequately.

Having held off buying an audiophile streamer for years I'm seriously starting to wonder if I'd be better off looking at other options out there. 

Posted on: 09 June 2018 by Alley Cat
Nick Lees posted:

The latest firmware doesn’t play well with BubbleUPnP Server on the Unitis. While I had the Star it was the only irritating thing about it. The previous firmware supported gapless IIRC.

According to Steve Harris this is down to a non-conformity in the Bubble software that the classic streamers tolerate but the Uniti stuff doesn’t. When I moaned about it, Steve said they were looking into making it work again.

Thankfully, form a Qobuz point of view in back on the NDX as a front end.

Oddly Nick, I was wondering if the latest firmware did as I'm back on 2.3 (8574) as I wasn't enjoying 2.6.

Perhaps it worked in even older firmware.

If this is fixable in software then there's a bit of hope, but if there's any kind of hardware dependency which is lacking I may be up the creek.

Posted on: 09 June 2018 by Simon-in-Suffolk

AC, go for a demo.. this often is a lot more straightforward and easier than it sounds... sounds like there may be a firmware funny on the new streamers which Naim are aware of... 

Posted on: 09 June 2018 by Alley Cat
Simon-in-Suffolk posted:

AC, go for a demo.. this often is a lot more straightforward and easier than it sounds... sounds like there may be a firmware funny on the new streamers which Naim are aware of... 

Sorry Simon do you mean a demo of other devices, or a Nova in a store?

Posted on: 09 June 2018 by Simon-in-Suffolk

I meant see if you can get a demo of a Nova... even at home ... where you can see what works and what doesn’t... I guess one shouldn’t rely on this forum for a feature capability list...

Posted on: 09 June 2018 by SimonPeterArnold

The whole gapless issues I have had across many upnp renderers over the years it's the reason I ditched it and moved to using squeezeboxes and now use Roon. Upnp may be an open standard but it's implementstion across different products isnt and I never got it to work how I wanted it after many years of trying.

Posted on: 09 June 2018 by Simon-in-Suffolk

Yeah, at least Naim got it working well with their classic series streamers across a few implementations, I’m sure they’ll get that sorted with the newer devices too... interestingly I have discovered a Google Cast doesn’t support Gapless properly either..

i think the issue about a UPnP being an open standard is missing the point... it is deliberately flexible in terms of how it can be used. a set of building blocks if you like, and Sonos use it to great effect using their implementation profile. However to get interworking in an open inter vendor way other than the most trivial of cases, it needs profiling for interoperability, which is where DLNA comes in... you could argue that Gapless is more an issue with DLNA than UPnP... because it can be achieved with UPnP building blocks... just not in a consistent way which arguably DLNA should define.

Posted on: 09 June 2018 by nbpf
Alley Cat posted:
nbpf posted:

Qobuz gapless streaming works fine with the upmpdcli renderer

I need to revisit that in the other thread.

I assume Tidal does gapless satisfactorily via Naim app due to the integration.

While I know it's partly due to the fact there isn't similar tight integration with Qobuz, I find it quite incredible that gapless playback doesn't seem to be easily supported (if at all) using standard DLNA/OpenHome  commands - I mean this is not a cheap streamer, and lack of gapless for internet streams makes many many albums unbearable.  If I have to purchase and download every gapless album  it makes streaming packages pretty expensive - like having a large part of their collection unplayable adequately.

Having held off buying an audiophile streamer for years I'm seriously starting to wonder if I'd be better off looking at other options out there. 

All systems based on MPD and upmpdcli have no issues with gapless streaming from Qobuz, Tidal, etc. to the best of my knowledge. At least, I have not come across posts -- here or in the CA Forum -- reporting gapless issues in devices that use these programs. These include the Sonore micro- and ultraRendu, the SoTM renderers, the Innuos and many others. This is not rocket science and if the new Naim platform has issues, this is because Naim do not care to make their devices usable with other control points than the Naim app. It is their choice in much the same way as it is our choice to buy or not to buy Naim streamers.    

Posted on: 09 June 2018 by nbpf
Simon-in-Suffolk posted:

I meant see if you can get a demo of a Nova... even at home ... where you can see what works and what doesn’t... I guess one shouldn’t rely on this forum for a feature capability list...

Even worse is that fact that one cannot rely on precise product specifications. Putting together a decent list of the features that are currently supported and of those that will be supported via software updates is not that difficult and would avoid misunderstandings, disappointments and waste of time. It would also make the work of dealers a little bit easier, I think.

Posted on: 09 June 2018 by Alley Cat
Simon-in-Suffolk posted:

I meant see if you can get a demo of a Nova... even at home ... where you can see what works and what doesn’t... I guess one shouldn’t rely on this forum for a feature capability list...

I've actually had a Nova since Autumn 2017 after returning a faulty Atom, I guess I made some assumptions regarding gapless, which I quickly realised didn't work via Chromecast (though Huge suggested it should be possible if implemented in software).

I was hopeful Audirvana would do the trick but alas no.

Admittedly I've not spent enough time trying various fiddly software solutions, and don't have a good enough in depth understanding of UPnp/DLNA, maybe I'm missing something obvious.

Again, lack of a proper manual for the new Uniti devices makes it hard to look up specs of what may and may not be supported 'at a glance'.

 

Posted on: 09 June 2018 by Alley Cat

Can anyone make any sense of this Audirvana debug info listing supported protocols on the Nova to determine if it should work?

Gapless is listed with a Yes, but I'd need to search manually for all the supported protocols which are unfamiliar to me.

Audirvana Plus rev. 3.2.7 (3138) debug information:
running on Mac OS X 10.11.6 with 16384MB RAM

User preferences:
Remote control: IR: off, Media Keys: on (with volume control: on)

Playlists
Use UTF-8 for all: on
Start playback at launch with audio file: on

Volume knob control in rotation axis

Sample rate converter
Apple CoreAudio with no forced upsampling
Polarity inversion: global=off, per track=on

Volume control
DAC only
Max volume limit = 100.0%

AudioUnits not in use

SysOptimizer enabled:
Priority: Extreme
Spotlight: on
TimeMachine: on
iDevices USB: off

iTunes settings:
iTunes integrated Mode: off
Completely deactivate iTunes playback: on
iTunes volume control: active
iTunes play position control: active
iTunes safe factor: 1

Library settings:
Sync list : 1 folders
Manual (2018-06-01 22:09:49 +0000): /Volumes/4TB WD Data - 1/Audirvana Library
Database path: /Users/me/Library/Application Support/Audirvana
iTunes Synchronization: inactive

Audio settings:
Hog Mode: on
Direct Mode: on
Integer Mode: on Mode 1
Max Mem for audio buffers: 896MB
Max Sample rate limit: None
Sample rate switching latency: None

Preferred device: UPnP: Lounge Model UID:Naim Audio Ltd. Lounge UID:uuid:X

Selected device:
UPnP device at http://192.168.1.156:47525/X.xml
ID 0x0 Lounge Manufacturer:Naim Audio Ltd.
Model UID:Naim Audio Ltd. Lounge UID:uuid:X

6 available sample rates up to 192000Hz
44100
48000
88200
96000
176400
192000
Volume control: No
Auto-detect MQA devices: Yes
Not a MQA device, user set to not MQA
DSD capability: Raw DSD (MSB)
Preferred stereo channels L:0 R:1
Channel bitmap: Ox3, layout:
Channel 0 mapped to 0
Channel 1 mapped to 1
UPnP/DLNA supported protocols:
http-get:*:text/xmlLNA.ORG_PN=DIDL_S
http-get:*:audio/vnd.dlna.adtsLNA.ORG_PN=HEAACv2_L2_320
http-get:*:audio/x-ms-wmaLNA.ORG_PN=WMAFULL
http-get:*:audio/x-ms-wmaLNA.ORG_PN=WMABASE
http-get:*:audio/3gppLNA.ORG_PN=HEAACv2_L2_320
http-get:*:audio/mp4LNA.ORG_PN=HEAACv2_L2_320
http-get:*:audio/l16;rate=48000;channels=1LNA.ORG_PN=LPCM
http-get:*:audio/l16;rate=48000;channels=2LNA.ORG_PN=LPCM
http-get:*:audio/l16;rate=44100;channels=1LNA.ORG_PN=LPCM
http-get:*:audio/l16;rate=44100;channels=2LNA.ORG_PN=LPCM
http-get:*:audio/mpegLNA.ORG_PN=MP3
rtsp-rtp-udp:*:text/xmlLNA.ORG_PN=DIDL_S
rtsp-rtp-udp:*:audio/vnd.dlna.adtsLNA.ORG_PN=HEAACv2_L2_320
rtsp-rtp-udp:*:audio/x-ms-wmaLNA.ORG_PN=WMAFULL
rtsp-rtp-udp:*:audio/x-ms-wmaLNA.ORG_PN=WMABASE
rtsp-rtp-udp:*:audio/3gppLNA.ORG_PN=HEAACv2_L2_320
rtsp-rtp-udp:*:audio/mp4LNA.ORG_PN=HEAACv2_L2_320
rtsp-rtp-udp:*:audio/l16;rate=48000;channels=1LNA.ORG_PN=LPCM
rtsp-rtp-udp:*:audio/l16;rate=48000;channels=2LNA.ORG_PN=LPCM
rtsp-rtp-udp:*:audio/l16;rate=44100;channels=1LNA.ORG_PN=LPCM
rtsp-rtp-udp:*:audio/l16;rate=44100;channels=2LNA.ORG_PN=LPCM
rtsp-rtp-udp:*:audio/mpegLNA.ORG_PN=MP3
http-get:*:audio/x-flac:*
http-get:*:audio/3gpp:*
http-get:*:audio/x-m4a:*
http-get:*:audio/x-wav:*
http-get:*:audio/l16;rate=48000;channels=1:*
http-get:*:audio/l16;rate=48000;channels=2:*
http-get:*:audio/flac:*
http-get:*:audio/x-ms-wma:*
http-get:*:audio/x-dsf:*
http-get:*:audio/vnd.dlna.adts:*
http-get:*:audio/x-dff:*
http-get:*:audio/vorbis:*
http-get:*:text/xml:*
http-get:*:audio/x-aiff:*
http-get:*:audio/ogg:*
http-get:*:audio/x_pm_flac:*
http-get:*:application/ogg:*
http-get:*:audio/m4a:*
http-get:*:audio/wav:*
http-get:*:audio/mpeg:*
http-get:*:audio/l16;rate=44100;channels=1:*
http-get:*:audio/l16;rate=44100;channels=2:*
http-get:*:audio/mp4:*
http-get:*:audio/aiff:*
http-get:*:audio/aac:*
http-get:*:audio/wave:*
rtsp-rtp-udp:*:audio/x-flac:*
rtsp-rtp-udp:*:audio/3gpp:*
rtsp-rtp-udp:*:audio/x-m4a:*
rtsp-rtp-udp:*:audio/x-wav:*
rtsp-rtp-udp:*:audio/l16;rate=48000;channels=1:*
rtsp-rtp-udp:*:audio/l16;rate=48000;channels=2:*
rtsp-rtp-udp:*:audio/flac:*
rtsp-rtp-udp:*:audio/x-ms-wma:*
rtsp-rtp-udp:*:audio/x-dsf:*
rtsp-rtp-udp:*:audio/vnd.dlna.adts:*
rtsp-rtp-udp:*:audio/x-dff:*
rtsp-rtp-udp:*:audio/vorbis:*
rtsp-rtp-udp:*:text/xml:*
rtsp-rtp-udp:*:audio/x-aiff:*
rtsp-rtp-udp:*:audio/ogg:*
rtsp-rtp-udp:*:audio/x_pm_flac:*
rtsp-rtp-udp:*:application/ogg:*
rtsp-rtp-udp:*:audio/m4a:*
rtsp-rtp-udp:*:audio/wav:*
rtsp-rtp-udp:*:audio/mpeg:*
rtsp-rtp-udp:*:audio/l16;rate=44100;channels=1:*
rtsp-rtp-udp:*:audio/l16;rate=44100;channels=2:*
rtsp-rtp-udp:*:audio/mp4:*
rtsp-rtp-udp:*:audio/aiff:*
rtsp-rtp-udp:*:audio/aac:*
rtsp-rtp-udp:*:audio/wave:*
DLNA 1.5: Yes
Gapless playback: Yes
Can play native DSD: Yes
Number of channels: 2
Use as stereo device only: No

1 output streams:
Number of active channels: 2, in 1 stream(s)
Channel #0 :Stream 0 channel 0
Channel #1 :Stream 0 channel 1

Stream ID 0x0 0 channels starting at 0
16 virtual formats:
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 44.1kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 44.1kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 88.2kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 88.2kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 176.4kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 176.4kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 48kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 48kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 96kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 96kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 192kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 192kHz
2 ch Non-mixable linear PCM Interleaved 8 little endian Signed Integer 352.8kHz
2 ch Non-mixable linear PCM Interleaved 8 little endian Signed Integer 705.6kHz
2 ch Non-mixable linear PCM Interleaved 8 little endian Signed Integer 1411.2kHz
2 ch Non-mixable linear PCM Interleaved 8 little endian Signed Integer 2822.4kHz

16 physical formats
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 44.1kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 44.1kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 88.2kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 88.2kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 176.4kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 176.4kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 48kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 48kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 96kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 96kHz
2 ch Non-mixable linear PCM Interleaved 16 little endian Signed Integer 192kHz
2 ch Non-mixable linear PCM Interleaved 24 little endian Signed Integer 192kHz
2 ch Non-mixable linear PCM Interleaved 8 little endian Signed Integer 352.8kHz
2 ch Non-mixable linear PCM Interleaved 8 little endian Signed Integer 705.6kHz
2 ch Non-mixable linear PCM Interleaved 8 little endian Signed Integer 1411.2kHz
2 ch Non-mixable linear PCM Interleaved 8 little endian Signed Integer 2822.4kHz

Current device transportInfo:
CurrentTransportState: NO_MEDIA_PRESENT
CurrentTransportStatus: OK
CurrentSpeed: 1
Current device MediaInfo:
NrTracks: 0
MediaDuration: 0:00:00
CurrentURI:
CurrentURIMetadata:
nextURI:
nextURIMetadata:
PlayMedium: NONE
RecordMedium: NOT_IMPLEMENTED
WriteStatus: NOT_IMPLEMENTED

Current device AVT service description:
<?xml version="1.0"?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>SetAVTransportURI</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentURI</name>
<direction>in</direction>
<relatedStateVariable>AVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>CurrentURIMetaData</name>
<direction>in</direction>
<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetNextAVTransportURI</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>NextURI</name>
<direction>in</direction>
<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>NextURIMetaData</name>
<direction>in</direction>
<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetMediaInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>NrTracks</name>
<direction>out</direction>
<relatedStateVariable>NumberOfTracks</relatedStateVariable>
</argument>
<argument>
<name>MediaDuration</name>
<direction>out</direction>
<relatedStateVariable>CurrentMediaDuration</relatedStateVariable>
</argument>
<argument>
<name>CurrentURI</name>
<direction>out</direction>
<relatedStateVariable>AVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>CurrentURIMetaData</name>
<direction>out</direction>
<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
</argument>
<argument>
<name>NextURI</name>
<direction>out</direction>
<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>NextURIMetaData</name>
<direction>out</direction>
<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
</argument>
<argument>
<name>PlayMedium</name>
<direction>out</direction>
<relatedStateVariable>PlaybackStorageMedium</relatedStateVariable>
</argument>
<argument>
<name>RecordMedium</name>
<direction>out</direction>
<relatedStateVariable>RecordStorageMedium</relatedStateVariable>
</argument>
<argument>
<name>WriteStatus</name>
<direction>out</direction>
<relatedStateVariable>RecordMediumWriteStatus</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetMediaInfo_Ext</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentType</name>
<direction>out</direction>
<relatedStateVariable>CurrentMediaCategory</relatedStateVariable>
</argument>
<argument>
<name>NrTracks</name>
<direction>out</direction>
<relatedStateVariable>NumberOfTracks</relatedStateVariable>
</argument>
<argument>
<name>MediaDuration</name>
<direction>out</direction>
<relatedStateVariable>CurrentMediaDuration</relatedStateVariable>
</argument>
<argument>
<name>CurrentURI</name>
<direction>out</direction>
<relatedStateVariable>AVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>CurrentURIMetaData</name>
<direction>out</direction>
<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
</argument>
<argument>
<name>NextURI</name>
<direction>out</direction>
<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>NextURIMetaData</name>
<direction>out</direction>
<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
</argument>
<argument>
<name>PlayMedium</name>
<direction>out</direction>
<relatedStateVariable>PlaybackStorageMedium</relatedStateVariable>
</argument>
<argument>
<name>RecordMedium</name>
<direction>out</direction>
<relatedStateVariable>RecordStorageMedium</relatedStateVariable>
</argument>
<argument>
<name>WriteStatus</name>
<direction>out</direction>
<relatedStateVariable>RecordMediumWriteStatus</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetTransportInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentTransportState</name>
<direction>out</direction>
<relatedStateVariable>TransportState</relatedStateVariable>
</argument>
<argument>
<name>CurrentTransportStatus</name>
<direction>out</direction>
<relatedStateVariable>TransportStatus</relatedStateVariable>
</argument>
<argument>
<name>CurrentSpeed</name>
<direction>out</direction>
<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetCurrentTransportActions</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Actions</name>
<direction>out</direction>
<relatedStateVariable>CurrentTransportActions</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetPositionInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Track</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrack</relatedStateVariable>
</argument>
<argument>
<name>TrackDuration</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrackDuration</relatedStateVariable>
</argument>
<argument>
<name>TrackMetaData</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrackMetaData</relatedStateVariable>
</argument>
<argument>
<name>TrackURI</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrackURI</relatedStateVariable>
</argument>
<argument>
<name>RelTime</name>
<direction>out</direction>
<relatedStateVariable>RelativeTimePosition</relatedStateVariable>
</argument>
<argument>
<name>AbsTime</name>
<direction>out</direction>
<relatedStateVariable>AbsoluteTimePosition</relatedStateVariable>
</argument>
<argument>
<name>RelCount</name>
<direction>out</direction>
<relatedStateVariable>RelativeCounterPosition</relatedStateVariable>
</argument>
<argument>
<name>AbsCount</name>
<direction>out</direction>
<relatedStateVariable>AbsoluteCounterPosition</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetDeviceCapabilities</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>PlayMedia</name>
<direction>out</direction>
<relatedStateVariable>PossiblePlaybackStorageMedia</relatedStateVariable>
</argument>
<argument>
<name>RecMedia</name>
<direction>out</direction>
<relatedStateVariable>PossibleRecordStorageMedia</relatedStateVariable>
</argument>
<argument>
<name>RecQualityModes</name>
<direction>out</direction>
<relatedStateVariable>PossibleRecordQualityModes</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetTransportSettings</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>PlayMode</name>
<direction>out</direction>
<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
</argument>
<argument>
<name>RecQualityMode</name>
<direction>out</direction>
<relatedStateVariable>CurrentRecordQualityMode</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Stop</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Play</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Speed</name>
<direction>in</direction>
<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Pause</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Seek</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Unit</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_SeekMode</relatedStateVariable>
</argument>
<argument>
<name>Target</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_SeekTarget</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Next</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Previous</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>X_DLNA_GetBytePositionInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>TrackSize</name>
<direction>out</direction>
<relatedStateVariable>X_DLNA_CurrentTrackSize</relatedStateVariable>
</argument>
<argument>
<name>RelByte</name>
<direction>out</direction>
<relatedStateVariable>X_DLNA_RelativeBytePosition</relatedStateVariable>
</argument>
<argument>
<name>AbsByte</name>
<direction>out</direction>
<relatedStateVariable>X_DLNA_AbsoluteBytePosition</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetPlayMode</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>NewPlayMode</name>
<direction>in</direction>
<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>TransportState</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>STOPPED</allowedValue>
<allowedValue>PAUSED_PLAYBACK</allowedValue>
<allowedValue>PAUSED_RECORDING</allowedValue>
<allowedValue>PLAYING</allowedValue>
<allowedValue>RECORDING</allowedValue>
<allowedValue>TRANSITIONING</allowedValue>
<allowedValue>NO_MEDIA_PRESENT</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>TransportStatus</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>OK</allowedValue>
<allowedValue>ERROR_OCCURRED</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentMediaCategory</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NO_MEDIA</allowedValue>
<allowedValue>TRACK_AWARE</allowedValue>
<allowedValue>TRACK_UNAWARE</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTransportActions</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>PlaybackStorageMedium</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>UNKNOWN</allowedValue>
<allowedValue>DV</allowedValue>
<allowedValue>MINI-DV</allowedValue>
<allowedValue>VHS</allowedValue>
<allowedValue>W-VHS</allowedValue>
<allowedValue>S-VHS</allowedValue>
<allowedValue>D-VHS</allowedValue>
<allowedValue>VHSC</allowedValue>
<allowedValue>VIDEO8</allowedValue>
<allowedValue>HI8</allowedValue>
<allowedValue>CD-ROM</allowedValue>
<allowedValue>CD-DA</allowedValue>
<allowedValue>CD-R</allowedValue>
<allowedValue>CD-RW</allowedValue>
<allowedValue>VIDEO-CD</allowedValue>
<allowedValue>SACD</allowedValue>
<allowedValue>MD-AUDIO</allowedValue>
<allowedValue>MD-PICTURE</allowedValue>
<allowedValue>DVD-ROM</allowedValue>
<allowedValue>DVD-VIDEO</allowedValue>
<allowedValue>DVD-R</allowedValue>
<allowedValue>DVD+RW</allowedValue>
<allowedValue>DVD-RW</allowedValue>
<allowedValue>DVD-RAM</allowedValue>
<allowedValue>DVD-AUDIO</allowedValue>
<allowedValue>DAT</allowedValue>
<allowedValue>LD</allowedValue>
<allowedValue>HDD</allowedValue>
<allowedValue>MICRO-MV</allowedValue>
<allowedValue>NETWORK</allowedValue>
<allowedValue>NONE</allowedValue>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
<allowedValue>SD</allowedValue>
<allowedValue>PC-CARD</allowedValue>
<allowedValue>MMC</allowedValue>
<allowedValue>CF</allowedValue>
<allowedValue>BD</allowedValue>
<allowedValue>MS</allowedValue>
<allowedValue>HD_DVD</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>RecordStorageMedium</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>UNKNOWN</allowedValue>
<allowedValue>DV</allowedValue>
<allowedValue>MINI-DV</allowedValue>
<allowedValue>VHS</allowedValue>
<allowedValue>W-VHS</allowedValue>
<allowedValue>S-VHS</allowedValue>
<allowedValue>D-VHS</allowedValue>
<allowedValue>VHSC</allowedValue>
<allowedValue>VIDEO8</allowedValue>
<allowedValue>HI8</allowedValue>
<allowedValue>CD-ROM</allowedValue>
<allowedValue>CD-DA</allowedValue>
<allowedValue>CD-R</allowedValue>
<allowedValue>CD-RW</allowedValue>
<allowedValue>VIDEO-CD</allowedValue>
<allowedValue>SACD</allowedValue>
<allowedValue>MD-AUDIO</allowedValue>
<allowedValue>MD-PICTURE</allowedValue>
<allowedValue>DVD-ROM</allowedValue>
<allowedValue>DVD-VIDEO</allowedValue>
<allowedValue>DVD-R</allowedValue>
<allowedValue>DVD+RW</allowedValue>
<allowedValue>DVD-RW</allowedValue>
<allowedValue>DVD-RAM</allowedValue>
<allowedValue>DVD-AUDIO</allowedValue>
<allowedValue>DAT</allowedValue>
<allowedValue>LD</allowedValue>
<allowedValue>HDD</allowedValue>
<allowedValue>MICRO-MV</allowedValue>
<allowedValue>NETWORK</allowedValue>
<allowedValue>NONE</allowedValue>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
<allowedValue>SD</allowedValue>
<allowedValue>PC-CARD</allowedValue>
<allowedValue>MMC</allowedValue>
<allowedValue>CF</allowedValue>
<allowedValue>BD</allowedValue>
<allowedValue>MS</allowedValue>
<allowedValue>HD_DVD</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>PossiblePlaybackStorageMedia</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NONE</allowedValue>
<allowedValue>NETWORK</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>PossibleRecordStorageMedia</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentPlayMode</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NORMAL</allowedValue>
<allowedValue>REPEAT_TRACK</allowedValue>
<allowedValue>REPEAT_ONE</allowedValue>
<allowedValue>REPEAT_ALL</allowedValue>
</allowedValueList>
<defaultValue>NORMAL</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>TransportPlaySpeed</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>1</allowedValue>
</allowedValueList>
<defaultValue>1</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>RecordMediumWriteStatus</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>WRITABLE</allowedValue>
<allowedValue>PROTECTED</allowedValue>
<allowedValue>NOT_WRITABLE</allowedValue>
<allowedValue>UNKNOWN</allowedValue>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentRecordQualityMode</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>0:EP</allowedValue>
<allowedValue>1:LP</allowedValue>
<allowedValue>2:SP</allowedValue>
<allowedValue>0:BASIC</allowedValue>
<allowedValue>1:MEDIUM</allowedValue>
<allowedValue>2:HIGH</allowedValue>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>PossibleRecordQualityModes</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>NumberOfTracks</name>
<dataType>ui4</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>512</maximum>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrack</name>
<dataType>ui4</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>512</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrackDuration</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentMediaDuration</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrackMetaData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrackURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AVTransportURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AVTransportURIMetaData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>NextAVTransportURI</name>
<dataType>string</dataType>
<defaultValue>NOT_IMPLEMENTED</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>NextAVTransportURIMetaData</name>
<dataType>string</dataType>
<defaultValue>NOT_IMPLEMENTED</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>RelativeTimePosition</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AbsoluteTimePosition</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RelativeCounterPosition</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AbsoluteCounterPosition</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>LastChange</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_SeekMode</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>ABS_TIME</allowedValue>
<allowedValue>REL_TIME</allowedValue>
<allowedValue>TRACK_NR</allowedValue>
<allowedValue>ABS_COUNT</allowedValue>
<allowedValue>REL_COUNT</allowedValue>
<allowedValue>X_DLNA_REL_BYTE</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_SeekTarget</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_InstanceID</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>X_DLNA_RelativeBytePosition</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>X_DLNA_AbsoluteBytePosition</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>X_DLNA_CurrentTrackSize</name>
<dataType>string</dataType>
</stateVariable>
</serviceStateTable>
</scpd>


Current device RootDevice description:
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:dlna="urn:schemas-dlna-org:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<friendlyName>Lounge</friendlyName>
<manufacturer>Naim Audio Ltd.</manufacturer>
<manufacturerURL>http://www.naimaudio.com</manufacturerURL>
<modelDescription>Naim all-in-one audio player</modelDescription>
<modelName>Uniti Nova</modelName>
<modelNumber>20-004-0031</modelNumber>
<modelURL>https://www.naimaudio.com/product/uniti-nova</modelURL>
<serialNumber>423729</serialNumber>
<UDN>uuid:c76134c4-5a19-4ed9-b09d-fdf2ad909505</UDN>
<iconList>
<icon>
<mimetype>image/png</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/LibRygelRenderer-120x120x24.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/LibRygelRenderer-48x48x24.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>32</width>
<height>32</height>
<depth>24</depth>
<url>/LibRygelRenderer-32x32x24.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>128</width>
<height>128</height>
<depth>24</depth>
<url>/LibRygelRenderer-128x128x24.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>240</width>
<height>240</height>
<depth>24</depth>
<url>/LibRygelRenderer-240x240x24.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>480</width>
<height>480</height>
<depth>24</depth>
<url>/LibRygelRenderer-480x480x24.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>600</width>
<height>600</height>
<depth>24</depth>
<url>/LibRygelRenderer-600x600x24.png</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/LibRygelRenderer-120x120x24.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/LibRygelRenderer-48x48x24.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>32</width>
<height>32</height>
<depth>24</depth>
<url>/LibRygelRenderer-32x32x24.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>128</width>
<height>128</height>
<depth>24</depth>
<url>/LibRygelRenderer-128x128x24.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>240</width>
<height>240</height>
<depth>24</depth>
<url>/LibRygelRenderer-240x240x24.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>480</width>
<height>480</height>
<depth>24</depth>
<url>/LibRygelRenderer-480x480x24.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>600</width>
<height>600</height>
<depth>24</depth>
<url>/LibRygelRenderer-600x600x24.jpg</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/xml/ConnectionManager.xml</SCPDURL>
<controlURL>/Control/LibRygelRenderer/RygelSinkConnectionManager</controlURL>
<eventSubURL>/Event/LibRygelRenderer/RygelSinkConnectionManager</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>/xml/AVTransport2.xml</SCPDURL>
<controlURL>/Control/LibRygelRenderer/RygelAVTransport</controlURL>
<eventSubURL>/Event/LibRygelRenderer/RygelAVTransport</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<SCPDURL>/xml/RenderingControl2.xml</SCPDURL>
<controlURL>/Control/LibRygelRenderer/RygelRenderingControl</controlURL>
<eventSubURL>/Event/LibRygelRenderer/RygelRenderingControl</eventSubURL>
</service>
</serviceList>
<presentationURL>http://192.168.1.156/</presentationURL>
<dlna:X_DLNADOC>DMR-1.50</dlna:X_DLNADOC>
</device>
</root>


UPnP devices found : 1
Device #0: ID 0x0 Lounge UID: uuid:X Location: http://192.168.1.156:47525/X.xml
Direct Mode audio path



Posted on: 09 June 2018 by Simon-in-Suffolk

I am not sure those xml definitions really help that much... if Gapless is shown, which it is but not working, it will be most likely down to low level coding interoperability, not the high level coding xml descriptions you have provided. From what I read in this thread or elsewhere Naim are aware of a potential Gapless  interoperability issue with the firmware of the new streamers with certain third party software ... whilst the legacy streamers are more tolerant .

Posted on: 09 June 2018 by nbpf

It would be interesting to know why Naim do not allow users to activate/deactivate methods that are known to work on Linux platforms: MPD, upmpdcli, Squeezelite, etc. One could at least use these methods for gapless replay until Naim have improved their own software. Support for well established replay technologies would also make the Naim streamers more palatable to users that appreciate the Naim sound but not so much tha Naim software oddities.

Posted on: 10 June 2018 by GOlson

AC,

I am most distressed to hear that using the Audirvana Mac-desktop app is not playing gapless streams correctly on the Nova.  I had been looking forward to the Windows version of Audirvana (supposedly released in the next few weeks) to do the first MQA unfold of Tidal Masters and streaming 96/24 FLAC to my Nova (still happily on 2.3).  If the Nova won't play these streams gapless... critical for lots of classical music, this is a worthless solution.  Please keep us informed of your progress.

Gregg

Posted on: 10 June 2018 by Alley Cat
Simon-in-Suffolk posted:

I am not sure those xml definitions really help that much... if Gapless is shown, which it is but not working, it will be most likely down to low level coding interoperability, not the high level coding xml descriptions you have provided. From what I read in this thread or elsewhere Naim are aware of a potential Gapless  interoperability issue with the firmware of the new streamers with certain third party software ... whilst the legacy streamers are more tolerant .

Perhaps not, as I mentioned I don't currently know enough about these services without a lot of research, but I was hoping that the various protocols the Nova notifies Audirvana it supports might indicate if it offers gapless via 'Push' from software which accesses the streams itself and then pushes to the renderer, or whether they suggest the Nova can be sent a list of consecutive tracks which it then 'Pulls' from Qobuz servers to play losslessly.

I truly hope it is on Naim's radar to implement a fix if there is an issue, the difficulty is knowing currently if it's the fault of the Nova or 3rd party software not playing correctly with it.

Perhaps DLNA is too outdated, and I guess Linn are to be commended for the Open Home enhancements - I'm perhaps being simplistic thinking all it requires is all a renderer needs is a FIFO buffer being continually filled by consecutive tracks.

Out of interest I assume that for audio streams that play gapless this is down to there being no silence in the stream at the start or end of the tracks, rather than some kind of tag that tells the software to insert a few secs of silence or not between tracks?

Posted on: 10 June 2018 by Alley Cat
GOlson posted:

AC,

I am most distressed to hear that using the Audirvana Mac-desktop app is not playing gapless streams correctly on the Nova.  I had been looking forward to the Windows version of Audirvana (supposedly released in the next few weeks) to do the first MQA unfold of Tidal Masters and streaming 96/24 FLAC to my Nova (still happily on 2.3).  If the Nova won't play these streams gapless... critical for lots of classical music, this is a worthless solution.  Please keep us informed of your progress.

Gregg

You may want to explore Roon as it does integrate with Tidal whereas Qobuz does not.

As you say critical for many classical works, and a surprising number of rock/other albums - it's actually surprising how many need gapless playback as you tend not to notice on vinyl/CD/portable devices until you run into gaps using a streamer!

Posted on: 11 June 2018 by Simon-in-Suffolk
Alley Cat posted:

Out of interest I assume that for audio streams that play gapless this is down to there being no silence in the stream at the start or end of the tracks, rather than some kind of tag that tells the software to insert a few secs of silence or not between tracks?

Correct.. there is no tag in the media.