cs_ym_trainz
Messages postés160Date d'inscriptionvendredi 27 janvier 2006StatutMembreDernière intervention21 avril 2015 4 juil. 2007 à 09:50
Merci alpha5.
Si tu veux la formule actualisée, incluse dans la source (lien ci-dessus) à partir de do :
rn = 0 pour do, rn=1 pour do#... rn=11 pour si oct, c'est l'octave, comme au dessus :
Frequence = 16.3516 * 2 ^ (oct + (rn / 12))
la réciproque :
r = Log(Frequence / 16.3516) / Log(2)
oct = CInt(Int(r)) 'octave
n = CInt((CDbl(r) - oct) * 12)
on trouve l'octave oct et la note n=0 pour do à n=11 pour si
A toutes fins utiles :
notes(octave) / Hz (attention, valeur cInt() donc dans les fréquences basses, on n'est pas pile dessus et en-dessous de 200 Hz, un demi hertz, ça s'entend... Bref...)
Pour l'octave au dessous, diviser la fréquence par 2
dessus, multiplier par 2
cs_alpha5
Messages postés74Date d'inscriptionjeudi 10 août 2006StatutMembreDernière intervention24 mars 2013 2 juil. 2007 à 22:08
pour ym_trainz to algorithme est juste et plus précis que le mien
merci
cs_ym_trainz
Messages postés160Date d'inscriptionvendredi 27 janvier 2006StatutMembreDernière intervention21 avril 2015 1 juil. 2007 à 09:55
Bonjour Alpha5
Je trouve l'idée intéressante, d'autant plus que j'avais déjà réalisé un p'tit soft la-dessus mais je n'ai jamais été sûr de l'exactitude du calcul.
Le principe que j'avais trouvé est basé sur celui de la guitare donc logarithmique :
ff = CInt(27.5 * 2 ^ (oct + ((rn - 1) / 12)))
ff est la fréquence en Hertz, oct est l'octave (de 3 à 9 ... mais cela devient inaudible) et rn est la note codée de rn=1 pour la , rn=2 pour la#... à 12 pour sol#
Comme je n'ai pas vb.net, au cas où vous auriez vb6, j'ai posté cette source pour que vous puissiez faire le test.
4 juil. 2007 à 09:50
Si tu veux la formule actualisée, incluse dans la source (lien ci-dessus) à partir de do :
rn = 0 pour do, rn=1 pour do#... rn=11 pour si oct, c'est l'octave, comme au dessus :
Frequence = 16.3516 * 2 ^ (oct + (rn / 12))
la réciproque :
r = Log(Frequence / 16.3516) / Log(2)
oct = CInt(Int(r)) 'octave
n = CInt((CDbl(r) - oct) * 12)
on trouve l'octave oct et la note n=0 pour do à n=11 pour si
A toutes fins utiles :
notes(octave) / Hz (attention, valeur cInt() donc dans les fréquences basses, on n'est pas pile dessus et en-dessous de 200 Hz, un demi hertz, ça s'entend... Bref...)
A=la B=si... G=sol (notation anglaise)
guitare
--------------------------------
note(octave) Frequence Hz
E(3) 165
A(3) 220
D(4) 294
G(4) 392
B(4) 494
E(5) 659
basse (valeur entière cInt())
--------------------------------
note(octave) Frequence Hz
B(1) 062 pour les 5 cordes
----
E(2) 082
A(2) 110
D(3) 147
G(3) 196
----
B(3) 247 pour les basses 6 cordes
Gamme
--------------------------------
C(4) 262
C(4)# 277
D(4) 294
D(4)# 277
E(4) 330
F(4) 349
F(4)# 370
G(4) 392
G(4)# 415
A(4) 440
A(4)# 466
B(4) 494
Pour l'octave au dessous, diviser la fréquence par 2
dessus, multiplier par 2
2 juil. 2007 à 22:08
merci
1 juil. 2007 à 09:55
Je trouve l'idée intéressante, d'autant plus que j'avais déjà réalisé un p'tit soft la-dessus mais je n'ai jamais été sûr de l'exactitude du calcul.
Le principe que j'avais trouvé est basé sur celui de la guitare donc logarithmique :
ff = CInt(27.5 * 2 ^ (oct + ((rn - 1) / 12)))
ff est la fréquence en Hertz, oct est l'octave (de 3 à 9 ... mais cela devient inaudible) et rn est la note codée de rn=1 pour la , rn=2 pour la#... à 12 pour sol#
Comme je n'ai pas vb.net, au cas où vous auriez vb6, j'ai posté cette source pour que vous puissiez faire le test.
http://www.vbfrance.com/code.aspx?ID=43300
Cordialement,
ym_trainz