INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: Gapless  (Read 9158 times)

ThierryNK

  • World Citizen
  • ***
  • Posts: 106
Gapless
« on: March 11, 2013, 02:15:44 am »

Hi

Are there specific options for UPNP server for gapless play?

My network player definitively supports gapless and plays gapless from all other Media UPNP server (Synology, Minimserver, Foobar). But with JRiver, gapless is quite "random".
Friends with other gapless network players get the same issue.

Al the best
Thierry
Logged
Thierry
S1 Listening: Mac Mini, JRiver, Minimserver, Roon, Qobuz, Matrix X-Sabre3, Ayon Sheris III, Kinki EX-B7, Vivid G2S2
S2 Playing and studio: Yamaha WXA-50, HEFA Mutine, Seinway O180

doulos

  • World Citizen
  • ***
  • Posts: 148
Re: Gapless
« Reply #1 on: March 11, 2013, 04:01:31 am »

gapless really doesn't have anything to do with the server. Its the renderer (player) and control point that matter. What player are you using, and how are controlling it (i.e., from an app, via IR remote, or from within MC).

Quote
My network player definitively supports gapless and plays gapless
thats what they all say ;). Most players dont really support gapless, and many of those who supposedly do only support it under certain special conditions. Again, please let us know what player you are talking about, and how you control it

cheers,
chris
Logged
MediaSteersman - Your Media at Your Fingertips

ThierryNK

  • World Citizen
  • ***
  • Posts: 106
Re: Gapless
« Reply #2 on: March 11, 2013, 04:30:56 am »

Hi Chris

Network player: Ayon S5

Control: JRemote on iPad or directly from MC.

Logged
Thierry
S1 Listening: Mac Mini, JRiver, Minimserver, Roon, Qobuz, Matrix X-Sabre3, Ayon Sheris III, Kinki EX-B7, Vivid G2S2
S2 Playing and studio: Yamaha WXA-50, HEFA Mutine, Seinway O180

doulos

  • World Citizen
  • ***
  • Posts: 148
Re: Gapless
« Reply #3 on: March 11, 2013, 07:47:25 am »

well, not much I can say to these devices. What I do know, however, is that gapless is something that not normally depends on the server. Heres why:

If implemented correctly:
  • the player will support two UPnP actions called called SetAVTransportURI and SetNextAVTransportURI
  • The control point will call SetAVTransportURI for the first song
  • after the song has started, the control point will immediately call SetNextAVTransportURI so that the player can pre-load the following song and play it when the previous song finishes
  • this continues until the album is through

as you can see, this is between control point and player only. If, as you say, playback from one server is (appears to be) gapless, while it is not from the other, my guess is that the player is NOT operating gaplessly, but download times from the first server are so fast that the gaps are minimized. Note that if gapless was done right, download latency would not matter. Note also that there are quite a few devices from upmarket brands that dont care about doing gapless right (Marantz being one example)

regards,
chris
Logged
MediaSteersman - Your Media at Your Fingertips

ThierryNK

  • World Citizen
  • ***
  • Posts: 106
Re: Gapless
« Reply #4 on: March 11, 2013, 06:48:19 pm »

Thanks for these information Chris, and the fast answer.

My computer, my NAS and my Ayon S5 are on a very short dedicated network.

I will make other "clear" and "simple" tests directly from MC and from other Control Points, and then I will come back to you.

All the best
Thierry
Logged
Thierry
S1 Listening: Mac Mini, JRiver, Minimserver, Roon, Qobuz, Matrix X-Sabre3, Ayon Sheris III, Kinki EX-B7, Vivid G2S2
S2 Playing and studio: Yamaha WXA-50, HEFA Mutine, Seinway O180

ThierryNK

  • World Citizen
  • ***
  • Posts: 106
Re: Gapless
« Reply #5 on: March 12, 2013, 02:58:32 am »

Good morning!

Some comments about your answer, after some sleep ;)

I do not understand when you say that the player can "preload" the next track.

The input FIFO memory buffer on a network player cannot handle a full track, if the tracks are very short, why not, but it cannot be a general approach.
If by "preload" you mean that the player can immediately send the next track request to the server, I better understand.

Is that sure that the server side has absolutely to responsibility in gapless play?

The server should use an output FIFO memory buffer where the tracks are progressively entered and sent to the player, from memory and not from Hard Drive.

Next track should enter the FIFO before the end of the current playing track and without "holes" between the tracks inside the FIFO.  If there is no FIFO/Cache on the server side, or a not efficient one, then it seems impossible to me to get Gapless play.

If the player hardware and software are able to get an interrupted track feed, the server should also be able to send an interrupted track flow.

A I wrong?

I have checked that this cache process was happening on the Synology multimedia UPNP server. For JRiver, I do not have the tools to check this.

What is your opinion about all this?

Best and kind regards.
Thierry

Logged
Thierry
S1 Listening: Mac Mini, JRiver, Minimserver, Roon, Qobuz, Matrix X-Sabre3, Ayon Sheris III, Kinki EX-B7, Vivid G2S2
S2 Playing and studio: Yamaha WXA-50, HEFA Mutine, Seinway O180

doulos

  • World Citizen
  • ***
  • Posts: 148
Re: Gapless
« Reply #6 on: March 12, 2013, 04:16:29 am »

Hello Thierry,

let me first say this: gapless is an ever-recurring subject, you will find quite a few discussions on this forum, with all kinds of interesting details in them. Secondly, I am myself implementing an android-tablet-based UPnP control point (soon to be released), and thus do have some insight (I think), if only from testing with different devices. Gapless actually happens to be one of my favorite subjects. Now to the technicalities:

all relevant traffic between player and server is normally via the HTTP protocol (UPnP does allow for other protocols, but I have never seen any others implemented). Streaming over HTTP is really a non-issue, it has been done and is being done all the time. You can assume that the streaming process as such is efficient enough for audio playback (it may reach its limit when streaming HD video over a WLAN connection, but that again is not up to the server). Streaming latency is certainly not what I was referring to.

The SetAVTransportURI and SetNextAVTransportURI thing is simply about the fact that the player is being informed about what track to play next while it is still playing (or has just started playing) the previous track. How the player makes use of this is information is up to the player - it may preload into a local cache, or just start the decoding process, or whatever. Some players may even implement SetNextAVTransportURI and still not do gapless right.

My guess about the gap effect you encounter was that your player does not support SetNextATU (and thus cannot support gapless in the real sense), and therefore the control point will have to issue a simple SetATU after each track. Then the player has to request the resource from the server, and the server has to locate the track, and send it over the HTTP connection. All this may take a little longer with one server than with the other.

I suggest you check with your manufacturer (or using the freely available UPnP tools) whether your player implements SetNextAVTRansportURI. If it doesn't, you're not in the gapless club, no matter how much entry fee you paid ;)
Logged
MediaSteersman - Your Media at Your Fingertips

zeb27

  • Member
  • *
  • Posts: 1
Re: Gapless
« Reply #7 on: March 12, 2013, 04:57:59 am »

Hello Thierry,

let me first say this: gapless is an ever-recurring subject, you will find quite a few discussions on this forum, with all kinds of interesting details in them. Secondly, I am myself implementing an android-tablet-based UPnP control point (soon to be released), and thus do have some insight (I think), if only from testing with different devices. Gapless actually happens to be one of my favorite subjects. Now to the technicalities:

all relevant traffic between player and server is normally via the HTTP protocol (UPnP does allow for other protocols, but I have never seen any others implemented). Streaming over HTTP is really a non-issue, it has been done and is being done all the time. You can assume that the streaming process as such is efficient enough for audio playback (it may reach its limit when streaming HD video over a WLAN connection, but that again is not up to the server). Streaming latency is certainly not what I was referring to.

The SetAVTransportURI and SetNextAVTransportURI thing is simply about the fact that the player is being informed about what track to play next while it is still playing (or has just started playing) the previous track. How the player makes use of this is information is up to the player - it may preload into a local cache, or just start the decoding process, or whatever. Some players may even implement SetNextAVTransportURI and still not do gapless right.

My guess about the gap effect you encounter was that your player does not support SetNextATU (and thus cannot support gapless in the real sense), and therefore the control point will have to issue a simple SetATU after each track. Then the player has to request the resource from the server, and the server has to locate the track, and send it over the HTTP connection. All this may take a little longer with one server than with the other.

I suggest you check with your manufacturer (or using the freely available UPnP tools) whether your player implements SetNextAVTRansportURI. If it doesn't, you're not in the gapless club, no matter how much entry fee you paid ;)

Hi DOulos,
As far as I know both AYON S5 and Lumin Music Streamers are both gapless with all the servers I know, excepted with JR MC !. I don't really understand fully your last post to Mr THIERRYNK but I can say its really a great pity that the playback cannot be gapless with JR MC. Are you sure that the player can be involved like you explained ??
Logged

doulos

  • World Citizen
  • ***
  • Posts: 148
Re: Gapless
« Reply #8 on: March 12, 2013, 05:13:38 am »

yes, I probably got a little too technical in all my enthusiasm

Quote
Are you sure that the player can be involved like you explained ??

as sure as I can be. Real gapless depends on player and control point only. Perceived gapless may depend on the server

I still suggest checking the availability of the SetNext action. That is easy to do, and settles it once and for all (IMO).
Logged
MediaSteersman - Your Media at Your Fingertips

ThierryNK

  • World Citizen
  • ***
  • Posts: 106
Re: Gapless
« Reply #9 on: March 12, 2013, 05:53:54 am »

Here is what I get at S5 startup.


S5-1 par ThierryNK, sur Flickr
Logged
Thierry
S1 Listening: Mac Mini, JRiver, Minimserver, Roon, Qobuz, Matrix X-Sabre3, Ayon Sheris III, Kinki EX-B7, Vivid G2S2
S2 Playing and studio: Yamaha WXA-50, HEFA Mutine, Seinway O180

ThierryNK

  • World Citizen
  • ***
  • Posts: 106
Re: Gapless
« Reply #10 on: March 12, 2013, 06:27:10 am »

Here is what I get on the Synology Multimedia Server logs.

The first track is 30 seconds long. The second track is requested by the S5 3 seconds before the end of the first track

2013-03-12 12:18:43: (request.c.295) fd: 6 request-len: 193
GET /m/NDLNA/337157.flac HTTP/1.1
Host: 192.168.0.100:50002
Range: bytes=0-
Icy-MetaData: 1
Connection: close
transferMode.dlna.org: Streaming
User-Agent: WinampMPEG/2.8
Accept: */*

2013-03-12 12:19:10: (request.c.295) fd: 6 request-len: 193
GET /m/NDLNA/337158.flac HTTP/1.1
Host: 192.168.0.100:50002
Range: bytes=0-
Icy-MetaData: 1
Connection: close
transferMode.dlna.org: Streaming
User-Agent: WinampMPEG/2.8
Accept: */*


Is 3 seconds not enough for JRiver? Buffer size issue? I noticed that the "randomness" of lack of gapless on JRiver was depending upon the tracks bitrate (I have music from 16/44 to 24/192).

Best and kind regards
Thierry
Logged
Thierry
S1 Listening: Mac Mini, JRiver, Minimserver, Roon, Qobuz, Matrix X-Sabre3, Ayon Sheris III, Kinki EX-B7, Vivid G2S2
S2 Playing and studio: Yamaha WXA-50, HEFA Mutine, Seinway O180

bob

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 13941
Re: Gapless
« Reply #11 on: March 15, 2013, 03:58:11 pm »

The variable can exist for SetNextAVTransportURI and the Metadata but the function may still not be available.
You need to check using device spy from the uPnP tools for developer package.
It's under AVTransport:1 for the rendering device.
Logged

ThierryNK

  • World Citizen
  • ***
  • Posts: 106
Re: Gapless
« Reply #12 on: March 15, 2013, 04:44:51 pm »

Thanks for the information Bob.

I will not do this check with UPNP developer tools. I prefer to spend my free time listening music, and my non-free time earning money  ;D

As I have seen, and posted here, that my network player sends the next track request 3 seconds before the end of the current track (I admit that I do not know if those 3 seconds are standard or not),  I think it is logical to assume that there is something wrong in Windows (network layers, latencies,...) or in JRiver.

Even if it is not a formal proof, the fact that gapless is OK on my S5 player with all other UPNP servers (same dedicated network, same tracks location), and  not OK with JRiver and all other network players that I have tested, leads also to the same conclusion.

Best and kind regards
Thierry
Logged
Thierry
S1 Listening: Mac Mini, JRiver, Minimserver, Roon, Qobuz, Matrix X-Sabre3, Ayon Sheris III, Kinki EX-B7, Vivid G2S2
S2 Playing and studio: Yamaha WXA-50, HEFA Mutine, Seinway O180
Pages: [1]   Go Up