AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Die Vision eines intelligenten Mediaplayers...

Die Vision eines intelligenten Mediaplayers...

Ein Thema von Mithrandir · begonnen am 10. Okt 2010 · letzter Beitrag vom 4. Feb 2011
Antwort Antwort
Seite 1 von 6  1 23     Letzte » 
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.378 Beiträge
 
#1

Die Vision eines intelligenten Mediaplayers...

  Alt 10. Okt 2010, 18:17
Ich finde, dieser Beitrag gehört nicht in K&T, weil er ja doch definitiv was mit Programmierung zu tun hat. Außerdem ist er recht lang. Es könnte passieren, dass ihr während des Lesens einschlaft. Sorry schonmal dafür.

Ich hab heute mal aus reinem Interesse die Vita vom Facebook-Mitbegründer Mark Zuckerberg gelesen. Da fand sich unteranderem ein kleiner Satz über Synapse, einen Mediaplayer den Mark zusammen mit Adam D'Angelo geschrieben hat. Irgendwann ist dieser (= der Player) aber in der Versenkung verschwunden, vermutlich, weil er grad an nem Webprojekt gearbeitet hat...

Ich finde jedenfalls die Idee dahinter nicht schlecht, und stelle mir dabei sowas wie eine "intelligente Shuffle-Funktion" vor.

Man kennt das ja. Wenn man die Shufflefunktion seines Mediaplayer nutzt, werden einem zufällig Songs präsentiert. Im Regelfall ist man, gerade bei großen Datenbanken, dann aber eher damit beschäftigt, den Song zu skippen, weil man bspw. nachm Soundtrack von Inception gerade keinen Bock auf die Schmusestimme von James Blunt hat. Wie umgeht man das Problem heutzutage meist? Man erstellt sich Playlists, vielleicht nach Stimmung sortiert, vielleicht nach Künstlern oder Genres. Im Regelfall skippt man aber einfach weiter und nimmt es so hin, denn eigentlich hat man für die Erstellung von Playlists auch keine Zeit. Was könnte man dagegen tun?

Zum einen könnte man gucken, wie oft welche Lieder abgespielt werden. Das mag zwar hilfreich sein, ändert aber nichts daran, dass, wenn ich mir bspw. James Blunt anmache, weil ich gerade in einer traurigen Stimmung bin, ich nun keinen Bock auf Iron Maiden habe, auch wenn es die Tage davor rauf und runterlief, und entsprechen oft gespielt wurde.

Wie wäre es aber, wenn der Mediaplayer in der Lage wäre, zu erkennen, was wir in welcher Stimmung hören wollen und welche Lieder zusammenpassen? Nehmen wir an, wir haben die Lieder A,B,C,D,E,F...Z. Wenn der Player jetzt intelligent wäre, könnte er während der Benutzung dazu lernen. Um einen Startpunkt zu haben, analysiert man erstmal die BPM aller Lieder. Da das bei einer großen Datenbank entsprechen lange dauern wird, kann man dies im Hintergrund tun. Ist man fertig, hat man schonmal ein paar Verknüpfungspaare. So weiß man bspw, dass die Lieder A-E, J-L und X-Z alle im selben BPM Bereich sind, bspw. 120. Es wäre also eine gute Idee, wenn Lied D abgespielt wird, dann im Shuffle Modus ein Lied aus den Blöcken J-L oder X-Z zu benutzen.

Und jetzt kommt der User ins Spiel. Es geht dann darum, Verknüpfungen zwischen den einzelnen Liedern aufzubauen. Wenn der User Lied A spielt, dann Lied C und dann Lied I (und zwar bewusst dahinspringt), dann kann man als Programm davon ausgehen, dass die Lieder für den User eine Einheit bilden. Kommt dies häufiger vor, wird die Bindung zwischen den einzelnen Liedern immer stärker.

Im Prinzip würde die Anforderung an den Player lauten: "Erinnere dich daran, was ich als nächstes gehört habe. Wenn du mir die Lieder liefern sollst, dann erinnerst du dich an meine Auswahl." Denn wenn man mal in sich geht und überlegt, dann weiß man selbst eigentlich immer am Besten, welche Lieder zueinander passen und welche nicht.

Natürlich kann man die Liedgruppen nicht isoliert betrachten. Es könnte bspw sein, dass Lied R nach Lied X und nach Lied A fast gleichoft gehört wurde. Diese Tatsache könnte man aber auch geschickt nutzen, in dem man die Liedgruppen A,C,I und X-Z über das Lied R miteinander verknüpfen könnte, quasi als geschickter Übergang.

Natürlich gibt es noch andere Sachen, die man bedenken muss. Bei so einem System hätten neue Lieder, die neu in die Liste geladen werden, ein Problem. Dem könnte man entgegenwirken, in dem die Bindungen über die Zeit wieder schwächer werden, sodass auch neue Songs die Chance haben, in das System eingebunden zu werden. Außerdem sollte es bspw. bei der Gruppe A,C,I egal sein, in welcher Reihenfolge sie gespielt werden.

Jetzt gibt es nur eine technische Überlegung: Wie setzt man sowas am geschicktesten um? Über ein System ähnlich neuronaler Netze? Und wie speichert man die Verbindungen zwischen den einzelnen Liedern ab. Fragen über Fragen... Und eure Ideen sind mir dazu Willkommen. Mein ihr, sowas wäre sinnvoll?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 10. Okt 2010, 18:56
Die Idee finde ich schon einmal total interessant.
Die Wichtigskeitsverknüpfungen (was für ein Wort ) könnte man ja so aufbauen (nur eine verknüpfung):

Code:
 Track1: integer (die ID des ersten Titels)
 track2: integer (die ID des zweiten Titels)
 Wichtigkeit: integer
Die Wichtigkeit könnte immer höher werden je öfter diese Verknüpfung auftritt.
Die Zeitabhängigkeit könnte z.B. darüber entstehen das man z.B. einmal die Woche oder so da über alle Verknüpfungen ein *2/3 oder ähnliches über die Wichtigkeiten drüber jagt.

Der Nachteil wäre das mit der Zeit ein wirklich gigantischer Baum an Daten entstehen würde.

Das wäre ja im schlimmsten Fall (n-1)^n Verknüpfungen, was bei z.B. nur 1000 Titeln schon 1E+3000 Datensätze wären (gut, es fallen noch ein paar raus weil die ja nicht mit sich selbst verknüpft werden können).

An sich aber eine Idee die man weiter verfolgen sollte (vl als ein Community-Projekt?).

Gruß Teekeks
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 10. Okt 2010, 19:24
Ich glaube neuronale Netze liegen nur vom Namen (Netze) her nahe.

Man kann eine solches Netzwerk als Graph darstellen.

Die Lieder sind Knoten.
Die Beziehungen sind (evtl. gerichtete, mehrfache) gewertete Kanten.

Das Finden einer passenden Lieder für eine Playlist könnte man als das Finden eines Teilgraphs darstellen, ein dem die Kanten bestimmte Werte haben haben.

Das Konkretisieren dieser Vorstellung ist vermutlich der größter Teil der eigentlichen Arbeit, eine vermutlich anderer großer Teil das anschließende Finden der Algorithmen zum Finden des Teilgraphs.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG (10. Okt 2010 um 19:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.229 Beiträge
 
#4

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 10. Okt 2010, 19:29
Mir ist so als hätten sowohl iPod als auch iTunes das eingebaut. Da geht es, wenn ich mich recht entsinne nach Genre und man kann ein Lied auch als "Favorit" markieren. Dann wird es auch bei zufälliger Abspielfolge öfter gespielt. Das ist doch was du meinst, oder?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 10. Okt 2010, 19:46
Lese die bitte das von Mithandir bitte noch einmal durch, genau das möchte er halt nicht, sondern das der Player durch das verhalten des Nutzers dazulernt was derjenige gut findet.
Also nicht über das Genre gehen, sondern über die Erfahrung des Players, welchen Titel der Nutzer nach diesem und jenen eigentlich gerne hört oder welcher der Erfahrung nach da an dieser Stelle jetzt gut passen würde.
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.378 Beiträge
 
#6

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 10. Okt 2010, 19:46
Mir ist so als hätten sowohl iPod als auch iTunes das eingebaut. Da geht es, wenn ich mich recht entsinne nach Genre und man kann ein Lied auch als "Favorit" markieren. Dann wird es auch bei zufälliger Abspielfolge öfter gespielt. Das ist doch was du meinst, oder?
Ich bin mir nicht so sicher, ob Genius wirklich das ist, was ich meine. Ich werde mir das aber nochmal genauer ansehen.

@Teekeks und BUG: Gute Ansätze, ich werde sie mal weiterverfolgen. Aber es stimmt, man wird vermutlich mit riesigen Datensätzen konfrontiert werden.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.229 Beiträge
 
#7

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 10. Okt 2010, 20:10
Lese die bitte das von Mithandir bitte noch einmal durch, genau das möchte er halt nicht, sondern das der Player durch das verhalten des Nutzers dazulernt was derjenige gut findet.
Also nicht über das Genre gehen, sondern über die Erfahrung des Players, welchen Titel der Nutzer nach diesem und jenen eigentlich gerne hört oder welcher der Erfahrung nach da an dieser Stelle jetzt gut passen würde.
Also nochmal lese ich mir den langen Aufsatz nicht durch. Einerlei, ich denke daß eine Bestimmung von Genre oder ob man ein Lied "mag" oder "nicht mag" einige Metadaten voraussetzt. Entweder in den Dateien selbst oder eben extern. Wenn man so will muß die Distanz (also die Länge eines Vertex) der "Nähe" der Lieder entsprechen. Aber da diese Nähe sehr subjektiv ist, muß man eben auf Metadaten zurückgreifen und diese ggf. je nach Benutzer anders wichten.

Ich bin mir nicht so sicher, ob Genius wirklich das ist, was ich meine. Ich werde mir das aber nochmal genauer ansehen.
Stimmt, das war der Name. Eine Wichtung wird dort meines Wissens nach auch vorgenommen. Und BUG hat ja einen gewichteten Graphen vorgeschlagen.

Aber es stimmt, man wird vermutlich mit riesigen Datensätzen konfrontiert werden.
Da kann ich nur SQLite empfehlen
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 10. Okt 2010, 22:36
Die Idee hatte ich auch schon. Ist auch schon im Einsatz. Macht nicht genau das was du dir vorstellst, ist aber vom Anspruch ähnlich. klick
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.378 Beiträge
 
#9

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 16:44
@omata: Danke für den Hinweis, werde ich mir ansehen.

@Assarbad: Die einzigen Metadaten für den Einstieg wären tatsächlich nur die ID3-Tags bezgl. Genre, Künstler und die BPM, die ein Song aufweist. Auf Basis dessen würde ich einen Graphen erstellen, mit eben unterschiedlich gewichteten Verbindungen. Der Rest ist erstmal Sache des Users. Ggf. könnte man mit der Zeit diverse Muster versuchen zu finden, die einem helfen, neu hinzugefügte Lieder besser einzuordnen. Aber das ist weite Zukunftsmusik. Interessant ist noch die Überlegung, wie ich diesen Graphen auf die Datenbank abbilde (SQLite ist schon in Verwendung. ).

Genius scheint tatsächlich eine ähnliche Methode zu verwenden. Allerdings müssen hier die Daten an einen Server geschickt werden. Das soll bei mir nicht der Fall sein, zumal nichtmal die Infrastruktur dafür vorhanden wäre.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Hisoka

Registriert seit: 2. Jan 2008
Ort: im Norden
53 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 16:57
Solch eine Funktion wird in den Meisten Music Playern über Last.fm und ähnliche Dienste gemacht. Denn diese haben solche Beziehungen schon analysiert und es klappt auch. Zumindest schlägt mir der Player immer ganz vernünftige Bands vor.

Also alles nichts neues

Aber die Umsetzung über ein Neuronales Netz wäre eine nette Bastelei.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf