]>
Commit | Line | Data |
---|---|---|
940ccd88 | 1 | [TOC] |
d0d235e5 | 2 | |
940ccd88 | 3 | # Music Sampler |
d0d235e5 DL |
4 | |
5 | ## Description | |
6 | ||
faed2fa8 IB |
7 | Music Sampler est un lecteur de musique qui permet de pré-programmer des |
8 | transitions musicales, qui peuvent ensuite être lancées à l'aide d'un simple | |
9 | appui sur une touche. | |
d0d235e5 DL |
10 | |
11 | ## Pré-requis et installation | |
12 | ||
b3951077 IB |
13 | (Voir la section suivante pour Windows) |
14 | ||
faed2fa8 | 15 | - Il faut avoir ffmpeg d'installé. Pour cela, il faut installer le paquet `libav-tools` (debian) : |
d0d235e5 | 16 | |
d2fdafa9 | 17 | sudo apt-get install libav-tools |
d0d235e5 | 18 | |
faed2fa8 IB |
19 | Si vous utilisez la version compilée de Music Sampler (cf. plus bas pour un lien |
20 | de téléchargement), il n'y a rien d'autre à installer. | |
d0d235e5 | 21 | |
35bde798 | 22 | - Pour utiliser les sources directement, les modules suivants sont requis: |
cfde9820 | 23 | |
faed2fa8 IB |
24 | | module | version minimale | commentaire | |
25 | | ----------- | ---------------- | ----------------------------------------------------------------------------- | | |
26 | | Cython | 0.24 | pour compiler Kivy | | |
27 | | Kivy | 1.9.1 | certaines fonctionnalités nécessitent de compiler/installer avec `USE_SDL2=1` | | |
28 | | Markdown | 2.6.6 | pour la documentation uniquement | | |
29 | | pydub | 0.16.4 | | | |
30 | | Pygame | 1.9.2.dev1 | utilisée par Kivy | | |
31 | | Pygments | 2.1.3 | pour la documentation uniquement | | |
32 | | sounddevice | 0.3.3 | | | |
33 | | transitions | 0.4.1 | | | |
34 | | PyYAML | 3.11 | | | |
cfde9820 | 35 | |
faed2fa8 | 36 | Le projet est également disponible via `pip`: |
f13bbb9b IB |
37 | |
38 | pip install music_sampler | |
39 | ||
faed2fa8 IB |
40 | Le programme utilise les polices `Symbola` et `Ubuntu` (Regular / Bold), qui |
41 | doivent être disponibles, et la librairie `portaudio`: | |
35bde798 | 42 | |
2c4d869f | 43 | sudo apt-get install ttf-ancient-fonts ttf-ubuntu-font-family portaudio |
cfde9820 | 44 | |
7d6df771 IB |
45 | Pour compiler kivy avec la librairie SDL2, il faut certains paquets installés: |
46 | ||
47 | sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev | |
48 | ||
faed2fa8 IB |
49 | cf [Installation |
50 | Kivy](https://kivy.org/docs/installation/installation-linux.html) | |
7d6df771 | 51 | |
b3951077 IB |
52 | ## Installation sous Windows |
53 | ||
54 | Le processus suivant a permis d’installer music sampler sous windows: | |
55 | ||
56 | - [Installer python 3.7.\* (prendre la version 64bit!)](https://www.python.org/downloads/windows) | |
57 | - Dans une invite de commande (`cmd.exe`), lancer: | |
58 | ||
59 | pip install music_sampler | |
60 | pip install docutils pygments pypiwin32 PySDL2 kivy.deps.sdl2 kivy.deps.glew | |
61 | ||
62 | - [Télécharger ffmpeg (64bit, static)](https://ffmpeg.zeranoe.com/builds/) | |
63 | et mettre le contenu du dossier `bin` dans le dossier avec les musiques | |
64 | - [Télécharger la police Ubuntu](https://www.1001fonts.com/ubuntu-font.html) | |
65 | et installer Ubuntu-R et Ubuntu-B (Regular et Bold) *pour tous les utilisateurs* (clic droit sur la police) | |
66 | - [Télécharger la police Symbola](https://fontlibrary.org/en/font/symbola) | |
67 | et l’installer *pour tous les utilisateurs* (clic droit sur la police) | |
68 | - Écrire un fichier `run.bat` avec: | |
69 | ||
70 | :::bash | |
71 | @echo off | |
72 | music_sampler | |
73 | ||
74 | - Lancer `run.bat` pour démarrer le programme. | |
75 | ||
8f604453 IB |
76 | ## Version compilée |
77 | ||
78 | Une version compilée peut être créée avec pyinstaller: | |
79 | ||
80 | :::bash | |
81 | pyinstaller music_sampler.spec | |
82 | ||
f13bbb9b IB |
83 | ## Téléchargements |
84 | ||
faed2fa8 IB |
85 | - Un exemple de configuration ainsi que des musiques associées à l'exemple |
86 | peuvent être trouvées sur | |
87 | [owncloud](https://outils.immae.eu/owncloud/index.php/s/kSrIe15G1AiZ9YF) | |
88 | - Une version précompilée de `music_sampler` peut également être téléchargée | |
89 | [dans le même | |
90 | dossier](https://outils.immae.eu/owncloud/index.php/s/kSrIe15G1AiZ9YF/download?path=%2F&files=music_sampler) | |
91 | (attention, elle n'est pas toujours forcément à jour, lancer le programme avec | |
92 | `-V` pour voir la version compilée) | |
f13bbb9b | 93 | |
d0d235e5 DL |
94 | ## Utilisation |
95 | ||
faed2fa8 IB |
96 | Tout le travail consiste à préparer les transitions dans le fichier de |
97 | configuration `config.yml`. | |
d0d235e5 | 98 | |
faed2fa8 IB |
99 | Lancer ensuite le programme dans le dossier où se situe le fichier de |
100 | configuration (voir plus bas pour une utilisation avancée). Une fenêtre | |
101 | représentant un clavier apparaît. Le rond orange dans le coin du clavier devient | |
102 | vert lorsque tout est chargé, ou rouge en cas de problème. Une touche grisée et | |
103 | barrée représente une touche non-utilisable pour le moment : soit parce que la | |
104 | musique est en cours de chargement (au lancement du programme, cela peut prendre | |
105 | un peu de temps sur certaines machines), soit parce qu'il y a une action en | |
106 | cours. | |
d0d235e5 | 107 | |
faed2fa8 IB |
108 | Un exemple de fichier de configuration est fourni, avec un certain nombre de |
109 | touches et de transitions programmées (pour les trois musiques fournies), la | |
110 | syntaxe du fichier (expliquée plus bas) se comprend aisément en le regardant. De | |
111 | plus, certaines touches (par exemple 'ÉCHAP' pour tout arrêter) peuvent être | |
112 | gardées d'une fois sur l'autre. | |
54887692 | 113 | |
201d8411 DL |
114 | ### Actions possibles |
115 | ||
faed2fa8 IB |
116 | - Cliquer sur une touche : affiche les actions associées à cette touche (dans |
117 | le cadre en bas à gauche). | |
118 | - Appuyer sur une touche : déclenche les actions associées à cette touche | |
119 | (affichées également dans le cadre en bas à gauche). Lorsqu'une touche a des | |
120 | actions en cours, son cadre est noir. Notez qu'une action de type "jouer une | |
121 | musique" est considérée comme terminée quand ladite musique est lancée. En | |
122 | cas d'appui répété sur une touche, music_sampler ne relance pas les actions | |
123 | associées à cette touche si ces actions ne sont pas terminées ; cela pour | |
124 | éviter les "accidents". | |
125 | - Ctrl+C ou Ctrl+Q : quitte le programme (possible aussi en cliquant | |
126 | simplement sur la croix en haut à droite). | |
201d8411 | 127 | - Ctrl+R : recharge le fichier de configuration. |
d8c3ae04 | 128 | |
54887692 DT |
129 | ### Options disponibles au lancement |
130 | ||
faed2fa8 | 131 | Toutes les options au lancement sont facultatives ; la plupart du temps lancer |
16847231 IB |
132 | le programme dans le bon dossier suffit. La plupart d'entre elles peuvent être |
133 | définies également dans le fichier de config (à part `--config` bien sûr). Les | |
134 | arguments en ligne de commande ont toujours la priorité. | |
54887692 DT |
135 | |
136 | * `-h, --help` : affiche une liste des options disponibles. | |
faed2fa8 IB |
137 | * `-c CONFIG, --config CONFIG` : précise le fichier de configuration à charger |
138 | (par défaut, config.yml qui se trouve dans le dossier où est lancé | |
139 | music_sampler). | |
140 | * `-p MUSIC_PATH, --music-path MUSIC_PATH` : précise le chemin des musiques | |
141 | (par défaut, le dossier courant). | |
16847231 IB |
142 | * `--no-debug, --debug` : Affiche les informations de déboggage (désactivé par |
143 | défaut) | |
faed2fa8 IB |
144 | * `-V, --version` : affiche la version courante et quitte (utilisable |
145 | uniquement pour la version compilée). | |
146 | * `-L, --language` : change la langue de l'application. Actuellement: fr, en | |
147 | (par défaut 'fr') | |
16847231 IB |
148 | * `--focus-warning, --no-focus-warning`: Afficher / Ne pas afficher |
149 | d'avertissement lorsque l'application perd le focus (activé par défaut). | |
faed2fa8 IB |
150 | |
151 | Les options suivantes sont plutôt réservées à un usage avancé de music_sampler, | |
152 | ou en cas de problème avec la configuration standard : | |
153 | ||
16847231 IB |
154 | * `--no-builtin-mixing, --builtin-mixing` Effectue en interne le mixage des |
155 | sons. Par défaut, music_sampler confie le mixage au système : n'activer | |
156 | cette option que si le système n'y parvient pas. | |
faed2fa8 IB |
157 | * `-l LATENCY, --latency LATENCY` : latence. Préciser "low", "high" ou un |
158 | nombre de secondes (par défaut, "high") | |
159 | * `-b BLOCKSIZE, --blocksize BLOCKSIZE` : taille des blocs. Nombre de frames | |
160 | pour chaque étape du mixeur. 0 (par défaut) signifie que le programme | |
161 | choisit lui-même le nombre qui lui convient. | |
162 | * `-f FRAME_RATE, --frame-rate FRAME_RATE` : fréquence d'échantillonnage pour | |
163 | jouer les musiques. Par défaut : 44100 | |
164 | * `-x CHANNELS, --channels CHANNELS` : nombre de canaux par musique (2 par | |
165 | défaut, pour une écoute stéréo) | |
166 | * `-s SAMPLE_WIDTH, --sample-width SAMPLE_WIDTH` : largeur d'échantillonnage | |
167 | (nombre d'octets pour chaque frame). Par défaut : 2. | |
54887692 DT |
168 | * `--device DEVICE` : sélectionne le périphérique de son. |
169 | * `--list-devices` : Affiche la liste des périphériques de son disponibles. | |
b4583764 | 170 | * `--load-all-musics` : Charger toutes les musiques au démarrage (défaut: True) |
54887692 DT |
171 | * `-- ARGS` : Arguments à passer à la librairie Kivy. |
172 | ||
d0d235e5 DL |
173 | ## Configurer les touches |
174 | ||
faed2fa8 IB |
175 | **ATTENTION : le format du fichier de configuration est susceptible d'évoluer, |
176 | sans garantie de rétrocompatibilité.** | |
201d8411 | 177 | |
faed2fa8 IB |
178 | Le fichier config.yml utilise la syntaxe yaml. Les catégories et sous-catégories |
179 | sont gérées par l'indentation par des espaces (mais PAS par des tabulations !). | |
180 | le `#` est un symbole de commentaire : tout ce qui suit ce symbole sur une ligne | |
181 | est ignoré. | |
d8c3ae04 | 182 | |
faed2fa8 IB |
183 | En cas d'erreur dans le fichier de configuration, un message d'erreur s'affiche |
184 | dans le terminal. Selon la "gravité" de l'erreur, music_sampler se lance en | |
185 | ignorant les actions erronées (en colorant éventuellement la touche en noir), ou | |
186 | ne se lance pas du tout. | |
d0d235e5 DL |
187 | |
188 | Le fichier contient plusieurs sections : | |
d0d235e5 | 189 | |
2ca79e96 | 190 | :::yaml |
16847231 IB |
191 | config: |
192 | ... | |
193 | ||
acaf3650 IB |
194 | aliases: |
195 | ... | |
d0d235e5 | 196 | |
acaf3650 IB |
197 | music_properties: |
198 | ... | |
d0d235e5 | 199 | |
acaf3650 IB |
200 | key_properties: |
201 | ... | |
d0d235e5 | 202 | |
acaf3650 IB |
203 | keys: |
204 | ... | |
d0d235e5 DL |
205 | |
206 | ||
16847231 IB |
207 | ### `config` |
208 | ||
209 | La section config permet d'enregistrer les paramètres habituellement donnés en | |
210 | ligne de commande. Les '-' dans le nom du paramètre long doivent être remplacés | |
211 | par des '_' (par exemple '--music-path' -> 'music_path'). Pour les switches | |
212 | (`debug`, `focus_warning`, `builtin_mixing`), utilisez la version sans le 'no-' | |
213 | et spécifiez `true` / `false` en valeur. Notez que les arguments donnés en ligne | |
214 | de commande sont toujours prioritaires sur les valeurs du fichier. | |
215 | ||
d0d235e5 DL |
216 | ### `music_properties` : propriétés des musiques |
217 | ||
218 | Cette section sert à définir des propriétés globales des musiques. | |
219 | ||
220 | #### Exemples | |
221 | ||
2ca79e96 | 222 | :::yaml |
acaf3650 IB |
223 | "music1.mp3": |
224 | name: My favorite music | |
225 | gain: 1.4 | |
faed2fa8 IB |
226 | La musique "music1.mp3" est désignée par le nom "My favorite music". Elle est |
227 | chargée à 140% de son volume normal. | |
d0d235e5 | 228 | |
2ca79e96 | 229 | :::yaml |
acaf3650 IB |
230 | "music2.mp3": |
231 | gain: 0.7 | |
232 | ||
d0d235e5 DL |
233 | La musique "music2.mp3" est chargée à 70% de son volume normal. |
234 | ||
235 | #### Liste des options possibles | |
faed2fa8 IB |
236 | - `name: My music` La musique sera désignée (dans les actions, dans le |
237 | terminal) comme "My music" au lieu du chemin du fichier. Par exemple le cadre | |
238 | des actions affichera "starting « My music » at volume 100%". Attention, cela | |
239 | ne fait pas office d'alias dans le fichier de configuration (voir la section | |
240 | *aliases*). | |
241 | - `gain: x` Charge la musique avec un gain de x (multiplicatif). Utiliser la | |
242 | commande "volume" pour changer ponctuellement le volume (0 à 100%) au cours de | |
243 | l'écoute. | |
d0d235e5 | 244 | |
201d8411 | 245 | ### `key_properties` : affichage et propriétés des touches |
d0d235e5 | 246 | |
faed2fa8 IB |
247 | Cette section sert à décrire l'affichage à l'écran des touches : couleur et |
248 | texte. Par défaut, une touche "attribuée" à une ou plusieurs actions s'affiche | |
249 | en vert. | |
d0d235e5 DL |
250 | |
251 | #### Exemples | |
252 | ||
2ca79e96 | 253 | :::yaml |
acaf3650 IB |
254 | 'ESC': |
255 | description: | |
256 | - | |
257 | - STOP ! | |
258 | color: [255, 0, 0] | |
201d8411 | 259 | repeat_delay: 2 |
acaf3650 | 260 | |
faed2fa8 IB |
261 | La touche échap est de couleur rouge, et le texte "STOP !" est affiché sur la |
262 | deuxième ligne. Si on appuie deux fois sur la même touche à moins de deux | |
263 | secondes d'intervalle, le second appui est ignoré. | |
d0d235e5 DL |
264 | |
265 | #### Liste des options possibles | |
faed2fa8 IB |
266 | - `description` : le texte qui s'affiche, à côté du "nom" de la touche. Il faut |
267 | mettre un tiret pour une ligne de texte (pas de retour à la ligne | |
268 | automatique). La première ligne correspond à celle de la lettre associée à la | |
269 | touche, aussi il vaut mieux souvent la laisser vide, ou ne mettre que très peu | |
270 | de texte (voir l'exemple ci-dessus). Sur un écran de taille raisonnable, on | |
271 | peut compter 3 lignes (incluant la première) pour une touche "standard". | |
272 | - `color: [r, g, b]` : la couleur de la touche. r, g et b sont les proportions | |
273 | de rouge, vert et bleu, et doivent être des entiers entre 0 et 255. | |
274 | - `repeat_delay: x` (par défaut : 0) : délai de "sécurité" en cas d'appuis | |
275 | successifs sur la touche. La touche est désactivée (grisée et barrée) pendant | |
276 | toute la durée des actions puis le délai de x secondes. | |
b798117b | 277 | - `actions: liste`: Liste des actions à effectuer en appuyant sur la touche. |
d0d235e5 | 278 | |
dac64df8 IB |
279 | ### Propriété `common` |
280 | ||
281 | Une entrée spéciale `common` s'applique à toutes les touches. Les propriétés | |
282 | définies dans cette entrée peuvent être modifiées individuellement. | |
283 | ||
d0d235e5 DL |
284 | ### `keys` : actions sur les touches |
285 | ||
faed2fa8 IB |
286 | Cette section sert à décrire, pour chaque touche, la liste des actions |
287 | successives. Notez que la plupart des actions (hors `wait` et quelques cas | |
288 | particuliers, voir plus bas) sont quasi-instantanées. | |
d0d235e5 | 289 | |
b798117b IB |
290 | *Cette section est obsolète et remplacée par une clé `actions` contenant une |
291 | liste dans la section `key_properties` pour chaque touche.* | |
d0d235e5 DL |
292 | |
293 | #### Exemples | |
294 | ||
2ca79e96 | 295 | :::yaml |
acaf3650 IB |
296 | 'a': |
297 | - play: | |
298 | file: "music1.mp3" | |
299 | volume: 70 | |
d8c3ae04 | 300 | start_at: 10 |
acaf3650 IB |
301 | - wait: |
302 | duration: 5 | |
303 | - stop: | |
304 | file: "music1.mp3" | |
3d7a5539 | 305 | fade_out: 2 |
2ca79e96 | 306 | |
faed2fa8 IB |
307 | Lance la musique "music1.mp3" à 70% de son volume max, à 10 secondes du début, |
308 | puis au bout de 5 secondes coupe la musique avec un fondu de 2 secondes. | |
d0d235e5 | 309 | |
2ca79e96 | 310 | :::yaml |
acaf3650 IB |
311 | 'b': |
312 | - stop: | |
3d7a5539 DL |
313 | file: "music1.mp3" |
314 | fade_out: 5 | |
acaf3650 IB |
315 | wait: false |
316 | - play: | |
3d7a5539 DL |
317 | file: "music2.mp3" |
318 | fade_in: 5 | |
acaf3650 | 319 | |
d0d235e5 DL |
320 | Effectue un fondu enchaîné de 5 secondes entre "music1.mp3" et "music2.mp3" |
321 | ||
2ca79e96 | 322 | :::yaml |
acaf3650 IB |
323 | 'c': |
324 | - stop: | |
3d7a5539 DL |
325 | file: "music1.mp3" |
326 | fade_out: 5 | |
acaf3650 IB |
327 | wait: true |
328 | - wait: | |
329 | duration: 2 | |
330 | - play: | |
3d7a5539 | 331 | file: "music2.mp3" |
acaf3650 | 332 | - seek: |
3d7a5539 | 333 | file: "music2.mp3" |
acaf3650 IB |
334 | delta: false |
335 | value: 60 | |
faed2fa8 IB |
336 | Coupe la musique "music1.mp3" avec un fondu de 5 secondes, attend la fin du |
337 | fondu, puis attend encore deux secondes et lance la musique "music2.mp3", au | |
338 | temps d'une minute. | |
d0d235e5 | 339 | |
2ca79e96 | 340 | :::yaml |
acaf3650 IB |
341 | 'd': |
342 | - volume: | |
3d7a5539 | 343 | file: "music1.mp3" |
acaf3650 IB |
344 | value: 50 |
345 | - play: | |
3d7a5539 | 346 | file: "noise.mp3" |
acaf3650 IB |
347 | loop: 1 |
348 | - wait: | |
3d7a5539 | 349 | file: "noise.mp3" |
acaf3650 | 350 | - volume: |
3d7a5539 | 351 | file: "music1.mp3" |
acaf3650 IB |
352 | value: 100 |
353 | ||
faed2fa8 IB |
354 | Baisse le volume de "music1.mp3" pendant que le son "noise.mp3" est joué par |
355 | dessus (deux fois). Le volume revient à la normale une fois que les deux écoutes | |
356 | du son "noise" sont terminées. | |
d0d235e5 | 357 | |
2ca79e96 | 358 | :::yaml |
acaf3650 IB |
359 | 'e': |
360 | - pause: | |
361 | file: "music1.mp3" | |
362 | - wait: | |
363 | duration: 10 | |
364 | - unpause: | |
365 | file: "music1.mp3" | |
366 | - seek: | |
367 | file: "music1.mp3" | |
368 | delta: true | |
369 | value: 5 | |
370 | ||
faed2fa8 IB |
371 | Met en pause la musique "music1.mp3" pour 10 secondes et la relance après, en |
372 | avançant de 5 secondes dans la musique. | |
d0d235e5 DL |
373 | |
374 | #### Liste des actions possibles: | |
de71c01c IB |
375 | - `comment`: ne fait aucune action, mais affiche un message dans la zone des actions |
376 | * `message: "some text"` le message à afficher | |
faed2fa8 IB |
377 | - `play` : joue une musique. music_sampler ne joue qu'une musique à la fois : si |
378 | la musique demandée est déjà en train d'être jouée, elle n'est pas relancée ou | |
379 | jouée "par dessus". Paramètres : | |
d0d235e5 | 380 | * `file: "music.mp3"` précise la musique jouée (chemin relatif). |
faed2fa8 IB |
381 | * `fade_in: x` (facultatif) lance la musique avec un fondu au départ de x |
382 | secondes. | |
383 | * `volume: x` (facultatif, défaut : 100) la musique doit être jouée à x% de | |
384 | son volume max. | |
385 | * `loop: x` (facultatif, défaut : 0) la musique doit être répétée x fois. | |
386 | Indiquer -1 pour la répéter indéfiniment. Attention, x est le nombre de | |
387 | répétitions, donc pour lire trois fois la musique, mettre `loop: 2`. | |
388 | * `start_at: x` (facultatif, défaut : 0) la musique démarre à x secondes du | |
389 | début. | |
390 | * `restart_if_running: true/false` (facultatif, défaut : false) la musique | |
391 | est éventuellement stoppée et redémarrée si nécessaire | |
d0d235e5 | 392 | - `stop` : arrête une musique donnée. Paramètres : |
faed2fa8 IB |
393 | * `file: "music.mp3"` (facultatif) précise la musique à stopper. Si aucune |
394 | musique n'est précisée, le `stop` s'applique à toutes les musiques. | |
3d7a5539 | 395 | * `fade_out: x` (facultatif) stoppe la musique avec un fondu de x secondes. |
faed2fa8 IB |
396 | * `wait: true/false` (facultatif, par défaut : false) dans le cas d'un |
397 | fondu, attendre la durée du fondu pour faire les actions suivantes. Si la | |
398 | musique s'arrêtait naturellement avant la fin du fondu, l'attente se | |
399 | termine lorsque la musique se termine naturellement. Lorsque plusieurs | |
400 | musiques sont stoppées en fondu, le `wait` n'attend que la dernière | |
401 | musique de la playlist (qui peut se terminer naturellement avant les | |
402 | autres). | |
403 | * `set_wait_id: name` (facultatif, inutile lorsque `wait` est à false) donne | |
404 | l'identifiant `name` à l'attente de fin du fondu (voir `interrupt_wait`). | |
405 | L'identifiant peut être n'importe quelle chaîne de caractère. | |
d0d235e5 | 406 | - `volume` : change le volume d'une musique donnée. Paramètres : |
faed2fa8 IB |
407 | * `file: "music.mp3"` (facultatif) précise la musique. Si aucune musique |
408 | n'est précisée, la modification s'applique au volume global. | |
409 | * `delta: true/false` (facultatif, par défaut : false) le volume doit il | |
410 | être précisé en absolu (false), ou en relatif (true), voir plus bas. | |
411 | * `value: x` Si delta est à false, met le volume à x% du volume max (x doit | |
412 | être entre 0 et 100). Ce facteur est appliqué à la musique déjà chargée en | |
413 | mémoire (voir section "propriétés"), donc le 100% fait référence au volume | |
414 | de chargement. | |
415 | Si delta est à true, applique un modificateur de x% au volume (x doit être un | |
416 | entier signé). Notez qu'une action "+10%" relative ne correspond pas à un | |
417 | pourcentage du volume actuel, mais du volume "de référence" 100%. Ainsi, | |
418 | effectuer +10% et -10% en relatif revient bien à 100%. | |
419 | * `fade: x` (facultatif) le changement de volume est appliqué en fondu sur x | |
420 | secondes. Il n'y a pas d'attente de la fin du fondu pour lancer les | |
421 | actions suivantes : au besoin, rajouter un `wait` à la main. | |
d0d235e5 | 422 | - `pause` : met en pause une musique. Paramètres : |
faed2fa8 IB |
423 | * `file: "music.mp3"` (facultatif) précise la musique à mettre en pause. Si |
424 | non précisé, s'applique à toutes les musiques. | |
425 | - `unpause` : relance une musique mise en pause (là où elle en était). | |
426 | Paramètres : | |
427 | * `file: "music.mp3"` (facultatif) précise la musique à relancer. Si non | |
428 | précisé, s'applique à toutes les musiques. | |
d0d235e5 | 429 | - `wait` : attend un temps donné. Paramètres : |
3d7a5539 | 430 | * `file: "music.mp3"` (facultatif) attend la fin de la musique "music.mp3" |
faed2fa8 IB |
431 | * `duration: x` (facultatif) attend x secondes. Si `file` et `duration` sont |
432 | précisés, l'attente dure jusqu'à la fin de la musique PUIS la durée donnée | |
433 | par `duration`. | |
434 | * `set_wait_id: name` (facultatif) donne l'identifiant `name` à l'attente | |
435 | (voir `interrupt_wait`). L'identifiant peut être n'importe quelle chaîne | |
436 | de caractère. | |
437 | Notez une fois encore que `wait` est quasiment la seule action qui attend | |
438 | d'avoir terminé pour lancer la commande suivante, toutes les autres sont lancées | |
439 | successivement mais sans attendre (donc presque simultanément) : ne pas hésiter | |
440 | à rajouter des commandes d'attente partout où c'est nécessaire. | |
d0d235e5 | 441 | - `seek` : permet d'aller à un endroit précis dans une musique. Paramètres : |
faed2fa8 IB |
442 | * `file: "music.mp3"` (facultatif) précise la musique. Si aucune musique |
443 | n'est précisée, l'action s'applique à toutes les musiques. | |
444 | * `delta: true/false` (facultatif, défaut : false) Si `delta` est true, le | |
445 | temps est relatif. Si delta est false, le temps est absolu, voir plus bas. | |
446 | * `value: x` Si `delta` est true, alors fait avancer de x secondes dans la | |
447 | musique (reculer si x est négatif). Si delta est false, alors la lecture | |
448 | se place à x secondes à partir du début. Si la musique est en train de | |
449 | faire un fondu (au départ, ou changement de volume), le fondu se "termine | |
450 | automatiquement" : et la musique est immédiatement au volume final voulu. | |
451 | Si la musique est en train de se terminer en fondu, le "seek" est ignoré | |
452 | (un fondu de fin considère la musique comme déjà terminée). En cas de | |
453 | `loop`, si le déplacement est relatif la musique peut éventuellement | |
454 | passer à la répétition suivante / précédente; sinon, le déplacement se | |
455 | fait dans la répétition courante. | |
456 | - `stop_all_actions:` Interrompt toutes les actions en cours et à faire. Notez | |
457 | qu'une musique lancée (y compris avec une option `loop`) est considérée comme | |
458 | une action "déjà terminée", et ne sera donc pas interrompue (utiliser `stop` | |
459 | sans arguments pour stopper toutes les musiques en écoute). Paramètre : | |
460 | * `other_only: true/false` (facultatif, défaut : false) : si `other_only` | |
461 | est true, la commande interrompt uniquement les actions des *autres* | |
462 | touches. Sinon, cette commande interrompt également les actions de la | |
463 | touche actuelle ; dans ce cas il est inutile de mettre des actions à la | |
464 | suite de celle-ci puisqu'elles seront systématiquement interrompues. | |
465 | - `interrupt_wait`: interrompt l'attente (de `wait` ou fin d'un fondu avec | |
466 | attente) et passe directement à l'action suivante. Paramètre : | |
21ffec31 IB |
467 | * `wait_id: name` (facultatif) précise l'identifiant du `wait` à stopper |
468 | (défini par `set_wait_id`, voir les actions `wait` et `stop`). Si absent, | |
469 | interrompt toutes les attentes. | |
d4217fda IB |
470 | - `pause_wait`: met une attente en pause (uniquement pour une attente ayant une |
471 | durée définie). La touche qui attend cet événement ne continuera pas tant que | |
472 | l'attente n'est pas reprise. Paramètres : | |
473 | * `wait_id: name` (facultatif) précise l'identifiant du `wait` à mettre en | |
474 | pause. Si absent, met en pause toutes les attentes compatibles. | |
475 | - `unpause_wait`: reprend une attente en pause (uniquement pour une attente | |
476 | ayant une durée définie). Le compte à rebours reprendra pour la touche | |
477 | correspondante en train d'attendre. Paramètres: | |
478 | * `wait_id: name` (facultatif) précise l'identifiant du `wait` à reprendre. | |
479 | Si absent, reprend toutes les attentes compatibles. | |
480 | - `reset_wait`: réinitialise une attente (uniquement pour une attente ayant une | |
481 | durée définie). Si l'attente est en pause, le compte à rebours ne recommencera | |
482 | au début que lorsque l'attente sera reprise. Paramètres: | |
483 | * `wait_id: name` (facultatif) précise l'identifiant du `wait` à | |
484 | réinitialiser. Si absent, réinitialise toutes les attentes compatibles. | |
201d8411 DL |
485 | - `run_command` : lance une commande. Paramètres : |
486 | * `command: my_command` : précise la commande à lancer. | |
faed2fa8 IB |
487 | * `wait: true/false` (facultatif, défaut : false) : si `wait` est true, |
488 | attend que la commande ait fini de s'exécuter. | |
b4583764 IB |
489 | - `load_music/unload_music` : charger/décharger une musique en mémoire. |
490 | Uniquement utile en combinaison avec l’option `load_all_musics`. | |
491 | * `music: "music.mp3" la musique à charger/décharger. | |
d0d235e5 DL |
492 | |
493 | ### `aliases` : définir des alias | |
494 | ||
faed2fa8 IB |
495 | Il est possible de définir des alias pour les différents paramètres. Ces alias |
496 | sont internes au fichier de configuration ; pour afficher un "joli" nom d'une | |
497 | musique, voir plutôt "music_properties". | |
3d7a5539 | 498 | |
54887692 | 499 | La syntaxe est la suivante: |
6226efca | 500 | |
54887692 DT |
501 | :::yaml |
502 | aliases: | |
503 | alias1: | |
504 | param: value | |
505 | alias2: | |
6226efca IB |
506 | param1: value1 |
507 | param2: value2 | |
54887692 | 508 | |
faed2fa8 IB |
509 | On utilise ensuite, dans le fichier de configuration, `include: alias1` ou |
510 | `include: [alias1, alias2]` à la place de `param: value`. Dans le cas de | |
511 | plusieurs aliases inclus contenant des éléments identiques, seul le dernier est | |
512 | pris en compte. Dans tous les cas, les alias ne sont *pas* prioritaires par | |
513 | rapport aux éventuels paramètres définis là où ils sont inclus. Voir les | |
514 | exemples ci-dessous. | |
d0d235e5 DL |
515 | |
516 | #### Exemples | |
517 | ||
3d7a5539 DL |
518 | :::yaml |
519 | aliases: | |
520 | music1: | |
521 | file: "path/to/my/favourite/music.mp3" | |
522 | ||
523 | keys: | |
524 | 'a': | |
525 | play: | |
526 | include: music1 | |
527 | ||
faed2fa8 IB |
528 | `music1` est désormais un alias pour `"path/to/my/favourite/music.mp3"`. À |
529 | chaque fois qu'on veut écrire `file: "path/to/my/favourite/music.mp3"`, on peut | |
530 | écrire à la place `include: music1`. Attention, dans la section | |
531 | "music_properties", les alias ne fonctionnent pas, et il faut écrire le nom du | |
532 | fichier complet. | |
3d7a5539 DL |
533 | |
534 | :::yaml | |
535 | aliases: | |
536 | blue: | |
537 | color: [0, 0, 255] | |
538 | ||
539 | keys_properties: | |
540 | 'a': | |
541 | description: | |
542 | - | |
543 | - blue key | |
544 | include: blue | |
545 | ||
faed2fa8 IB |
546 | `blue` est un alias pour la couleur `[0, 0, 255]`. À chaque fois qu'on veut |
547 | écrire `color: [0, 0, 255]`, on peut écrire `include: blue` à la place. | |
3d7a5539 DL |
548 | |
549 | :::yaml | |
550 | aliases: | |
551 | long_time: | |
552 | duration: 42 | |
553 | ||
554 | keys: | |
555 | 'b': | |
556 | wait: | |
557 | include: long_time | |
558 | play: | |
559 | file: "music1.mp3" | |
560 | ||
faed2fa8 IB |
561 | `long_time` est un alias pour la durée 42 secondes. Au lieu d'écrire `duration: |
562 | 42`, on peut écrire `include: long_time`. | |
54887692 DT |
563 | |
564 | ## Problèmes possibles | |
565 | ||
faed2fa8 IB |
566 | Sont listés ci-dessous une liste de problèmes rencontrés, avec des solutions |
567 | proposées. Si vous en découvrez d'autre, contactez l'auteur pour les ajouter à | |
568 | la liste. | |
54887692 | 569 | |
d2fdafa9 | 570 | * Le programme se lance et s'arrête tout de suite. |
54887692 | 571 | |
faed2fa8 IB |
572 | Il s'agit généralement d'une erreur de syntaxe dans le fichier de config. Dans |
573 | ce cas, le terminal doit afficher quelques détails sur l'erreur en question (au | |
574 | moins la ligne correspondante). | |
54887692 | 575 | |
d2fdafa9 | 576 | * La musique "grésille" affreusement. |
54887692 | 577 | |
faed2fa8 IB |
578 | Il peut s'agir d'un problème de latence (avec certains ordinateurs un peu |
579 | lents). Essayez de changer la latence (par exemple, 0.1 seconde) | |
54887692 | 580 | |
d2fdafa9 | 581 | * Impossible de jouer plus d'une musique à la fois. |
54887692 | 582 | |
faed2fa8 IB |
583 | Le système n'arrive pas à mixer les musiques par lui-même. Vous pouvez essayer |
584 | de regarder la liste des périphériques de son (`--list-devices`) puis en | |
585 | sélectionner un autre si disponible. Vous pouvez aussi essayer le mixeur intégré | |
586 | à music_sampler, mais les résultats ne sont pas toujours très fluides (ne pas | |
587 | hésiter à jouer avec les paramètres avancés comme latency et blocksize). | |
54887692 | 588 | |
faed2fa8 IB |
589 | Si votre système utilise PulseAudio, il peut s'agir d'un problème de |
590 | configuration du plugin ALSA. Dans ce cas, essayez de mettre la configuration | |
591 | suivante dans `/etc/asound.conf`, puis redémarrer la machine (solution empirique | |
592 | qui semble avoir fonctionné, sans garantie !): | |
8f604453 IB |
593 | |
594 | pcm.!default { | |
595 | type pulse | |
596 | fallback "sysdefault" | |
597 | hint { | |
598 | show on | |
599 | description "Default ALSA Output (currently PulseAudio Sound Server)" | |
600 | } | |
601 | } | |
602 | ||
603 | ctl.!default { | |
604 | type pulse | |
605 | fallback "sysdefault" | |
606 | } | |
607 | ||
d2fdafa9 IB |
608 | * La console affiche une erreur : |
609 | ||
610 | Exception in thread Thread-1: | |
611 | Traceback (most recent call last): | |
612 | File "threading.py", line 914, in _bootstrap_inner | |
613 | File "threading.py", line 862, in run | |
614 | File "kivy/input/providers/mtdev.py", line 219, in _thread_run | |
615 | File "kivy/lib/mtdev.py", line 131, in __init__ | |
616 | PermissionError: [Errno 13] Permission denied: '/dev/input/event6' | |
617 | ||
faed2fa8 IB |
618 | C'est une erreur de permission d'accès à un périphérique, généré par la |
619 | librairie kivy. Elle peut être ignorée et n'aura pas d'incidence. | |
620 | ||
621 | * Pour d'autres problèmes ou bugs à reporter, voir le [Bug | |
622 | Tracker](https://git.immae.eu/mantisbt/view_all_bug_page.php?project_id=1&sort=status%2Clast_updated&dir=ASC%2CDESC) | |
d2fdafa9 | 623 | |
54887692 DT |
624 | ## Divers |
625 | ||
faed2fa8 IB |
626 | Les extraits de musiques proposés en exemples proviennent de |
627 | [Jamendo](https://jamendo.com). Les musiques (complètes) sont disponibles en | |
628 | libre téléchargement pour un usage non commercial : | |
54887692 DT |
629 | |
630 | [Short Blues](https://www.jamendo.com/track/340173/short-blues) | |
631 | ||
632 | [To the Fantasy war](https://www.jamendo.com/track/778560/to-the-fantasy-war) | |
633 | ||
faed2fa8 IB |
634 | Le bruit de crocodile provient de |
635 | [Universal-Soundbank](http://www.universal-soundbank.com/). | |
54887692 | 636 | |
faed2fa8 IB |
637 | Cet outil a été développé à l'origine pour faciliter la gestion du son pour les |
638 | spectacles de la compagnie circassienne [Les pieds | |
639 | jaloux](http://piedsjaloux.fr/). N'ayant pas d'ingénieur son, les artistes | |
640 | eux-mêmes peuvent alors gérer leur musique lorsqu'ils ne sont pas sur scène : | |
641 | d'où la nécessité de préparer les transitions à l'avance et, au moment de la | |
642 | représentation, de réduire l'interaction avec la machine au minimum (une | |
643 | touche). |