Variables, aléatoire et jeu musical (Mozart)

Bonjour,

Vous connaissez probablement tous la partition de Mozart (et d'autres de
l'époque) consistant en une série de petits fragments et un tableau
permettant, suite à un jet de dés, de "composer" une petite partition.

La partition se trouve ici :
http://imslp.org/wiki/Musikalisches_Würfelspiel,\_KV\_Anh\.\_294d\_\(Mozart,\_Wolfgang\_Amadeus\)
Musikalisches_Würfelspiel, KV_Anh. 294d

Je me demandais s'il était possible dans Lilypond, non seulement d'encoder
les fragments (jusque là, pas de problème), mais également d'obtenir une
partition finale différente à chaque compilation. Il s'agirait donc, lors de
la compilation de faire se suivre des fragments (stockés dans des variables,
j'imagine) suivant le tableau de correspondances n° de mesure - coup de dés
- fragment.

Pensez-vous que ce soit possible dans Lilypond ? Et sinon, avec quel genre
de solution extérieure (n'ayant aucune expérience de "programmation" hors
Lilypond et LaTeX) ?

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5337029.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Je pense qu'on pourrait facilement faire ça en Python.

Mais j'ai trouver ça : http://strasheela.sourceforge.net/strasheela/doc/index.html ...

A+


Christophe Pochon
http://www.christophe-pochon.com

···

Le 26 juillet 2010 10:19, flup <****@****> a écrit :

Bonjour,

Vous connaissez probablement tous la partition de Mozart (et d'autres de
l'époque) consistant en une série de petits fragments et un tableau
permettant, suite à un jet de dés, de "composer" une petite partition.

La partition se trouve ici :
http://imslp.org/wiki/Musikalisches_Würfelspiel,_KV_Anh.294d(Mozart,_Wolfgang_Amadeus)
Musikalisches_Würfelspiel, KV_Anh. 294d

Je me demandais s'il était possible dans Lilypond, non seulement d'encoder
les fragments (jusque là, pas de problème), mais également d'obtenir une
partition finale différente à chaque compilation. Il s'agirait donc, lors de
la compilation de faire se suivre des fragments (stockés dans des variables,
j'imagine) suivant le tableau de correspondances n° de mesure - coup de dés

  • fragment.

Pensez-vous que ce soit possible dans Lilypond ? Et sinon, avec quel genre
de solution extérieure (n'ayant aucune expérience de "programmation" hors
Lilypond et LaTeX) ?

View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5337029.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.


liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

On Mon, 26 Jul 2010 10:30:05 +0200
Christophe Pochon <****@****> scribit:

Je pense qu'on pourrait facilement faire ça en Python.

Certainement, mais c'est très dangereux de conseiller Python, car
là le public risque de se rendre compte qu'il existe des langages logiquement construits et
faciles d'usage.

···

Mais j'ai trouvé ça :
Strasheela ...

A+
<http://strasheela.sourceforge.net/strasheela/doc/index.html&gt;
Christophe Pochon
http://www.christophe-pochon.com

Le 26 juillet 2010 10:19, flup <****@****> a écrit :

>
> Bonjour,
>
> Vous connaissez probablement tous la partition de Mozart (et d'autres de
> l'époque) consistant en une série de petits fragments et un tableau
> permettant, suite à un jet de dés, de "composer" une petite partition.
>
> La partition se trouve ici :
>
> Error;
> Musikalisches_Würfelspiel, KV_Anh. 294d
>
> Je me demandais s'il était possible dans Lilypond, non seulement d'encoder
> les fragments (jusque là, pas de problème), mais également d'obtenir une
> partition finale différente à chaque compilation. Il s'agirait donc, lors
> de
> la compilation de faire se suivre des fragments (stockés dans des
> variables,
> j'imagine) suivant le tableau de correspondances n° de mesure - coup de dés
> - fragment.
>
> Pensez-vous que ce soit possible dans Lilypond ? Et sinon, avec quel genre
> de solution extérieure (n'ayant aucune expérience de "programmation" hors
> Lilypond et LaTeX) ?
> --
> View this message in context:
> http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5337029.html
> Sent from the LilyPond French Users mailing list archive at Nabble.com.
>
>
> _______________________________________________
> liste de diffusion lilypond-user-fr
> lilypond-user-fr@gnu.org
> http://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>
>

--
René Bastian
www.pythoneon.org
www.musiques-rb.org
http://www.soundsurvey.org.uk/

:smiley:

···

Le lundi 26 juillet 2010, R. Bastian a écrit :

Certainement, mais c'est très dangereux de conseiller Python, car
là le public risque de se rendre compte qu'il existe des langages
logiquement construits et faciles d'usage.

--
Cordialement, Daniel Cartron
« Les cimetières sont remplis de gens irremplaçables. »
Alphonse Allais

Aaaargh ça a déjà commencé ... >:o

Je vous livre mon petit script pour transcrire des tablatures allemandes pour viole (à adapter pour le luth en se pastillant la préface des Musica Teusch de Gerle, 1546). Ca peut servir d'exemples pour d'autres applications !

Pour la voix de basse, par exemple :

  • créez un fichier bassussource.txt (ou un autre nom, mais il faudra modifier le code python en conséquance)
  • rentrez dedans la tablature allemande en reproduisant les lettres à l'identique et le rythme suivant le code Lilypond (Attention : les chiffres de la tablature ont été remplacés par des lettres majuscules comme indiqué dans le dictionnaire du fichier bassus.py). Se référer au dictionnaire du code bassus.py
  • faites python bassus.py dans un terminal
  • et copiez coller le résultat du terminal dans votre Frescobaldi (ou autre).

C'est effectivement facile à coder, et souverainement efficace : je ne vous raconte pas la transcription à la mano de tout ce bazar !

Je vous ai mis en PJ un exemple de tablature et le fichier bassussource.txt associé ci-dessous avec le code python bassus.txt (je suis dans un bon jour :wink: )

A bientôt !

JMarc

<big><big>**bassus.py**</big></big>
import os, re, sys

#correspondances
basse = {
'A' : 'ees,',
'F' : 'e,',
'L' : 'f,',
'Q' : 'fis,',
'U' : 'g,', #le chiffre 1
'a' : 'gis,',
'f' : 'a,',
'l' : 'bes,',
'q' : 'b,',
'D' : 'c', #le chiffre 2
'b' : 'cis',
'g' : 'd',
'm' : 'ees',
'T' : 'e', #le chiffre 3
'c' : 'f',
'h' : 'fis',
'n' : 'g',
's' : 'gis',
'K' : 'a', #le chiffre 4
'd' : 'bes',
'i' : 'b',
'o' : 'c\'',
't' : 'cis\'',
'C' : 'd\'', #le chiffre 5
'e' : 'ees\'',
'k' : 'e\'',
'p' : 'f\'',
'v' : 'fis\'',
'9' : 'g\'\''
}

breve = {'B' : 'breve', 'L' : 'longa'}

#initialisation de la chaine a traduire
source=open('bassussource.txt') # à modifier suivant le nom de votre fichier source
contenu = source.read()

#traduction
traduction = "".join(basse.get(c, c) for c in contenu) #transcription des lettres
final = "".join(breve.get(c, c) for c in traduction) #transcription des \breve et \longa

print final

#fermeture
source.close()
<big><big>

**bassussource.txt**</big></big>
d\B c d1. c2 n1 m c\B
R1 c1 D m l
R1 d1 c2. n4 K2 d n c n1 c\B
R1 n1 c D g\B
R1 g\B g1 n\B c1 l4 D g m c2 n c c l\B

Daniel Cartron a écrit :

Je pense que c'est possible, et je le prouve :slight_smile:
(aux fautes de frappes près)

dice-waltz.ly (11.4 KB)

···

Le 26 juil. 2010 à 10:19, flup a écrit :

Bonjour,

Vous connaissez probablement tous la partition de Mozart (et d'autres de
l'époque) consistant en une série de petits fragments et un tableau
permettant, suite à un jet de dés, de "composer" une petite partition.

La partition se trouve ici :
http://imslp.org/wiki/Musikalisches_Würfelspiel,\_KV\_Anh\.\_294d\_\(Mozart,\_Wolfgang\_Amadeus\)
Musikalisches_Würfelspiel, KV_Anh. 294d

Je me demandais s'il était possible dans Lilypond, non seulement d'encoder
les fragments (jusque là, pas de problème), mais également d'obtenir une
partition finale différente à chaque compilation. Il s'agirait donc, lors de
la compilation de faire se suivre des fragments (stockés dans des variables,
j'imagine) suivant le tableau de correspondances n° de mesure - coup de dés
- fragment.

Pensez-vous que ce soit possible dans Lilypond ?

Que dire, sinon, merci et bravo !

Philippe

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5339941.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Je pense que c'est possible, et je le prouve :slight_smile:
(aux fautes de frappes près)

Il y a effectivement quelques fautes de saisie clairement audible et
visibles (sauf si c'est Mozart qui s'est trompé -- ;oD)
Mais on corrigera plus tard...

C'est tout simplement génial ! (meme si je ne saisis pas encore bien le
principe de base, faute d'avoir lu l'explication de l'original, mais ça va
venir).

J'écris tout simplement pour deux choses: d'abord, j'ai modifié très
légèrement le script pour obtenir les répétitions dans le midi (les 2 lignes
de code LilyPond "\new Staff" et la fin du script), voir en PJ.

Ensuite (je n'ai pas trouvé où dans le script, car je n'en connais pas du
tout le langage...) je vois en tete de chaque génération :

Dice Waltz 11 11 11 11 11 11 11 11.
ou bien
Dice Waltz 3 3 3 3 3 3 3 3.

Deux des générations m'ont donné la meme en-tete,... et la meme partition.
N'y aurait-il que 12 partitions différentes ? ou un petit bug ?... (que je
ne saurais malheurement pas corriger -- j'ai déjà eu de la chance que mon
essai de modif fonctionne du premier coup !)...

Voilà, à bientot !

http://lilypond-french-users.1298960.n2.nabble.com/file/n5345822/Mozart_dice-waltz_avec_repeat_midi.ly
Mozart_dice-waltz_avec_repeat_midi.ly

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5345822.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Pour pousser le vice encore plus loin, j'imagine qu'il y a moyen de
transformer les mesures de main gauche avec 1 et 2 par des mesures en
\alternative ? Par contre je suppose que ça va probablement entrainer un
décalage dans la correspondance entre mesures réelles et mesures encodées
(et les répercussions dans les tableaux des lancers de dés).

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5346023.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

M
flup wrote:

Pour pousser le vice encore plus loin, j'imagine qu'il y a moyen de
transformer les mesures de main gauche avec 1 et 2 par des mesures en
\alternative ? Par contre je suppose que ça va probablement entrainer un
décalage dans la correspondance entre mesures réelles et mesures encodées
(et les répercussions dans les tableaux des lancers de dés).

Mais là, on sort peut-être de l'exercice que s'était proposé Mozart...
Mais on pourrait enchainer sur une version generant du jazz... :))

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5346093.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Oups, je me reprends, je viens de capter la signification des petits 1 et 2
!!! Et la raison pour laquelle les Midi sonnent complétement faux à cet
endroit ! Il faut demander à notre auteur s'il est possible de fermer le
Repeat à la 7eme mesure, l'Alternative pouvant etre codé dans la table des
mesures, au lieu de <<...\\...>>

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5346120.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Ciao flup,

flup wrote:

Pour pousser le vice encore plus loin, j'imagine qu'il y a moyen de
transformer les mesures de main gauche avec 1 et 2 par des mesures en
\alternative ? Par contre je suppose que ça va probablement entrainer un
décalage dans la correspondance entre mesures réelles et mesures encodées
(et les répercussions dans les tableaux des lancers de dés).

Cela me semble simple, mais pour cela il faut que les mesures soient codées
comme des séquences de caractères dans un tableau (comme le sont
actuellement les jets de dés). Et je crois qu'il n'y aura pas de risque de
décalage.

Jean-Christophe

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5348107.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

J'ai trouvé le bug, et j'ai appris Scheme hier matin pour pouvoir le
corriger... LOL
(trois bonnes pages pour débuter en Scheme, si cela intéresse qqu'un:
googler "Le petit SCHEMEUR")

(Bon c'est vrai pour hier matin, mais de là à dire que j'ai appris...)

Voilà : la graine (SEED) de séquence aléatoire est appelée "pendant" la
génération de la séquence, et donc à chaque nombre généré... Là est le pb:
la graine étant basée sur la seconde (time de l'ordi), et le process se
déroulant en bien moins d'une seconde, chaque jet de dé recommence avec la
meme graine.
Normalement, pour une séquence aléatoire, la graine n'est "semée" qu'une
seule fois... Je l'ai donc sortie de là où elle était, et l'ai mise avant le
remplissage des "jets de dés" (la syntaxe en est légèrement modifiée,
nemedemandezpaspourquoi, je l'ai trouvée sur internet !... en effet, telle
quelle, la graine "externalisée" était inopérante).

Il ne reste plus qu'à trouver comment gérer les "\alternatives"...

http://lilypond-french-users.1298960.n2.nabble.com/file/n5420036/Mozart_dice-waltz_avec_repeat_midi.ly
Mozart_dice-waltz_avec_repeat_midi.ly

Bon été à tous !

Jean-Christophe

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5420036.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Bonsoir, me revoici sur ce sujet futile ;o) ...

En fait il "suffisait" de gérer les \repeat volta en mode manuel !

La solution me semble propre...ainsi que la partition générée !

(Impossible cependant de trouver pour le moment une solution pour générer un
midi propre... le \unfoldRepeat ne comprends pas les volta manuels...
Impossible également de récupérer et gérer les variables up1 up2 etc. dans
le source LilyPond -- j'entends en fin de page... Récupérer la variable
ainsi :
partAup = #'$up1 ou bien partAup = { #'$up1 } ne plante pas, mais ensuite
l'utilisation de \partAup ne donne rien...)

Voici la PJ...
http://lilypond-french-users.1298960.n2.nabble.com/file/n5508285/dice-waltz_with_repeats.ly
dice-waltz_with_repeats.ly

Jean-Christophe

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5508285.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Super !

"Un coup de dés jamais n'abolirai le hasard" :wink:

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Variables-aleatoire-et-jeu-musical-Mozart-tp5337029p5509202.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.