overdub
FirmwareM-VAVE FM-1

miaou

pjac1810/miaou · ★ 0

MIAOU: a kitty keyboard (Meowsic style) for the M-VAVE FM-1, with arpeggiator and 6-track sequencer

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

SonComment il est fait
PIANOun piano de jouet : impulsion et carré, frappés puis s'éteignant, filtre qui s'assombrit
BELLScloches en FM (rapport 3,5), brillance qui décroît avec le son
ORGANorgue en ondes carrées sur trois harmoniques, tenu tant que la touche l'est
BANJOcorde pincée (Karplus-Strong)
MEOWune 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-1Fonction
SEL, ENV, LFO, EDITPIANO, BELLS, ORGAN, BANJO
GLOla patte : toutes les touches miaulent (un 2e appui : retour au son)
FXun rythme ; à chaque appui, le suivant
SAVEune comptine ; à chaque appui, la suivante
HOMEune chanson de chat ; à chaque appui, la suivante
RECenregistre (50 notes) ; un 2e appui arrête
PLAYrejoue l'enregistrement
OCT−STOP : arrête chansons, rythme, enregistrement
OCT+ ou SELECToctave du clavier
ALGORITHMchoisit une comptine
PRESETSchoisit un rythme (ou aucun)
KNOB 1-4TEMPO (50-200 %), volume du rythme, volume des chansons, haut-parleur du jouet
MASTERvolume

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.
CommandeFonction
SEQSTEP, puis FEEL, puis TRACK (la destination de la piste, sa longueur, la taille du pas, le sens)
GLOtempo, swing, pattern, métronome
HOMEretour au jouet
SELECT / PRESETSla piste, le pas
PLAY / REClecture, enregistrement (à l'arrêt : pas à pas ; SEL ajoute un silence)
EDITefface le pas (tenu : la piste)
LFOmute de la piste
SEL tenuFILL
SAVEgarde 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 main d'un dépôt. Le workflow compile tout. Le .fwsc arrive sur la branche firmware. Avec Settings → Pages → Source : GitHub Actions, l'émulateur et l'installeur sont publiés sur GitHub Pages.
  • Docker Desktop : ./fm1 build ou ./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.h
  • src/toy.c : les 5 sons, les percussions, les lecteurs de rythmes et de chansons, l'enregistreur, le haut-parleur
  • src/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 sauvegarde
  • tests/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.