Un onglet Aide orienté usage est intégré dans l'application (bouton Aide ou touche F1). Ce README garde les détails techniques (notes, tests, format).
Affichage instantané des paroles de chants sur le 2ᵉ écran, à partir de
ACTR.pptm. On ne projette plus depuis PowerPoint : on affiche des images
pré-rendues (un simple blit, < 1/100 s), ce qui supprime le délai du
Ctrl-F + macro + GotoSlide.
Source de vérité : chants.json (et non plus le .pptm). Le .pptm ne sert
plus qu'à l'import initial. On édite ensuite les chants dans l'app.
⚠️ chants.jsonn'est pas inclus dans ce dépôt : les paroles des chants sont sous droit d'auteur. Créez votre bibliothèque dans l'application (mode Édition) ou via un import (--import-pptm) depuis votre propre fichier source.
"E123": {
"recueil": "E", "numero": 123, "titre": "Titre du chant",
"corps": [
{"role": "couplet", "rep": 1, "lignes": ["1re ligne du couplet", "2e ligne"]},
{"role": "refrain", "rep": 1, "lignes": ["Ligne du refrain"]},
{"role": "pont", "rep": 2, "lignes": ["Ligne du pont", "reprise ×2"]}
],
"sauts_page": []
}role:couplet(numéroté automatiquement 1, 2, 3…),refrain(couleur + retrait constants),pont,libre.rep: répétition appliquée à tout le bloc (affichée « × n »).sauts_page: indices de blocs où commence une nouvelle page (vide = auto).
| Fichier | Rôle |
|---|---|
chants.json |
Bibliothèque = source de vérité (modèle en blocs) |
core.py |
Moteur : import .pptm, modèle, rendu paramétrique, régénération |
projecteur.py |
Application 2 modes (Projection / Paramètres) + recherche |
style.json |
Palette de paramètres de rendu |
ACTR.pptm |
Ancienne source, désormais import seulement |
build/ |
index.json, pages/*.png, nouveaux.txt, manifest.txt |
Import / régénération en ligne de commande :
python projecteur.py --import-pptm # (re)génère chants.json depuis ACTR.pptm
python projecteur.py --render-all # rend toute la bibliothèque -> build/
(moulinette.py n'existe plus : tout est dans core.py.)
pip install PySide6 Pillow pypdf
(pypdf est optionnel : sans lui l'export PDF fonctionne, mais sans signets.)
Python ≥ 3.10. Fonctionne sous Windows et Linux.
python projecteur.py
Deux façons de retrouver un chant : par numéro (pavé numérique) ou par recherche de mots (clavier).
Numéro — pavé numérique (préfixe par défaut selon le seuil 500) :
| Frappe (pavé) | Résultat |
|---|---|
7 Entrée / 40 Entrée |
R7 / R40 |
154 |
R154 (auto, < 500 → R) |
524 |
E524 (auto, ≥ 500 → E) |
/ 33 Entrée |
H33 (la touche / = recueil H) |
* N 12 Entrée |
N12 (* = échappement, suivi de n'importe quelle lettre de recueil) |
* J 123 |
J123 (autre recueil, ex. importé) |
Recherche — clavier alphabétique : tapez quelques mots du titre ou des
paroles (accents/casse indifférents). Une liste de résultats apparaît ; choisissez
avec ↑/↓ puis Entrée. Ex. reviens coeur, minuit chretien, gloire jesus.
| Touche | Action |
|---|---|
pavé num. / / / * |
code : chiffres → R/E, / → H, * + lettre → recueil quelconque |
| lettres | recherche par mots |
| ← / → | chant précédent / suivant |
| Espace | page suivante |
| ↑ / ↓ | page précédente / suivante (ou naviguer dans les résultats) |
| Entrée | valider le numéro ou projeter le résultat sélectionné |
- |
écran noir (rôle d'Échap, à côté du pavé) |
+ |
ré-afficher la dernière page projetée |
. / Suppr |
effacer la dernière lettre/chiffre |
| Retour arrière · Échap | corriger · écran noir |
| F2 | déplacer la projection sur l'autre écran |
| F3 | basculer Projection / Paramètres |
| Ctrl+Q | quitter |
Robustesse NumLock : si NumLock est désactivé par erreur, le pavé numérique
continue de saisir des chiffres (Home→7, Inser→0, etc.) — pas de panique en plein
culte. Les touches / * - + . gardent leur rôle quel que soit l'état de NumLock.
Le panneau de contrôle affiche un miroir fidèle du projecteur (même image, même format) : l'opérateur n'a pas besoin de regarder le mur. Pendant la frappe, le miroir ne bouge pas ; il n'est mis à jour qu'à la validation (3 chiffres, Entrée, ou choix d'un résultat). Un résultat trouvé dans les paroles est projeté à partir de la page 1.
- Réglage de tous les paramètres de rendu (couleurs, polices, tailles, marges, retraits, alignement…) avec aperçu en direct.
- Rendre ce chant : régénère uniquement le chant sélectionné (pour comparer vite un réglage).
- Tout regénérer : reconstruit toutes les images +
index.json(≈ 2–3 min). - Enregistrer le style : sauve
style.json. - Importer depuis pptm : (re)génère
chants.jsondepuisACTR.pptm. - Exporter tout (PDF) : toute la bibliothèque en un PDF unique (ordre alphanumérique, un signet par chant) — pour emporter / transmettre.
En ligne de commande :
python projecteur.py --render-all— régénère les images sans interface ;python projecteur.py --export-pdf [chemin.pdf]— exporte toute la bibliothèque en PDF.
Éditeur du corps en blocs d'un chant (modifie chants.json).
- Sélecteur de chant, titre, recueil + numéro.
- Liste de blocs ; chaque bloc :
[type ▾] [× n] [saut de page avant] [✂ ↑ ↓ 🗑]- zone de texte (une ligne par ligne). Type = couplet (numéroté), refrain, pont, libre, ou suite (= continuation d'un couplet : même retrait, sans numéro, collée au bloc précédent — pratique pour isoler des lignes répétées).
- Répétitions : mettre
× nsur un bloc le marque d'une accolade à droite qui embrasse ses lignes. Pour répéter seulement une partie d'un couplet : ✂ scinder la ou les lignes concernées et passer ce sous-bloc en suite avec× 2→ l'accolade ne couvre que ces lignes (la numérotation les ignore).- ✂ Scinder : coupe le bloc au curseur ; ce qui suit part dans un nouveau bloc juste après (même type).
- + Ajouter un bloc, Nouveau, Dupliquer, Supprimer, Exporter (PDF) (le chant courant, même non enregistré).
- Renommer un chant = changer le champ Recueil (lettre libre : R/H/E/N ou
une autre pour un autre recueil) et/ou le numéro, puis Enregistrer —
l'ancien code est remplacé. Un code déjà utilisé par un autre chant est refusé
(pas d'écrasement). Dupliquer crée une copie sous un nouveau code en gardant
l'original. (Un recueil avec une autre lettre se tape en projection avec
*+ la lettre, ex.*J123; il est aussi accessible par recherche ou ←/→.) - Aperçu en direct à droite, cadré au ratio du projecteur (bordure = bord de l'image projetée), avec sélecteur de page.
- Enregistrer le chant (écrit
chants.json+ met à jour la recherche) ; Rendre ce chant (régénère ses PNG pour la projection).
C'est ici qu'on nettoie au fil des cultes les chants importés du .pptm :
numéros de couplets, zones de refrain, répétitions × n, coupures de page.
Couleurs résolues depuis le thème/masque du .pptm (telles que PowerPoint les
affiche à l'ACTR) :
- fond noir, titre + refrain verts (
#A3B68D), versets blancs ; - justification à gauche avec retrait suspendu (numéros de versets en saillie) et retrait des lignes à tabulation ;
- par défaut pas de coupure de ligne : la police est réduite pour que chaque ligne tienne entière (case « Coupure de ligne autorisée » pour revenir au retour à la ligne) ;
- couplets numérotés automatiquement (1, 2, 3…), refrain en couleur — fin des incohérences de numéros/retraits ;
- répétitions portées par le bloc, marquées par une accolade
}× nà droite ; - code par page conservé (
E504A,E504B…), à la même taille que le titre ; - taille de police uniforme sur toutes les pages d'un même chant.
Tout est ajustable dans le mode Paramètres / style.json.
python projecteur.py --selftest # grammaire de saisie (sans Qt)
python projecteur.py --smoke # construction de l'appli (offscreen)
© 2026 ACTR et Pierre-Yves Rochat. Logiciel libre distribué sous licence
GNU General Public License v3 : notice dans LICENSE, texte intégral dans
COPYING. Fourni sans aucune garantie.
- Découpage identique au
.pptm(1 slide = 1 page) → aucune surprise de pagination ; pages d'un chant liées par leur suffixe. - Ajouts sans code regroupés par titre et numérotés
N1, N2…(voirnouveaux.txt, à imprimer). - Rendu de référence ACTR (Piste A) : possibilité d'exporter via PowerPoint/ LibreOffice pour comparer, si besoin.