Aller au contenu

Modèle de chaîne personnalisé Symfonium

Nécessite v12.0+

Cette page documente la syntaxe des modèles de chaînes personnalisés Symfonium et les listes de champs disponibles dans chaque contexte.

Elle est organisée ainsi :

  • Syntaxe commune des modèles : variables, blocs conditionnels, conditions/opérateurs, formatage de texte, règles d’échappement et libellés string.* localisés globaux
  • Sections propres à chaque contexte :
    • Lecture en cours : fonctionnalités supplémentaires (\t, \o, champs next., champs chapter.*) et liste complète des champs de lecture en cours
    • Sous-titre d’album : champs au niveau de l’album disponibles sur les pages d’album
    • Sous-titre d’artiste : champs au niveau de l’artiste disponibles sur les pages d’artiste

Syntaxe : %fieldname%

  • Remplace %fieldname% par la valeur du champ
  • Si le champ est vide ou manquant, rien n’est affiché

Exemples :

ModèleRésultat d’exemple
%title% par %artist%Seven Nation Army par The White Stripes
%album% (%year%)Thriller (1982)
%composer% ● %artist%Ludwig van Beethoven ● Berliner Philharmoniker
%artist%%lb%%composer%Berliner Philharmoniker

%lb% est un saut de ligne.


Utilisez des blocs pour afficher une ponctuation ou un libellé uniquement lorsqu’une valeur existe ou lorsqu’une condition correspond.

Syntaxe : { ... }

  • Un bloc { ... } est affiché uniquement si sa première variable correspond :
    • soit à un champ non vide
    • soit à une variable de condition vraie (%|condition%)
  • Vous pouvez inclure plusieurs variables et du texte littéral dans le même bloc { ... }, mais seule la première variable détermine si le bloc est affiché
  • Placez les espaces nécessaires dans le bloc, par exemple { par %artist%}

Exemples :

ModèleRésultat d’exempleSi le champ est vide
%title%{ par %artist%}Seven Nation Army par The White StripesSeven Nation Army
%album%{ (%year%)}Thriller (1982)Thriller
{%composer% ● }%artist%Beethoven ● Berliner PhilharmonikerBerliner Philharmoniker

Utilisez %|condition% comme première variable pour conditionner un bloc sans afficher de valeur.

Exemple :

{%|format.samplerate>"48"% Hi-Res: %format.codec%}

Affiche Hi-Res: FLAC uniquement si format.samplerate > 48.

Utilisez \n dans les blocs conditionnels :

%album%{\n(%year%)}

En dehors de { ... }, préférez %lb% pour les sauts de ligne.


Syntaxe : %field|condition%

Affiche le champ uniquement si la condition est vraie.

Ce que vous pouvez comparer :

  • Le nom d’un autre champ, par exemple artist, composer, year
  • Une chaîne ou un nombre littéral entre guillemets, par exemple "2012", "Rock", "256"

Remarques sur les valeurs littérales :

  • track désigne le champ track
  • "track" désigne le texte littéral track
  • Les guillemets peuvent apparaître dans les valeurs. Assurez-vous que la valeur littérale commence et se termine par "

Exemples :

%year|year>"2012"%
%composer|composer!=artist%
%composer|genre=="Classical"%

OpérateurSignificationExempleNotes
==égal àgenre=="Classical" / artist==composer
!=différent deartist!="Metallica"
+=contientgenre+="Rock"fonctionne avec une valeur littérale ou un autre champ
-=ne contient pasmood-="depressing"
>supérieur àyear>"1999"utilisez des guillemets pour les nombres littéraux
<inférieur àduration<"500"la durée est en secondes
==emptyest videyear==emptyempty est réservé
!=emptyn’est pas videcomposer!=emptyempty est réservé
[]dans la plagebpm[]"0".."100"bornes incluses

Conditions multiples, mélange de && / || et parenthèses

Section intitulée « Conditions multiples, mélange de && / || et parenthèses »
  • Utilisez && pour ET
  • Utilisez || pour OU
  • Vous pouvez mélanger && et || dans la même condition
  • Utilisez des parenthèses (...) pour contrôler la priorité d’évaluation

Exemple :

%format|format.bitdepth!=empty && (format.samplerate>"48" || format.bitdepth>"24")%

Cela affiche %format% uniquement lorsque la profondeur de bits existe et que l’une des conditions suivantes est vraie :

  • la fréquence d’échantillonnage est supérieure à 48
  • la profondeur de bits est supérieure à 24

**Gras**
__Souligné__
~~Barré~~
//Italique//
^^MAJUSCULES^^

Ces variables renvoient des chaînes traduites dans la langue de l’utilisateur :

  • string.hires
  • string.lossless
  • string.lossy
  • string.hires.lossless
  • string.low.quality
  • string.high.quality
  • string.high.efficiency
  • string.time.unit.day.short
  • string.time.unit.hour.short
  • string.time.unit.minute.short
  • string.time.unit.second.short
  • string.time.unit.day.one
  • string.time.unit.day.other
  • string.time.unit.hour.one
  • string.time.unit.hour.other
  • string.time.unit.minute.one
  • string.time.unit.minute.other
  • string.time.unit.second.one
  • string.time.unit.second.other
  • string.track.one
  • string.track.other
  • string.album.one
  • string.album.other

Les modèles de lecture en cours peuvent accéder à :

  • les métadonnées du titre
  • l’état de lecture
  • l’état de la file
  • l’état du chapitre
  • le format audio
  • les informations d’égaliseur / lecteur
  • et plus encore

Utilisez \t pour séparer un modèle en plusieurs segments.

Exemple :

%player.position%\t%format%\t%player.duration%

Avec un espace d’alignement horizontal entre les segments, cela affiche généralement :

  • gauche : position
  • centre : format
  • droite : durée

Utilisez \o pour appliquer une superposition de protection uniquement à cette partie, même si la chaîne complète n’est pas protégée.

Ajoutez next. avant les champs de données d’élément pour faire référence à l’élément suivant de la file :

%next.title%

Pour les champs de chapitre, next.chapter.* fait référence au chapitre suivant.


  • title
  • title.raw
  • cleantitle (titre sans numéro de piste ajouté ni symbole explicite)
  • artist
  • album
  • album.raw
  • album.version
  • album.type (également appelé Release Type)
  • albumartist
  • album.tags
  • album.title
  • album.title.raw
  • album.title.version
  • composer
  • year
  • releasedate
  • originaldate
  • releasedate.year
  • originaldate.year
  • track
  • disc
  • disctitle
  • duration
  • duration.seconds (secondes totales)
  • duration.d (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.h (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.m (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.s (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.dd (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • duration.hh (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • duration.mm (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • duration.ss (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • bpm
  • genre
  • style
  • mood
  • occasion
  • grouping
  • language
  • comment
  • work
  • movement.name
  • movement.number
  • movement.number.roman
  • mediatype
  • providername
  • offlinestatus
  • explicit
  • favorite
  • userrating
  • rating
  • userrating.5 (normalisé sur 5 étoiles)
  • rating.5 (normalisé sur 5 étoiles)
  • track.tags
  • original.artist
  • original.album
  • filepath
  • filename
  • lastplayed
  • lastSkipped
  • isaudiobook
  • playcount
  • skipcount
  • player.position
  • player.duration
  • player.remaining
  • player.position.seconds
  • player.duration.seconds
  • player.remaining.seconds
  • player.paused
  • player.repeat.mode
  • player.shuffle.mode
  • volume.current
  • sleep.timer
  • sleep.timer.seconds
  • sleep.timer.eos
  • queue.position
  • queue.size
  • queue.name
  • smartqueue
  • smartflow
  • radio.mode (1 si issu de Smart Queue, 2+ si issu de Smart Flow)
  • chapter.count
  • chapter.index
  • chapter.title
  • chapter.position
  • chapter.position.seconds
  • chapter.position.d (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.position.h (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.position.m (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.position.s (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.position.dd (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.position.hh (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.position.mm (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.position.ss (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.remaining
  • chapter.remaining.seconds
  • chapter.remaining.d (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.remaining.h (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.remaining.m (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.remaining.s (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.remaining.dd (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.remaining.hh (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.remaining.mm (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.remaining.ss (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.duration
  • chapter.duration.seconds
  • chapter.duration.d (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.duration.h (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.duration.m (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.duration.s (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.duration.dd (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.duration.hh (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.duration.mm (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.duration.ss (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.position
  • chapter.all.position.seconds
  • chapter.all.position.d (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.position.h (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.position.m (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.position.s (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.position.dd (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.position.hh (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.position.mm (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.position.ss (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.remaining
  • chapter.all.remaining.seconds
  • chapter.all.remaining.d (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.remaining.h (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.remaining.m (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.remaining.s (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.remaining.dd (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.remaining.hh (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.remaining.mm (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.remaining.ss (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.duration
  • chapter.all.duration.seconds
  • chapter.all.duration.d (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.duration.h (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.duration.m (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.duration.s (ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.duration.dd (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.duration.hh (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.duration.mm (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • chapter.all.duration.ss (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • format
  • format.bitrate
  • format.bitrate.raw
  • format.samplerate
  • format.samplerate.raw
  • format.bitdepth
  • format.codec
  • format.bitandsample
  • format.channels
  • eq.profile
  • eq.config
  • output.current
  • renderer.current
  • renderer.type
  • lb (saut de ligne)
  • bool1
  • bool2
  • bool3
  • bool4
  • bool5

%title%%lb%{par %artist%}
%album%{ (%year%)}

Compositeur ● Artiste uniquement si le compositeur existe

Section intitulée « Compositeur ● Artiste uniquement si le compositeur existe »
{%composer% ● }%artist%

ligne en trois parties avec \t (position / format / durée)

Section intitulée « ligne en trois parties avec \t (position / format / durée) »
%player.position%\t%format%\t%player.duration%

afficher Hi-Res uniquement pour une fréquence d’échantillonnage élevée

Section intitulée « afficher Hi-Res uniquement pour une fréquence d’échantillonnage élevée »
{%|format.samplerate>"48"% Hi-Res: %format.codec%}

afficher le périphérique de sortie actif (Android ou autre lecteur)

Section intitulée « afficher le périphérique de sortie actif (Android ou autre lecteur) »
{ %output.current|renderer.type=="Android"%}{ %renderer.current|renderer.type!="Android"%}

indicateur de qualité de style Apple basculable (utilise bool1)

Section intitulée « indicateur de qualité de style Apple basculable (utilise bool1) »
ⓘ {%format|bool1=="true"%}{Dolby Atmos %|format.channels>"2" && bool1=="false"%}{%string.high.efficiency|format.bitrate>"10" && format.bitrate<"256" && format.bitdepth==empty && bool1=="false"%}{%string.high.quality|format.bitrate>"255" && format.bitrate<"321" && format.bitdepth==empty && bool1=="false"%}{%string.lossless|format.bitdepth[]"16".."24" && format.samplerate<"49" && bool1=="false"%}{%string.hires.lossless|format.bitdepth[]"16".."32" && format.samplerate>"48" && bool1=="false"%}

Si vous associez une action toggle bool1 à la chaîne personnalisée, elle alterne entre :

  • l’affichage de %format% lorsque bool1 vaut true
  • l’affichage de l’indicateur de style Apple lorsque bool1 vaut false
Vol. %volume.current%%
{%chapter.index% - }%chapter.title%
%chapter.position%\t%chapter.title%\t%chapter.remaining%

progression complète du livre audio par rapport au premier chapitre

Section intitulée « progression complète du livre audio par rapport au premier chapitre »
%chapter.all.position%\t%chapter.all.duration%
%next.chapter.title%
%format.codec% • %format.bitdepth%/%format.samplerate.raw% • %format.bitrate.raw%

Les pages d’album exposent généralement les métadonnées au niveau de l’album, pas l’état de la file ou du lecteur. Vous pouvez utiliser la même syntaxe commune des modèles.

  • title
  • title.raw
  • version
  • tags
  • type
  • status
  • composer
  • artist
  • year
  • duration
  • duration.seconds (secondes totales)
  • duration.d (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.h (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.m (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.s (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.dd (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • duration.hh (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • duration.mm (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • duration.ss (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • genre
  • style
  • mood
  • language
  • providername
  • offlinestatus
  • occasion
  • mediatype
  • grouping
  • explicit
  • releasedate
  • originaldate
  • releasedate.year
  • originaldate.year
  • lastplayed
  • lastSkipped
  • userrating
  • rating
  • userrating.5
  • rating.5
  • favorite
  • song.count
  • playcount
  • skipcount
  • description
  • format
  • format.bitrate
  • format.channels
  • format.samplerate
  • format.bitdepth
  • format.codec
  • format.bitandsample
  • format.bitrate.raw
  • format.samplerate.raw
  • lb

titre d’album + version uniquement si la version existe

Section intitulée « titre d’album + version uniquement si la version existe »
%title%{ — %version%}

ligne année + genre en ignorant les parties manquantes

Section intitulée « ligne année + genre en ignorant les parties manquantes »
%year%{ • %genre%}

note affichée uniquement si l’utilisateur a noté l’élément

Section intitulée « note affichée uniquement si l’utilisateur a noté l’élément »
{★ %userrating.5%/5%|userrating!=empty%}
{⬇ Hors ligne%|offlinestatus!=empty%}

Les pages d’artiste exposent généralement les métadonnées au niveau de l’artiste et les statistiques de bibliothèque. Vous pouvez utiliser la même syntaxe commune des modèles.

  • title
  • title.raw
  • version
  • tags
  • type
  • gender
  • duration
  • duration.seconds (secondes totales)
  • duration.d (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.h (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.m (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.s (ajoutez .nz pour masquer si la valeur est zéro)
  • duration.dd (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • duration.hh (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • duration.mm (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • duration.ss (complété par des zéros, ajoutez .nz pour masquer si la valeur est zéro)
  • genre
  • style
  • mood
  • song.count
  • album.count
  • instrument
  • providername
  • offlinestatus
  • lastplayed
  • userrating
  • userrating.5
  • favorite
  • playcount
  • description
  • lb
%song.count% titres{ • %album.count% albums}
%genre%{ • %style%}

afficher le badge Favori uniquement si l’élément est favori

Section intitulée « afficher le badge Favori uniquement si l’élément est favori »
{♥ Favori%|favorite!=empty%}
%title%{\n%instrument%}