160 votes

Pourquoi le shuffle d'iTunes n'est pas aléatoire ?

C'est un problème qui me préoccupe depuis cinq ans, sur plusieurs appareils, systèmes d'exploitation et installations d'iTunes et d'iPods.

J'ai constaté que la fonction de lecture aléatoire d'iTunes ne mélange pas les chansons de façon aléatoire. En fait, je peux prédire avec précision l'ordre exact des chansons qu'iTunes va lire. Cela me frustre au plus haut point car j'aime écouter ma musique de manière aléatoire, mais j'ai quelques chansons préférées avec lesquelles je commence toujours.

Par exemple, si je sélectionne la chanson "Somebody That I Used To Know" de Gotye, il y aura les éléments suivants toujours suivent avec cette séquence exacte de chansons :

  1. Blame It On The Tetons par Modest Mouse
  2. Girl You Have No Faith In Medicine par The White Stripes
  3. Mombassa par Hans Zimmer, de la bande sonore d'Inception
  4. Break of Dawn par Michael Jackson
  5. Missing Words par Mark Ronson et le Business International

La méthode que j'utilise pour lancer les chansons n'a pas d'importance. J'ai essayé de sélectionner la chanson dans iTunes, de la rechercher et de l'écouter avec la fonction Coversutra ou la rechercher dans iTunes, écouter le morceau et effacer la recherche. Ces trois méthodes permettent de lire exactement la même séquence de chansons.

Je pensais que cela pouvait être dû à l'utilisation de la même graine, mais j'obtiens la même séquence après avoir redémarré iTunes ou même mon ordinateur. La séquence est également la même d'un jour à l'autre. Attendre que la chanson se termine ou appuyer sur suivant ne change rien non plus.

J'ai ce problème (mais avec des séquences différentes) depuis aussi longtemps que je me souvienne sur mon PC Windows, mon MacBook et mon iMac. Toutes les versions différentes d'iTunes et des systèmes d'exploitation, sur une période de 5 ans.

Pourquoi iTunes échoue-t-il si difficilement à quelque chose qui est si facile ? Y a-t-il un moyen de résoudre ce problème ?

0 votes

Avez-vous essayé d'utiliser iTunes DJ à la place ? J'ai constaté que cela fonctionne mieux.

5 votes

Que se passe-t-il lorsque vous désactivez le mode shuffle et le réactivez ? Cela fonctionne toujours pour moi comme si on mélangeait le jeu de cartes une autre fois. Êtes-vous dans une liste de lecture normale ou quelque chose de "intelligent" comme DJ ou une liste de lecture intelligente ?

210voto

shsteimer Points 8749

La version résumée

Il es aléatoire, mais l'ordre n'est mélangé qu'une seule fois, lorsque vous activez la lecture aléatoire. Si vous voulez mélanger à nouveau l'ordre, désactivez puis réactivez la lecture aléatoire.

La version détaillée

Je ne pense pas que ce soit un bug, c'est une fonctionnalité. Bien que je puisse comprendre que cela puisse sembler cassé.

iTunes ne mélange pas l'ordre des pistes à chaque fois que vous appuyez sur la touche de lecture (ou tout autre bouton de commande). Une autre façon de dire cela est : il utilise la même graine pour votre liste de lecture à chaque fois jusqu'à ce que vous lui demandiez d'utiliser une autre graine.

Cela peut sembler contraire à l'idée de remue-ménage mais il sert en fait à quelque chose : il permet aux boutons de saut en arrière et en avant de fonctionner d'une manière logique. Je peux reculer de 5 chansons pendant qu'il est en mode aléatoire pour entendre la chanson que j'ai entendue il y a 5 chansons, puis iTunes passe en revue toutes les chansons que je viens d'entendre pour me ramener à l'endroit où je me trouvais avant de reculer de 5 chansons.

Je crois que l'ordre est vraiment aléatoire la première fois qu'il est généré. Le problème est qu'il n'est jamais évident de générer à nouveau l'ordre après cela, de sorte que votre cerveau, qui est très doué pour reconnaître les modèles, car c'est une compétence de survie pratique lorsque vous chassez et cueillez, commence à apprendre l'ordre au fil du temps. Il commence à trouver des modèles.

Vous pouvez voir que c'est le cas avec cette petite expérience. Configurez iTunes pour qu'il mélange toute votre bibliothèque. Choisissez une piste. Jouez 5 pistes et notez-les. Choisissez maintenant n'importe quel autre morceau et laissez iTunes jouer un ou deux morceaux après celui-ci. Revenez ensuite à votre première piste et recommencez à partir de celle-ci. Il jouera cette piste et les cinq autres que vous avez notées. Le changement de piste n'a pas réinitialisé le générateur de nombres aléatoires.

La traversée de vos pistes est vraiment aléatoire, mais cet ordre aléatoire n'est pas rafraîchi assez souvent pour qu'on ait l'impression qu'il n'est pas aléatoire.

Alors comment faire pour qu'iTunes génère un nouvel ordre de lecture aléatoire ?

Vous décochez et recochez le bouton "shuffle". Ce faisant, iTunes recrée le parcours aléatoire de votre liste de lecture (ou de votre bibliothèque entière). Il réalimente le générateur de nombres aléatoires.

Vous pouvez vous convaincre de cette vérité en faisant une petite expérience. Prenez un album dont les métadonnées contiennent des numéros de piste et sélectionnez les pistes 1 à 5, puis sélectionnez Fichier -> Nouvelle liste de lecture à partir de la sélection... dans le menu. Vous obtenez alors une liste de lecture contenant 5 chansons.

Sélectionnez cette liste de lecture et assurez-vous que le bouton de lecture aléatoire n'est pas allumé et que les numéros de piste sont affichés dans la fenêtre. iTunes affiche les pistes dans l'ordre : 1, 2, 3, 4, 5.

Maintenant, appuyez sur le bouton "shuffle".

iTunes vous montrera les morceaux dans le désordre. J'obtiens : 4, 2, 1, 3, 5.

Maintenant, appuyez sur le bouton "shuffle" pour le désactiver. Et rallumez-le.

J'ai maintenant : 5, 2, 3, 4, 1.

Répétez l'opération autant de fois que nécessaire pour vous convaincre qu'iTunes est en fait en train de régénérer une séquence de parcours aléatoire à travers les pistes de votre liste de lecture.

C'est la même chose pour parcourir l'ensemble de votre bibliothèque : si vous ne décochez et ne recochez jamais le bouton "shuffle", l'ordre n'est jamais régénéré et les choses commencent à sembler non aléatoires. Après avoir décoché et recoché le bouton "shuffle" et commencé à lire toute ma bibliothèque à partir de la piste de départ de mon deuxième paragraphe ci-dessus, j'ai eu 5 chansons différentes après cette fois. L'ordre a donc été modifié, mais c'est moins évident lorsque vous regardez l'ensemble de votre bibliothèque plutôt qu'une liste de lecture.

Il y a un bémol à tout cela : iTunes DJ (alias Party Shuffle) fonctionne différemment. Avec Party Shuffle, vous pouvez influencer la sélection de manière à ce que les chansons les plus populaires de votre bibliothèque soient pondérées. Il ne s'agit évidemment pas d'une lecture aléatoire. Si vous souhaitez une lecture réellement aléatoire, vous devez donc mélanger l'ensemble de votre bibliothèque à partir de la vue Musique de la barre latérale, et non de la vue iTunes DJ. Et vous devez décocher et recocher le bouton de lecture aléatoire avant chaque session d'écoute pour que la lecture reste vraiment imprévisible.

15 votes

Enfin une réponse utile à cette question ! Je ne sais pas combien de fois elle a été rejetée d'emblée.

2 votes

Votre réponse explique pourquoi je n'ai jamais connu cela. Pendant la journée, j'écoute des albums que je sélectionne, en écoutant les morceaux les uns après les autres. Lorsqu'il reste une heure dans ma journée de travail, je passe à la lecture aléatoire de l'ensemble de ma bibliothèque.

3 votes

C'est vrai. J'ai mis en place une logique de lecture aléatoire dans une application iPhone appelée "Ambiance" et j'ai dû procéder de cette manière pour les mêmes raisons : la navigation avant et arrière.

21voto

graup Points 715

Une autre raison pour laquelle iTunes ne génère le caractère aléatoire qu'une seule fois est qu'il peut ainsi s'assurer que vous obtenez chaque piste est jouée une fois, sans doublon .

Si vous avez 1000 pistes en mode aléatoire, après 1000 lectures, vous les aurez toutes écoutées. Cela ne fonctionnerait jamais si le système choisissait une piste au hasard chaque fois que vous appuyez sur la touche de lecture ou que la piste précédente se termine, vous obtiendriez des doublons à un moment donné.

2 votes

De plus, vous ne seriez pas en mesure d'utiliser correctement les boutons de saut/retour.

9voto

Vic Points 91

Je me souviens avoir lu quelque part qu'à l'origine, Apple utilisait un véritable caractère aléatoire dans le shuffle, mais les gens se sont plaints que la même chanson soit jouée deux ou trois fois de suite (ce que l'on pourrait considérer comme une quasi-certitude vu le nombre d'utilisateurs). Ils l'ont rapidement changé et Steve Jobs l'a (plutôt bien) transformé en "les iPods sont maintenant moins aléatoires afin de paraître aléatoires" quand il a sorti la fonction.

Ainsi, la lecture aléatoire a été modifiée de manière à randomiser la liste des pistes à chaque fois que vous la sélectionnez, plutôt que de randomiser la chanson suivante, afin d'éliminer le risque de double, triple, quadruple, etc.

Je me sens juste désolé pour le gars qui a copié la même chanson 5 fois de suite alors qu'il a des milliers de chansons dans son iPod. Il y avait sûrement au moins une...

4voto

bazzargh Points 149

@Bombe et @IanC - il existe des générateurs de nombres pseudo-aléatoires réversibles, vous n'avez donc besoin que d'un seul nombre, et non de la séquence entière. Pensez-y, le temps nécessaire pour générer la séquence ne dépend pas de la taille de votre collection de musique. Les algorithmes de cryptage offrent une approche possible, puisque tout algorithme de cryptage qui ne modifie pas la longueur de l'entrée (par exemple, la machine Enigma, le chiffrement César) vous donnera des valeurs aléatoires que vous pouvez traiter comme un nombre, et vous pouvez décrypter n'importe quelle chaîne pour inverser la séquence.

Cependant, il est beaucoup plus simple d'utiliser un simple générateur linéaire congruentiel, de la forme :

enter image description here

Si les constantes sont choisies de telle sorte que chaque valeur inférieure à m soit générée, il s'avère qu'il y a a différents ensemble de constantes a', c' qui inversent la séquence. Vous (ou Apple) ne devez calculer le deuxième ensemble de constantes qu'une seule fois. Une paire de générateurs qui sont inverses l'un de l'autre sont :

enter image description here

Ver ici pour la dérivation . Vous choisissez ensuite une valeur de départ en utilisant l'horloge de votre système, et voilà une séquence aléatoire réversible.

Il ne reste plus qu'à trouver un moyen de faire correspondre des nombres dans l'intervalle [0, 2]. 32 -1] aux chansons de votre collection, ce qui est assez simple.

Si la lecture aléatoire fonctionne réellement en jouant les chansons dans le même ordre à chaque fois, (comme le décrit l'auteur de la question), alors Apple ne maintient pas un nombre aléatoire indépendant de la chanson en cours - puisque plusieurs nombres dans la plage 0 2 32 -1 correspondrait à la même chanson avec différents les chansons suivantes. Au lieu de cela, ils doivent utiliser la position de la chanson dans votre collection comme x n et ensuite la mise en correspondance de x n+1 pour revenir à une position de chant. Vous obtiendriez ainsi exactement l'effet décrit dans la question. La seule variation serait le point de départ, qui serait un mappage de l'horloge à x n puis en calculant x n+1 et de le remettre en position de chant.

1 votes

Avec iTunes au moins, l'application est obligée d'afficher l'intégralité de la séquence aléatoire de numéros générée pour une liste de lecture ou une bibliothèque, et l'utilisation de quelque chose de moins simple ne semble donc pas avantageuse. Dans tous les cas, l'application doit afficher la totalité des valeurs des N pistes. Et oui, ils utilisent l'index des chansons dans votre collection (ou une liste de lecture) comme le numéro de la chanson lors de la création d'un vecteur pour parcourir une collection. Cependant, ce que vous décrivez dans le dernier paragraphe est incorrect. Vous obtenez un vecteur différent à chaque lecture aléatoire. Pas seulement un point de départ différent.

3voto

Gardner Points 31

Bien sûr, ce n'est pas vraiment aléatoire. Il y a de nombreuses années, Steve Jobs faisait la présentation principale de l'un des principaux produits iPod. Il a déclaré que la lecture aléatoire pouvait aligner la même chanson deux ou plusieurs fois de suite. Ils ont donc retravaillé le shuffle pour le rendre moins aléatoire. Ils ont notamment suivi les chansons de manière à ce qu'une même chanson ne soit pas jouée plus d'une fois dans une liste de lecture aléatoire. Il s'agit donc d'une fonctionnalité et non d'un bug. Introduit par nul autre que Jobs lui-même.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X