﻿﻿{"id":2463,"date":"2026-03-07T11:30:00","date_gmt":"2026-03-07T10:30:00","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/qrtape-de-la-musique-en-qr-codes-sur-papier\/"},"modified":"2026-03-07T11:30:00","modified_gmt":"2026-03-07T10:30:00","slug":"qrtape-de-la-musique-en-qr-codes-sur-papier","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/qrtape-de-la-musique-en-qr-codes-sur-papier\/","title":{"rendered":"QRTape &#8211; De la musique en QR codes sur papier"},"content":{"rendered":"<p>Les bandes de papier perfor\u00e9, \u00e7a vous parle ? C&#8217;est les trucs qui sortaient des mainframes dans les ann\u00e9es 60&#8230; H\u00e9 bien, y&#8217;a un mec qui a d\u00e9cid\u00e9 de remettre \u00e7a au go\u00fbt du jour, sauf qu&#8217;au lieu de petits trous, lui il utilise des QR codes. Et au lieu d&#8217;y stocker des donn\u00e9es binaires, il y stocke de la musique.<\/p>\n<p>Le projet (un peu old c\u2019est vrai \ud83d\ude1c) s&#8217;appelle <strong><br \/>\n<a href=\"https:\/\/github.com\/aarossig\/qrtape\">QRTape<\/a><br \/>\n<\/strong> et le principe c&#8217;est que vous prenez un fichier audio, vous le compressez en Opus \u00e0 12 kbps (fichier .opus de quelques Ko), vous d\u00e9coupez le r\u00e9sultat en morceaux de 2 331 octets, et chaque morceau devient un QR code imprim\u00e9 sur un ruban de papier continu.<\/p>\n<p>Une webcam Logitech C920 branch\u00e9e en USB lit alors les codes un par un sur \/dev\/video0 pendant qu&#8217;un moteur pas-\u00e0-pas fait d\u00e9filer la bande, et hop, \u00e7a joue du son !<\/p>\n<div class=\"youtube-container\">\n<div>\n<p>Le plus beau dans l&#8217;histoire, c&#8217;est le c\u00f4t\u00e9 bricolage total car la structure du &#8220;magn\u00e9tophone&#8221; est faite en carton, les bobines sont des rouleaux d&#8217;essuie-tout avec des embouts en carton, et l&#8217;entra\u00eenement c&#8217;est un \u00e9lastique (oui, un \u00e9lastique !). Le moteur NEMA 17 est pilot\u00e9 par un Arduino Uno qui fait d\u00e9filer 1 \u00e0 2 QR codes par seconde devant la cam\u00e9ra. C&#8217;est pas une hi-fi, mais \u00e7a marche tr\u00e8s bien sur un Raspberry Pi 3 !<\/p>\n<p>C\u00f4t\u00e9 logiciel, c&#8217;est la biblioth\u00e8que ZBar (libzbar0 sous Linux) qui d\u00e9code les QR codes en temps r\u00e9el. Chaque code contient un identifiant de s\u00e9quence sur 2 octets, la taille du chunk, les donn\u00e9es audio et un checksum CRC16 pour d\u00e9tecter les erreurs. Du coup si un code est illisible (froiss\u00e9, mal imprim\u00e9), le syst\u00e8me le skippe et passe au suivant sans couper la lecture.<\/p>\n<p>D&#8217;ailleurs, le format choisi c&#8217;est du QR version 40, le plus gros possible, avec correction d&#8217;erreur moyenne. \u00c7a donne 2 331 octets exploitables par code (le reste \u00e9tant de la correction d&#8217;erreur). Attention par contre, si votre bande de papier se froisse ou prend l&#8217;humidit\u00e9, c&#8217;est mort&#8230; le CRC16 d\u00e9tecte l&#8217;erreur mais ne corrige rien.<\/p>\n<p>Et une fois imprim\u00e9, il obtient un morceau de 4 minutes 21 qui tient sur 157 QR codes, soit une bande de papier de quelques m\u00e8tres.<\/p>\n<p>Si vous aimez ce genre de projets r\u00e9tro-futuristes, je vous invite \u00e0 jeter aussi un oeil \u00e0<br \/>\n<a href=\"https:\/\/korben.info\/qart-qr-code-art-generator.html\">QArt Coder qui g\u00e9n\u00e8re des QR codes artistiques<\/a><br \/>\nou encore aux<br \/>\n<a href=\"https:\/\/korben.info\/recycler-cassette-audio-proteger-raspberry-pi.html\">bo\u00eetiers Raspberry Pi en cassette audio recycl\u00e9e<\/a><br \/>\n. Y&#8217;a clairement une communaut\u00e9 de gens qui kiffent m\u00e9langer le vintage et le num\u00e9rique et vous en faites peut-\u00eatre partie ? !<\/p>\n<p>Apr\u00e8s on va pas se mentir, la qualit\u00e9 audio \u00e0 12 kbps mono c&#8217;est pas non plus du FLAC mais \u00e7a reste \u00e9coutable. Et le simple fait d&#8217;entendre de la musique sortir d&#8217;une bande de papier qui d\u00e9file dans un truc en carton&#8230; c&#8217;est quand m\u00eame la classe !<\/p>\n<p>Du coup si vous avez une imprimante \u00e0 \u00e9tiquettes et un Arduino qui tra\u00eene, vous savez quoi faire ce dimanche.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Les bandes de papier perfor\u00e9, \u00e7a vous parle ? C&#8217;est les trucs qui sortaient des mainframes dans les ann\u00e9es 60&#8230; H\u00e9 bien, y&#8217;a un mec qui a d\u00e9cid\u00e9 de remettre \u00e7a au go\u00fbt du jour, sauf qu&#8217;au lieu de petits trous, lui il utilise des QR codes. Et au lieu d&#8217;y stocker des donn\u00e9es binaires, il y stocke de la musique. Le projet (un peu old c\u2019est vrai \ud83d\ude1c) s&#8217;appelle QRTape et le principe c&#8217;est que vous prenez un fichier audio, vous le compressez en Opus \u00e0 12 kbps (fichier .opus de quelques Ko), vous d\u00e9coupez le r\u00e9sultat en morceaux de 2 331 octets, et chaque morceau devient un QR code imprim\u00e9 sur un ruban de papier continu. Une webcam Logitech C920 branch\u00e9e en USB lit alors les codes un par un sur \/dev\/video0 pendant qu&#8217;un moteur pas-\u00e0-pas fait d\u00e9filer la bande, et hop, \u00e7a joue du son ! Le plus beau dans l&#8217;histoire, c&#8217;est le c\u00f4t\u00e9 bricolage total car la structure du &#8220;magn\u00e9tophone&#8221; est faite en carton, les bobines sont des rouleaux d&#8217;essuie-tout avec des embouts en carton, et l&#8217;entra\u00eenement c&#8217;est un \u00e9lastique (oui, un \u00e9lastique !). Le moteur NEMA 17 est pilot\u00e9 par un Arduino Uno qui fait d\u00e9filer 1 \u00e0 2 QR codes par seconde devant la cam\u00e9ra. C&#8217;est pas une hi-fi, mais \u00e7a marche tr\u00e8s bien sur un Raspberry Pi 3 ! C\u00f4t\u00e9 logiciel, c&#8217;est la biblioth\u00e8que ZBar (libzbar0 sous Linux) qui d\u00e9code les QR codes en temps r\u00e9el. Chaque code contient un identifiant de s\u00e9quence sur 2 octets, la taille du chunk, les donn\u00e9es audio et un checksum CRC16 pour d\u00e9tecter les erreurs. Du coup si un code est illisible (froiss\u00e9, mal imprim\u00e9), le syst\u00e8me le skippe et passe au suivant sans couper la lecture. D&#8217;ailleurs, le format choisi c&#8217;est du QR version 40, le plus gros possible, avec correction d&#8217;erreur moyenne. \u00c7a donne 2 331 octets exploitables par code (le reste \u00e9tant de la correction d&#8217;erreur). Attention par contre, si votre bande de papier se froisse ou prend l&#8217;humidit\u00e9, c&#8217;est mort&#8230; le CRC16 d\u00e9tecte l&#8217;erreur mais ne corrige rien. Et une fois imprim\u00e9, il obtient un morceau de 4 minutes 21 qui tient sur 157 QR codes, soit une bande de papier de quelques m\u00e8tres. Si vous aimez ce genre de projets r\u00e9tro-futuristes, je vous invite \u00e0 jeter aussi un oeil \u00e0 QArt Coder qui g\u00e9n\u00e8re des QR codes artistiques ou encore aux bo\u00eetiers Raspberry Pi en cassette audio recycl\u00e9e . Y&#8217;a clairement une communaut\u00e9 de gens qui kiffent m\u00e9langer le vintage et le num\u00e9rique et vous en faites peut-\u00eatre partie ? ! Apr\u00e8s on va pas se mentir, la qualit\u00e9 audio \u00e0 12 kbps mono c&#8217;est pas non plus du FLAC mais \u00e7a reste \u00e9coutable. Et le simple fait d&#8217;entendre de la musique sortir d&#8217;une bande de papier qui d\u00e9file dans un truc en carton&#8230; c&#8217;est quand m\u00eame la classe ! Du coup si vous avez une imprimante \u00e0 \u00e9tiquettes et un Arduino qui tra\u00eene, vous savez quoi faire ce dimanche.<\/p>\n","protected":false},"author":1,"featured_media":2464,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-2463","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=2463"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2463\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/2464"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=2463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}