Subject: boucle for

From: filosophem <[email-masked]>
Date: Thu, 24 Oct 2019 08:33:48 -0700 (MST)

Bonjour,

Je cherche à réaliser une boucle for pour générer des midi de la même
partition à différents tempi

Codant du bash et un peu de perl je m'étais dit "facile". Bein en fait euh,
j'ai lu pas mal de pages sur la récursivité dans lilypond mais en fait plus
je lis moins je comprends ...

Je voudrais faire quelque chose du genre:

myTempo = '(50 60 70)

for i in myTempo do
   midiname = #(string-append "ABC_" (number->string i) "bpm")
   \book {
     \bookOutputName \midiname
     \score {
       \unfoldRepeats{
         <<
           \tempo 4 = #i
           \drumsPartmidi
       }
       \midi { }
     }
   }
done

Merci,

-----

"/home sweet /home"

Filosophem
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

---

From: Christophe Pochon <[email-masked]>
Date: Thu, 24 Oct 2019 19:25:28 +0200

Bonjour,

Si la boucle for est en bash et qu'il y a moyen de passer une variable à
Lilypond, ça devrait être assez simple.il ne s'agit pas de récursivité. La
récursivité c'est quand une fonction s'appelle elle-même. Alors que là, il
s'agit de lancer plusieurs fois Lilypond en lui transmettant à chaque fois
une valeur de tempo différente. J'ai l'impression que tu cherches un truc
plus compliqué que nécessaire.

Christophe
Christophe Pochon

Le jeu. 24 oct. 2019 à 17:33, filosophem <[email-masked]> a écrit :

> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: filosophem <[email-masked]>
Date: Thu, 24 Oct 2019 11:06:02 -0700 (MST)

Certes je pourrais parser mon fichier lilypond et me faire un moulinette en
bash

mais je voudrais faire le job depuis lilypond ...

-----

"/home sweet /home"

Filosophem

---

From: Gilles Thibault <[email-masked]>
Date: Thu, 24 Oct 2019 22:44:20 +0200

> mais je voudrais faire le job depuis lilypond ...

Dans lilypond ça serait du genre :

myTempos = #'(50 60 70)
musics = #(map
             (lambda(i)
               {# ... musique qui utilise #i... #})
             myTempos)
=> musics est une liste de music
Le problème c'est que je ne crois pas que l'on puisse insérer des \book 
ou des \score dans une section #{ #}. C'est réservé pour des music ou 
des markup. Je crois que ça marche jusqu'au niveau Staff, GrandStaff 
etc... mais pas au delà.
Il faudra donc quand même passer par une commande bash et appeler 
lilypond avec l'option -d

    for i in 50 60 70 ; do lilypond -dbpm=#$i fichier.ly ; done
(Non testée...)
Le fichier devrait, si j'ai bien compris, être compilé comme si on avait 
mis en tête de ce fichier :
bpm=#50  puis bpm=#60 etc

Pour les options lilypond, c'est là :
http://lilypond.org/doc/v2.19/Documentation/usage/command_002dline-usage#basic-command-line-options-for-lilypond

-- 
Gilles