Subject: [LilyPond] function pour changer le rythme d'un accord avec error mais ça marche 😅

From: francisco uberto via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 09:38:13 +0000

Bonjour, 
Je tâtonne dans le noire ici : 

**problème** : j'aimerais bien écrire une fonction pour réutiliser un accord à plusieurs reprises mais avec différentes durations. example : au lieux d'écrire les notes à chaque fois <c d e>4 <c d e>8, j'aimerais avoir une function avec les notes (qui seront toujours les mêmes) et pouvoir changer le rythme à volonté.

voici mon approche (qui marche, mais qui donne un error dans la console)

\version "2.24.3"
\language "english"

clusterA = #(define-music-function (dur) (ly:music?)
  #{ <c d e> #<>dur #} )

\relative c'{
r4 \clusterA8 r4 \clusterA2

}

![Capture d’écran 2025-03-25 à 10.34.57|522x222](upload://vzZqet69EjGRXagQwSVBVUJ1sLr.png)

voici l'erreur : 
![Capture d’écran 2025-03-25 à 10.35.55|372x134](upload://cwMUyie3LQ0vspqrEYkGBYkS4Xz.png)

J'ai besoin de comprendre, d'apprendre comment m'en servir des fonctions. Merci de votre aide  car la doc me semble assez crypté pour l'instant.

belle journée à tous !

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/1).

Pour créer un nouveau sujet, écrivez à [[email-masked]](mailto:[email-masked]) ou visitez la [page d'accueil de lilypond.community](https://lilypond.community).

---

From: francisco uberto via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 09:40:24 +0000

visiblement des problèmes apparaissent, example les liaisons de prolongations ne sont pas tenues en compte. 

\version "2.24.3"
\language "english"

\relative c'{
r4 \clusterA8 r4 \clusterA4.~ 1

}

![Capture d’écran 2025-03-25 à 10.39.59|536x202](upload://lQNGqlflFk9usNzvqtPypWQxHEF.png)

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/2).

---

From: Ben via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 10:15:53 +0000

Bonjour Francisco, 

Je ne sais pas pourquoi, mais il me semble que j'arrive au résultat avec ce code:

\version "2.24.3"
\language "english"

clusterA = #(define-music-function (void?)(ly:music?)
#{ <a c e> #} )

\relative c'{
r4 \clusterA 8 r4 \clusterA 2
}

Mais je vous conseillerais d'utiliser le scheme le moins possible, son intégration avec lilypond n'est pas assez documentée et le langage est difficile à lire, cela rend hasardeux la maintenance de votre code sur le long terme. 

Vous pouvez éviter de trop taper des accords avec des structures \repeat unfold \alternative et aussi la note spéciale "s" qui répète le dernier accord sans le saisir. 

> Le 25 mars 2025 à 10:40, francisco uberto via LilyPond <[email-masked]> a écrit :
> 
> 	francisco uberto <https://lilypond.community/u/fufufu> fufufu 
> Mars 25
> #{ #<>dur #} )
> Pour poster dans ce sujet, visitez la page du sujet <https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/2>.
> 
> Pour créer un nouveau sujet, écrivez à [email-masked] <mailto:[email-masked]> ou visitez la page d'accueil de lilypond.community <https://lilypond.community/>.
> 
> Réponses précédentes
> 
> 	francisco uberto <https://lilypond.community/u/fufufu> fufufu 
> Mars 25
> Bonjour,
> problème : j'aimerais bien écrire une fonction pour réutiliser un accord à plusieurs reprises mais avec différentes durations. example : au lieux d'écrire les notes à chaque fois 4 8, j'aimerais avoir une function avec les notes (qui seront toujours les mêmes) et pouvoir changer le rythme à volonté.
> 
> #{ #<>dur #} )
>  <https://lilypond.community/uploads/default/original/2X/d/dd54e6f7594952c5e3b77de9e38fcf0de2616f75.png>
> 
> voici l'erreur :
> 
>  <https://lilypond.community/uploads/default/original/2X/5/57cef1465b402c7d49eb691264d562bcbbc67ccd.png>
> 
> Pour poster dans ce sujet, visitez la page du sujet <https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/2>.
> 
> Pour créer un nouveau sujet, écrivez à [email-masked] <mailto:[email-masked]> ou visitez la page d'accueil de lilypond.community <https://lilypond.community/>.
> 
> 
> 
> Pour vous désabonner de ces e-mails, modifiez vos préférences <https://lilypond.community/my/preferences/emails>.
>

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/3).

---

From: francisco uberto via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 10:34:40 +0000

bonjour Ben, 
merci pour la réponse, votre solution marche bien (ne produits pas d'erreur dans la console) **MAIS** ne me permets pas de faire des liaisons de prolongation, ni rajouter des articulations. des solutions ? 

![Capture d’écran 2025-03-25 à 11.30.51|690x156](upload://3Qoez6Ia6a2yNV64lPqMzoRx2q4.png)

![Capture d’écran 2025-03-25 à 11.34.07|690x183](upload://h31azQGKztPw2Za9W5ibyl3AAfu.png)

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/4).

---

From: Jean Abou Samra via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 11:41:25 +0000

[quote="Ben, post:3, topic:5880"]
et aussi la note spéciale "s" qui répète le dernier accord sans le saisir.
[/quote]

Je crois que vous vouliez dire `q`.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/5).

---

From: Jean Abou Samra via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 11:47:18 +0000

Comme ça, ça devrait marcher :

```
\version "2.24.4"

clusterA =
#(define-music-function (d) (ly:duration?)
   #{ \absolute <c' d' e'>$d #})

{ \clusterA4 \clusterA8( \clusterA8 \clusterA4 \clusterA16-. \clusterA8.^-) }
```

J'ai rajouté `\absolute` au passage pour que la hauteur du cluster ne soit pas influencée par un `\relative` environnant.

![image|388x140](upload://aOilqil4aixDwxqAYDKkz1R3lOh.png)

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/6).

---

From: francisco uberto via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 12:38:10 +0000

mille merci ! 🙏 😊 😍 🤩  c'était juste ce qu'il fallait. 
alors, comment avez vous réussi à avoir ce niveau lilypond avec scheme? y-a-t'il des tutos quelque part ? 
bonne journée,
fu

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/7).

---

From: Ben via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 12:41:13 +0000

Oups, en effet, je voulais dire q. 

Merci pour le code final. 

Jean est le spécialiste mondial du scheme, encore plus fort que l'IA. 

> Le 25 mars 2025 à 12:47, Jean Abou Samra via LilyPond <[email-masked]> a écrit :
> 
> 	Jean Abou Samra <https://lilypond.community/u/jeanas> jeanas 
> Mars 25
> J'ai rajouté \absolute au passage pour que la hauteur du cluster ne soit pas influencée par un \relative environnant.
> 
> 
> 
> Pour poster dans ce sujet, visitez la page du sujet <https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/6>.
> 
> 	Jean Abou Samra <https://lilypond.community/u/jeanas> jeanas 
> Mars 25
>  Ben:
> Je crois que vous vouliez dire q.
> 
> merci pour la réponse, votre solution marche bien (ne produits pas d'erreur dans la console) MAIS ne me permets pas de faire des liaisons de prolongation, ni rajouter des articulations. des solutions ?
> 
> 
>  <https://lilypond.community/uploads/default/original/2X/1/1af29fe2b978c1f9485f0ca7833858d324756760.png>
> 
> 
>  <https://lilypond.community/uploads/default/original/2X/7/777c5197c08bc96d369819172b3d8f5cdabdefc0.png>
> 
> 	Ben <https://lilypond.community/u/ben> Ben 
> Mars 25
> Bonjour Francisco,
> 
>  <https://lilypond.community/uploads/default/original/2X/9/9925a266ebade389964d00e84ed1a876699453bd.png>
> 
> ps: je constate que mon code se copie autrement (supprimant les notes dans ma fonction scheme) voici une copie d'écran
> 
>  <https://lilypond.community/uploads/default/original/2X/f/f5527e77e8318743ee6fe7a3ba55a69e92093c6f.png>
> 
> belle journée à tous !
> 
> Pour poster dans ce sujet, visitez la page du sujet <https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/6>.
> 

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/8).

---

From: francisco uberto via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 13:50:22 +0000

chatgpt n'a mas pas du tout aidé, j'ai promté pendant une heure avant écrire ici

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/9).

---

From: Jean Abou Samra via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 16:14:24 +0000

Moi, j'ai appris sans guide parce qu'il n'y en avait pas à l'époque, mais depuis j'en ai [écrit un](https://extending-lilypond.gitlab.io/fr) :) (que vous pouvez retrouver parmi les liens dans la barre latérale à gauche de ce forum).

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/10).

---

From: Michel Guénard via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 16:21:31 +0000

Grok a conclu

*La solution de Jeanas, avec \absolute, est meilleure [que celle de Grok], car elle garantit des hauteurs fixes, évitant les modifications dues à un contexte \relative.*

*proposition de Grok sur la base des messages antérieurs à la réponse de Jean*
* Définition : clusterA = #(define-music-function (dur) (ly:duration?) { dur <a c e> })

* Utilisation proposée : \relative c' { r4 \clusterA 8 ~ \clusterA 8 -\staccato r4 \clusterA 2 }

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/11).

---

From: Jean Abou Samra via LilyPond <[email-masked]>
Date: Tue, 25 Mar 2025 16:54:31 +0000

[quote="Michel_Guenard, post:11, topic:5880"]
*proposition de Grok sur la base des messages antérieurs à la réponse de Jean*
[/quote]

Proposition qui ne fonctionne pas (la syntaxe n'est pas du tout correcte) — d'où l'intérêt de vérifier par soi-même les réponses d'une IA ;-)

Au fait, j'oubliais :

[quote="fufufu, post:1, topic:5880"]
ps: je constate que mon code se copie autrement (supprimant les notes dans ma fonction scheme) voici une copie d'écran
[/quote]

Il faut le mettre entre ```` ``` ```` comme ceci :

````
```
écrire le code ici
```
````

(j'ai édité votre message initial pour rajouter ces ```` ``` ````).

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/function-pour-changer-le-rythme-dun-accord-avec-error-mais-ca-marche/5880/12).