2010-11-20 18 views
1

Ich brauche einen "shufflealben" Algorithmus für meinen Audio Player wie in foobar2k. Das Problem ist also: Ich habe eine Liste von Titeln, die nach einigen Kriterien sortiert sind, so dass Titel mit demselben Album alle nebeneinander liegen. Jetzt muss ich in der Lage sein, Songs aus der Wiedergabeliste im "Shufflealben" -Modus abzuspielen, das heißt, wenn der nächste Titel aus demselben Album stammt, spiele ihn einfach, sonst gehe ich zum ersten Titel eines nächsten Zufallsalbums. Wenn der Benutzer den vorherigen Titel abspielen möchte, machen Sie dasselbe, aber rückwärts. Die Frage ist also: Woher weiß ich, welches vorherige Album war? Ich möchte wirklich keine Geschichte von gespielten Alben behalten oder eine separate Liste führen.Shuffle Groups Algorithmus

Derzeit implementiere ich den regulären Shuffle-Modus, indem ich jedem Track einen zufälligen Shuffle-Index gebe, damit ich vorherige und nächste Tracks finden kann, indem Tracks mit dem größten Shuffle-Index kleiner als der aktuelle und der kleinste Shuffle-Index größer als der aktuelle gefunden wird. Aber es funktioniert nicht für Shuffle-Alben. Kann mir jemand dabei helfen?

Probeneingang:

Track 1, Album A 
Track 2, Album A 
Track 1, Album B 
Track 2, Album B 
Track 3, Album B 
Track 1, Album C 
Track 2, Album C 
Track 3, Album C 

sagt Let aktuelle Titel Titel 1, Album A. Nächster Titel wird Track 2, Album A. Nächster Titel nicht aus demselben Album ist, so dass eine erste Spur von a ein zufälliges Album sollte gewählt werden, sagen wir, Track 1, Album C. Was ich jetzt mache ist, den nächsten Track zu wählen, als ob es der normale Shuffle-Modus wäre, dann zum ersten Track seines Albums zu gehen und Informationen von dort zu verlieren zu diesem Album. SO, wenn der Benutzer zum vorherigen Album gehen möchte, habe ich keine Information, wie ich dorthin kam. Hoffnung, die die Frage klarer macht.

Vielen Dank.

+0

Sie müssen Beispieleingabe mit Beispielen Ihres Prozesses anzeigen. – Yehonatan

+0

Wenn Sie wirklich in einer nicht-sequentiellen Liste zurückverfolgen müssen, müssen Sie den Verlauf speichern ... –

Antwort

2

Sie können Ihre Shuffle-Index-Technik zum Indexieren von Alben verwenden. Jetzt ist ein Track-Index ein Paar (Album Shuffle Index, Track pos). Um zu navigieren, erhöhen/verringern Sie den Track pos; Wenn es außerhalb der Grenzen liegt, aktualisieren Sie den Albumindex.

Das heißt, Sie sollten es überdenken, nicht eine Geschichte zu halten; Es würde Sie viel schneller mit einer großen Anzahl von Alben zurückspringen lassen.

+0

Danke, Sie haben mich auf die richtige Art und Weise angesprochen, meine Shuffle-Indizes wiederzuverwenden. Ich habe keine separaten Shuffle-Indizes für das Album beibehalten, sondern nur die ersten Spuren von Alben in meinem normalen Shuffle-Algorithmus verwendet. –