Donc, je suis en train de coder un synthétiseur à partir de rien en C# en utilisant NAudio. Je l'ai fait jouer des fréquences différentes, ce qui est cool, mais je remarque que les hauteurs sont nettement plus fortes que les basses. Est-ce en raison de cet effet:Loudness égal par fréquence
http://en.wikipedia.org/wiki/Equal-loudness_contour
Ou suis-je en train de faire quelque chose de mal quand je générer l'onde sinusoïdale? Comment pourrais-je implémenter une courbe de contour Equal-loudness si elle est vraiment nécessaire?
Merci
Mon code:
NAudio attend un tampon rempli de valeurs à virgule flottante dans la gamme de -1 à +1 pour représenter la forme d'onde.
Génération onde sinusoïdale:
buffer[n + offset] = (float)(Amplitude * Math.Sin(angle));
angle = (angle + angleIncrement) % (2 * Math.PI);
Définition d'une fréquence:
public double Frequency
{
set
{
angleIncrement = 2 * Math.PI * value/sampleRate;
}
get
{
return angleIncrement * sampleRate/2/Math.PI;
}
}
Votre code a l'air ok (tant que 'Amplitude' est constant). –
'Amplitude' représenterait la puissance de l'utilisateur à jouer la note. C'est constant pour l'instant dans mes tests. Dans ce cas, pensez-vous que je devrais mettre en place un contour de loudness/ – John
J'ai déjà posté: "L'oreille humaine ne fonctionne pas comme ça, elle est fortement non-linéaire." L'échelle à gauche de ce graphique est logarithmique, 3 dB est égal à un facteur 2. –