Random pools

Begonnen von qwert73, 03. Januar 2010, 14:57:28

Vorheriges Thema - Nächstes Thema

qwert73

Hallo fbuser,

hatte gestern abend/nacht Zeit, mich mit deiner neuen Komponente zu beschäftigen, und halte sie für vielversprechend. Du hast ja 2 Fliegen mit einer Klappe geschlagen: Man kann nicht nur eine gruppierungsbasierte Auswahl an Tracks definieren, wie sie mit Title Formatting oder der Query Syntax nicht möglich wäre, sondern auch eine Art AutoDj Playliste zum Spielen bringen. Ich habe nun ein paar Fragen, einen Wunsch (ist das die richtige Übersetzung für "feature request"?) und einen Verbesserungsvorschlag.

Fragen

Wenn ich richtig verstanden habe, funktioniert die Priorität von Random Pools beim Auto-Add folgendermaßen: Angenommen wir haben 2 Random Pools, einer mit Priorität 2 und der andere mit 10, so wird der erste Pool mit einer Wahrscheinlichkeit von 1:5 geaddet - kommt ein dritter Pool mit einer Priorität von 6 hinzu, so ändert sich die Wahrscheinlichkeit des ersten Pools dann zu 1:9. Richtig?

Auch nach Lesen der Anleitung werde ich aus der Option "Don't determine distinct group values" nicht schlau. Was bewirkt die Option denn genau?

Wünsche (Feature Requests)

Ich habe einige Requests, aber fürs erste sollte folgendes genügen:

Die "Sort Order" im Random Pool Fenster bezieht sich auf die Sortierung innerhalb einer Gruppierung. Ich fände eine Option nützlich, mit der bei mehreren hinzuzufügenden Gruppierungen das Gesamtergebnis sortiert würde - gerade dann, wenn ich jeweils eine einzelne Gruppierung auf wenige Tracks oder gar einen Track begrenze, wäre das nützlich.

Darüberhinaus wäre es schön, wenn bei der Beschränkung einer Gruppierung auf eine bestimmte Anzahl von Tracks diese nicht zufällig herausgepickt würden, sondern auf Grundlagen einer "Selection order" (auch nur ein Sort-String). Somit wäre es möglich, beispielweise eine Gruppierung für Künstler zu definieren, vier zufällige Künstler auszuwählen, von denen lediglich 3 Stücke herausgepickt werden sollen. Mit Hilfe einer "Selection order" könnte man steuern, dass Stücke mit höherem Rating gepickt werden.

Verbesserungsvorschlag

Sei mir nicht böse, aber der Aufbau des Random Pool Fensters macht es einem nicht leicht, sofort die Funktionsweise der Komponente zu erschließen. Bevor wir uns aber in ellenlangen Posts verlieren und doch nicht verstehen, mache ich dir folgenden Vorschlag: Ich kann mit ResHack ein neues Fenster zusammenschustern, welches dem schnellen und intuitivem Begreifen förderlicher wär. Meiner Meinung nach ist das ein nicht zu vernachlässigender Aspekt einer Komponente.

Viele Grüße und Danke für die Mühe!






fbuser

Zitat von: qwert73 in 03. Januar 2010, 14:57:28
Wenn ich richtig verstanden habe, funktioniert die Priorität von Random Pools beim Auto-Add folgendermaßen: Angenommen wir haben 2 Random Pools, einer mit Priorität 2 und der andere mit 10, so wird der erste Pool mit einer Wahrscheinlichkeit von 1:5 geaddet - kommt ein dritter Pool mit einer Priorität von 6 hinzu, so ändert sich die Wahrscheinlichkeit des ersten Pools dann zu 1:9. Richtig?
Korrekt.

Zitat von: qwert73 in 03. Januar 2010, 14:57:28Auch nach Lesen der Anleitung werde ich aus der Option "Don't determine distinct group values" nicht schlau. Was bewirkt die Option denn genau?
Ist diese Option aktiviert wird unter der Berücksichtigung des Filters ein zufälliger Titel aus der Media-Library ausgewählt und anhand dieses Titels die akuelle Gruppe für den Pool ermittelt. Ansonsten werden zunächst alle verschiedenen Werte einer Gruppe ermittelt, und aus diesen Werten wird dann ein zufälliger Wert ausgewählt. Einfaches (nicht realistisches) Beispiel:

Die Media-Library besteht aus 3 Alben:
Album 1: 2 Titel
Album 2: 3 Titel
Album 3: 5 Titel

Ist die besagte Option gewählt, liegt die Wahrscheinlichkeit für die Auswahl von Album 3 bei 50%, da Album 3 mit 50% der Titel in der Media-Library vertreten ist und somit bei der Auswahl entsprechend gewichtet wird. Ohne die Option ist die Wahrscheinlichkeit für die Auswahl eines Albums unabhängig von der Titelzahl und Album 3 würde mit einer Wahrscheinlichkeit von 33,3% ausgewählt.

Zitat von: qwert73 in 03. Januar 2010, 14:57:28Die "Sort Order" im Random Pool Fenster bezieht sich auf die Sortierung innerhalb einer Gruppierung. Ich fände eine Option nützlich, mit der bei mehreren hinzuzufügenden Gruppierungen das Gesamtergebnis sortiert würde - gerade dann, wenn ich jeweils eine einzelne Gruppierung auf wenige Tracks oder gar einen Track begrenze, wäre das nützlich.
Das ist sicherlich sinnvoll, allerdings habe ich die Möglichkeit mehrere Gruppen für einen Pool zu ermitteln eher als bequeme Möglichkeit gesehen, nicht fünf mal hintereinander das Menü für einen Pool aufrufen zu müssen. Dementsprechend ist das Ermitteln der jeweiligen Titel auch aufgebaut, so daß doch einiges umgebaut werden müßte, um das von dir gewünschte Verhalten zu erreichen. Ich werde das aber auf jeden Fall im Hinterkopf behalten.

Zitat von: qwert73 in 03. Januar 2010, 14:57:28Darüberhinaus wäre es schön, wenn bei der Beschränkung einer Gruppierung auf eine bestimmte Anzahl von Tracks diese nicht zufällig herausgepickt würden, sondern auf Grundlagen einer "Selection order" (auch nur ein Sort-String). Somit wäre es möglich, beispielweise eine Gruppierung für Künstler zu definieren, vier zufällige Künstler auszuwählen, von denen lediglich 3 Stücke herausgepickt werden sollen. Mit Hilfe einer "Selection order" könnte man steuern, dass Stücke mit höherem Rating gepickt werden.
Dann würden aber immer dieselben 3 Stücke für einen bestimmten Künstler ausgewählt. Das erscheint mir nicht so sinnvoll oder ich verstehe dich hier falsch.

Zitat von: qwert73 in 03. Januar 2010, 14:57:28Sei mir nicht böse, aber der Aufbau des Random Pool Fensters macht es einem nicht leicht, sofort die Funktionsweise der Komponente zu erschließen.
Ich glaube nicht, daß sich jemandem die genaue Funktionsweise erschließt ohne die Hilfe gelesen zu haben, aber, wie du schon sagst:

Zitat von: qwert73 in 03. Januar 2010, 14:57:28Bevor wir uns aber in ellenlangen Posts verlieren und doch nicht verstehen
Das wäre nicht das erste Mal ;)

Zitat von: qwert73 in 03. Januar 2010, 14:57:28Ich kann mit ResHack ein neues Fenster zusammenschustern,
Das kannst du gerne machen und ich werde mir das auch wohlwollend ansehen. Allerdings je mehr Aufwand für die Umsetzung notwendig ist, desto geringer ist die Wahrscheinlichkeit, daß ich das machen werde.

Zitat von: qwert73 in 03. Januar 2010, 14:57:28welches dem schnellen und intuitivem Begreifen förderlicher wär. Meiner Meinung nach ist das ein nicht zu vernachlässigender Aspekt einer Komponente.
Grundsätzlich gebe ich dir hier zwar Recht, aber das ist für mich immer auch eine Frage von Aufwand und Nutzen. Ich schreibe die Komponenten in erster Linie zu meinem eigenen Gebrauch und da meine Zeit dafür doch etwas begrenzt ist, muß ich mich auch immer fragen, welchen Aufwand soll ich betreiben, damit andere etwas schneller und intuitiver begreifen.

qwert73

#2
Zitat von: fbuser in 03. Januar 2010, 19:14:44
Zitat von: qwert73 in 03. Januar 2010, 14:57:28Darüberhinaus wäre es schön, wenn bei der Beschränkung einer Gruppierung auf eine bestimmte Anzahl von Tracks diese nicht zufällig herausgepickt würden, sondern auf Grundlagen einer "Selection order" (auch nur ein Sort-String). Somit wäre es möglich, beispielweise eine Gruppierung für Künstler zu definieren, vier zufällige Künstler auszuwählen, von denen lediglich 3 Stücke herausgepickt werden sollen. Mit Hilfe einer "Selection order" könnte man steuern, dass Stücke mit höherem Rating gepickt werden.
Dann würden aber immer dieselben 3 Stücke für einen bestimmten Künstler ausgewählt. Das erscheint mir nicht so sinnvoll oder ich verstehe dich hier falsch.
Ich meine folgendes: Nehmen wir an, wir haben 4 hinzuzufügende Gruppierungen "%album%" - heißt: es werden vier zufällige Alben hinzugefügt. Beschränken wir die Anzahl der Tracks auf 3! Heißt: Von den 4 zufälligen Alben werden jeweils 3 Stücke ausgewählt. So weit so gut! Die Frage ist nun: welche 3 Stücke? Bislang sind es 3 zufällige, was ja manchmal Sinn machen kann. Was aber, wenn ich die Auswahl dieser Stücke nicht dem Zufall überlassen will, sondern Lust auf solche habe, die lange nicht mehr gespielt wurden, oder auf solche, die garantiert kein schlecht bewerteter Mist sind? Im ersteren Fall würde die "Selection order" die Gruppierung nach "%last_played%" sortieren und die ersten 3 picken - im letzteren Fall die Gruppierung nach "$sub(100,%rating%)" sortieren und da die ersten 3 picken, womit sichergestellt wäre, dass keine schlechten ausgewählt würden. Will man trotzdem eine rein zufällige Auswahl der limitierten Stücke, so wäre die "Selection order" als "$rand()" zu definieren. Die gleichen 3 Stücke können da gar nicht rauskommen. Diese "Selection order" von der ich rede, ist zu vergleichen mit der "Population sort order" in Playlit Tree.


Zitat von: fbuser in 03. Januar 2010, 19:14:44Ich glaube nicht, daß sich jemandem die genaue Funktionsweise erschließt ohne die Hilfe gelesen zu haben
Weiß nicht: ich habe auch nicht auf Anhieb durchschaut, dass sich "Sort order" auf eine Gruppierung und nicht auf das Gesamtergebnis bezieht - auch hat nur die Anleitung einem klar machen können, dass die Limitierung der Tracks gruppierungsspezifisch ist: selbst der Name der Option erwähnt ja nichts! Es ist schon viel damit getan, dass Elemente, die zusammengehören, weil sie sich unmittelbar auf die Eigenschaften der Gruppierung beziehen, nicht auseinandergerissen werden. Letztendlich würde auch die von dir geschriebene Hilfe nur noch besser werden können, wenn sie von einem "sinnvoll" gestalteten Fenster ausginge.

Zitat von: fbuser in 03. Januar 2010, 19:14:44Ich schreibe die Komponenten in erster Linie zu meinem eigenen Gebrauch und da meine Zeit dafür doch etwas begrenzt ist, muß ich mich auch immer fragen, welchen Aufwand soll ich betreiben, damit andere etwas schneller und intuitiver begreifen.
Deswegen ja auch mein Vorschlag eines anderen Entwurfes: Die Einzelheiten dort sind nicht wichtig -es geht um das grundlegende Prinzip, das sich u.a. der sog. "Groupboxes" bedient. Ich habe mir die Freiheit herausgenommen, meine "Feature Requests" einzubauen, um zu zeigen, dass selbst unter zwei Optionen mehr der Aufbau immer noch vielsagender ist.



Wenn man den neuen Aufbau von oben nach unten durchgeht, so halte ich das Begreifen für deutlich einfacher.


fbuser

zur Selection order: für %last_played% ist es sinnvoll, für %rating% nur bedingt, da im Falle von z.B. 5 gleich bewerteten immer dieselben 3 "besten" Titel ausgewählt werden würden (das könnte man natürlich auch verhindern, aber das macht die ganze Angelegenheit dann auch wieder komplexer). Aber grundsätzlich sollte eine solche Funktionalität machbar sein.

zum Dialog: die gruppenbezogenen Optionen könnten besser angeordnet werden, da gebe ich dir Recht. Aber die Gruppierung gehört auf jeden Fall nach oben, da diese als Basis für die Auswahl der Titel eine Pflichtangabe ist, während Sortierung und Filter nur optional sind. Weiter habe ich die Sortierung auch bewußt als mehrzeiliges Eingabefeld gewählt, da diese durchaus auch komplexer sein kann. Dann ist ein einzeiliges Eingabefeld einfach zu klein.

qwert73


Zitat von: fbuser in 03. Januar 2010, 23:09:50
zur Selection order: für %last_played% ist es sinnvoll, für %rating% nur bedingt, da im Falle von z.B. 5 gleich bewerteten immer dieselben 3 "besten" Titel ausgewählt werden würden (das könnte man natürlich auch verhindern, aber das macht die ganze Angelegenheit dann auch wieder komplexer).
Sicher würden immer die gleichen drei Stücke ausgewählt werden, aber ja nicht bei jedem Hinzufügen, sondern bei einer exakt identischen Gruppierung. Wie wahrscheinlich ist es aber nun (eine bestimmte Größe der Library vorausgesetzt), dass dieselbe Gruppierung und damit die gleichen Stücke zweimal hintereinander ausgewählt und hinzugefügt werden werden würden? Genau so oft letztendlich wie bei der gleichen Gruppierung ohne eine Limitierung. Letztendlich ist es auch eine Laune des reinen Zufalls, beim "Mensch ärgere dich nicht" 7 mal hintereinander die "6" zu würfeln - der Glückspilz würde rufen: "Was für ein Zufall!", was nicht viel mehr heißt, als dass es sich nicht vermeiden ließ. ;)


Zitat von: fbuser in 03. Januar 2010, 23:09:50
Aber die Gruppierung gehört auf jeden Fall nach oben, da diese als Basis für die Auswahl der Titel eine Pflichtangabe ist, während Sortierung und Filter nur optional sind. Weiter habe ich die Sortierung auch bewußt als mehrzeiliges Eingabefeld gewählt, da diese durchaus auch komplexer sein kann. Dann ist ein einzeiliges Eingabefeld einfach zu klein.
Wie gesagt, um Einzelheiten muss es nicht gehen, sondern darum Zusammengehöriges kenntlich zu machen - "Groupboxes" sind ein wunderbares Mittel dafür.

qwert73

Also, hier meine 2 weiteren Feature Requests, von denen oben die Rede war:

1. Es wäre erleichternd, wenn man nicht jedes Mal das Random Pool Fenster aufrufen müsste, um die Priorität mehrerer Gruppierungen zu ändern. Deutlich flotter wäre es doch, wenn der Job in der Liste in den Preferences sich erledigen ließe.

2. Interessiert wäre ich auch, bei den Auto-Add Optionen auch die Zahl "0" nutzen zu können, falls es überhaupt technisch möglich ist. Eine Deaktivierung könnte dann einfach durch ein leeres Feld erreicht werden.

fbuser

Zitat von: qwert73 in 07. Januar 2010, 19:56:29
1. Es wäre erleichternd, wenn man nicht jedes Mal das Random Pool Fenster aufrufen müsste, um die Priorität mehrerer Gruppierungen zu ändern. Deutlich flotter wäre es doch, wenn der Job in der Liste in den Preferences sich erledigen ließe.
Hier stimme ich dir ohne Einschränkung zu.

Zitat von: qwert73 in 07. Januar 2010, 19:56:29
2. Interessiert wäre ich auch, bei den Auto-Add Optionen auch die Zahl "0" nutzen zu können, falls es überhaupt technisch möglich ist. Eine Deaktivierung könnte dann einfach durch ein leeres Feld erreicht werden.
Welchen Zweck würde das erfüllen? Ob jetzt eine Playlist neu aufgefüllt wird, wenn keiner oder nur ein Titel vorhanden ist, macht für mich erst mal keinen großen Unterschied. Für den anderen Fall, der abhängig von der Playback-Position ist, wird der gerade gespielte Titel mitgezählt, d.h. bei einem Wert von 1 wird erst mit Beginn des letzten Titels eine neuer Pool hinzugefügt.

qwert73

Zitat von: fbuser in 07. Januar 2010, 21:06:46
Hier stimme ich dir ohne Einschränkung zu.
Habe noch überlegt, ob es sinnvoll sein kann, auch den "Group Count" herauszunehmen. Glaube aber, besser nicht, weil im Titel sich der "Group Count" wiederfindet: z.B. "3 random albums from the 80s"

Zitat von: fbuser in 07. Januar 2010, 21:06:46
Welchen Zweck würde das erfüllen?
Ähhm!? Die Spannung noch ein wenig auf die Spitze treiben? Hast ja recht! ;)

Bubi

Ich würde gerne ganze Alben in den Pool aufnehmen, wenn mindestens eine Bedingung erfüllt ist, aber das geht nicht, oder?

Beispiel: Sobald mindestens ein Lied mit 4 bewertet wurde, bekommt man das ganze Album.

fbuser

Nein, das geht nicht.

Antwort auf die Nachfrage, ob das eingebaut werden kann: Vielleicht.

qwert73

Hallo fbuser!

Vielen Dank für die neue Version! Wirkt doch direkt viel aufgeräumter und klarer mit dem neuen Fenster. ;)

Danke auch, dass Du meine Vorschläge aufgenommen, was die erweiterten Möglichkeiten zur Sortierung angeht. Hier möchte ich aber nocheinmal nachhaken: man kann ja jetzt die Gruppierung vor der Limitierung sortieren - schade finde ich aber, dass als Sortierungsstring nur derjenige zur Verfügung steht, der auch die Anzeige in der Playlist bestimmt. Mir ging es ja darum, beide Sortierungen getrennt zu halten. Diejenige Sortierung, welche vor der Limitierung einer Gruppe passiert, soll ja die die Auswahl der Tracks einer Gruppe bestimmen, wohingegen der andere die Anzeige (in der Playliste) bestimmt. Ich hoffe, Du verstehst, was ich meine. Aus Playlist Tree müsste dir ja die Unterscheidung zwischen "population sort" und "display sort" geläufig sein.

Würd mich freuen, wenn Du dieses Feature irgendwann mal einbauen könntest. Platz für ein Eingabefeld in der Groupbox "Limit" gibt es ja noch reichlich bei dem neuen Riesenfenster. Ein hübscher Name, der auch in anderen Programmen für diese Funktion häufig benutzt wird, wäre "select by:".

Bin gespannt auf die weitere Entwicklung deiner Komponente! Klasse Teil! :)