Mettre ses propres histoires sur la Lunii

J’ai deux enfants de deux et quatre ans. Et il y a quelques temps, mon grand avait reçu en cadeau une Lunii, la « fabrique à histoires ». C’est un boîtier non connecté, avec un écran minimaliste et une interface facile à prendre en main pour des enfants (un bouton à tourner sur le côté pour allumer et régler le volume, un gros bouton à tourner à gauche pour faire ses choix et un gros bouton à appuyer à droite pour valider).

J’étais un peu rétiscent avant d’en avoir une parce que j’avais l’impression que le côté « fabrique » d’histoires n’était qu’un bête remplacement de nom automatisé. Mais ce sont en fait de vraies histoires à embranchement à la manière des histoires dont vous êtes le héro. Le hic, c’est que pour avoir ces histoires, il faut passer par le Luniistore (une application/boutique à installer sur son ordinateur) et on est limité au catalogue proposé.

C’est d’autant plus dommage que le monde regorge de podcasts pour enfants gratuits. Et aussi que les enfants ont une imagination débordante et que ce serait bien rigolo de les enregistrer pour qu’ensuite ils puissent s’écouter sur la Lunii.

Il y a quelques mois, j’ai donc demandé sur Twitter si quelqu’un savait comment « hacker » une Lunii pour y mettre ses propres histoires. (Mes maigres recherches n’avaient rien donné.) Et c’est ainsi qu’on m’a dirigé vers STUdio (pour « Story Teller Unleashed »), une application Java disponible sur GitHub créée par Marian Muller. STUdio permet de créer ses propres packs d’histoires et de les charger sur sa Lunii.

Installer STUdio

C’est dans l’ensemble assez facile à prendre en main. Mais voici quand même un petit tutoriel des étapes que j’ai suivi pour démarrer sous macOS 10.14.

  1. Téléchargez et installez le Luniistore. (Ça permet à STUdio de récupérer les drivers de la Lunii.)
  2. Téléchargez et Installez le JDK. (Nécessaire pour faire tourner STUdio.)
  3. Téléchargez et dézippez l’archive de STUdio.
  4. Dans le dossier de STUdio, ouvrez le fichier studio-macos.sh.

    La première fois, vous devrez surement faire un clic droit, Ouvrir avec, sélectionner Autre…, rechercher Terminal puis cocher Toujours ouvrir avec avant de valider pour être tranquille les fois suivantes. (À noter qu’il y a un petit bug actuellement qui empêche le script de se lancer depuis un autre dossier que celui de STUdio. J’ai fait une PR pour ça. En attendant, il faut donc passer par un terminal, aller dans le dossier de STUdio et exécuter le script studio-macos.sh.)

    $ cd ~/Applications/studio-web-ui-0.1.11
    $ ./studio-macos.sh

    Capture d'écran du terminal une fois que tout s'est bien passé.

    Si tout se passe bien, vous aurez plusieurs messages d’info dans le terminal et vous pourrez maintenant lancer STUdio dans votre navigateur.

  5. Allez à l’adresse http://localhost:8080 dans votre navigateur Web.
  6. Reliez votre Lunii à votre ordinateur et mettez la en marche. (L’icône de câble USB doit s’afficher sur la Lunii.)

Ajouter une nouvelle histoire sur la Lunii

Vous avez désormais accès à l’interface de STUdio. L’écran d’accueil permet de visualiser sa bibliothèque et de glisser de nouvelles histoires (à droite) vers la Lunii (à gauche). Vous pouvez mettre vos nouvelles histoires sur la Lunii en faisant un glisser-déposer de la droite vers la gauche.

Capture d'écran de l'accueil de STUdio

Afficher les infos des packs officiels

Par défaut, STUdio affiche des points d’interrogation et des identifiants numériques pour représenter les packs d’histoires officiels déjà présents sur la Lunii. Voici les étapes à suivre (comme expliqué dans la doc) pour afficher les vraies informations (comme dans ma capture d’écran ci-dessus). (C’est totalement facultatif pour créer et mettre vos propres histoires, mais c’est toujours plus sympa.)

  1. Démarrer l’application Luniistore officielle. Ça permettra de générer un jeton d’identification valide pendant une heure.
  2. Ouvrez le fichier .local.properties situé dans le dossier de votre Luniitheque officielle. Sous macOS, ce dossier se trouve dans ~/Library/Application\ Support/Luniitheque/ (sous Windows, c’est dans %UserProfile%\AppData\Roaming\Luniitheque). Vous aurez peut-être besoin d’afficher les fichiers cachés pour le voir. Sous macOS, vous pouvez faire le raccourci FN+MAJ+CMD+. ou la commande defaults write com.apple.finder AppleShowAllFiles YES).
  3. Repérez la valeur du jeton d’identification. Si vous êtes connecté à votre compte dans le Luniistore, il faut chercher la valeur de l’attribut tokens.access_tokens.data.firebase (dans tokens, au pluriel). Si vous n’êtes pas connecté, il faut prendre la valeur de l’attribut token.firebase (dans token, au singulier). Normalement, ça ressemble à une chaîne de caractères alphanumérique de trois kilomètres de long.
  4. Dans un navigateur web, allez à l’adresse https://lunii-data-prod.firebaseio.com/packs.json?auth=JETON, en remplaçant JETON par la valeur récupérée à l’étape précédente.
  5. Enregistrez le fichier obtenu avec comme nom official.json dans le dossier ~/.studio/db/.

Créer sa propre histoire pour la Lunii

L’icône d’édition en haut à droite permet d’accéder à l’éditeur pour créer de nouvelles histoires. L’utilisation est relativement intuitive. On relie différents noeuds (noeud de départ, noeud de menu, noeud d’histoire) qu’on accompagne d’un son et d’une image.

Capture d'écran de l'éditeur de STUdio. On voit un diagramme avec différents noeuds représentants les étapes de l'histoire.

L’éditeur inclut aussi un simulateur accessible depuis l’icône d’aperçu (l’oeil) de chaque noeud.

Capture d'écran du simulateur de Lunii

Autres remarques

Voici quelques petits retours supplémentaires sur l’utilisation de STUdio :

  • J’avais fait un exemple simple avec juste un noeud de départ et directement un noeud d’histoire. Mais apparemment, ça « casse » le fonctionnement du bouton retour de la Lunii (obligeant de l’éteindre et la rallumer pour revenir au choix de pack d’histoire). Je n’ai plus eu ce problème en rajoutant un noeud de menu intermédiaire.
  • J’avais lu dans la documentation que les fichiers audio étaient convertis en .wav mono. J’avais du coup essayé de les exporter comme ça avec Audacity. Mais j’avais du faire n’importe quoi parce que le fichier de quelques secondes durait plusieurs heures une fois dans STUdio. Au final, je trouve que le plus simple reste d’avoir ses fichiers en mp3 et de laisser STUdio faire la conversion.
  • J’ai enregistré mes premières histoires avec Quicktime qui du coup enregistrait forcément en m4a, non supporté par Audacity. J’ai alors utilisé ffmpeg en ligne de commande pour le convertir en mp3 avec la commande : ffmpeg -i input.m4a output.mp3.
  • Le son une fois sur la Lunii est assez faiblard. Donc il ne faut pas hésiter à monter le gain sur ses enregistrements.

Je suis vraiment enchanté de la qualité de STUdio et des possibilités que ça ouvre. (N’hésitez pas à dire merci à son créateur, ça fait toujours plaisir.) Mes enfants adorent les premières histoires qu’on a enregistré. (J’ai partagé sur Twitter un petit extrait vidéo si vous voulez voir ce que ça donne.)

Mon emballement me donnait presque envie d’aller encore plus loin et de réfléchir à un endroit où on pourrait chacun partager nos histoires gratuites. Mais un message de Marian Muller sur Twitter, le créateur de STUdio, m’a fait changé d’avis. À la question « Tu n’aurais pas une luniithèque gratuite par hasard ? », il répond :

Ce n’est pas l’objet de ce projet, qui vise (au delà de satisfaire ma curiosité) à permettre d’autres usages pour le Lunii. Le gros du travail a été de comprendre le format des histoires et de créer un éditeur capable de générer un pack d’histoires lisible sur le Lunii. Si j’avais voulu « partager » un pack d’histoires, il m’aurait suffit d’utiliser la lib java du Luniistore pour l’extraire et le retransférer.

Pour être parfaitement clair, j’encourage à ne pas partager les packs d’histoires qui pourraient être extraits avec @STUdio_OSS (ou sans d’ailleurs). Même si les histoires peuvent paraître (relativement) chères, ça permet aussi de soutenir l’équipe Lunii.

Alors soyons responsables et essayons de ne pas tout gâcher. Racontons de belles histoires mais gardons les pour nous.