Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
29 octobre 2010 5 29 /10 /octobre /2010 11:48

 

Ayant égaré mon accordeur, je me suis lancé dans la réalisation d'un équivalent logiciel. J'ai une première version fonctionnelle au bout d'une journée de travail. N'ayant pas d'adaptateur pour brancher mon instrument sur mon ordinateur (on ne se moque pas), j'ai mis de côté l'idée de réaliser un accordeur à reconnaissance de fréquence, pour me rabattre – provisoirement – sur un générateur sonore. En gros l'équivalent numérique d'un de ces vieux accordeurs à sifflets de grand-papa, ce qui aura l'avantage de faire travailler l'oreille :

 

accordeur01

 

J'ai prévu l'utilisation d'une bibliothèque d'accordages la plus complète possible. Nos amis guitaristes étant très inventifs à ce niveau-là, celle-ci est extensible.

 

accordeur

Génération du son

 

Le framework .net « out-of-the-box » n'étant pas très riche en fonctionnalités multimédias, j'ai décidé de faire appel au composant dédié au son de DirectX, j'ai nommé DirectSound. Il existe un excellent binding open source pour accéder à DirectX depuis .net, SlimDX. La génération du son se fait en réservant un tampon dans la mémoire de la carte son et en écrivant un signal sinusoïdal de la bonne fréquence dans celui-ci.

 

 SecondarySoundBuffer buffer = new SecondarySoundBuffer(directSound, desc2);

short[] data = new short[44100 * 8];
double angle = 0.0;
for (int i = 0; i < data.Length; ++i)
{
data[i] = (short)(32767 * System.Math.Sin(angle));
angle += 2 * System.Math.PI * freq / 44100;
if (angle > 2 * System.Math.PI)
{
angle -= 2 * System.Math.PI;
}
}
buffer.Write<short>(data, 0, LockFlags.None);
buffer.Play(0, PlayFlags.None);

 

Calcul de la fréquence d'une note de musique

 

Pour trouver la fréquence à utiliser pour chaque note de musique, un petit calcul s'impose. La note de référence internationalement admise est le LA 5e octave à 440Hz*.

Sachant que la fréquence d'une note double lorsqu'on monte d'une octave, et qu'une octave est divisée en 12 demi-tons égaux**, on en déduit facilement la formule de calcul de la fréquence :

 

F = A * pow(pow(2, 1.0 / 12.0), n)

 

Où A est la fréquence de la note de référence (ici 440) et n le nombre de demi-tons qui séparent la note courante de la note de référence.

 

* : Certains musiciens (comme Francis Darizcuren) aiment prendre une note de référence un peu plus haute, comme 442Hz afin de rajouter un peu de brillance au son. C'est une fonctionnalité que je prévois d'implémenter dans une future version.

** : Une guitare utilise un tempérament modéré, on ne fait donc pas de distinction entre les demi-tons chromatiques et les demi-tons diatoniques.

Partager cet article

Repost 0
Published by Olivier - dans Projets personnels
commenter cet article

commentaires

Présentation

Recherche

Liens