Un développeur recrée Winamp pour Mac avec des agents IA et tient dans 2 à 3 % de CPU
Pendant plusieurs années, l'auteur a repoussé son lecteur de style Winamp pour Mac. Avec des agents IA, il l'a enfin publié. MacAmp est écrit en Swift, SwiftUI et AppKit, sans Electron : sur M1, il consomme environ 0,01 % du processeur en pause et 2 à 3 % en lecture avec l'analyseur de spectre. Le code a été écrit en grande partie par des agents, tandis que l'humain s'est chargé de l'idée, de l'architecture et de la recette. Le projet est open source sous licence MIT.
Traité par IA depuis Habr AI ; édité par Hamidun News
Une histoire familière : un dossier abandonné contenant un projet personnel qui s'est arrêté il y a trois ou quatre ans au premier écran et à la lecture de base. Le développeur Alexrel cherchait pour Mac un lecteur simple dans l'esprit de Winamp, mais les lecteurs modernes sont soit devenus des couteaux suisses bourrés de services de streaming, soit tournent sur Electron et chargent inutilement le processeur. Il a fini par mener son propre lecteur à terme avec l'aide d'agents IA. Résultat : MacAmp, une reproduction open source de Winamp 2.95 en Swift, SwiftUI et AppKit, sans web view, en build universel pour Apple Silicon et Intel, qui nécessite macOS 14 ou plus récent.
Ce que cela donne au final
Le lecteur reproduit l'original jusqu'aux fenêtres, aux menus et aux raccourcis clavier. La fenêtre principale, l'égaliseur et la playlist s'aimantent entre eux, et les modes Shade et Double Size sont disponibles. Tous les skins Winamp 2.x fonctionnent, les formats MP3, AAC, FLAC, Ogg, MIDI et d'autres sont lus, et le lecteur prend en charge les webradios, le ripping de CD et un égaliseur à dix bandes. Les fonctions modernes sont intégrées discrètement : par exemple, le son bascule automatiquement vers un nouveau périphérique de sortie.
La métrique essentielle pour un utilitaire censé rester dans un coin de l'écran, c'est son appétit. Sur M1, le lecteur en pause consomme environ 0,01 % du processeur, et 2 à 3 % en lecture avec l'analyseur de spectre. Quand rien n'est lu, le moteur s'arrête, et l'analyseur cesse d'envoyer des images après deux secondes de silence.
Les détails d'ingénierie à retenir
Trois NSWindow distinctes et sans bordure doivent être déplacées comme un tout, alors que macOS n'offre aucun moyen de grouper des fenêtres. L'auteur calcule la position de chaque fenêtre à partir du point de départ du glissement, plus un décalage global. Si l'on ajoutait de petits pas à chaque mouvement de souris, les erreurs d'arrondi s'accumuleraient et les jonctions se disloqueraient. L'attraction magnétique vers les bords est calculée une seule fois à partir des cadres prévus, et le résultat est appliqué à tout le groupe.
Le deuxième détail concerne les skins. Ce sont des BMP raster conçus pour les écrans de l'ancienne densité, et avec le rendu standard sur Retina, la police et les chiffres du minuteur deviennent flous. C'est pourquoi les fenêtres se dessinent elles-mêmes avec interpolationQuality = .none, et les sprites sont découpés au pixel près de l'original. L'égaliseur est construit sur AVAudioUnitEQ : les bandes y sont des filtres paramétriques, et le préamplificateur est implémenté via globalGain.
Comment les agents ont travaillé
Selon l'auteur, la majeure partie du code a été écrite par des agents IA. Lui imaginait, fixait les tâches, examinait le résultat et décidait de ce qui sortait. Le schéma a fonctionné parce que l'humain comprend ce que doit être le produit et remarque quand l'architecture dérive, tandis que l'agent connaît les appels AppKit concrets.
Trois éléments ont aidé :
- Des documents dans le dépôt. La vision, le plan par étapes, une checklist, un guide de référence sur les dimensions et le comportement de Winamp 2.x et des captures d'écran de l'original. L'agent lit tout cela avant de travailler, et il n'est pas nécessaire d'expliquer à chaque fois que « comme dans Winamp » doit se comprendre littéralement.
- AGENTS.md et les skills. Des règles et des instructions sur la façon de modifier sans risque l'égaliseur et la playlist empêchent l'agent de casser ce qui fonctionne.
- Des tests en une seule commande.
./build.sh testpermet de vérifier rapidement chaque modification.
Il n'a pas été possible de déléguer le ressenti aux agents : la prise en main du glisser-déposer, l'absence de tremblement du champ, la justesse de la couleur, le rendu du crossfade sur des morceaux réels. Cela ne se vérifie qu'avec les mains et les oreilles.
Limites et enseignement pratique
Le projet a des lacunes assumées. Il n'y a pas de visualisations Milkdrop, pas d'encodeur MP3 et Ogg pour les CD, pas de modules tracker ni de scrobbler Last.fm.
L'application n'est volontairement pas signée avec un Developer ID : le lecteur remplace les icônes de fichiers à l'intérieur de son bundle et se re-signe localement, c'est pourquoi Gatekeeper affiche un avertissement au premier lancement. On peut le contourner via les réglages de sécurité ou avec la commande `xattr -dr com.apple.
quarantine`. De plus, l'auteur a testé le lecteur sur un seul Mac et une seule bibliothèque musicale ; il demande donc des retours sur le crossfade, les CUE, la radio après une coupure réseau, le Bluetooth, la mise en veille du Mac et les grandes playlists.
Pour les praticiens, la leçon est simple. Mieux vaut ne pas donner aux agents un « fais un lecteur » abstrait, mais un projet doté de documents, de règles et de vérifications automatiques. Ils travaillent alors comme un exécutant qui connaît les API, tandis que les décisions produit et la recette restent de votre côté. Les sources et le build DMG sont disponibles sur GitHub sous licence MIT.
- 12 nov. 2026Apple vend un supplément IA dans Logic Pro : 49,99 $ pour des limites d'usage étendues
- 12 nov. 2026Gemini 4 Argon, privée de son maître, a fouillé dans son portefeuille crypto avec 1,57 $ restant sur le compte
- 12 nov. 2026TSMC va investir 1 Md$ dans OpenAI et Anthropic, et boucler à nouveau le cercle de l'argent de l'IA
- 12 nov. 2026Nuance Labs lance l'avatar Emma, qui hoche la tête et réagit pendant que vous parlez
Questions clés sur cet article
Que sait-on sur Ce que cela donne au final ?
Le lecteur reproduit l'original jusqu'aux fenêtres, aux menus et aux raccourcis clavier. La fenêtre principale, l'égaliseur et la playlist s'aimantent entre eux, et les modes Shade et Double Size sont disponibles. Tous les skins Winamp 2.x fonctionnent, les formats MP3, AAC, FLAC, Ogg, MIDI et d'autres sont lus, et le lecteur prend en charge les webradios, le ripping de CD et un égaliseur à dix bandes.
Que sait-on sur Les détails d'ingénierie à retenir ?
Trois NSWindow distinctes et sans bordure doivent être déplacées comme un tout, alors que macOS n'offre aucun moyen de grouper des fenêtres. L'auteur calcule la position de chaque fenêtre à partir du point de départ du glissement, plus un décalage global. Si l'on ajoutait de petits pas à chaque mouvement de souris, les erreurs d'arrondi s'accumuleraient et les jonctions se disloqueraient.
Comment les agents ont travaillé?
Selon l'auteur, la majeure partie du code a été écrite par des agents IA. Lui imaginait, fixait les tâches, examinait le résultat et décidait de ce qui sortait. Le schéma a fonctionné parce que l'humain comprend ce que doit être le produit et remarque quand l'architecture dérive, tandis que l'agent connaît les appels AppKit concrets. Trois éléments ont aidé : Des documents dans le dépôt.
Build & Ship Production AI Agents Without Boilerplate Code
Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.
L'essentiel de l'IA — une fois par semaine
Sept actus qui ont vraiment compté, choisies à la main. Sans bruit ni communiqués.
C'est fait ! Vérifiez votre boîte mail pour la confirmation.