## Pré-requis et installation
+(Voir la section suivante pour Windows)
+
- Il faut avoir ffmpeg d'installé. Pour cela, il faut installer le paquet `libav-tools` (debian) :
sudo apt-get install libav-tools
cf [Installation
Kivy](https://kivy.org/docs/installation/installation-linux.html)
+## Installation sous Windows
+
+Le processus suivant a permis d’installer music sampler sous windows:
+
+- [Installer python 3.7.\* (prendre la version 64bit!)](https://www.python.org/downloads/windows)
+- Dans une invite de commande (`cmd.exe`), lancer:
+
+ pip install music_sampler
+ pip install docutils pygments pypiwin32 PySDL2 kivy.deps.sdl2 kivy.deps.glew
+
+- [Télécharger ffmpeg (64bit, static)](https://ffmpeg.zeranoe.com/builds/)
+ et mettre le contenu du dossier `bin` dans le dossier avec les musiques
+- [Télécharger la police Ubuntu](https://www.1001fonts.com/ubuntu-font.html)
+ et installer Ubuntu-R et Ubuntu-B (Regular et Bold) *pour tous les utilisateurs* (clic droit sur la police)
+- [Télécharger la police Symbola](https://fontlibrary.org/en/font/symbola)
+ et l’installer *pour tous les utilisateurs* (clic droit sur la police)
+- Écrire un fichier `run.bat` avec:
+
+ :::bash
+ @echo off
+ music_sampler
+
+- Lancer `run.bat` pour démarrer le programme.
+
## Version compilée
Une version compilée peut être créée avec pyinstaller:
### Options disponibles au lancement
Toutes les options au lancement sont facultatives ; la plupart du temps lancer
-le programme dans le bon dossier suffit.
+le programme dans le bon dossier suffit. La plupart d'entre elles peuvent être
+définies également dans le fichier de config (à part `--config` bien sûr). Les
+arguments en ligne de commande ont toujours la priorité.
* `-h, --help` : affiche une liste des options disponibles.
* `-c CONFIG, --config CONFIG` : précise le fichier de configuration à charger
music_sampler).
* `-p MUSIC_PATH, --music-path MUSIC_PATH` : précise le chemin des musiques
(par défaut, le dossier courant).
- * `-d, --debug` : Affiche les informations de déboggage (désactivé par défaut)
+ * `--no-debug, --debug` : Affiche les informations de déboggage (désactivé par
+ défaut)
* `-V, --version` : affiche la version courante et quitte (utilisable
uniquement pour la version compilée).
* `-L, --language` : change la langue de l'application. Actuellement: fr, en
(par défaut 'fr')
- * `--no-focus-warning`: Ne pas afficher d'avertissement lorsque l'application
- perd le focus.
+ * `--focus-warning, --no-focus-warning`: Afficher / Ne pas afficher
+ d'avertissement lorsque l'application perd le focus (activé par défaut).
Les options suivantes sont plutôt réservées à un usage avancé de music_sampler,
ou en cas de problème avec la configuration standard :
- * `-m, --builtin-mixing` Effectue en interne le mixage des sons. Par défaut,
- music_sampler confie le mixage au système : n'activer cette option que si le
- système n'y parvient pas.
+ * `--no-builtin-mixing, --builtin-mixing` Effectue en interne le mixage des
+ sons. Par défaut, music_sampler confie le mixage au système : n'activer
+ cette option que si le système n'y parvient pas.
* `-l LATENCY, --latency LATENCY` : latence. Préciser "low", "high" ou un
nombre de secondes (par défaut, "high")
* `-b BLOCKSIZE, --blocksize BLOCKSIZE` : taille des blocs. Nombre de frames
Le fichier contient plusieurs sections :
:::yaml
+ config:
+ ...
+
aliases:
...
...
+### `config`
+
+La section config permet d'enregistrer les paramètres habituellement donnés en
+ligne de commande. Les '-' dans le nom du paramètre long doivent être remplacés
+par des '_' (par exemple '--music-path' -> 'music_path'). Pour les switches
+(`debug`, `focus_warning`, `builtin_mixing`), utilisez la version sans le 'no-'
+et spécifiez `true` / `false` en valeur. Notez que les arguments donnés en ligne
+de commande sont toujours prioritaires sur les valeurs du fichier.
+
### `music_properties` : propriétés des musiques
Cette section sert à définir des propriétés globales des musiques.
- `repeat_delay: x` (par défaut : 0) : délai de "sécurité" en cas d'appuis
successifs sur la touche. La touche est désactivée (grisée et barrée) pendant
toute la durée des actions puis le délai de x secondes.
+- `actions: liste`: Liste des actions à effectuer en appuyant sur la touche.
+
+### Propriété `common`
+
+Une entrée spéciale `common` s'applique à toutes les touches. Les propriétés
+définies dans cette entrée peuvent être modifiées individuellement.
### `keys` : actions sur les touches
successives. Notez que la plupart des actions (hors `wait` et quelques cas
particuliers, voir plus bas) sont quasi-instantanées.
+*Cette section est obsolète et remplacée par une clé `actions` contenant une
+liste dans la section `key_properties` pour chaque touche.*
#### Exemples
suite de celle-ci puisqu'elles seront systématiquement interrompues.
- `interrupt_wait`: interrompt l'attente (de `wait` ou fin d'un fondu avec
attente) et passe directement à l'action suivante. Paramètre :
- * `wait_id: name` : précise l'identifiant du `wait` à stopper (défini par
- `set_wait_id`, voir les actions `wait` et `stop`). Pour interrompre
- plusieurs `wait` d'un seul coup, il faut mettre plusieurs
- `interrupt_wait`.
+ * `wait_id: name` (facultatif) précise l'identifiant du `wait` à stopper
+ (défini par `set_wait_id`, voir les actions `wait` et `stop`). Si absent,
+ interrompt toutes les attentes.
+- `pause_wait`: met une attente en pause (uniquement pour une attente ayant une
+ durée définie). La touche qui attend cet événement ne continuera pas tant que
+ l'attente n'est pas reprise. Paramètres :
+ * `wait_id: name` (facultatif) précise l'identifiant du `wait` à mettre en
+ pause. Si absent, met en pause toutes les attentes compatibles.
+- `unpause_wait`: reprend une attente en pause (uniquement pour une attente
+ ayant une durée définie). Le compte à rebours reprendra pour la touche
+ correspondante en train d'attendre. Paramètres:
+ * `wait_id: name` (facultatif) précise l'identifiant du `wait` à reprendre.
+ Si absent, reprend toutes les attentes compatibles.
+- `reset_wait`: réinitialise une attente (uniquement pour une attente ayant une
+ durée définie). Si l'attente est en pause, le compte à rebours ne recommencera
+ au début que lorsque l'attente sera reprise. Paramètres:
+ * `wait_id: name` (facultatif) précise l'identifiant du `wait` à
+ réinitialiser. Si absent, réinitialise toutes les attentes compatibles.
- `run_command` : lance une commande. Paramètres :
* `command: my_command` : précise la commande à lancer.
* `wait: true/false` (facultatif, défaut : false) : si `wait` est true,