Comment le brassage est-il effectué par différents lecteurs de musique [fermé]

2

Je me demandais s'il était possible qu'un modèle / algorithme fixe soit utilisé par divers lecteurs de musique pour mélanger la liste de lecture. A mon avis, je pourrais comprendre que ces lecteurs multimédias utilisent le même algorithme pour le brassage. Je dis donc que j'ai pratiquement expérimenté le comportement de la fonction de lecture aléatoire de différents lecteurs sur la même playlist. Donc, si tel est le cas, quel est cet algorithme?

Encore une fois Si ma supposition est fausse et que chaque joueur utilise son propre algorithme de mélange, comment puis-je obtenir la même séquence de chansons après avoir mélangé plusieurs lecteurs avec la même liste de lecture?

MODIFIER:

Ma question est de savoir si tous les lecteurs de musique partagent un algorithme commun pour le brassage. Si oui, alors quel algorithme? Si non, comment se fait-il que je reçoive la même séquence de chansons après avoir mélangé la même liste de lecture depuis mon nokia mobile 5233, 5300, le lecteur multimédia VLC, le lecteur Windows Media, etc.

Mohsin Akhtar
la source
3
En réalité, si cet algorithme est supposé être "aléatoire", vous ne devriez pas être en mesure de dire quel algorithme est utilisé à moins d'obtenir le code source ou de demander au développeur. Il existe bien sûr des lecteurs multimédias à code source ouvert. Mais un rapide sur Google révèle quelque chose comme ceci est très couramment utilisé: en.wikipedia.org/wiki/Fisher-Yates_shuffle
James P
+1 Je pense que vous avez raison. Il est difficile de dire exactement quel est l'algorithme qui est suivi. Et moi aussi je pense que l'algorithme le plus courant est le Fisher-Yates. Merci. Cadrez-le simplement dans une réponse pour que je puisse l'accepter.
Mohsin Akhtar
même si les algorithmes sont identiques, le résultat de la lecture aléatoire doit être aléatoire, je veux dire "vous ne pouvez pas obtenir la même séquence de chansons après une lecture aléatoire de plusieurs lecteurs ayant la même liste de lecture", ou il n'est pas nécessaire de mélanger les cartes lorsque vous jouez à des jeux de cartes.
LiuYan 研 研

Réponses:

1

Il existe un certain nombre d'algorithmes de lecture aléatoire, le plus populaire étant Fisher-Yates . Même si un joueur utilise cet algorithme, sa mise en œuvre dépendra d'un certain nombre d'autres facteurs (langage de codage, support des nombres aléatoires). À moins qu'un joueur ne copie directement le code d'un autre programme, sa mise en œuvre sera différente.

De plus, alors que la plupart des joueurs «mélangent» une liste de lecture, j'ai vu des listes qui sélectionnent toujours au hasard la chanson suivante à jouer (la même chanson étant lue deux fois de suite).

Il est étrange que vous déclariez que différents lecteurs «mélangent» la même liste de lecture dans le même ordre. Même en utilisant le même algorithme (ou le même lecteur), une liste de lecture aléatoire doit être créée chaque fois que vous la mélangez.

Brad Patton
la source
1

D'après ce que j'ai observé sur les produits Apple, bien que Shuffle ait un élément aléatoire pour sélectionner l'élément suivant à lire, il semble également exister un classement de chaque élément basé sur l'historique de lecture, le classement des utilisateurs (étoiles) et leur inclusion dans les listes de lecture. Les éléments les mieux classés sont plus susceptibles d'apparaître plus tôt dans le mélange.

Doug Ferguson
la source
1

J'ai fait un petit lecteur multimédia pour une PSP il y a quelque temps (je ne l'ai jamais relâché) et j'ai implémenté la fonctionnalité de lecture aléatoire comme ceci:

  • Vous attribuez à chaque chanson de votre lecteur de musique un identifiant entier non signé , compris entre 0 et n(représentant nle nombre de chansons du lecteur).
  • Générer un nombre aléatoire en utilisant l'heure actuelle (ms) plus le dernier identifiant de la chanson comme semence, le rendre entier et module avec n(le nombre de chansons): |random(time+last_id)|%n. Ainsi, l'identifiant pseudo-aléatoire se situerait dans la plage de 0 à net ne se répéterait pas si l'espace entre "shuffles" est inférieur à une milliseconde car random(time)donnerait le même nombre si la graine aléatoire (la timedans ce cas) est également le même numéro.
  • Conservez une liste des mdernières chansons jouées afin que la nouvelle chanson sélectionnée de manière pseudo aléatoire ne soit pas répétée au moins entre mdifférentes chansons. Si la nouvelle chanson est dans la liste, répétez l'étape 2.

Cela a fonctionné assez bien pour moi, en utilisant une liste de longueur, .9*nje n'aurais jamais une chanson répétée dans au moins 90% du nombre total de chansons. Ceci est bien sûr tout sauf efficace avec les bibliothèques de chansons contenant de nombreuses chansons. Mais une PSP ne pouvait en stocker que quelques centaines, donc c’était bien.

arielnmz
la source