Skip to content

Latest commit

 

History

528 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CVP Access

Interface d’accessibilité pour Yamaha Clavinova CVP, basée sur Raspberry Pi, MIDI SysEx, clavier USB et retour vocal Piper.

CVP Access permet de piloter et d’interroger des fonctions importantes d’un Yamaha CVP depuis un clavier USB AZERTY, avec annonces vocales dans les haut-parleurs du piano. Le projet vise en priorité une utilisation sans écran tactile.

Projet non officiel. CVP Access n’est ni affilié à Yamaha Corporation, ni approuvé par Yamaha.

État du projet

Version de référence :

CVP Access 1.6.1-RC2
Consolidation : 25 septembre 2026

Validation matérielle principale :

Yamaha CVP-905
Firmware 1.03
Raspberry Pi / Debian 13 arm64
Interface MIDI DIN : ProdipeMIDIlilo ou USB MIDI Interface
USB Audio du CVP
Clavier Apple Extended USB
Piper fr_FR-siwis-medium

Le runtime reste construit au-dessus du moteur historique validé. La couche actuelle est transitoire :

cvp_access_1_6_1.py
  -> cvp_access_1_5_2.py
      -> cvp_access_1_5_1_base.py
      -> cvp_access_v1.5.py
          -> cvp_access_v1.4.1.py

Ne pas supprimer ces fichiers tant que cette architecture n’a pas été remplacée.

Fonctions principales

Song MIDI

  • mute/unmute réel des 16 pistes ;
  • Maj + touche piste = Solo : la piste sélectionnée reste ON, les 15 autres passent OFF ;
  • L = toutes les pistes Song ON ;
  • lecture / pause / stop ;
  • annonce de la position ;
  • mesure précédente / suivante ;
  • déplacement de 5 mesures ;
  • accès direct à une mesure ;
  • boucle A/B ;
  • annonce du nom et de la longueur du Song ;
  • métronome ;
  • volume Song ;
  • tempo ;
  • transpose.

Style

  • mute/unmute des 8 parties ;
  • annonces distinctes des pistes Song : Mute Rythme 1, Mute Basse, etc. ;
  • ) / ° = toutes les parties Style ON ;
  • volume global Style ±1 / ±5 ;
  • Start / Stop ;
  • Syncro Start ;
  • annonce du nom du Style ;
  • Intro 1 / 2 / 3 ;
  • Main A / B / C / D ;
  • Fill A / B / C / D ;
  • Break ;
  • Ending 1 / 2 / 3.

Les sections Style restent disponibles comme actions configurables même lorsqu’elles ne sont pas affectées au layout par défaut.

Parties clavier

  • Layer / Dual ON/OFF ;
  • Left ON/OFF ;
  • volume Main ;
  • lecture du nom des Voices Main / Layer / Left.

Accessibilité et voix

  • au démarrage, une fois MIDI + clavier + moteur vocal prêts : « Dispositif Melody Music CVP Access opérationnel. » ;
  • ESC : annonce « Relance du dispositif CVP Access. » si le guide vocal est actif, puis relance le service ;
  • clavier USB AZERTY configurable par TOML ;
  • CTRL + touche = aide vocale sans exécution ;
  • M = mute/réactivation du guide vocal CVP Access ;
  • M agit uniquement sur nos WAV + Piper, pas sur le Guide Yamaha ;
  • retour vocal Piper en français ;
  • mode hybrid ;
  • WAV pré-générés ;
  • cache dynamique ;
  • worker Piper préchargé ;
  • carte clavier HTML générée depuis la configuration active.

Les annonces prévisibles sont composées de WAV. La banque de nombres 0..150 sert aux mesures et aux annonces du Recorder. Les 12 mois, le mot « numéro », les 16 annonces Solo piste N et les retours courts du Recorder sont pré-générés.

Layout clavier 1.6.1-RC2

Parties Style / clavier

1 = Rythme 1
2 = Rythme 2
3 = Basse
4 = Accord 1
5 = Accord 2
6 = Pad
7 = Phrase 1
8 = Phrase 2
9 = Layer / Dual
0 = Left
) / ° = toutes les parties Style ON

Pistes Song

A Z E R T Y U I = pistes 1..8
Q S D F G H J K = pistes 9..16

Maj + A..K = Solo de la piste correspondante
L          = toutes les pistes Song ON

Exemples :

Maj + A = Solo piste 1
Maj + Z = Solo piste 2
Maj + E = Solo piste 3
...
Maj + K = Solo piste 16

Informations / accessibilité

W  = nom Style
X  = nom Song
C  = longueur Song
V  = Syncro Start
B  = Guide Yamaha ON/OFF
M  = mute/réactivation du guide vocal CVP Access
N  = nom Voice Main
,  = nom Voice Layer
;  = nom Voice Left
F7 = Métronome

Song

Espace       = Play / Pause
Entrée       = Stop
P            = position
← / →        = mesure -1 / +1
Maj + ← / →  = mesure -5 / +5
F3           = aller à une mesure
F4           = point A
F5           = point B
F6           = boucle A/B

Volumes

↑ / ↓                  = Vol. guide vocal + / -
Page ↑ / Page ↓        = Style +1 / -1
Maj + Page ↑ / Page ↓  = Style +5 / -5
Origine / Fin          = Song +1 / -1
Maj + Origine / Fin    = Song +5 / -5
Inser / Suppr          = Main +1 / -1
Maj + Inser / Suppr    = Main +5 / -5

Aide vocale CTRL

CTRL est réservé à l’aide. Exemple :

CTRL + Maj + E
-> annonce la fonction Solo piste 3
-> n’exécute pas le Solo

Synthèse vocale

Configuration de référence :

[speech]
mode = "hybrid"
generation = "configured"
cache = true
voice = "fr_FR-siwis-medium"
length_scale = 0.85

Politique :

WAV pré-généré
-> cache dynamique
-> Piper
-> stockage dans le cache

Cache :

~/.cache/cvp-access/tts/

Terminologie utilisateur :

Guide Yamaha
Guide vocal
Vol. guide vocal
Syncro Start
Mute Rythme 1
Solo piste 1
Pas de Song chargé.

Dictaphone MIDI — 1.6.1

Le Recorder utilise trois touches contiguës :

F14 court -> morceau précédent + glissando descendant
F14 long  -> morceau précédent puis annonce de la sélection, sans bip

F15 long  -> « Enregistrement prêt »
1re note  -> début réel de l'enregistrement
F15 court -> annuler si rien n'a été joué
F15 court -> « Stop » immédiat + sauvegarde si l'enregistrement a démarré
F15 court au repos -> lire immédiatement le morceau sélectionné, sans annonce
F15 court en lecture -> stop

F16 court -> morceau suivant + glissando montant
F16 long  -> morceau suivant puis annonce de la sélection, sans bip

Les cues F14/F16 sont générés localement par SoX pendant l'installation. Les fichiers sont enregistrés dans ~/CVP_Recordings/ sous la forme AAAA-MM-JJ_NNN.mid. Le portail Web permet de choisir le morceau courant et Samba expose le partage CVP_recordings.

CTRL+F14/F15/F16 annonce la fonction sans l'exécuter. La politique complète voix / sons / silence est documentée dans docs/FEEDBACK_POLICY_1_6_1.md.

Maintenance autonome

CVP Access peut être maintenu même chez un client sans box ni Wi-Fi.

Réseau Ethernet ou Wi-Fi normal disponible
  -> connexion normale prioritaire
  -> CVP-ACCESS reste arrêté

aucun réseau normal disponible après ~30 s
  -> point d'accès CVP-ACCESS
  -> Raspberry : 10.42.0.1
  -> portail : http://10.42.0.1

L'installateur crée le profil de secours, le service cvp-wifi-fallback.service et le portail Web local. Sur une installation neuve, un mot de passe Wi-Fi aléatoire est généré et conservé dans /etc/cvp-access/hotspot-password. Un profil CVP-ACCESS existant conserve son mot de passe.

Le dashboard affiche l'état de CVP Access, le réseau, les interfaces MIDI, l'audio Yamaha, le clavier USB et les événements utiles. Il permet aussi de lancer le Doctor, relancer CVP Access et sélectionner l'interface MIDI ou le clavier à utiliser lorsqu'il existe plusieurs candidats.

Le portail est également accessible lorsque le Raspberry est connecté à un Wi-Fi normal, depuis le même sous-réseau, via http://<hostname>.local ou son adresse IPv4.

Depuis le dashboard, un technicien peut rechercher les réseaux Wi-Fi, sélectionner un SSID et saisir son mot de passe. CVP Access quitte alors le hotspot pour tenter la connexion. En cas d'échec, CVP-ACCESS est immédiatement réactivé ; le service de fallback reste une deuxième sécurité.

L'interface Wi-Fi de maintenance est détectée dynamiquement : wlan0, une interface USB de type wlx..., ou une interface explicitement fournie par CVP_WIFI_DEVICE. Le portail affiche l'interface effectivement utilisée.

Les préférences matérielles sont mémorisées dans /etc/cvp-access/hardware.toml par identité stable, et non par numéro ALSA hw:X,Y,Z.

Le dashboard affiche aussi les accès de maintenance sous forme cliquable pour copie :

Web réseau local : http://<hostname>.local
Web hotspot       : http://10.42.0.1

Mac / Linux :
smb://<hostname>.local/CVP_access
smb://<hostname>.local/CVP_config
smb://<hostname>.local/CVP_recordings
smb://10.42.0.1/CVP_access
smb://10.42.0.1/CVP_config
smb://10.42.0.1/CVP_recordings

Windows :
\\<hostname>.local\CVP_access
\\<hostname>.local\CVP_config

Les partages Samba officiels sont CVP_access pour le projet et CVP_config pour la configuration. Sur macOS, utiliser Finder → Aller → Se connecter au serveur… (Cmd + K) avec une URL smb://.... Sous Linux/GNOME/Zorin, utiliser également le format smb://... ; le backend GVFS SMB peut être requis.

La carte clavier reprend les blocs Accès Web et Partages Samba tout en restant conçue pour une impression sur une seule page A4 paysage.

Le portail propose également Mettre à jour depuis GitHub. Cette action vérifie que le dépôt local ne contient pas de modifications, effectue un git pull --ff-only, puis utilise cvp_access_installer/release.env pour sélectionner le vérificateur et l'upgrade de la release courante. Un fallback par numéro de version reste présent pour les anciens clones. La mise à jour est exécutée dans un service systemd séparé afin de continuer même lorsque le portail Web se redémarre.

Pour la phase de mise au point actuelle, la demande de mot de passe des boutons du portail est suspendue (CVP_WEB_REQUIRE_AUTH=0). Le mécanisme reste disponible pour être réactivé ultérieurement. Le point d'accès fournit également les indications de portail captif destinées à proposer automatiquement le dashboard sur téléphone ou ordinateur. L'accès direct http://10.42.0.1 reste toujours la référence en mode hotspot.

Installation / upgrade

cd ~/CVP_access
git pull --ff-only origin main
python3 VERIFY_PACKAGE_161.py
sudo bash cvp_access_installer/upgrade_1_6_1.sh

L’upgrade conserve les personnalisations existantes et n’ajoute les nouveaux raccourcis que si les combinaisons sont libres.

Le Doctor canonique est désormais cvp_doctor.py. Il vérifie notamment le runtime, le layout, les WAV d’états, les WAV de mute Style, les 16 bindings Solo, les WAV du Recorder, les 151 nombres pré-générés, le dossier d'enregistrements, l'interface Wi-Fi et les commandes aplaymidi / sox.

État de validation matérielle

Validé physiquement sur CVP-905 :

  • déplacement Song par mesures ;
  • F3 aller à une mesure ;
  • boucles A/B ;
  • transport Play/Pause ;
  • restauration du métronome lors du transport ;
  • arrêt propre du worker Piper ;
  • lecture de plusieurs noms de Voices.

Implémenté et intégré à l’upgrade, mais à confirmer physiquement avant de le marquer validé matériellement :

  • M : mute/réactivation du guide vocal CVP Access ;
  • nouveaux libellés Mute ... des parties Style ;
  • L : toutes les pistes Song ON ;
  • ) / ° : toutes les parties Style ON ;
  • Maj + piste : Solo Song.

Documentation de reprise

Lire dans cet ordre :

PROJECT_STATE.md
docs/CVP_ACCESS_1_6_1.md
docs/FEEDBACK_POLICY_1_6_1.md
docs/CVP_ACCESS_1_6.md
docs/CVP_ACCESS_1_5_2.md
docs/NETWORK_MAINTENANCE_PORTAL.md
AI_HANDOFF.md
docs/CVP_ACCESS_1_5_1.md
docs/KEY_ACTIONS_1_5_1.md
docs/CVP905_VOICE_NAME_CHECKPOINT_2026-09-01.md
CVP905_PROTOCOL_CHECKPOINT_RC4.md
docs/FUNCTION_CATALOG.md

Règles de protocole

Les recherches directes suivantes sont clôturées sauf nouvelle preuve :

ACMP
Fingering
Auto Fill In
Synchro Stop

OTS Link reste non résolu. Les résultats Genos constituent un laboratoire secondaire et ne doivent jamais être présentés comme une validation CVP sans test physique sur CVP-905.

Licence

Voir LICENSE.

About

Accessible Raspberry Pi controller for Yamaha CVP-909 using MIDI SysEx, USB audio and voice feedback.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages