---
title: "Ce DIYPod s’appelle Shuffle. Il a remis l’écran, les menus et même trois jeux"
locale: "fr"
url: "https://irz.fr/fr/articles/diypod-shuffle-screen-creep-fr"
markdown_url: "https://irz.fr/fr/articles/diypod-shuffle-screen-creep-fr.md"
category: "tech"
tags: ["audio", "DIY", "ESP32", "iPod Shuffle", "design d’interface"]
published_at: "2026-08-20T08:35:00.000Z"
author: "Manon Girard"
translation: "https://irz.fr/en/articles/diypod-shuffle-screen-creep-en.md"
---

# Ce DIYPod s’appelle Shuffle. Il a remis l’écran, les menus et même trois jeux

Le DIYPod Shuffle part d’un lecteur musical simple, puis ajoute OLED, menus et trois jeux. Son dépôt montre à quelle vitesse une contrainte volontaire peut redevenir une plateforme.

En janvier 2005, Apple vend l’iPod shuffle en expliquant presque fièrement ce qu’il **n’a pas**. Pas d’écran. Pas de navigation miniature dans une bibliothèque. L’argument de Steve Jobs consiste précisément à opposer les « tiny displays and complicated controls » des lecteurs flash au geste plus passif du Shuffle : on charge des morceaux, on appuie sur lecture et l’appareil choisit.[5](https://www.apple.com/newsroom/2005/01/11Apple-Introduces-iPod-shuffle/)

Vingt et un ans plus tard, le projet open source DIYPOD Shuffle reprend le nom, l’idée d’un petit lecteur local et la lecture aléatoire. Puis il fait quelque chose de très humain : il recommence à ajouter des fonctions.[1](https://www.hackster.io/news/diypod-shuffle-brings-back-what-we-all-loved-da808dfec002)

Le snapshot que nous avons audité contient un **OLED 128 × 64**, un navigateur de morceaux, le réglage du volume, des égaliseurs, des paramètres persistants, un indicateur de batterie, un verrouillage des boutons, un visualiseur WS2812B optionnel et trois jeux : Snake, Brick Breaker et Ping Pong.[2](https://github.com/CortexFirmware/diypod/tree/a10c9bc0451062eb2da2de39e086ca07e6066693)[4](https://github.com/CortexFirmware/diypod/blob/a10c9bc0451062eb2da2de39e086ca07e6066693/README.md)

Ce n’est pas un échec du projet. C’est presque une petite expérience sur la difficulté de conserver une contrainte une fois qu’un microcontrôleur peut faire davantage.

## Le minimum Apple

Le premier Shuffle avait 512 Mo ou 1 Go, aucun écran et un bouton permettant de basculer entre lecture séquentielle et aléatoire. Apple Support le décrit encore aujourd’hui comme un iPod « sans affichage », avec seulement des LED à l’avant et à l’arrière.[6](https://support.apple.com/en-gb/103823)

Cette absence n’était pas un oubli économique caché après coup. Apple en faisait un argument produit. Le communiqué de lancement explique que l’AutoFill d’iTunes choisissait automatiquement des titres pour remplir l’appareil, puis que le Shuffle pouvait les servir dans un ordre aléatoire.[5](https://www.apple.com/newsroom/2005/01/11Apple-Introduces-iPod-shuffle/)

Le choix est brutal : une partie de la sélection quitte l’objet. On perd la possibilité de parcourir toute la bibliothèque, mais on gagne un lecteur qui n’a pas besoin d’afficher cette bibliothèque.

## Le minimum DIY

Le DIYPOD 2026 part d’une base très accessible. Le dépôt liste un **ESP32-C3 SuperMini**, un module audio **DFPlayer Mini**, un écran SSD1306, trois boutons tactiles, un chargeur TP4057, une batterie LiPo 1S, une prise jack 3,5 mm et une carte microSD FAT32 jusqu’à 32 Go.[4](https://github.com/CortexFirmware/diypod/blob/a10c9bc0451062eb2da2de39e086ca07e6066693/README.md)

Les morceaux restent locaux. Le DFPlayer les lit directement depuis la carte, avec une contrainte assez rétro : les fichiers doivent être nommés `0001.mp3`, `0002.mp3`, etc., et leur ordre dépend de la table FAT plutôt que simplement du nom de fichier.[4](https://github.com/CortexFirmware/diypod/blob/a10c9bc0451062eb2da2de39e086ca07e6066693/README.md)

> Illustration: Schéma de câblage du DIYPod Shuffle autour d’un ESP32-C3, DFPlayer Mini, OLED et boutons. Le lecteur est construit avec des modules standards reliés sur protoboard : ESP32-C3, DFPlayer Mini, OLED, charge LiPo et trois boutons. Credit: [CortexFirmware](https://github.com/CortexFirmware/diypod/blob/a10c9bc0451062eb2da2de39e086ca07e6066693/README.md).

Jusque-là, la proposition pourrait rester radicalement simple. Le microcontrôleur sait lire trois boutons, demander un morceau au DFPlayer et mesurer une batterie. Mais un OLED est déjà là, et une fois qu’on peut dessiner 128 × 64 pixels, le projet ouvre une porte que le Shuffle original avait volontairement murée.

## Puis un menu

Le menu principal contient `Now Playing`, `Browse Tracks`, `Volume`, `Equalizer`, `Games`, `Settings` et `About`. Les trois boutons changent de rôle selon l’écran, les appuis longs ouvrent d’autres actions et des combinaisons verrouillent l’appareil ou relancent le module audio.[2](https://github.com/CortexFirmware/diypod/tree/a10c9bc0451062eb2da2de39e086ca07e6066693)

L’objet a donc récupéré exactement le problème que l’absence d’écran évitait : il faut désormais expliquer où l’utilisateur se trouve, ce que font les boutons ici, comment revenir en arrière et quelles options sont actives.

Cette richesse est amusante à fabriquer. Elle est même cohérente pour un projet pédagogique. Elle change simplement la nature du produit : le « Shuffle » devient une petite plateforme embarquée plutôt qu’un lecteur qui refuse de poser des questions.

> Audit du dépôt
> **Où le code a pris du volume**
> - player.h, la logique principale de lecture.: 77 lignes
> - display.h + bitmaps.h pour afficher l’interface.: 1 034 lignes
> - Snake + Brick Breaker + Ping Pong.: 1 538 lignes
> - Total brut des .h et du sketch principal audités.: 3 509 lignes
> Comptage IRZ au commit a10c9bc. Les lignes incluent commentaires et espaces : ce n’est pas une mesure de complexité logicielle.

Le contraste mérite cette précaution : compter des lignes ne dit pas qu’un jeu est « vingt fois plus complexe » qu’un lecteur MP3. Il indique seulement qu’une grande partie de la surface du dépôt concerne maintenant ce qui se passe **autour** de la musique.

## Quel hasard ?

Le nom Shuffle invite aussi à regarder le hasard lui-même. Dans `player.h`, l’algorithme tient en une ligne de logique : choisir un entier entre 1 et le nombre de morceaux, puis recommencer si ce nombre correspond au morceau actuellement joué.[3](https://github.com/CortexFirmware/diypod/blob/a10c9bc0451062eb2da2de39e086ca07e6066693/player.h)

C’est un tirage aléatoire avec une seule mémoire : **pas deux fois le même morceau immédiatement**. L’appareil ne crée pas une permutation de la bibliothèque et n’empêche pas un titre entendu deux morceaux plus tôt de revenir.

Cette différence devient visible rapidement. Pour une bibliothèque de 100 titres, notre calcul à partir de l’algorithme donne environ **31 % de probabilité d’avoir déjà entendu un doublon au cours des 10 premières lectures**, en comptant le morceau de départ. À 20 lectures, la probabilité monte autour de **84 %**. Le calcul suppose que chaque tirage autorisé est uniforme et mesure seulement la répétition d’un titre déjà entendu, pas la qualité musicale de l’enchaînement.

Ce comportement n’est pas nécessairement mauvais. Il est même très proche de l’idée intuitive de « donne-moi autre chose maintenant ». Mais il montre qu’un bouton nommé shuffle peut cacher des règles très différentes.

## L’objet s’étend

Le dépôt est minuscule à l’échelle d’un produit moderne, sous licence MIT, lisible et construit avec des composants documentés.[2](https://github.com/CortexFirmware/diypod/tree/a10c9bc0451062eb2da2de39e086ca07e6066693) Le créateur peut donc expérimenter sans demander l’autorisation d’une plateforme ou maintenir un service distant. C’est une qualité réelle du projet.

Elle permet justement l’inflation fonctionnelle. Ajouter Snake ne demande pas de convaincre Apple, de modifier un App Store ou de négocier un SDK : il suffit d’écrire `snake.h`. Le même contrôle que procure l’open source rend très facile l’ajout de la prochaine idée amusante.

C’est là que le DIYPOD devient plus intéressant qu’une simple copie nostalgique. Il montre que la limitation d’un objet n’est pas seulement produite par ce que le hardware **ne peut pas faire**. Elle peut aussi demander une discipline active lorsque le hardware pourrait tout à fait faire plus.

L’iPod shuffle de 2005 était limité en partie parce que ses contraintes industrielles rendaient la simplicité utile. Le DIYPOD dispose, pour quelques modules, d’un microcontrôleur assez souple pour devenir lecteur, menu, console et visualiseur. Il faut donc choisir de s’arrêter.

Et choisir de s’arrêter est parfois la fonction la plus difficile à implémenter.

## References

1. [Hackster, DIYPod Shuffle Brings Back What We All Loved](https://www.hackster.io/news/diypod-shuffle-brings-back-what-we-all-loved-da808dfec002)
2. [CortexFirmware, DIYPOD Shuffle, commit a10c9bc](https://github.com/CortexFirmware/diypod/tree/a10c9bc0451062eb2da2de39e086ca07e6066693)
3. [DIYPOD, logique de lecture aléatoire](https://github.com/CortexFirmware/diypod/blob/a10c9bc0451062eb2da2de39e086ca07e6066693/player.h)
4. [DIYPOD, README et nomenclature](https://github.com/CortexFirmware/diypod/blob/a10c9bc0451062eb2da2de39e086ca07e6066693/README.md)
5. [Apple, Apple Introduces iPod shuffle, 11 janvier 2005](https://www.apple.com/newsroom/2005/01/11Apple-Introduces-iPod-shuffle/)
6. [Apple Support, Identify your iPod model](https://support.apple.com/en-gb/103823)
