Lilyscript... lisez ce qui suit, ça vaut le détour...

Bonjour à tous,

A près plusieurs jours d'absence sur le forum, je vous apporte quelque chose
qui a considérablement changé ma saisie du code. :jumping:

Sur ce sujet,
http://n2.nabble.com/LilypondTool-pour-les-fainéants---td2346820.html
je cherchais un moyen de simplifier et de rendre beaucoup plus rapide la
saisie du code. Toutes les possibilités me laissaient sur ma faim :,(. Soit
qu'elles n'étaient pas concluantes (exemple : midi2ly, musescore...), soit
qu'elles n'étaient pas accessibles pour les windaubeurs (exemple : lyqi, les
outils de Daniel Cartron http://www.cartron.org/ )

Alors, j'en ai parlé à un ami qui étudie le javascript depuis quelques
années. Il s'appelle Adrien Leclerc.
Il m'a dit qu'il était possible et assez rapide de créer un fichier qui
pourrait regrouper les impératifs de saisie cités plus haut. Quelques
modifications plus tard, voyez plus bas ce que ça donne... j'espère que les
Modos du forum ne m'en voudront pas pour la longueur du prochain post...
c'est pour la bonne cause ! :handshake:

Comment procéder :
1 - copier-coller le code suivant dans votre blocnote préféré ;
2 - sauvegarder le fichier au format *.html ;
3 - cliquer sur le fichier créé... votre navigateur s'ouvre sur la page
créée à partir du code. Pour les utilisateurs de IE, acceptez d'activer le
contenu pour que ça marche.
4 - A partir des tableaux de correspondances, saisissez votre code dans la
plus petite fenêtre. Le code Lilypond obtenu s'écrit dans la grande ;
5 - copier-coller le code dans jEdit, et en avant roulez jeunesse !
:working:

:-/Remarque 1 : le code saisi se fait "à la file". Impossible (pour
l'instant ?) d'intercaler une saisie oubliée. On peut faire du
copier/couper-coller dans la grande fenêtre, avec les raccourcis habituels
(Ctrl C...)
:-/Remarque 2 : il n'est pas possible (pour l'instant ?) d'annuler une
erreur de saisie à partir de la touche "Backspace". On peut le faire dans le
grande fenêtre en sélectionnant et en effaçant.
:-/Remarque 3 : il est possible d'écrire dans la grande fenêtre qui utilise
la configuration habituelle du clavier.

Adrien a accepté avec joie que le code qu'il a écrit soit accessible au plus
grand nombre, et modifiable à volonté. Il est donc possible de créer un
fichier *.html pour chaque type de partition qu'on souhaite. Je sais déjà
que plusieurs vont s'en donner à cœur-joie ! Il est pour cela utile d'avoir
quelques notions élémentaire en javascript.

Le code ci-dessous permet d'écrire accords, musique et 4 strophes de paroles
sous la portée, avec une mise en page perso... chacun la sienne. A vous de
voir ! ça se conjugue comment déjà le verbe bidouiller ?

Adrien doit passer prochainement sur ce forum pour connaître vos remarques
et suggestions. Je l'ai invité à s'y inscrire pour y répondre
éventuellement. Allez-y molo, ses études lui prennent pas mal de temps !
Le code à suivre...

···

--
View this message in context: http://n2.nabble.com/Lilyscript...-lisez-ce-qui-suit%2C-%C3%A7a-vaut-le-d%C3%A9tour...-tp2490274p2490274.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
<html xmlns="http://www.w3.org/1999/xhtml&quot; xml:lang="fr" >
   <head>
       <title>Lilyscript</title>
       <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
        <meta name="AUTHOR" content="Adrien LECLERC" />
        <meta http-equiv="CONTENT-LANGUAGE" content="French" />

<style type="text/css">
body{
background-color:#C3E2D4;
font-family:'Courier New';
font-size:13
}

input{
border-color:#AFC5FF;
background-color:#A0D5C9;
}

textarea{
border-color:#AFC5FF;
background-color:#A0D5C9;
font-family:'Courier New';
font-size:12
}

td{
color:#000000;
text-align:center;
}

.titre{
color:##000000;
text-align:center;
font-weight: bold;
background-color:#A0D5C9;
}
</style>

<script language="javascript" type="text/javascript">
function remplace(lettre)
{
var lettre;
var corresp;
var longueur;
var longueur2;
var ssespace;
var val;
lettre = document.getElementById('brut').value;

switch (lettre)
{
case "1":
corresp = "1";
break;
case "2":
corresp = "2";
break;
case "3":
corresp = "3";
break;
case "4":
corresp = "4";
break;
case "5":
corresp = "5";
break;
case "6":
corresp = "6";
break;
case "7":
corresp = "7";
break;
case "8":
corresp = "8";
break;
case "9":
corresp = "9";
break;
case "0":
corresp = "0";
break;
case ".":
corresp = ".";
break;
case "/":
corresp = "/";
break;
case "*":
corresp = "*";
break;
case "+":
corresp = "+";
break;

case "²":
corresp = " es";
break;
case "&":
corresp = " is";
break;
case "é":
corresp = " ~";
break;
case "#":
corresp = " \\times 2/3 {";
break;
case "'":
corresp = "'";
break;
case "{":
corresp = " {";
break;
case "(":
corresp = " (";
break;
case "[":
corresp = " [";
break;
case "-":
corresp = "-";
break;
case "_":
corresp = "_";
break;
case ")":
corresp = " )";
break;
case "]":
corresp = " ]";
break;
case "}":
corresp = " }";
break;

case "A":
corresp = "\n\\alternative { {";
break;
case "z":
corresp = " cis";
break;

case "Z":
corresp = "\n\n\\score {\n<<\n \\new ChordNames \\with {\n chordChanges =
##f\n voltaOnThisStaff = ##t\n \\override VoltaBracket #'minimum-space =#0 }
\n { \\accords }\n \\new Staff \\with { voltaOnThisStaff = ##f }\n<<\n \\new
Voice = chant { << \\musique >> }\n>> % espace sous les paroles / espace sur
les paroles\n \\new Lyrics \\with { \\override VerticalAxisGroup
#'minimum-Y-extent = #'(-0.1 . 0.7) }\n \\lyricsto chant { \\coupletI }\n
\\new Lyrics \\with { \\override VerticalAxisGroup #'minimum-Y-extent =
#'(-0.1 . 0.1) }\n \\lyricsto chant { \\coupletII }\n \\new Lyrics \\with {
\\override VerticalAxisGroup #'minimum-Y-extent = #'(-0.1 . 0.1) }\n
\\lyricsto chant { \\coupletIII }\n \\new Lyrics \\with { \\override
VerticalAxisGroup #'minimum-Y-extent = #'(-2 . 0.1) }\n \\lyricsto chant {
\\coupletIIII }\n>>\n\n\\midi { }\n\\layout { }\n}";
break;

case "e":
corresp = " dis";
break;
case "r":
corresp = " eis";
break;
case "R":
corresp = "\n\nmusique = \\relative c' {\n\n \\override
Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-4 . 3)\n \\override
Staff.VerticalAxisGroup #'minimum-Y-extent = ##f\n\n \\time 4/4 \n \\key
c\\major \n \\clef treble\n\n";
break;
case "t":
corresp = " fis";
break;
case "T":
corresp = "\n\\time 2/4";
break;
case "y":
corresp = " gis";
break;
case "u":
corresp = " ais";
break;
case "i":
corresp = " bis";
break;
case "o":
corresp = " \\bar\"||\"";
break;
case "O":
corresp = " \\mark \\markup { \\musicglyph #\"scripts.coda\" }";
break;
case "p":
corresp = " \\bar\"|.\"";
break;
case "P":
corresp = " \\partial ";
break;
case "^^":
corresp = "^";
break;
case "$":
corresp = "sus";
break;
case "¤":
corresp = "dim";
break;

case "q":
corresp = " c";
break;
case "s":
corresp = " d";
break;
case "S":
corresp = " \\mark \\markup { \\musicglyph #\"scripts.segno\" }";
break;
case "d":
corresp = " e";
break;
case "f":
corresp = " f";
break;
case "F":
corresp = " \\fermata";
break;
case "g":
corresp = " g";
break;
case "h":
corresp = " a";
break;
case "j":
corresp = " b";
break;
case "k":
corresp = " \\bar\":|\"";
break;
case "l":
corresp = " \\bar\"|:\"";
break;
case "L":
corresp = "\n\ncoupletI = \\lyricmode {\n \\set stanza = \"1. \"\n\n}";
break;
case "m":
corresp = "m";
break;
case "M":
corresp = "maj";
break;
case "%":
corresp = " \\repeat percent 2 {";
break;

case "<":
corresp = " ces";
break;
case "w":
corresp = " des";
break;
case "x":
corresp = " ees";
break;
case "c":
corresp = " fes";
break;
case "v":
corresp = " ges";
break;
case "V":
corresp = "\\version \"2.12.2\"\n#(set-global-staff-size 18)\n\n\\paper {\n
#(set-paper-size \"a4\")\n page-count = #1\n after-title-space = 1\\cm\n
bottom-margin = 1\\cm\n foot-separation = 0\\cm\n indent = 0\\mm\n
left-margin = 10\\mm\n line-width = 190\\mm\n ragged-bottom = ##f\n
ragged-last = ##f\n ragged-last-bottom = ##f\n ragged-right =
##f\n}\n\n\\header {\n title = \"\"\n subtitle = \\markup { \\smaller {\"\"}
} %auteur / compositeur, instrument, etc...\n tagline = ##f\n} \n\n\accords
= \\new ChordNames \\chordmode {\n\n";
break;
case "b":
corresp = " aes";
break;
case "B":
corresp = "\n\\repeat volta 2 {";
break;
case "n":
corresp = " bes";
break;
case ",":
corresp = ",";
break;
case ";":
corresp = " r";
break;
case ":":
corresp = ":";
break;
case "§":
corresp = "\n\\transpose . . {";
break;
case "!":
corresp = " s";
break;

default:
corresp = null;
break;
}

if(corresp == "1" || corresp == "2" || corresp == "3" || corresp == "4" ||
corresp == "5" || corresp == "6" || corresp == "7" || corresp == "8" ||
corresp == "9" || corresp == "0"){
document.getElementById('lilypond').value =
document.getElementById('lilypond').value + corresp;
}
else if(document.getElementById('lilypond').value == "" && corresp != null){
document.getElementById('lilypond').value = corresp;
}
else {
val = "";
longueur = 0;
ssespace= "";
val = escape(document.getElementById('lilypond').value);
longueur = val.length;
longueur2 = longueur-3;
ssespace = val.substr(longueur2,3);

if(ssespace == "%0A" && corresp != null){
document.getElementById('lilypond').value = unescape(val) + corresp;
}
else if(corresp != null){
document.getElementById('lilypond').value =
document.getElementById('lilypond').value + corresp;
}
}
document.getElementById('brut').value = "";
var sc=document.getElementById("lilypond");
sc.scrollTop = sc.scrollHeight;
}

function enter(){
document.getElementById('lilypond').value =
document.getElementById('lilypond').value + "\n";
var sc=document.getElementById("lilypond");
sc.scrollTop = sc.scrollHeight;
}

</script>

   </head>
   <body>

<div align="center">
Lilyscript<br /><br />
Ecrire ici : <input type="text" name="brut" id="brut" onKeyUp="if
(event.keyCode ==
13){enter()}else{remplace(document.getElementById('brut').value)}" /><br
/><br />
<textarea cols="90" rows="8" name="lilypond" id="lilypond" ></textarea><br
/><br />

<table width=90% border=3 cellspading=1 style="font-size:14px;">
    <tr>
      <td colspan="44" class="titre">CORRESPONDANCES</td>
    </tr>

  <tr>
      <td>c</td>
        <td>d</td>
        <td>e</td>
        <td>f</td>
        <td>g</td>
        <td>a</td>
        <td>b</td>
        <td>cis</td>
        <td>dis</td>
        <td>eis</td>
        <td>fis</td>
        <td>gis</td>
        <td>ais</td>
        <td>bis</td>
        <td>ces</td>
        <td>des</td>
        <td>ees</td>
        <td>fes</td>
        <td>ges</td>
        <td>aes</td>
        <td>bes</td>
        <td>'</td>
        <td>,</td>
        <td>~</td>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
        <td>5</td>
        <td>6</td>
        <td>7</td>
        <td>8</td>
        <td>9</td>
        <td>0</td>
        <td>/</td>
        <td>*</td>
        <td>-</td>
        <td>+</td>
        <td>^</td>
        <td>_</td>
        <td>es</td>
        <td>is</td>
        <td>r</td>
        <td>s</td>
    </tr>
    <tr>
      <td>q</td>
        <td>s</td>
        <td>d</td>
        <td>f</td>
        <td>g</td>
        <td>h</td>
        <td>j</td>
        <td>z</td>
        <td>e</td>
        <td>r</td>
        <td>t</td>
        <td>y</td>
        <td>u</td>
        <td>i</td>
        <td><</td>
        <td>w</td>
        <td>x</td>
        <td>c</td>
        <td>v</td>
        <td>b</td>
        <td>n</td>
        <td>'</td>
        <td>,</td>
        <td>é</td>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
        <td>5</td>
        <td>6</td>
        <td>7</td>
        <td>8</td>
        <td>9</td>
        <td>0</td>
        <td>/</td>
        <td>*</td>
        <td>-</td>
        <td>+</td>
        <td>^^</td>
        <td>_</td>
        <td>²</td>
        <td>&</td>
        <td>;</td>
        <td>!</td>
    </tr>
</table>

<br />

<table width=90% border=3 cellspading=1 style="font-size:14px;">
  <tr>
      <td colspan="2" class="titre">CORRESPONDANCES 2</td>
        <td colspan="2" class="titre">CORRESPONDANCES 3</td>
        <td colspan="2" class="titre">CORRESPONDANCES 4</td>
  </tr>

  <tr>
      <td>...</td>
        <td>...</td>
        <td>\bar"||"</td>
        <td>O</td>
        <td>\version "2.12.2"...</td>
        <td>Maj + V</td>
    </tr>

  <tr>
      <td>(</td>
        <td>(</td>
        <td>\bar"|."</td>
        <td>P</td>
        <td>\transpose . . {</td>
        <td>Maj + §</td>
    </tr>

  <tr>
      <td>)</td>
        <td>)</td>
        <td>\bar"|:"</td>
        <td>L</td>
        <td>\repeat volta 2 {</td>
        <td>Maj + B</td>
    </tr>

    <tr>
        <td>[</td>
        <td>AltGr + [</td>
        <td>\bar":|"</td>
        <td>K</td>
        <td>\alternative { {</td>
        <td>Maj + A</td>
    </tr>

    <tr>
        <td>]</td>
        <td>AltGr + ]</td>
        <td>\partial</td>
        <td>Maj + P</td>
        <td>\repeat percent 2 {</td>
        <td>Maj + %</td>
    </tr>

    <tr>
        <td>{</td>
        <td>AltGr + {</td>
        <td>m</td>
        <td>m</td>
        <td>\mark ... segno" }</td>
        <td>Maj + S</td>
    </tr>

    <tr>
        <td>}</td>
        <td>AltGr + }</td>
        <td>maj</td>
        <td>Maj + M</td>
        <td>\mark ... coda" }</td>
        <td>Maj + O</td>
    </tr>

    <tr>
        <td>\times 2/3 {</td>
        <td>AltGr + 3</td>
        <td>sus</td>
        <td>$</td>
        <td>\time 2/4</td>
        <td>Maj + T</td>
    </tr>

    <tr>
        <td>\fermata</td>
        <td>Maj + F</td>
        <td>dim</td>
        <td>AltGr + ¤</td>
        <td>\relative...{</td>
        <td>Maj + R</td>
    </tr>

    <tr>
        <td>...</td>
        <td>...</td>
        <td>...</td>
        <td>...</td>
        <td>...\set stanza = "1. "</td>
        <td>Maj + L</td>
    </tr>

</table>
</div>
<br /><div align="right">Adrien LECLERC</div>
   </body>
</html>

···

--
View this message in context: http://n2.nabble.com/Lilyscript...-lisez-ce-qui-suit%2C-%C3%A7a-vaut-le-d%C3%A9tour...-tp2490274p2490294.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Pour moi, l'avantage le plus important du fichier est la saisie au format
piano. Pour m'y retrouver rapidement, j'ai volé (oui, je l'avoue avec
honte...) quelques gommettes colorés à mes enfants, que j'ai découpées en
petits carrés pour en recouvrir le bas des touches de mon clavier. 3
couleurs : 1 pour les dièses (en laissant les mi#* et si#*), 1 pour les
notes "naturelles", 1 pour les bémols (en laissant les fab* et dob*)

*ce qui me permet de voir clairement les touches du clavier qui
correspondent aux touches noirs du piano.

Je saisie donc, de la main gauche, les notes comme je le ferais sur un
piano. La durée des notes, avec la main droite, sur le clavier numérique.

A NOTER POUR LES FLEMMARDS : ça va sûrement intéresser du monde !
Le fichier a été conçu de telle manière qu'il est INUTILE de taper les
espaces, et dans beaucoup de cas les sauts de ligne. Vous n'avez qu'à saisir
la musique. Le script fait le reste !

:-/Remarque 1 : l'ambitus est d'1 octave seulement. Mais vous pouvez changer
à votre convenance l'assignation des touches pour l'élargir... d'une quarte
maximun ! Si quelqu'un connaît des clavier bizarres contenant plus de
touches sur sa longueur, je suis preneur !
:-/Remarque 2 : Il est possible de passer à la ligne en tapant sur...
"Entrée".

···

--
View this message in context: http://n2.nabble.com/Lilyscript...-lisez-ce-qui-suit%2C-%C3%A7a-vaut-le-d%C3%A9tour...-tp2490274p2490383.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

ça m'a l'air sympa tout ça! Je vais tester. Ca m'étonnerait que je change
musescore et le clavier MIDI par cette méthode mais on sait jamais. Pour un
clavier bizarre qui contient plus de touches, ça s'appelle donc un clavier
MIDI :wink: et ça doit se trouver en USB pour une 50aine d'euros.

···

--
View this message in context: http://n2.nabble.com/Lilyscript...-lisez-ce-qui-suit%2C-%C3%A7a-vaut-le-d%C3%A9tour...-tp2490274p2490428.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

lasconic wrote:

Pour un clavier bizarre qui contient plus de touches, ça s'appelle donc un
clavier MIDI :wink: et ça doit se trouver en USB pour une 50aine d'euros.

J'ai un clavier midi et je tourne sous XP. ça m'intéresse de savoir comment
tu fais tourner ton affaire.
J'ai pas énormément de place à la maison pour tout mettre au même endroit
(1,10m le synthé..., dans un fly qui en contient 2 et 2 expanders, c'est un
monstre ! tu peux me croire : 65kg la bête !).
50 Euros... tu dois penser à l'achat d'un petit clavier midi usb ? 50 Euros
uniquement pour faire de la saisie, ça m'arraque un peu... si en plus le
système dont tu parles ne marche que sous le pingouin...

Le script ci-dessus a 2 autres avantages :
1 - il marche indépendamment de ton OS, puisqu'il utilise ton navigateur ;
2 - il dispose d'une octave pour saisir les notes (soit 15cm de touches).
C'est peu, c'est vrai, mais suffisant : les "'" et les "," font le reste.
Avec un peu d'exercice, on s'habitue...

···

--
View this message in context: http://n2.nabble.com/Lilyscript...-lisez-ce-qui-suit%2C-%C3%A7a-vaut-le-d%C3%A9tour...-tp2490274p2490598.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

La place et l'argent :slight_smile: c'est effectivement deux gros problèmes.
C tout petit chez moi, mais le portable sur une table, le clavier midi sur
son pied à ma gauche en angle droit. Musescore pour windows
(http://www.musescore.org/fr). Tu branches l'usb. Tu lances musescore. Une
nouvelle partition, tu choisis ta figure de note (noire, blanche etc ...)
avec le numpad du portable, et la note ou l'accord avec le clavier midi et
c'est parti. Une fois que c'est bon tu rajoutes tes barres de répétitions et
tu fais Fichier-> Enregistrer sous -> lilypond. Un petit tour par jedit ou
pspad et le tour est joué.
Quelques ombres au tableau, le support des paroles mais ça va venir :slight_smile:

···

--
View this message in context: http://n2.nabble.com/Lilyscript...-lisez-ce-qui-suit%2C-%C3%A7a-vaut-le-d%C3%A9tour...-tp2490274p2490982.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Tiens, ça me fait penser à la petite application en JavaScript que
j'avais tentée il y a deux-trois ans... et qui pourrait compléter la
tienne, d'ailleurs :

Valentin

···

2009/3/17 legoss <****@****>:

A NOTER POUR LES FLEMMARDS : ça va sûrement intéresser du monde !
Le fichier a été conçu de telle manière qu'il est INUTILE de taper les
espaces, et dans beaucoup de cas les sauts de ligne. Vous n'avez qu'à saisir
la musique. Le script fait le reste !

Valentin Villenave wrote:

la petite application en JavaScript que j'avais tentée il y a deux-trois
ans...

ça serait peut être bien de profiter des compétences qui planent aux dessus
de ce forum, et de réfléchir à l'édition de scripts ergonomiques, complets
et efficaces, en se servant de ce qui existe déjà...:confused:
Mon souhait est que ton application Script, celle que j'ai présentée plus
haut, et peut-être d'autres encore, fassent germer des idées originales
:jumping: très rapidement. :handshake:

Pour faire exploser un bâton de dynamite, il suffit d'allumer la mèche !
Espérons juste que ce n'est pas un pétard mouillé... :teeth:

···

--
View this message in context: http://n2.nabble.com/Lilyscript...-lisez-ce-qui-suit%2C-%C3%A7a-vaut-le-d%C3%A9tour...-tp2490274p2494060.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Pendant un moment, j'ai réfléchi aux usages possibles de LilyPond en
tant qu'application web, par exemple sur le modèle de codeide.com ou
autre.

Les avantages sont : portabilité impeccable, facilité et immédiateté
d'accès (puisque pas d'installation requise), et possibilité de s'en
servir même sur des petites configurations.

Les inconvénients sont : mode offline impossible (car je ne me vois
pas inclure LilyPond lui-même dans une extension Firefox), et donc
difficile à utiliser en conservatoire, gros frais de développement web
et d'hébergement, manque d'ergonomie (car même si c'est sympa pour
découvrir le code, dès qu'on commence à faire un projet un peu plus
classe avec des includes, ça devient impossible).

Pour ces raisons, j'ai laissé tomber le JavaScript pour me consacrer
au projet EasyLilyPond pour Windows, puis EasyLilyPond 2
multi-plateformes (bientôt sur vos écrans).

Valentin

···

2009/3/17 legoss <****@****>:

Mon souhait est que ton application Script, celle que j'ai présentée plus
haut, et peut-être d'autres encore, fassent germer des idées originales
:jumping: très rapidement. :handshake:

Bonjour à vous,

Tout d'abord merci de m'accepter dans cette communauté.

Je suis désolé d'utiliser un premier message pour déterrer un vieux sujet, mais j'aurais beaucoup aimé savoir où en étaient les différents projets et projets de projets présentés ici. Il y a eu des suites ? des achèvements ?

En vous remerciant à nouveau,

Phil