Alors, à force d'en parler ici et là, et voyant le besoin se faire sentir (surtout ici), je me décide enfin à ouvrir un petit sujet sur ce (merveilleux) plugin pour foobar.
foo_playlist_tree est une média librairie avec affichage hiérarchique. Il permet l'utilisation de playlists statiques et dynamiques. Il est intégrable dans le column_ui, et offre un affichage sur deux vues d'une part l'affichage arborescent et d'autre part l'affichage de la liste des pistes correspondant au noeud de l'arbre sélectionné.
Avertissement: j'utilise la version 1.7.6 du 18 septembre, à l'heure ou j'écris le dernière version est la 1.7.9, que le langage de script des queries et de l'affichage est en pleine mutation, que les nouvelles fonctionnalités vont me faire revoir (grandement alléger) pas mal de mes queries.
Les Liens officiels:
Le tutorial est indispensable pour bien commencer et assimiler les concepts de base. Même si il est totalement out to date, les fonctionnalités et variables présentées existent encore, mais plein de nouvelles ont été rajoutées.
Comme je ne vais pas refaire un tutorial en français, je pense plutôt traiter le sujet par l'exemple, et vais donc faire le point sur mes tags personnels, et l'utilisation que j'en ai grâce à ce plugin.
Je vais quand même commencer par souligner quelques points fondamentaux de ce plugin :
- Le point négatif, à mon sens : Les Queries sont calculées "d'un bloc", l'intégralité de l'arborescence générée par la query est stocké en mémoire et dans un fichier. L'arborescence ne sera vraissemblablement jamais utilisée dans son intégralité, d'où une surcharge de ram et de calcul regrétables. (J'aurais préféré une gestion dynamique avec création de chaque branche au moment de l'ouverture du noeud père, ce qui aurait sûrement permis d'alléger la mémoire, mais doit être bien plus compliqué a coder).
Le reste, que du bonheur :
- utilisation de #tag# pour le traitement séparé des multiples valeurs d'un même tag. (marche même dans les $if()
- @any<> : (nouvelle syntaxe) permet de rassembler plusieurs tags et d'y appliquer un même filtrage, affichage
- $drop() : permet de prendre pour source de données le contenu d'un répertoire spécifique
- $playlist() : la même mais depuis une playlist
- $node() : ajoute a une query le contenu d'un autre noeud de l'arbre
- $playing() : permet de récupérer les tags du morceau en cours, et donc de faire des queries avec update dynamique, qui sont mises à jour en fonction du morceau joué (ex: albums de l'artiste en cours, différentes interprétations du morceau en cours...)
- $first, $sum, $avg : fonctions applicables aux tags contenus dans la query
- @limit<> : limite le nombre de fils d'un noeud
Voyons maintenant l'interface.
On a donc une fenêtre de navigation principale qui peut être soit fixe, soit dans column_ui, son affichage se fait sous forme arborescente uniquement.
Un affichage secondaire permet de lister le contenu du noeud en cours, il existe deux possibilités:
- D'une part la "Library Playlist" qui est une playlist standard automatiquement mise à jour a partir de Playlist Tree
- D'autre part, le "Browser" qui est une fenêtre indépendante affichant sous forme de liste
Pour vous donner une idée de ce que l'on peut faire avec playlist tree, et également d'où en est mon tagging & affichage, voici deux copies d'écran de mon foobar :
Ainsi qu'une copie d'écran en déployé de mon playlist tree :
On peu noter que dans Jazz/60's, on voit bien le même album apparaitre sous différents noms.
Enfin, pour donner une idée des tags que j'utilise, voici une vue déployée de mon menu contextuel:
L'agencement ainsi que le contenu peuvent être discutés, mais le plus important c'est de voir que y'en a une tripotée, et qu'ils me servent tous et ce grace au Playlist Tree.
Bon, on vois donc que j'utilise pas mal de tags persos, que j'en profite d'une part dans mon affichage et d'autre part dans mon playlist tree.
On va maintenant décortiquer
quelques exemples de queries intéressantes:
Label: Bandes Originales
Query: (soundtrack IS *) AND (__replaygain_album_gain IS *)
[x] foo_playlist_gen format
Format: ... (par album)
Max: 0
Sort Criteria: (.) display
En la décortiquant un peu qu'est ce qu'on peut voir :
Query:
- soundtrack IS * : toutes les pistes qui ont un tag soundtrack
- __replaygain_album_gain IS * : et un tag __replaygain_album_gain : filtrer sur __replaygain_album_gain me permet de virer les pistes qui n'en ont pas, et que donc a priori, je n'ai pas encore tagé.
Format: Mon format est super compliqué et pas vraiment lisible, c'est une conséquence directe de la quantité de mes tags... l'éléments intéressant à voir, aurait été le '|' qui permet de séparer les niveaux de l'arbre.
Max: 0 (= pas de max)
Sort criteria: par défaut, cad le tri par défaut que j'ai configuré dans les options de mon playlist tree.
- Classique, par Référence Catalogues
Label: Classique/Catalogues
Query: cat IS *
[x] foo_playlist_gen format
Format: %composer%|%cat% - %title%[' ( in '%mode%' )']|%director% - %date%|$if(%mvtnumber%,$num(%mvtnumber%,2)' - ')[' ['%tempo%']'] $if2(%mvt%,%title%)
Affichage totalement différent pour les oeuvres de classique triées par référence catalogue:
Query: toutes les pistes ayant la valeur %cat%
Format: Compositeur|Cat - Nom_De_L'Oeuvre (in mode)|Chef - Date|Num_Mouvement - Tempo - Nom_Mouvement
Label: Singles - par Ambiance
Query: ("single title" IS *) OR ((__replaygain_album_gain MISSING) AND (__replaygain_track_gain IS *)) AND (mood IS *)
[x] foo_playlist_gen format
Format: $replace(%mood%,Zen,1 - Zen,Soft,2 - Soft,Medium,3 - Medium,Mouv,4 - Mouv,Speed,5 - Speed)|$num($mod($rand(),1000),3) - %artist% - %title%[' ('%date%')']
Affichage de mes singles triés par ambiance.
Query:
- Soit le tag %single title% est présent (identifie un single présent dans un album)
- Soit j'ai un __replaygain_track_gain et je n'ai pas de __replaygain_album_gain (identifie un single venant de mon répertoire ne contenant que des singles)
- Et : %mood% a une valeur (donc j'ai attribué un tag ambiance)
Format: affiche le 1° niveau l'ambiance (trié par "niveau" ), puis un numéro aléatoire entre 000 et 999, l'artiste et le titre (+ la date)
Le nombre aléatoire me permettait d'avoir un ordre aléatoire dans mes singles, cette bidouille n'est plus nécessaire maintenant, car avec la dernière version on a un 1° tri avant filtrage et un 2° tri après filtrage.
Label: Top 50 des Écoutes
Query: play_counter IS *
[x] foo_playlist_gen format
Format: %artist% - %title%[' ('%date%')']
Max: 50 (.) tracks
Sort criteria: $num(%play_counter%,3)
(.) custom
Ca se passe de commentaire...
- Albums écoutes, Par Lettre, Artiste, Notation
Label: Ecoutes/Par Lettre/Artiste/Album-*
Query: (various MISSING) AND (artist IS *) AND (__replaygain_album_gain IS *) AND (play_counter IS *)
[x] foo_playlist_gen format
Format: $upper($cut(#artist#,1))|#artist#|$repeat($char(9733),%rating%)$if(%various%,VA,$if(%album artist%,%album artist%,#artist#)) - '('[%date%]')' [%album%]|... (affichage de l'album)
Query:
- various MISSING : exclure les albums VA
- artist is * : le champ artist existe
- __replaygain_album_gain IS * : l'album est tagé
- play_counter IS * : la piste a déjà été écoutée
Format:
- $upper($cut(#artist#,1)) : 1° lettre de l'artiste avec gestion tags multivalués
- #artist# : artiste (gestion tags multivalués)
- Album, précédé de sa notation
Label: @playing<%title%>
[x] Refresh automatically
Query: title IS @playing<%title%>
[x] foo_playlist_gen format
Format: '['%date%']' %artist% %album%
Label: il est automatiquement mis à jour avec la piste en cours
Refresh automatically: permet de mettre a jour la query sur chaque action de foobar
Query: idem, on matche les pistes ayant le même nom que la piste en cours
Voilà, je pense avoir fait un petit tour d'horizon de ce plugin, et espère que ça intéressera du monde.
Message édité par Solt le 05-10-2005 à 13:34:10