// SCRIPT :
//___________________________________
// Permet de décaler une note
function transpo_note( $note, $demi_tons )
{
// Liste
$notes = array( 'a','a#','b', 'c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#' );
// Récupération de l'ID de la note
$id = array_search( $note, $notes );
// ID de la nouvelle note
$id = ( $id + $demi_tons ) % 12;
// Note décalée
return $notes[ $id ];
}
// Permet de décaler un accord
function transpo_accord( $accord, $demi_tons )
{
// Récupérations des notes
$notes = explode( '/', $accord );
// Transposition des notes
$num = count( $notes );
for ( $i = 0; $i < $num; $i++ )
{
$notes[ $i ] = transpo_note( $notes[ $i ], $demi_tons );
}
// Accord décalé
return implode( '/', $notes );
}
// EXEMPLE :
//___________________________________
echo transpo_note( 'f#', 3 ); // a
echo transpo_accord( 'a/b/c', 1 ); // a#/c/c#
Mais merciMerci pour ta rapidité. Je me rejouis de le voir tourner !
Afin de le faire fonctionner, tu dois mettre ce code dans la page vers laquelle pointe ton formulaire. Une fois les valeurs récupérées tu les envoies dans la fonction.Pardonne mon ignorance, mais comment dois-je le mettre en oeuvre ?
Code : Tout sélectionner
<form action="/www/french/Public/transposer.php" method="post">
<div id="action0">
<strong>Transpose chords:</strong>
<select name="transpose" id="transposeSelect" size="1" onChange="">
<option value="-5">-5 semitones</option><option value="-4">-4 semitones</option><option value="-3">-3 semitones</option><option value="-2">-2 semitones</option><option value="-1">-1 semitone</option><option value="0" selected="selected">None</option><option value="1">+1 semitone</option><option value="2">+2 semitones</option><option value="3">+3 semitones</option><option value="4">+4 semitones</option><option value="5">+5 semitones</option><option value="6">+6 semitones</option></select>
</div>
</form></div>
<div class="chordline">[G]Ziggy played guitar,[Bm]jamming good</div>
<div class="chordline">with Wierd and [C]Gilly and the Spiders from[D] Mars.</div>
<div class="chordline">He played it left [G]hand, but made it too [Bm]far</div>
<div class="chordline">became the spe[C]cial man, and we were [D]Ziggy's band.</div>
<br>
</div>$masque = "#\[(A|A\#|B|..etc..)m?(?:7|9)?\]#"i;
Ensuite la fonction de Vaedan pour la transposition, la réécriture avec preg_replace() et l'affichage de la version transposée.