Post Reply 
Serento: The audiophile UPnP controller app for iOS/macOS
02-09-2026, 21:41 (This post was last modified: 02-09-2026 21:43 by Peter StreamMagic.)
Post: #31
RE: Serento: The audiophile UPnP controller app for iOS/macOS
I can work on that in a future version so that the taxonomy is not used (an on-off toggle) and your own genres are displayed, but without a hierarchy of genres the experience is going to be poor.

It is a good idea to give the user this choise.
What do you mean by "without a hierarchy of genres" and why should this lead to a poor experience? At this moment I can't see any genre at all, that's a poor experience!
I just want to see Blues, Jazz, Rock.... etc. as tagged.

Serento reads and respects the albumArtURI that MinimServer announces. It is the starting point for every album and every track, and it remains the final answer wherever nothing better exists.

In my case all index Artwork is overruled, even highres pictures.

On top of it, Serento applies one deliberate preference. When the album folder contains its own cover image file, that file wins. The reason is quality: the indexed artwork is the thumbnail embedded in the audio tags (typically around 500 pixels), while the folder file is your full-resolution master (often 1000 pixels or larger). On a large display the difference is immediately visible.


Makes sense, but be aware,more pixels is no guarantee the picture looks better.

On very large libraries (5000 albums or more) Serento follows the MinimServer artwork index verbatim: each album shows exactly the artwork the server announces, fetched on demand.

Please explain why this implemented only for large libraries?
I would guess a large library takes more time to consequently tag and illustrate with pictures, so automation could be more wanted?

Serento does show weird behaviour sometimes.

Some examples

    Serento doing strange things with De Dijk Derek and the Dominos
    Lumin showing De Dijk as tagged
    Lumin showing Derek and the Dominos as tagged
    Kazoo showing both as tagged
    Serento size now playing to wide for my iPhone
    Serento shows albumcover instead of artist image
Find all posts by this user
Quote this message in a reply
02-09-2026, 21:58
Post: #32
RE: Serento: The audiophile UPnP controller app for iOS/macOS
Hi Peter,

It would help me a lot if you could send me the log file. It's a diagnostics file that I receive when you press send logs in the settings.

Would you be so kind as to turn on logging in the settings? Go to Settings - Logs - turn on. Then sync again with the server and use the app normally. After a while go to Settings - Logs - Send Logs. I will receive an email with the diagnostics data.

Once I read that I can answer some of the questions you asked, because without that data I cannot.

For example, I don't understand how you don't have any genres in the list. That should not happen unless something went terribly wrong during the sync with the server.

I also can't understand what's going on in the now playing screen. Do you have any accessibility feature turned on, like larger text?

For artist images I can already tell you what's going on. If the server does not provide the images, the fallback source for artist images is Deezer. If Deezer doesn't have an artist image it usually uses an album cover of that artist. I'm showing exactly what Deezer is providing.

Regarding artist detection (De Dijk Derek and the Dominos) I will look into it, because I find it strange that it did not find the artist. I'm looking in the MusicBrainz database for existing artists. So I will search the database and come back to you with an answer and/or with a fix for the issue in the next update.

I'm sorry you are having so many issues with Serento.
Visit this user's website Find all posts by this user
Quote this message in a reply
02-09-2026, 22:27
Post: #33
RE: Serento: The audiophile UPnP controller app for iOS/macOS
Logs sent.
I am pretty sure Sentento does not search in my IndexArtwork folder?
Find all posts by this user
Quote this message in a reply
02-09-2026, 22:51
Post: #34
RE: Serento: The audiophile UPnP controller app for iOS/macOS
I'm going to get a little technical to explain what happened.

What Serento does during a sync

When a server advertises Search with a upnp:class predicate, Serento takes a fast path instead of walking the tree album by album. It issues a single paged enumeration, Search(ContainerID="0", SearchCriteria=upnp:class derivedfrom "object.item.audioItem.musicTrack", Filter="*,upnp:userAnnotation[tag.musicbrainz_albumid],...", RequestedCount=500), and then builds albums, artists, tracks and genres on the client side from the properties carried on the returned musicTrack items. Albums come from upnp:album, artists from upnp:artist[@role="AlbumArtist"], and genres come only from upnp:genre on those items, aggregated per album. On that path there is no second source for genre.

What I observed on your library

Your server identifies as MinimServer (Posix/200809.0 UPnP/1.1 ohNet/1.0) and GetSearchCapabilities includes upnp:genre, so Serento took the Search path. In your sync my log line reads: albums=940 tracks=10969 artists=673 genres=0. Albums, artists and tracks were all correct. The genre aggregate came out empty, and every album I inspected afterwards carried an empty genre string.

What the bug on my side was

The Search result had exactly one sanity check before Serento accepted it: did it return zero albums? That check exists because some servers advertise Search and then enumerate nothing. It never looked at any other field. So 940 albums sitting next to 0 genres passed as a valid and complete answer, it was written to the database, and the Genres screen was then correctly displaying what the database held, which was nothing. That is my defect, and it is fixed.

What I cannot tell yet

From my logs alone I cannot distinguish two very different causes: either the property was not present in the responses Serento parsed, or the files in your library do not carry Genre tags. I am not claiming the first. That is precisely why the fix does not assume either.

The fix

When a Search enumeration returns albums but zero genres, and the server advertised upnp:genre as searchable, Serento now asks one cheap question before deciding: Search(ContainerID="0", SearchCriteria=upnp:genre exists true, RequestedCount=1). If that returns a match, the genre data is there and the fast path missed it, so Serento falls back to the Browse walk, which reads the genre from the album containers. If it returns nothing, the library genuinely has no genre tags and the Search result is accepted as it stands. I deliberately did not make it fall back unconditionally, because that would force every library without genre tags into the slow per album walk on every single sync, forever, to rediscover nothing.

What would help me narrow it down

The MinimServer user guide says the server reads and indexes Artist, AlbumArtist, Date, Genre and Composer by default, and that this set is configurable through the indexTags property. Genre is therefore there unless something has changed it. So there are two documented places where it can go quiet, and both take a minute to check: is Genre still listed in your indexTags, and do the files themselves carry a Genre tag? If Genre is indexed and the files are tagged, then the fault is entirely mine and the fix above is what closes it.

For what it is worth, the Filter Serento sends begins with *, and the UPnP ContentDirectory specification defines that as returning all supported properties, required and optional. Album and artist came back on the same responses, so the request was clearly being answered generously. That is why I am asking about the tags rather than about the server.

To be clear about timing: the fix is not in the build you have. It will be in a coming update, so nothing you do right now will make the genres appear. The checks above are only so I know whether the fix is enough on its own.
Visit this user's website Find all posts by this user
Quote this message in a reply
03-09-2026, 09:53
Post: #35
RE: Serento: The audiophile UPnP controller app for iOS/macOS
(02-09-2026 22:51)serento Wrote:  What Serento does during a sync

When a server advertises Search with a upnp:class predicate, Serento takes a fast path instead of walking the tree album by album.

I haven't been able to test this with Serento because I'm on Android, but you may have issues when building albums from tracks because of the way tracks can be grouped (represented as albums within albums, typically for classical works).

Using the album Foxtrot by Genesis as an example, the final 7 tracks form part of the broader work Supper's Ready, so all are tagged with GROUP='Supper's Ready', which when displayed on a control point looks like:
   
Your search would return (only a partial listing included):
Code:
<item id="0$:items$*i5" parentID="0$:items" restricted="1">
    <dc:title>Watcher Of The Skies</dc:title>
    <upnp:genre>Pop/Rock</upnp:genre>
    <dc:date>1985-01-01</dc:date>
    <upnp:album>Foxtrot</upnp:album>
    <upnp:artist>Genesis</upnp:artist>
    <dc:creator>Genesis</dc:creator>
    <upnp:artist role="AlbumArtist">Genesis</upnp:artist>
    <upnp:originalTrackNumber>1</upnp:originalTrackNumber>
    <upnp:class>object.item.audioItem.musicTrack</upnp:class>
</item>
<item id="0$:items$*i4" parentID="0$:items" restricted="1">
    <dc:title>Time Table</dc:title>
    <upnp:genre>Pop/Rock</upnp:genre>
    <dc:date>1985-01-01</dc:date>
    <upnp:album>Foxtrot</upnp:album>
    <upnp:artist>Genesis</upnp:artist>
    <dc:creator>Genesis</dc:creator>
    <upnp:artist role="AlbumArtist">Genesis</upnp:artist>
    <upnp:originalTrackNumber>2</upnp:originalTrackNumber>
    <upnp:class>object.item.audioItem.musicTrack</upnp:class>
</item>
...
<item id="0$:items$*i3$3-26" parentID="0$:items$*i3" restricted="1">
    <dc:title>Apocalypse In 9/8</dc:title>
    <upnp:genre>Pop/Rock</upnp:genre>
    <dc:date>1985-01-01</dc:date>
    <upnp:album>Supper&apos;s Ready</upnp:album>
    <upnp:artist>Genesis</upnp:artist>
    <dc:creator>Genesis</dc:creator>
    <upnp:artist role="AlbumArtist">Genesis</upnp:artist>
    <upnp:originalTrackNumber>6</upnp:originalTrackNumber>
    <upnp:class>object.item.audioItem.musicTrack</upnp:class>
</item>
<item id="0$:items$*i3$3-27" parentID="0$:items$*i3" restricted="1">
    <dc:title>As Sure As Eggs Is Eggs (Aching Men&apos;s Feet)</dc:title>
    <upnp:genre>Pop/Rock</upnp:genre>
    <dc:date>1985-01-01</dc:date>
    <upnp:album>Supper&apos;s Ready</upnp:album>
    <upnp:artist>Genesis</upnp:artist>
    <dc:creator>Genesis</dc:creator>
    <upnp:artist role="AlbumArtist">Genesis</upnp:artist>
    <upnp:originalTrackNumber>7</upnp:originalTrackNumber>
    <upnp:class>object.item.audioItem.musicTrack</upnp:class>
</item>
...
As you can see tracks 6 and 7 appear to belong to a different album. Maybe you could use the parentID (not = "0$:items") to trigger an album by album approach?

During a previous discussion @simoncn mentioned that it's possible for a control point to request that multi-valued items be delivered individually (artist, genre e.t.c.) so it might be worth chasing up with him on that. What I don't know is if that would apply to users using the .displayFormat setting to display collaborations e.g.
   

Here's a truncated version of the Foxtrot album for testing.

.zip  Genesis.zip (Size: 24.42 KB / Downloads: 1)
Find all posts by this user
Quote this message in a reply
03-09-2026, 10:27
Post: #36
RE: Serento: The audiophile UPnP controller app for iOS/macOS
@Peter StreamMagic

Thank you for the detailed reports. All the issues you ran into are now fixed, and every one of them was a real defect on my side rather than something wrong with your setup.

It is my fault for not testing on a 4.7'' screen. I don't have a device with such a small screen size and I should have known better.

All of the fixes will be in the next update.

If you would like to try the update when it ships, send me your account key and I will extend your trial so the update is not wasted on an expired one. You will find it in Settings, then About, scrolled all the way to the bottom. Tap the line that reads "Tap here to copy your account key" and it is on your clipboard.

Thank you for taking the time to write these up properly. The screenshots and the log made the difference, especially on the layout one, which I could not have found without seeing it on the actual screen size.

And I also want to thank everyone that contributed here because you are one of the most welcoming online communities. And you are helping me make Serento a better user experience for everyone.
Visit this user's website Find all posts by this user
Quote this message in a reply
03-09-2026, 17:55
Post: #37
RE: Serento: The audiophile UPnP controller app for iOS/macOS
(02-09-2026 22:51)serento Wrote:  It issues a single paged enumeration, Search(ContainerID="0", SearchCriteria=upnp:class derivedfrom "object.item.audioItem.musicTrack", Filter="*,upnp:userAnnotation[tag.musicbrainz_albumid],...", RequestedCount=500), and then builds albums, artists, tracks and genres on the client side from the properties carried on the returned musicTrack items.

I have tested this query and MinimServer does return genre information. I don't know why you saw zero genres returned.

Quote:Serento now asks one cheap question before deciding: Search(ContainerID="0", SearchCriteria=upnp:genre exists true, RequestedCount=1).

This query is not quite as cheap as you are expecting. When a search query specifies a range of returned items, MinimServer searches for all matches, caches the query result in memory and returns the requested range. This is because many control points issue a succession of search requests for items 1 to 50, 51 to 100, etc. In this case it is more efficient to do the search once and return each requested range from the cached query result.
Find all posts by this user
Quote this message in a reply
04-09-2026, 00:12
Post: #38
RE: Serento: The audiophile UPnP controller app for iOS/macOS
@simbun & @simoncn: Thank you!

Your help is very much appreciated. It helped me fix a few things in Serento.
Visit this user's website Find all posts by this user
Quote this message in a reply
04-09-2026, 13:31
Post: #39
RE: Serento: The audiophile UPnP controller app for iOS/macOS
What I have been working on this week (Sep 1 - Sep 5)

This week went in a different direction: most of it was spent on how Serento reads your library, and on the things you see every day. Several of these came straight from feedback from you.

Artist names

Some albums were showing up under artists that do not exist. “Derek and the Dominos” was being split into two artists, and a band like “De Dijk” could come apart into pieces of its own name. This has been fixed.

Genres

Serento now reports exactly the genres your server reports. If your server says you have 88 genres, you get 88 genres, with the names it uses.

Filters

If you opened a filter and ticked every option in a section, you could end up with zero albums. Ticking every sample rate, for example, asked for albums that were 44.1 kHz and DSD at the same time, which nothing can be. Selecting everything in a section now means exactly what it looks like: you get everything. This applies to every list that has filters, including tracks and the classical section. Selecting nothing still means no filtering, and excluding something still excludes it.

Booklets

Serento now finds the PDF booklet that sits beside your music files and shows it in the app, with its own reader. The search happens during the sync, with its own step on the sync screen, so opening an album is instant rather than waiting on the server. Albums that have one show it; albums that do not are unaffected.

Artwork

Tapping the cover on an album or artist page now opens it full size on a dark layer, so you can actually look at the art you paid for.

Small screens and the radio panel

On the smallest iPhones, and on any device with larger text sizes, the Now Playing screen was cut off at the edges. That is fixed. The radio panel now adapts how much it shows to the height it actually has, instead of overflowing.

Downloaded music playback

If you take your music with you as downloaded albums or playlists you probably noticed that Serento fails to resume the music if it gets interrupted by another application’s audio or by a phone call. This has been fixed and when you go back to Serento after an interruption the music resumes instantly.

Under the hood

A good part of the week went into checking Serento against the UPnP specification and the MinimServer documentation, line by line.

Expect the update sometime next week.
Visit this user's website Find all posts by this user
Quote this message in a reply
Yesterday, 20:03
Post: #40
RE: Serento: The audiophile UPnP controller app for iOS/macOS
OK after one week, it seems I can now access my minimserver music.

Though: I only browse by folder. And each folder has a folder.jpg image which Lumins recognises and displays, making it a smooth navigation.

Sorento does not display those folder.jpg. That make a very ugly interface, not user friendly at all.

Other point: my first level is made of the following folders:
0) Test & samplers
1) Renaissance
2) Baroque
etc..
till
9) World Music
10) Movies, Shows
11) Chanson françaises
12) Contes

Guess what... sorento displays this:
1) Renaissance
10) Movies, Shows
11) Chansons françaises
12) Contes
2) Baroque
3) Classique

etc. till 9)

Let's be honest, knowing how to properly sort such entries is at the level of a 12 years old programmer.

In a nutshell: still far behind Lumin; and I have not seen any breakthrough compared to Lumin (which is free as you all know)

Sorry, I would have hoped better, specially given the high price.

Good luck.
Find all posts by this user
Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)