README from GitHub, GPL-3.0
MIAOU — le clavier-chat pour M-VAVE FM-1
Firmware alternatif qui transforme le FM-1 en clavier-jouet en forme de chat, sur le modèle du Meowsic de B. toys. Il ajoute un arpégiateur et un séquenceur 6 pistes, les mêmes que ceux de LAX-32.
On y retrouve :
- 5 sons : piano, cloches, orgue, banjo et le miaulement. Le bouton patte (PAW) fait miauler toutes les touches ;
- 5 rythmes : ROCK, BLUES, SAMBA, TECHNO, DISCO ;
- 20 comptines et 7 chansons de chat, les mêmes airs chantés en miaulements. Un nouvel appui passe à la suivante ;
- l'enregistreur de 50 notes, avec son voyant rouge qui clignote quand la mémoire est pleine, et la relecture ;
- le tempo et le volume ;
- un arpégiateur (14 modes) et un séquenceur de 6 pistes de 64 pas, avec 4 patterns.
Le jouet n'a pas d'écran : celui du FM-1 montre sa façade.
- La tête du chat : ses yeux suivent les notes et clignent, sa bouche s'ouvre quand il miaule.
- Les boutons : les quatre sons à gauche ; la patte, le rythme, les comptines et les chansons de chat à droite ; la rangée REC, PLAY, STOP, TEMPO avec le voyant rouge.
- Le clavier : ses 27 touches s'allument quand elles sonnent.
- La ligne sous les boutons : elle dit ce qui joue.
C'est un projet indépendant, sans lien avec B. toys, Battat ni M-VAVE :
- Les sons sont synthétisés.
- Les comptines sont des airs traditionnels du domaine public, réécrits note à note.
- Rien n'est copié du jouet.
Il est bâti sur foma (plateforme Felucca), avec installeur web, mode secours et retour au firmware d'origine.
Les sons
| Son | Comment il est fait |
|---|---|
| PIANO | un piano de jouet : impulsion et carré, frappés puis s'éteignant, filtre qui s'assombrit |
| BELLS | cloches en FM (rapport 3,5), brillance qui décroît avec le son |
| ORGAN | orgue en ondes carrées sur trois harmoniques, tenu tant que la touche l'est |
| BANJO | corde pincée (Karplus-Strong) |
| MEOW | une voix qui passe par trois formants mobiles : « m », « i », « a », « ou ». Sa hauteur monte puis retombe, avec un souffle, une octave au-dessus de la touche |
Les rythmes jouent sept percussions de jouet : grosse caisse, caisse claire, charleston fermé et ouvert, clap, cloche, tom.
Le haut-parleur du jouet (KNOB 4) enlève les basses, adoucit les aigus, sature un peu et réduit le son à 8 bits. À 0, le son est propre.
Les comptines : Twinkle Twinkle, Old MacDonald, Mary Had a Little Lamb, Row Your Boat, London Bridge, Frère Jacques, Jingle Bells, l'Ode à la joie, Yankee Doodle, This Old Man, Hot Cross Buns, Au clair de la lune, Itsy Bitsy Spider, The Wheels on the Bus, Bingo, Pop Goes the Weasel, Skip to My Lou, la berceuse de Brahms, Happy Birthday, Alouette. Elles jouent avec le son choisi et, pour la plupart, avec un rythme.
Les chansons de chat reprennent sept de ces airs, chantés par le chat.
Les commandes
| Commande FM-1 | Fonction |
|---|---|
| SEL, ENV, LFO, EDIT | PIANO, BELLS, ORGAN, BANJO |
| GLO | la patte : toutes les touches miaulent (un 2e appui : retour au son) |
| FX | un rythme ; à chaque appui, le suivant |
| SAVE | une comptine ; à chaque appui, la suivante |
| HOME | une chanson de chat ; à chaque appui, la suivante |
| REC | enregistre (50 notes) ; un 2e appui arrête |
| PLAY | rejoue l'enregistrement |
| OCT− | STOP : arrête chansons, rythme, enregistrement |
| OCT+ ou SELECT | octave du clavier |
| ALGORITHM | choisit une comptine |
| PRESETS | choisit un rythme (ou aucun) |
| KNOB 1-4 | TEMPO (50-200 %), volume du rythme, volume des chansons, haut-parleur du jouet |
| MASTER | volume |
MIDI : canal 1 = le clavier (son choisi), canaux 2 à 6 = piano, cloches, orgue, banjo, miaou, canal 10 = les percussions (36 grosse caisse, 38 caisse claire, 42 et 46 charleston, 39 clap, 56 cloche, 45 tom).
L'arpégiateur et le séquenceur
Ce sont ceux de LAX-32, sur le modèle de Skiff.
- Arpégiateur : un pour le clavier et un par son. Il propose 14 modes (UP, DN, UPDN, RND, ORD, REPEAT, DNUP, UP+8, CONV, DIVG, PINKY, THUMB, WALK, CHORD). ARP règle le mode, la vitesse, les octaves et la durée des notes ; ARP 2 (2e appui) le swing, la chance, le maintien et l'ordre. Un 3e appui revient au jouet.
- Séquenceur : 6 pistes de 64 pas et 4 patterns. Chaque piste joue le clavier, l'un des 5 sons, les percussions ou un canal MIDI externe.
- Les pas : accords de 4 notes, longueur, vélocité, accent, chance et conditions (FILL, 1:2 … 4:4), ratchet ou flam, nudge.
- Les réglages : swing, sens de lecture, enregistrement pas à pas et en direct.
- L'écran : sur les pages du séquenceur, la tête du chat reste en haut et les 6 pistes s'affichent dessous.
| Commande | Fonction |
|---|---|
| SEQ | STEP, puis FEEL, puis TRACK (la destination de la piste, sa longueur, la taille du pas, le sens) |
| GLO | tempo, swing, pattern, métronome |
| HOME | retour au jouet |
| SELECT / PRESETS | la piste, le pas |
| PLAY / REC | lecture, enregistrement (à l'arrêt : pas à pas ; SEL ajoute un silence) |
| EDIT | efface le pas (tenu : la piste) |
| LFO | mute de la piste |
| SEL tenu | FILL |
| SAVE | garde tout : réglages, arpèges, pistes, 4 patterns |
Le pattern A est un petit orchestre de chat : cloches, banjo, piano, miaulements et batterie. Pour l'entendre, appuie sur SEQ puis PLAY.
Obtenir et installer le firmware
- GitHub : pousse ce dossier sur la branche
maind'un dépôt. Le workflow compile tout. Le.fwscarrive sur la branchefirmware. Avec Settings → Pages → Source : GitHub Actions, l'émulateur et l'installeur sont publiés sur GitHub Pages. - Docker Desktop :
./fm1 buildou./fm1 dev(http://localhost:8000).
L'installation se fait depuis la page Install (Chrome ou Edge, FM-1 branché en USB).
Secours : maintiens OCT− à l'allumage ; l'onglet Rescue remet le firmware M-VAVE V15. Installer un firmware non officiel se fait à tes risques.
Développement
tools/gen_songs.py: les comptines et les rythmes →src/songs.hsrc/toy.c: les 5 sons, les percussions, les lecteurs de rythmes et de chansons, l'enregistreur, le haut-parleursrc/seq.c,src/sq.h: l'arpégiateur et le séquenceur (de LAX-32)src/main.c: la façade du chat, les boutons, la sauvegardetests/run.sh: les sons, les rythmes, chaque chanson, l'enregistreur, le séquenceur et l'arpégiateur dans des WAV, puis un fuzz (UBSan)- Identité du paquet :
FM-1_19+ le dernier chiffre de la version (0.1 :FM-1_191)
Licence
GPL-3.0-only. Crédits : LICENSING.md.