Minor changes
This commit is contained in:
parent
f425168158
commit
3b8782f54a
2 changed files with 77 additions and 14 deletions
29
source/music/code/harmoniques.R
Executable file
29
source/music/code/harmoniques.R
Executable file
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/Rscript
|
||||
|
||||
do4=261.63 # do fréquence par convention
|
||||
do5=2*do4 # do octave suivante
|
||||
N=27 # Nombre d'harmoniques à explorer
|
||||
names=c("do","do#reb","re","re#/mib","mi","fa","fa#/solb","sol", "sol#/lab", "la", "la#/sib", "si", "do","NA")
|
||||
temperee=do4*((2^(1/12))^(0:12)) # Gamme tempere (expliquer plus tard)
|
||||
|
||||
## Ramener à l'octave de do4
|
||||
toOctave=function(x, i=0){
|
||||
if(x<=do5) # On verifie si on est au bonne octave
|
||||
2^i
|
||||
else
|
||||
toOctave(x/2, i+1)
|
||||
}
|
||||
|
||||
## On calcule les facteurs permettant de passer à l'octave de do4 pour chaque harmoniques
|
||||
factors=(1:N/sapply(do4*(1:N),FUN=toOctave))
|
||||
harmoniques=do4*factors # On calcule les fréquences à l'octave de do4
|
||||
|
||||
## On compare les fréquences trouvé à la gamme tempérée
|
||||
M=abs(outer(harmoniques,temperee, "-"))<10 # 10 est la marge d'erreur
|
||||
v=apply(M,1,FUN=function(row){if(any(row)) (1:13)[row] else 14}) # On selectionne les notes correspondantes
|
||||
|
||||
## On affiche le résultat
|
||||
for( e in Map(list, 1:N, names[v], sapply(do4*(1:N),FUN=toOctave))){
|
||||
message(paste0(e[[1]],"f ",e[[2]])," ",e[[1]],"/",e[[3]])
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue