Du nouveau : La base est en cours de transfert à son adresse définitive.

Outils php

Ci-dessous, quelques fonctions permettant de manipuler du code Lilypond en php.


lily_extract_notes($str)
Transforme une expression lilypond $str en notes "nues" séparées par un espace.
function lily_extract_notes($chaine){
$chaine=trim(htmlentities ($chaine, ENT_COMPAT, "UTF-8"));
$lily=array("0","1","2","3","4","5","6","7","8","9",'{', '}', '[', ']', '(', ')', '!', "'", "," ,'«', '#', '»', '.', '-+', '˜', '|', '*', 'r', '/', '<', '>', 'ˆ', '^', '=');
$chaine=trim(str_replace($lily,"",$chaine));
$chaine=preg_replace('/\s\s+/', ' ', $chaine);
$tableau = explode(" ",$chaine);
$chaineformat = "";
for( $i = 0 ; $i < count($tableau) ; $i++ ) {
$lg_mot=strlen($tableau[$i]);
if ($lg_mot==1 || substr($tableau[$i],1,3)=="is" || substr($tableau[$i],1,3)=="es" && $tableau[$i]!="s")
$chaineformat = $chaineformat." ".$tableau[$i];
}
$chaineformat=trim($chaineformat);
return $chaineformat;
}
Utiliser

lily_notes_from_file($str)
Renvoit les notes "nues" d'un fichier lilypond dont l'adresse est $str, nécessite lily_extract_notes().
function lily_notes_from_file($file){
$tabfich=file($file);
$notes="";
for( $i = 0 ; $i < count($tabfich) ; $i++ )
{ $tabfich[$i] = trim($tabfich[$i]);
if (substr($tabfich[$i],0,1)!="%" && substr($tabfich[$i],0,8)!='\version' && substr($tabfich[$i],0,9)!='\relative' && substr($tabfich[$i],0,5)!='\auto' && substr($tabfich[$i],0,5)!='\clef' && substr($tabfich[$i],0,4)!='\key' && substr($tabfich[$i],0,5)!='\time' && substr($tabfich[$i],0,6)!='\tempo' && substr($tabfich[$i],0,4)!='\bar')
$notes = $notes.lily_extract_notes($tabfich[$i])." ";
}
return $notes;
}

lily_notes_traduce($str)
Traduit des notes du Français vers Lilypond.
sibmiblabrebrébsolbdobfabdoremifasollasi#ut
beseesaesdesdesgescesfescddefgabisc

function lily_notes_traduce($notes) {
$ponctu=array(',', '-', '.', '{', '}');
$latin=array('sib', 'mib', 'lab', 'reb', 'réb', 'r&eacute;b', 'solb', 'dob', 'fab', 'do', 're', 'ré', 'r&eacute;', 'mi', 'fa', 'sol', 'la', 'si', '#', 'ut');
$anglais=array('bes', 'ees', 'aes', 'des', 'des', 'des', 'ges', 'ces', 'fes', 'c', 'd', 'd', 'd', 'e', 'f', 'g', 'a', 'b', 'is', 'c');
$notes=strtolower($notes);
$notes=trim(str_replace($ponctu,' ',$notes));
$notes=trim(str_replace($latin,$anglais,$notes));
$notes=preg_replace('/\s\s+/', ' ', $notes);
return $notes;
}
Utiliser
lily_notes_to_num($str)
Renvoit les numéro de note, sur une échelle chromatique d'une chaîne de notes "nues".
ccis/desddis/eeseeis/ffis/gesggis/aesaais/besb
01234567891011

function lily_notes_to_num($chaine){
$gamme_table =array(
'c' => 0, 'cis' => 1, 'des' => 1, 'd' => 2, 'dis' => 3, 'ees' => 3, 'e' => 4, 'fes' => 4, 'eis' => 5, 'f' => 5, 'fis' => 6, 'ges' => 6, 'g' => 7, 'gis' => 8, 'aes' => 8, 'a' => 9, 'ais' => 10, 'bes' => 10, 'b' => 11, 'ces' => 11, 'bis' => 0 );
$notes_num="";
$notes_tabl = explode(" ",$chaine);
for( $i = 0 ; $i < count($notes_tabl) ; $i++ )
$notes_num=$notes_num.$gamme_table[$notes_tabl[$i]]." ";
return $notes_num;
Utiliser

lily_num_transpose($str, $int)
Transpose de n demis-tons une mélodie $chaine codée en chiffres (fonction précédente).
function lily_num_transpose($chaine,$n){
$notes_transpose ="";
$notes_tabl = explode(" ",trim($chaine));
for( $i = 0 ; $i < count($notes_tabl) ; $i++ ) {
$note_nouvelle=$notes_tabl[$i]+$n;
while( $note_nouvelle > 11 )
$note_nouvelle = $note_nouvelle-11;
$notes_transpose = $notes_transpose." ".$note_nouvelle;
}
return $notes_transpose;
}

colorlily($str)
Parser pour afficher du code Lilypond en html avec coloration syntaxique simple et indentation.
//La fonction :
function colorlily($chaine){
$chaine=trim(htmlentities ($chaine, ENT_COMPAT, "UTF-8"));
$lily = array(
"0","1","2","3","4","5","6","7","8","9",
'\break', '\relative', '\repeat', '\alternative', '\partial', '\key', '\tempo', '\time', '\version', '\override', '\markup', '\score', '\new', '\include', '\header', '\midi', '\layout', '\context', '\remove',
'\bar', '\clef', '\major', '\minor', '\autoBeamOff','\autoBeamOn','\bigger','\small','\smaller','\teeny','\upbow', '\downbow', '\grace', '\aftergrace', '\acciacatura', '\appoggiatura', '\fermata',
'{', '}', '[', ']', "'", ',' ,'&laquo;', '&raquo;'
);

$html = array(
'<span class="lily_num">0</span>','<span class="lily_num">1</span>','<span class="lily_num">2</span>','<span class="lily_num">3</span>','<span class="lily_num">4</span>','<span class="lily_num">5</span>','<span class="lily_num">6</span>','<span class="lily_num">7</span>','<span class="lily_num">8</span>','<span class="lily_num">9</span>',
'<span class="lily_kwd1">\break</span>', '<span class="lily_kwd1">\relative</span>', '<span class="lily_kwd1">\repeat</span>', '<span class="lily_kwd1">\alternative</span>', '<span class="lily_kwd1">\partial</span>', '<span class="lily_kwd1">\key</span>', '<span class="lily_kwd1">\tempo</span>', '<span class="lily_kwd1">\time</span>', '<span class="lily_kwd1">\version</span>', '<span class="lily_kwd1">\override</span>', '<span class="lily_kwd1">\markup</span>', '<span class="lily_kwd1">\score</span>', '<span class="lily_kwd1">\new</span>', '<span class="lily_kwd1">\include</span>', '<span class="lily_kwd1">\header</span>', '<span class="lily_kwd1">\midi</span>', '<span class="lily_kwd1">\layout</span>', '<span class="lily_kwd1">\context</span>', '<span class="lily_kwd1">\remove</span>',
'<span class="lily_kwd3">\bar</span>', '<span class="lily_kwd3">\clef</span>', '<span class="lily_kwd3">\major</span>', '<span class="lily_kwd3">\minor</span>', '<span class="lily_kwd3">\autoBeamOff</span>','<span class="lily_kwd3">\autoBeamOn</span>','<span class="lily_kwd3">\bigger</span>','<span class="lily_kwd3">\small</span>','<span class="lily_kwd3">\smaller</span>','<span class="lily_kwd3">\teeny</span>','<span class="lily_kwd3">\upbow</span>', '<span class="lily_kwd3">\downbow</span>', '<span class="lily_kwd3">\grace</span>', '<span class="lily_kwd3">\aftergrace</span>', '<span class="lily_kwd3">\acciacatura</span>', '<span class="lily_kwd3">\appoggiatura</span>', '<span class="lily_kwd3">\fermata</span>',
'<span class="lily_markup">{</span>', '<span class="lily_markup">}</span>', '<span class="lily_markup">[</span>', '<span class="lily_markup">]</span>', "<span class=\"lily_markup\">'</span>", '<span class="lily_markup">,</span>', '<span class="lily_markup">&laquo;</span>', '<span class="lily_markup">&raquo;</span>' );

$chaine = trim(str_replace($lily,$html,$chaine));
return $chaine;
}

// Utilisation de la fonction : on affiche le contenu du fichier dont l'adresse est $fichier (à définir)

$tabfich = file($fichier);

$indent = "";

echo ' <div class="lilypondcode">
<code>
'
;
for ( $i = 0 ; $i < count($tabfich) ; $i++ )
{
$ligne = trim($tabfich[$i]);
if (substr($ligne,0,1)=="%")
echo ' <span class="lily_comment">'.$ligne.'<br /> ';
else {
echo $indent.colorlily($ligne).'<br />
'
;
if (substr_count ($ligne, "{")>=1)
$indent = $indent."&nbsp;&nbsp;&nbsp;";
if (substr_count ($ligne, "}")>=1)
$indent = substr($indent,0,-18);
}
}
echo '
</code>
</div>
<br />'
;

... et le style css qui va avec :
/*== Lilypond == */
.lilypondcode {background:#e1e1e1;padding:5px;border:1px solid #cccccc;-moz-border -radius:5px 5px 5px 5px;color:#000000;} .lily_comment {color:#8B7765;} /*peach puff4*/
.lily_kwd1 {color:#191970;font-weight:bold;} /*midnight blue*/
.lily_kwd3 {color:#FF8247;font-weight:bold;} /*siena1*/
.lily_function {color:#191970;} /*midnight blue*/
.lily_lit1 {color:#8B2252;} /*violetred4*/
.lily_num {color:#8B2323;} /*broun4*/
.lily_markup {color:#9c9cfe;font-weight:bold;} /*mauve*/



Projet POIESIS/CERPOAR » Matériel & méthode » Outils php





Crédits     Réalisé avec Kitesite
Connexion d'un administrateur