Fonctions du projet de basse chiffrée

Accord intervalle $inter

"; $lon=strlen($inter); $note=""; $l1=substr($inter,0,1); if($l1=="S" or$l1=="T" or $l1=="t" or $l1=="Q" or $l1=="V" or $l1=="X" or $l1=="x") $notedeb=$demiton+1; else $notedeb=$demiton; $provsuite=""; for($i=0;$i<$lon;$i++) { $l1=substr($inter,$i,1); $l2=substr($inter,$i,2); if($l1=="/") { $ton=substr($inter,$i-1,1); if($ton=="#" or $ton=="b") $ton=substr($inter,$i-2,2); $notedeb=$notedeb+decodenoteanglo($ton); //$notedeb--; } elseif($l1=="S") $note=$notedeb+2; elseif($l1=="t") $note=$notedeb+3; elseif($l1=="T") $note=$notedeb+4; elseif($l2=="Q+" or $l2=="V-") { $i++; $note=$notedeb+6; } elseif($l1=="Q") $note=$notedeb+5; elseif($l2=="V+") { $i++; $note=$notedeb+8; } elseif($l1=="V") $note=$notedeb+7; elseif($l1=="x") $note=$notedeb+8; elseif($l1=="X") $note=$notedeb+9; elseif($l1==" ") $notedeb=$demiton+1; if($l1=="S" or $l1=="T" or $l1=="t" or $l1=="Q" or $l1=="V" or $l1=="X" or $l1=="x") { if($notedeb<1) { $notedeb=$notedeb+12; $note=$note+12; } if($note>25) { $notedeb=$notedeb-12; $note=$note-12; } $noteinter=$notedeb."-".$note." "; $noteinter=corrigeinter($noteinter); $notedeb=$note; $provsuite=$provsuite.$noteinter." "; } } //echo "

decodeinter $provsuite

"; return $provsuite; }; function transposertabla($tabla,$demiton) { $tabla=normaliser($tabla); $suitenote=decodesuitecodenoteanglo($tabla); //echo "

Tablature décodée $suitenote

"; $lon=strlen($suitenote); $prov=""; $provsuite=""; for($i=0;$i<$lon;$i++) { $l1=substr($suitenote,$i,1); if($l1==" " or $l1=="_" or $l1=="-") { $deb=substr($prov,0,1); if($deb=="C" or $deb=="D" or $deb=="E" or $deb=="F" or $deb=="G" or $deb=="A" or $deb=="B") { $alt=substr($prov,1,1); if($alt=="#" or $alt=="b") $deb=substr($prov,0,2); $fin=substr($prov,strlen($deb),strlen($prov)-strlen($deb)); $prov=decodenoteanglo($deb); $prov=$prov+$demiton; if($prov<1) $prov=$prov+12; if($prov>25) $prov=$prov-12; $prov=codenoteanglo($prov); if(substr($prov,1,1)=="=") $prov=substr($prov,0,1); $deb=substr($prov,0,1); $suite=substr($prov,1,strlen($prov)-1); $deb=strtoupper($deb); $prov=$deb.$suite; $prov=$prov.$fin; } elseif($prov<38) { $prov=$prov+$demiton; if($prov<1) $prov=$prov+12; elseif($prov>25) $prov=$prov-12; } $provsuite=$provsuite.$prov.$l1; if($l1=="_") { $i++; $provsuite=$provsuite." "; } $prov=""; } else $prov=$prov.$l1; } //echo "

Tablature transposée de $demiton demi-tons $provsuite

"; return $provsuite; }; function tradanglo($suitecodenote) { $l1=substr($suitecodenote,0,1); $l2=substr($suitecodenote,0,2); if($l2=="Do" or $l2=="Ré" or $l2=="Mi" or $l2=="Fa" or $l2=="So" or $l2=="La" or $l2=="Si" or $l2=="do" or $l2=="ré" or $l2=="mi" or $l2=="fa" or $l2=="so" or $l2=="la" or $l2=="si" or $l2=="bé" or $l1=="#") { //echo "

Décodage de la tablature en notation anglosaxonne :

"; $suitenote=decodesuitecodenote($suitecodenote); $suitecodenote=codesuitenoteanglo($suitenote); //echo "

$suitecodenote

"; } return $suitecodenote; }; function normaliser($chaine) { $chaine=$chaine." "; $lon=strlen($chaine); $prov=""; for($i=0;$i<$lon;$i++) { $l1=substr($chaine,$i,1); $ls=substr($chaine, $i+1,1); if($i==0 and $l1==" ") $l1=""; elseif($l1==" " and $ls==" ") $l1=""; elseif($l1=="]" and $ls=="[") $l1="] "; $prov=$prov.$l1; } return $prov; }; function decodenoteanglo($codenote) { $l1=substr($codenote,strlen($codenote)-1,1); //echo "

fin note $l1

"; if($l1==":") { $accord=substr($codenote,0,strlen($codenote)-1); return $accord; } if($codenote=="P" or $codenote=="p") return $codenote; if($codenote=="bb") return 23; elseif($codenote=="bbb") return 22; elseif($codenote=="bb,") return "23_" ; elseif($codenote=="bbb,") return "22_" ; $lon=strlen($codenote); $code=""; $octave=""; $doublediese=""; $doublebemol=""; for($i=0;$i<$lon;$i++) { $l1=substr($codenote,$i,1); $l2=substr($codenote,$i,2); if($l1==",") { $i=$lon; $octave="_"; } elseif($l2=="##") $doublediese=1; elseif($l2=="bb") $doublebemol=-1; else $code=$code.$l1; } $codenote=$code; $c=$codenote; if($c=="Cb") $d=0; elseif($c=="C" or $c=="C=" or $c=="B#") $d=1; elseif($c=="C#" or $c=="Db") $d=2; elseif($c=="D" or $c=="D=") $d=3; elseif($c=="D#" or $c=="Eb") $d=4; elseif($c=="E" or $c=="E=" or $c=="Fb") $d=5; elseif($c=="F" or $c=="F=" or $c=="E#") $d=6; elseif($c=="F#" or $c=="Gb") $d=7; elseif($c=="G" or $c=="G=") $d=8; elseif($c=="G#" or $c=="Ab") $d=9; elseif($c=="A" or $c=="A=") $d=10; elseif($c=="A#" or $c=="Bb") $d=11; elseif($c=="B" or $c=="B=" or $c=="cb") $d=12; elseif($c=="c" or $c=="c=" or $c=="B#") $d=13; elseif($c=="c#" or $c=="db") $d=14; elseif($c=="d" or $c=="d=") $d=15; elseif($c=="d#" or $c=="eb") $d=16; elseif($c=="e" or $c=="e=" or $c=="fb") $d=17; elseif($c=="f" or $c=="f=" or $c=="e#") $d=18; elseif($c=="f#" or $c=="gb") $d=19; elseif($c=="g" or $c=="g=") $d=20; elseif($c=="g#" or $c=="ab") $d=21; elseif($c=="a" or $c=="a=") $d=22; elseif($c=="a#" or $c=="bb") $d=23; elseif($c=="b" or $c=="c'b" or $c=="b=") $d=24; elseif($c=="c'" or $c=="c'=") $d=25; else { if($c != "|" and $c != "") ;//echo "

La note $c ne peut pas être décodée

"; $d=$c; } $note=$d; if($doublediese==1) $note++; elseif($doublebemol==-1) $note--; $note=$note.$octave; return $note; }; function decodesuitecodenoteanglo($suitecodenote) { $s=normaliser($suitecodenote); $lon=strlen($s); $provdecode=""; $itest=0; for($i=0;$i<$lon;$i++) { $l1=substr($s,$i,1); if($l1=="[") { $itest=1; $l1=""; } elseif($l1=="]") { $itest=0; $l1=""; } if($l1==" " or $l1=="/") { if($itest != 2) $prov=decodenoteanglo($prov); else $itest=0; if($itest==1) $prov=$prov."-"; else $prov=$prov." "; $provdecode=$provdecode.$prov; if($l1=="/") $itest=2; $prov=""; } else $prov=$prov.$l1; } return $provdecode; }; function coderythme($suiterythme) { $suiterythme=normaliser($suiterythme); $l1=substr($suiterythme,0,1); if(intval($l1)==0) return $suiterythme; $lon=strlen($suiterythme); $code=""; $nuance=""; $prov=""; for($i=0;$i<$lon;$i++) { $l1=substr($suiterythme,$i,1); if($l1=="." or $l1=="+" or $l1=="-" or $l1=="!" or $l1=="P" or $l1=="p") { if($l1=="p") $l1="P"; $nuance=$nuance.$l1; } elseif($l1==" ") { if($code=="4") $code="r"; elseif($code=="2") $code="b"; elseif($code=="1") $code="n"; elseif($code=="1/2") $code="c"; elseif($code=="1/4") $code="d"; elseif($code=="1/8") $code="t"; elseif($code=="3") $code="bp"; elseif($code=="3/2") $code="np"; elseif($code=="3/4") $code="cp"; elseif($code=="3/8") $code="dp"; elseif($code=="7/2") $code="bpp"; elseif($code=="7/4") $code="npp"; elseif($code=="7/8") $code="cpp"; elseif($code=="7/16") $code="dpp"; $prov=$prov.$code.$nuance." "; $code=""; $nuance=""; } else $code=$code.$l1; } //echo "

Rythme codé $prov

"; return $prov; }; function decoderythme($suiterythme) { $suiterythme=normaliser($suiterythme); $l1=substr($suiterythme,0,1); if(intval($l1) != 0) return $suiterythme; $lon=strlen($suiterythme); $code=""; $nuance=""; $prov=""; for($i=0;$i<$lon;$i++) { $l1=substr($suiterythme,$i,1); if($l1=="." or $l1=="+" or $l1=="-" or $l1=="!" or $l1=="P") $nuance=$nuance.$l1; elseif($l1==" ") { if($code=="r") $code="4"; elseif($code=="b") $code="2"; elseif($code=="n") $code="1"; elseif($code=="c") $code="1/2"; elseif($code=="d") $code="1/4"; elseif($code=="t") $code="1/8"; elseif($code=="bp") $code="3"; elseif($code=="np") $code="3/2"; elseif($code=="cp") $code="3/4"; elseif($code=="dp") $code="3/8"; elseif($code=="bpp") $code="7/2"; elseif($code=="npp") $code="7/4"; elseif($code=="cpp") $code="7/8"; elseif($code=="dpp") $code="7/16"; $prov=$prov.$code.$nuance." "; $code=""; $nuance=""; } else $code=$code.$l1; } //echo "

Rythme décodé $prov

"; return $prov; }; function suiterythme($suitenote,$percu) { $suitenote=normaliser($suitenote); $lon=strlen($suitenote); if($percu=="") $percu="116"; $prov=""; for($i=0;$i<$lon;$i++) { $l1=substr($suitenote,$i,1); if($l1=="P" or $l1=="p") { $prov=$prov."119 "; $i++; } elseif($l1==" ") $prov=$prov.$percu." "; } return $prov; }; function codenotetona($note,$tona,$ton) { if($tona=="minnat" or $tona=="minharm" or $tona=="minmelo") $ton=$ton+3; $codenote=codenote($note,$ton); return $codenote; }; function codenote($note,$ton) { $l1=substr($note,0,1); //echo "

début de note dans codenote $l1

"; if($l1=="b" or $l1=="D" or $l1=="R" or $l1=="M" or $l1=="F" or $l1=="S" or $l1=="L" or $l1=="d" or $l1=="r" or $l1=="m" or $l1=="f" or $l1=="s" or $l1=="l" or $l1=="#") return $note; $octave=substr($note,strlen($note)-1,1); //echo "

octave $octave

"; if($octave=="_") { $note=substr($note,0,strlen($note)-1); $octave=","; } else $octave=""; if($note=="" or $note<1 or $note>25) { if($note != "|" and $note != "") ;//echo "

La note $note ne peut pas être codée

"; return $note; } if($ton>=13) $ton=$ton-12; if($ton<1) $ton=$ton+12; if($ton=="" or $ton<1 or $ton>=13) { //echo "

Le ton $ton ne peut pas être codé

"; return ""; } if($ton==1 or $ton ==3 or $ton==5 or $ton==7 or $ton==8 or $ton==10 or $ton==12) { if($note==1) $codenote="Do"; elseif($note==2) $codenote="#Do"; elseif($note==3) $codenote="Ré"; elseif($note==4) $codenote="#Ré"; elseif($note==5) $codenote="Mi"; elseif($note==6) $codenote="Fa"; elseif($note==7) $codenote="#Fa"; elseif($note==8) $codenote="Sol"; elseif($note==9) $codenote="#Sol"; elseif($note==10) $codenote="La"; elseif($note==11) $codenote="#La"; elseif($note==12) $codenote="Si"; elseif($note==13) $codenote="do"; elseif($note==14) $codenote="#do"; elseif($note==15) $codenote="ré"; elseif($note==16) $codenote="#ré"; elseif($note==17) $codenote="mi"; elseif($note==18) $codenote="fa"; elseif($note==19) $codenote="#fa"; elseif($note==20) $codenote="sol"; elseif($note==21) $codenote="#sol"; elseif($note==22) $codenote="la"; elseif($note==23) $codenote="#la"; elseif($note==24) $codenote="si"; elseif($note==25) $codenote="do'"; } elseif($ton==2 or $ton==4 or $ton==6 or $ton==9 or $ton==11) { if($note==1) $codenote="Do"; elseif($note==2) $codenote="bémol Ré"; elseif($note==3) $codenote="Ré"; elseif($note==4) $codenote="bémol Mi"; elseif($note==5) $codenote="Mi"; elseif($note==6) $codenote="Fa"; elseif($note==7) $codenote="bémol Sol"; elseif($note==8) $codenote="Sol"; elseif($note==9) $codenote="bémol La"; elseif($note==10) $codenote="La"; elseif($note==11) $codenote="bémol Si"; elseif($note==12) $codenote="Si"; elseif($note==13) $codenote="do"; elseif($note==14) $codenote="bémol ré"; elseif($note==15) $codenote="ré"; elseif($note==16) $codenote="bémol mi"; elseif($note==17) $codenote="mi"; elseif($note==18) $codenote="fa"; elseif($note==19) $codenote="bémol sol"; elseif($note==20) $codenote="sol"; elseif($note==21) $codenote="bémol la"; elseif($note==22) $codenote="la"; elseif($note==23) $codenote="bémol si"; elseif($note==24) $codenote="si"; elseif($note==25) $codenote="do'"; } if($ton==1) ; elseif($ton==8 and ($codenote=="Fa" or $codenote=="Fa")) $codenote="bécarre ".$codenote; elseif($ton==3 and ($codenote=="Do" or $codenote=="do" or $codenote=="do'" or $codenote=="Fa" or $codenote=="fa")) $codenote="bécarre ".$codenote; elseif($ton==10 and ($codenote=="Fa" or $codenote=="Do" or $codenote=="Sol" or $codenote=="fa" or $codenote=="do" or $codenote=="sol")) $codenote="bécarre ".$codenote; elseif($ton==5 and ($codenote=="Fa" or $codenote=="Do" or $codenote=="Sol" or $codenote=="Ré" or $codenote=="fa" or $codenote=="do" or $codenote=="sol" or $codenote=="ré")) $codenote="bécarre ".$codenote; elseif($ton==12 and ($codenote=="Fa" or $codenote=="Do" or $codenote=="Sol" or $codenote=="Ré" or $codenote=="La" or $codenote=="fa" or $codenote=="do" or $codenote=="sol" or $codenote=="ré" or $codenote=="la")) $codenote="bécarre ".$codenote; elseif($ton==7 and ($codenote=="Fa" or $codenote=="Do" or $codenote=="Sol" or $codenote=="Ré" or $codenote=="La" or $codenote=="Mi" or $codenote=="fa" or $codenote=="do" or $codenote=="sol" or $codenote=="ré" or $codenote=="la" or $codenote=="mi")) $codenote="bécarre ".$codenote; elseif($ton==6 and ($codenote=="Si" or $codenote=="si")) $codenote="bécarre ".$codenote; elseif($ton==11 and ($codenote=="Si" or $codenote=="Mi" or $codenote=="si" or $codenote=="mi")) $codenote="bécarre ".$codenote; elseif($ton==3 and ($codenote=="Si" or $codenote=="Mi" or $codenote=="La" or $codenote=="si" or $codenote=="mi" or $codenote=="la")) $codenote="bécarre ".$codenote; elseif($ton==9 and ($codenote=="Si" or $codenote=="Mi" or $codenote=="La" or $codenote=="Ré" or $codenote=="si" or $codenote=="mi" or $codenote=="la" or $codenote=="ré")) $codenote="bécarre ".$codenote; elseif($ton==2 and ($codenote=="Si" or $codenote=="Mi" or $codenote=="La" or $codenote=="Ré" or $codenote=="Sol" or $codenote=="si" or $codenote=="mi" or $codenote=="la" or $codenote=="ré" or $codenote=="sol")) $codenote="bécarre ".$codenote; elseif($ton==7 and ($codenote=="Si" or $codenote=="Mi" or $codenote=="La" or $codenote=="Ré" or $codenote=="Sol" or $codenote=="Do" or $codenote=="si" or $codenote=="mi" or $codenote=="la" or $codenote=="ré" or $codenote=="sol" or $codenote=="do")) $codenote="bécarre ".$codenote; $codenote=$codenote.$octave; return $codenote; }; function codenotetonaanglo($note,$tona,$ton) { if($tona=="minnat" or $tona=="minharm" or $tona=="minmelo") $ton=$ton+3; $codenote=codenoteanglo($note,$ton); return $codenote; }; function codenoteanglo($note,$ton) { if($note=="P" or $note=="p") return $note; $l1=substr($note,0,1); if($l1=="C" or $l1=="D" or $l1=="E" or $l1=="F" or $l1=="G" or $l1=="A" or $l1=="B" or $l1=="c" or $l1=="d" or $l1=="e" or $l1=="f" or $l1=="g" or $l1=="a" or $l1=="b") return $note; $octave=substr($note,strlen($note)-1,1); if($octave=="_") { $note=substr($note,0,strlen($note)-1); $octave=","; } else $octave=""; if($note=="" or $note<1 or $note>25) { if($note != "|" and $note != "") echo "

La note $note ne peut pas être codée

"; return $note; } if($ton>=13) $ton=$ton-12; if($ton<1) $ton=$ton+12; if($ton=="" or $ton<1 or $ton>=13) { //echo "

Le ton $ton ne peut pas être codé

"; return ""; } if($ton==1 or $ton ==3 or $ton==5 or $ton==7 or $ton==8 or $ton==10 or $ton==12) { if($note==1) $codenote="C"; elseif($note==2) $codenote="C#"; elseif($note==3) $codenote="D"; elseif($note==4) $codenote="D#"; elseif($note==5) $codenote="E"; elseif($note==6) $codenote="F"; elseif($note==7) $codenote="F#"; elseif($note==8) $codenote="G"; elseif($note==9) $codenote="G#"; elseif($note==10) $codenote="A"; elseif($note==11) $codenote="A#"; elseif($note==12) $codenote="B"; elseif($note==13) $codenote="c"; elseif($note==14) $codenote="c#"; elseif($note==15) $codenote="d"; elseif($note==16) $codenote="d#"; elseif($note==17) $codenote="e"; elseif($note==18) $codenote="f"; elseif($note==19) $codenote="f#"; elseif($note==20) $codenote="g"; elseif($note==21) $codenote="g#"; elseif($note==22) $codenote="a"; elseif($note==23) $codenote="a#"; elseif($note==24) $codenote="b"; elseif($note==25) $codenote="c'"; } elseif($ton==2 or $ton==4 or $ton==6 or $ton==9 or $ton==11) { if($note==1) $codenote="C"; elseif($note==2) $codenote="Db"; elseif($note==3) $codenote="D"; elseif($note==4) $codenote="Eb"; elseif($note==5) $codenote="E"; elseif($note==6) $codenote="F"; elseif($note==7) $codenote="Gb"; elseif($note==8) $codenote="G"; elseif($note==9) $codenote="Ab"; elseif($note==10) $codenote="A"; elseif($note==11) $codenote="Bb"; elseif($note==12) $codenote="B"; elseif($note==13) $codenote="c"; elseif($note==14) $codenote="db"; elseif($note==15) $codenote="d"; elseif($note==16) $codenote="eb"; elseif($note==17) $codenote="e"; elseif($note==18) $codenote="f"; elseif($note==19) $codenote="gb"; elseif($note==20) $codenote="g"; elseif($note==21) $codenote="ab"; elseif($note==22) $codenote="a"; elseif($note==23) $codenote="bb"; elseif($note==24) $codenote="b"; elseif($note==25) $codenote="c'"; } if($ton==1) ; elseif($ton==8 and ($codenote=="F" or $codenote=="f")) $codenote=$codenote."b"; elseif($ton==3 and ($codenote=="C" or $codenote=="c" or $codenote=="c'" or $codenote=="F" or $codenote=="f")) $codenote=$codenote."="; elseif($ton==10 and ($codenote=="F" or $codenote=="C" or $codenote=="G" or $codenote=="f" or $codenote=="c" or $codenote=="g")) $codenote=$codenote."="; elseif($ton==5 and ($codenote=="F" or $codenote=="C" or $codenote=="G" or $codenote=="D" or $codenote=="f" or $codenote=="c" or $codenote=="g" or $codenote=="d")) $codenote=$codenote."="; elseif($ton==12 and ($codenote=="F" or $codenote=="C" or $codenote=="G" or $codenote=="D" or $codenote=="A" or $codenote=="f" or $codenote=="c" or $codenote=="g" or $codenote=="d" or $codenote=="a")) $codenote=$codenote."="; elseif($ton==7 and ($codenote=="F" or $codenote=="C" or $codenote=="G" or $codenote=="D" or $codenote=="A" or $codenote=="E" or $codenote=="f" or $codenote=="c" or $codenote=="g" or $codenote=="d" or $codenote=="a" or $codenote=="e")) $codenote=$codenote."="; elseif($ton==6 and ($codenote=="B" or $codenote=="b")) $codenote=$codenote."="; elseif($ton==11 and ($codenote=="B" or $codenote=="E" or $codenote=="b" or $codenote=="e")) $codenote=$codenote."="; elseif($ton==3 and ($codenote=="B" or $codenote=="E" or $codenote=="A" or $codenote=="b" or $codenote=="e" or $codenote=="a")) $codenote=$codenote."="; elseif($ton==9 and ($codenote=="B" or $codenote=="E" or $codenote=="A" or $codenote=="D" or $codenote=="b" or $codenote=="e" or $codenote=="a" or $codenote=="d")) $codenote=$codenote."="; elseif($ton==2 and ($codenote=="B" or $codenote=="E" or $codenote=="A" or $codenote=="D" or $codenote=="G" or $codenote=="b" or $codenote=="e" or $codenote=="a" or $codenote=="d" or $codenote=="g")) $codenote=$codenote."="; elseif($ton==7 and ($codenote=="B" or $codenote=="E" or $codenote=="A" or $codenote=="D" or $codenote=="G" or $codenote=="C" or $codenote=="b" or $codenote=="e" or $codenote=="a" or $codenote=="d" or $codenote=="g" or $codenote=="c")) $codenote=$codenote."="; $codenote=$codenote.$octave; return $codenote; }; function codesuitenotetonaanglo($suitenote,$tona,$ton) { $s=normaliser($suitenote); $lon=strlen($s); $provcode=""; for($i=0;$i<$lon;$i++) { $l1=substr($s,$i,1); if($l1==" ") { if($prov<38) $prov=codenotetonaanglo($prov,$tona,$ton); $codeprov=$codeprov.$prov." "; $prov=""; } else $prov=$prov.$l1; } return $codeprov; }; function codesuitenoteanglo($suitenote,$ton) { $s=normaliser($suitenote); $lon=strlen($s); $itest=0; $provcode=""; for($i=0;$i<$lon;$i++) { $l1=substr($s,$i,1); if($l1==" " or $l1=="-") { if($prov<38) $prov=codenoteanglo($prov,$ton); if($l1=="-") { $prov="[".$prov; $itest=1; } if($l1==" " and $itest==1) { $prov=$prov."]"; $itest=0; } $codeprov=$codeprov.$prov." "; $prov=""; } else $prov=$prov.$l1; } return $codeprov; }; function motifsuitenote($suitenote,$motif) { if($motif=="" or $motif==" ") return $suitenote; else { $motif=normaliser($motif); //echo "

Motif = $motif

"; } $suitenote=normaliser($suitenote); $lon=strlen($suitenote); $prov=""; $j=0; for($i=0;$i<$lon;$i++) { $l1=substr($suitenote,$i,1); if($l1==" ") { $j++; $note[$j]=$prov; //echo "note $note[$j] "; $l1=""; $prov=""; } else $prov=$prov.$l1; } $totalnote=$j; //echo "

total note = $totalnote

"; $lon=strlen($motif); $prov=""; $j=0; for($i=0;$i<$lon;$i++) { $l1=substr($motif,$i,1); if($l1==" ") { $j++; $motifnote[$j]=$prov; //echo "motifnote $motifnote[$j] "; $l1=""; $prov=""; } else $prov=$prov.$l1; } $totalmotifnote=$j; //echo "

total motifnote = $totalmotifnote

"; $total=$totalnote+$totalmotifnote; for($k=1;$k<=$total;$k++) { if($k>$totalmotifnote) $motifnote[$k]=$motifnote[$k-$totalmotifnote]+1; //echo "

motif $motifnote[$k]

"; } $totalmotifnote=$totalnote*$totalmotifnote; $motifsuite=""; $i=0; for($j=0;$j<$totalmotifnote;$j++) { $i++; $prov=$note[$motifnote[$i]]; if($motifnote[$i]=="|" or $motifnote[$i]=="[" or $motifnote[$i]=="]") $j=$totalmotifnote; if($i>=$totalmotifnote) $i=0; if($motifnote[$i+1]==$motifnote[$i]) { $i++; $motifsuite=$motifsuite.$prov." "; $motifsuite=$motifsuite.$prov." "; } else $motifsuite=$motifsuite.$prov." "; } //echo "

motifsuite = $motifsuite

"; return $motifsuite; }; function corrigeinter($inter) { $lon=strlen($inter); $deb=""; for($i=0;$i<$lon;$i++) { $l1=substr($inter,$i,1); if($l1=="-") { $fin=substr($inter,$i+1,$lon-$i-1); $deb=intval($deb); $fin=intval($fin); if($deb > $fin) $fin=$fin+12; if($fin > 25) { $deb=$deb-12; $fin=$fin-12; } $inter=$deb."-".$fin; //echo "

intervalle corrigé $inter

"; return $inter; } else $deb=$deb.$l1; } $inter=$deb; return $inter; }; function repete($tabla) { $tabla=normaliser($tabla); $lon=strlen($tabla); $itest=0; $repete=""; $provtabla=""; for($i=0;$i<$lon;$i++) { $l1=substr($tabla,$i,1); $l2=substr($tabla,$i,2); if($itest==1 and $l1 != ":") $repete=$repete.$l1; if($l2=="|:") { $itest=1; $i=$i+2; } elseif($l2==":|") { $itest=0; $i=$i+2; $n=substr($tabla,$i,1); if($n==" ") $n=1; for($j=0;$j<$n;$j++) $provtabla=$provtabla.$repete." "; $repete=""; } else $provtabla=$provtabla.$l1; } //echo "

repete $provtabla

"; return $provtabla; }; function rythmesuitenote($suitenote,$rythme) { if($rythme=="" or $rythme==" ") return $suitenote; else { $rythme=normaliser($rythme); //echo "

rythme = $rythme

"; } $suitenote=normaliser($suitenote); $lon=strlen($suitenote); $prov=""; $j=0; for($i=0;$i<$lon;$i++) { $l1=substr($suitenote,$i,1); if($l1==" ") { $j++; $note[$j]=$prov; $provfic="../wavmp3/".$prov.".mp3"; $fic=fopen($provfic,"rb"); if ( !($fic)) { echo "

Impossible d’ouvrir le fichier $provfic en lecture

"; echo "

On le remplace par un silence

"; $note[$j]="P"; } fclose($fic); //echo "note $note[$j] "; $l1=""; $prov=""; } else $prov=$prov.$l1; } $totalnote=$j; //echo "

total note = $totalnote

"; $lon=strlen($rythme); $prov=""; $j=0; for($i=0;$i<$lon;$i++) { $l1=substr($rythme,$i,1); if($l1==" ") { $j++; $rythmenote[$j]=$prov; //echo "rythmenote $rythmenote[$j] "; $l1=""; $prov=""; } else $prov=$prov.$l1; } $totalrythmenote=$j; //echo "

total rythmenote = $totalrythmenote

"; $rythmesuite=""; $i=1; for($j=1;$j<=$totalnote;$j++) { $l1=substr($note[$j],strlen($note[$j])-1,1); if($l1==":") $prov=$note[$j].$rythmenote[$i]; else $prov=$note[$j].":".$rythmenote[$i]; if($rythmenote[$i] == "||" or $rythmenote[$i+1]=="||") $j=$totalnote; if($i==$totalrythmenote) $i=0; $rythmesuite=$rythmesuite.$prov." "; $i++; } //echo "

rythmesuite = $rythmesuite

"; return $rythmesuite; }; function contentfic($dur,$provfic) { $lon=filesize($provfic); $dur=substr($dur,0,strlen($dur)-1); $tempo=substr($dur,strlen($dur)-1,1); if($tempo=="|") { $tempo=substr($dur,strlen($dur)-2,1); $dur=substr($dur,0,strlen($dur)-1); } if($tempo=="+") { $lon=$lon-8022; $dur=substr($dur,0,strlen($dur)-1); //echo "

Tempo rapide

"; } elseif($tempo=="-") { $lon=$lon+8022; $dur=substr($dur,0,strlen($dur)-1); //echo "

Tempo lent

"; }if($dur=="1") $lon=20500; elseif($dur=="1/3") $lon=6800; elseif($dur=="1/6") $lon=3388; elseif($dur=="1/9") $lon=2612; else { $deb=substr($dur,0,1); $fin=substr($dur,2,strlen($dur)-2); $lon=$lon*$deb/$fin; //echo "

durée $lon

"; if($lon<2600) { $lon=2612; echo "

Durée minimum

"; } elseif($lon>20900) { $lon=20500; echo "

Durée maximum

"; } } $lon=intval($lon); //echo "

lon = $lon

"; $fic=fopen($provfic,"rb"); if ( !($fic)) { echo "

Impossible d’ouvrir le fichier $provfic en lecture

"; fclose($fic); return ""; //exit ; } $content=fread($fic,$lon); fclose($fic); return $content; }; function basemesurealea($base,$mode) { $lon=strlen($base); $mesure=""; $prov=""; for($i=0;$i<$lon;$i++) { $l1=substr($base,$i,1); if($l1=="|") { $mesure=basealea($mesure,$mode); $prov=$prov.$mesure." | "; $mesure=""; } else $mesure=$mesure.$l1; } $prov=$prov.basealea($mesure,$mode); return $prov; } function basealea($base,$mode) { if($mode=="e") { $lon=strlen($base); $prov=""; for($i=0;$i<$lon;$i++) { $l1=substr($base,$i,1); if($l1 !=" ") $prov=$prov.$l1." "; } $base=$prov; } else $base=normaliser($base); //echo "

base $base mode $mode

"; $lon=strlen($base); $n=0; for($i=0;$i<$lon;$i++) { $l1=substr($base,$i,1); if($l1==" ") $n++; } //echo "

nombre $n

"; $l=0; $alea=""; while($n>0) { $n=$n-1; $k=0; $l++; $lon=strlen($base); $j=rand(0,$n); $mot=""; $prov=""; for($i=0;$i<=$lon;$i++) { $l1=substr($base,$i,1); if($l1==" ") { if($j==$k) $c[$l]=$mot; else $prov=$prov.$mot." "; $k++; $mot=""; } else $mot=$mot.$l1; } if($mode=="e") $alea=$alea.$c[$l]; else $alea=$alea.$c[$l]." "; $base=$prov; } if($mode=="c") { $alea=$c[1]; for($i=2;$i<=$l;$i++) { $j=rand(1,4); if($j==1) $l1="-"; elseif($j==2) $l1="+"; elseif($j==3) $l1="*"; elseif($j==4) $l1="/"; if($c[$l]==0 and $l1=="/") $l1="+"; $alea=$alea.$l1.$c[$i]; } } echo "

base aléatoire $alea

"; return $alea; }; function nuance($suitenote) { $suitenote=normaliser($suitenote); //echo "

Chiffrage : $suitenote

"; //echo "

Ton = $ton

"; $lon=strlen($suitenote); $prov=""; $content=""; $dur=""; $itest=0; for($i=0;$i<$lon;$i++) { $l1=substr($suitenote,$i,1); if($itest==1) $dur=$dur.$l1; if($l1==":") $itest=1; if($l1==" ") { $note=$prov; $lp=substr($suitenote,$i-1,1); if($lp=="|") { $dur=substr($dur,0,strlen($dur)-1); $lp=substr($suitenote,$i-2,1); } $ipiano=0; if($lp=="p" or $lp=="P") { //echo "

Note piano

"; $ipiano=1; $dur=substr($dur,0,strlen($dur)-2); $lp=substr($suitenote,$i-2,1); $p="p"; $t2=substr($note,1,1); $t3=substr($note,2,1); if($t2=="-" or $t3=="-" or intval($note)==0) $p=""; $note=$note.$p; } if($lp=="!" and $ipiano==0) $dur=substr($dur,0,strlen($dur)-2); elseif($lp=="!") $dur=substr($dur,0,strlen($dur)-1); if($dur=="2 " or $dur=="3" or $dur=="4 " or $dur=="3/2 " or $dur=="7/2 " or $dur=="7/4 ") { $dur=substr($dur,0,strlen($dur)-1); $dur=$dur."."; $lp="."; $ipiano=1; //echo "

dans nuance $dur

"; } if($lp==".") { if($ipiano==0) $dur=substr($dur,0,strlen($dur)-2); else $dur=substr($dur,0,strlen($dur)-1); echo "

nuance = note piquée durée = $dur

"; if($dur=="4") $note=$note.":1 P:1 P:1 P:1 "; elseif($dur=="3") $note=$note.":1 P:1 P:1 "; elseif($dur=="2") $note=$note.":1 P:1 "; elseif($dur=="3/2") $note=$note.":1 P:1/2 "; elseif($dur=="7/2") $note=$note.":1 P:1 P:1 P:1/2 "; elseif($dur=="7/4") $note=$note.":1 P:1 P:1/4 "; elseif($dur=="1") $note=$note.":1/2 P:1/2 "; elseif($dur=="1/2") $note=$note.":1/4 P:1/4 "; elseif($dur=="1/3") $note=$note.":1/6 P:1/6 "; else $note=$note.":".$dur." "; //echo "

$note

"; } elseif($lp=="!" and intval($note) != 0) { //echo "

nuance = broderie durée = $dur

"; if($note=="25") $note="13"; $notemoins=$note-1; $noteplus=$note+1; $fin=substr($note,strlen($note)-1,1); if($notemoins==0) { $notemoins="12_"; $noteplus="2"; } elseif($fin=="_") { $notemoins=$notemoins."_"; if($noteplus=="25") $noteplus="1"; else $noteplus=$noteplus."_"; } //echo "

note moins $notemoins

"; if($dur=="1") { $note=$notemoins.":1/8 ".$note.":1/8 ".$noteplus.":1/8 ".$note.":1/8 "; $note=$note.$note; } elseif($dur=="2" or $dur=="1/2") $note=$notemoins.":1/8 ".$note.":1/8 ".$noteplus.":1/8 ".$note.":1/8 "; elseif($dur=="3" or $dur=="1/3") $note=$notemoins.":1/6 ".$note.":1/6 "; elseif($dur=="4" or $dur=="1/4") $note=$notemoins.":1/8 ".$note.":1/8 "; else $note=$note.":".$dur." "; //echo "

$note

"; } else $note=$note.":".$dur." "; //echo "

durée $dur

"; $suiteprov=$suiteprov.$note; $l1=""; $prov=""; $itest=0; $dur=""; } if($itest==0) $prov=$prov.$l1; } return $suiteprov; }; function ajoutermp3($suitenote) { $suitenote=normaliser($suitenote); //echo "

Chiffrage : $suitenote

"; //echo "

Ton = $ton

"; $lon=strlen($suitenote); $prov=""; $j=0; $content=""; $dur=""; $itest=0; for($i=0;$i<$lon;$i++) { $l1=substr($suitenote,$i,1); if($itest==1) $dur=$dur.$l1; if($l1==":") $itest=1; if($l1==" ") { $j++; $note[$j]=$prov; //echo "note $note[$j] "; //echo "

durée $dur

"; $provfic=$prov.".mp3"; //echo "

fichier = $provfic

"; if($provfic != "|.mp3" and $provfic != ".mp3") { $provcontent=contentfic($dur,$provfic); $content=$content.$provcontent; } $l1=""; $prov=""; $itest=0; $dur=""; } if($itest==0) $prov=$prov.$l1; } //echo "

les fichiers .mp3 des notes du chiffrage $suitenote ont été ajoutés dans la variable binaire content

"; return $content; }; function decodetabla($tabla, $demiton) { $tabla=normaliser($tabla); $lon=strlen($tabla); $itest=0; $prov=""; $suiteprov=""; for($i=0;$i<$lon;$i++) { $l1=substr($tabla,$i,1); $l2=substr($tabla,$i,2); if($l2=="P " or $l2=="p ") { $suiteprov=$suiteprov."p "; $i++; } elseif($l2=="| ") $i++; else { if($l1=="S" or $l1=="T" or $l1=="t" or $l1=="Q" or $l1=="V" or $l1=="x" or $l1=="X") $itest=1; elseif($l1=="[") $itest=2; elseif($l1=="]") $itest=0; if($l1==" " and $itest != 2) { if($itest==1) { $prov=decodeinter($prov,$demiton); $itest=0; } else $prov=transposertabla($prov,$demiton); $suiteprov=$suiteprov.$prov." "; $prov=""; } else $prov=$prov.$l1; } } return $suiteprov; }; function decodetablatranspo($tabla, $demiton) { if($demiton=="") return decodetabla($tabla,$demiton); $demiton=normaliser($demiton); $lon=strlen($demiton); $provdemiton=""; $provtabla=$tabla; $suitenote=""; for($i=0;$i<$lon;$i++) { $l1=substr($demiton,$i,1); if($l1==" ") { $provtabla=decodetabla($provtabla,$provdemiton); echo "

Tablature transposée de $provdemiton demi-tons

"; echo "

$provtabla

"; $suitenote=$suitenote.$provtabla; $provdemiton=""; } else $provdemiton=$provdemiton.$l1; } return $suitenote; }; $basetabla = $_GET["basetabla"]; if($basetabla != "") $tabla=tradsymb($basetabla); else $tabla=$_SESSION['tabla']; $tabla=normaliser($tabla); echo "

Tablature $tabla

"; $rythme="1 2"; $demiton=4; $suitenote=transposertabla($tabla,$demiton); $suitenote=rythmesuitenote($suitenote,$rythme); echo "

Arpège et accord avec rythme :

$suitenote

"; $content=ajoutermp3($suitenote); $repet="1"; $ficfic=fopen("provficfic.mp3","w"); if ( !($ficfic)) { echo "

Impossible d’ouvrir le fichier provficfic.mp3 en écriture

"; exit ; } for($i=1;$i<=$repet;$i++) { fwrite($ficfic,$content); } fclose($ficfic); echo '

Choisir une tablature

'; echo '

Ecoutez la tablature courante

'; ?>