Partage
  • Partager sur Facebook
  • Partager sur Twitter

Le format WAVE

Comment l'exploiter !

10 février 2010 à 22:13:49

J'ai édité pour l'erreur :)
Merci de l'avoir signalée ;)

Pour le tuto j'ai voulu le faire mais ya encore du boulot, et j'ai pas eu le courage de le faire (encore !). Je le ferai, mais pas tout de suite :) (et en plus j'ai d'autres tutos avant :-° ).

Pour wotsit je connais :D merci quand même ^^
  • Partager sur Facebook
  • Partager sur Twitter
25 mars 2010 à 5:45:11

Citation : Azimut2


Pour les 2 premiers octets
((X2 X1) + (Y2 Y1))/2 = (Z2 Z1) ==> (Z1 Z2)




Salutation à tous,

Je suis Slylandro (de mon vrai nom Simon) J'étais de passage sur google quand je suis tomber sur cette article. Très bien et très réussi en passant. Très utile pour comprendre comment un Wav fonctionne.

Pour répondre à ta question sur le pourquoi que tes équations fonctionnent. Il faut remonter à la base du traitement de signal. Il est possible de représenter un signal selon deux méthodes. Premièrement, la temporelle...le signal varie dans le temps...très classique. Prenons un Sinus...et nous obtenons la courbe si caractéristique d'un sinus! La deuxième représentation est dans le mode fréquentielle. Un sinus dans le mode fréquentielle....c'est simplement une ligne verticale vis-à-vis de la fréquence de la sinusoide sur l'axe des X. La hauteur de cette ligne est en fonction de l'amplitude ( la hauteur) du sinus. Il est aussi possible d'obtenir une représentation temporelle et la transformer en fréquentielle ou avoir une fréquentielle et la transformer en temporelle...Le son, c'est une addition d'une infinité de Sinus! La transformée de fourrier permet le passage de temporelle à fréquentielle. Une version rapide (FFT pour fast fourrier transform) permet de calculer rapidement le contenu fréquentiel à un instant X. C'est comme cela que ton ordinateur réussi à jouer un wav. Il regarde le contenu sinusoidale et en extrait les différentes fréquences. Les différences d'amplitude vont permettre de distiguer les forces de chaque fréquence...et l'enveloppe total représente le volume total du signal sonore.

C'est bien beau tous cela mais ça mange quoi en hiver? En fait...Si nous prenons deux sinus dans le domaine fréquentielle et formons un seul signal...le résultat sera simplement deux barres verticales à des fréquences différentes. Par contre dans le domaine Temporelle. Les deux signaux vont s'additionner ou se détruire mutuellement en fonction de leur fréquence, de leur amplitude etc... Pour obtenir le résultat, il faut utiliser une opération mathématique qui s'appelle convolution (ce que tu as fait!!!). Pour convoluer deux signal, il faut additionners les amplitudes des deux signaux à tous les temps donner (continue) ou par intervalle (Numérique/ de manière discrète). Brillant c'est exactement ce que tu as fait! Quand les fonctions sont connues (par exemple des sinus) il est possible de pratiquer une intégrale de convolution. Quand les système sont erratique...Il faut y aller par ta méthode.

http://en.wikipedia.org/wiki/Convolution pour avoir un exemple de deux signaux qui se convulsionne (parce que c'est un cauchemard à faire à la main quand les fonctions sont complexes.


J'espère ne pas trop vous avoir perdu :p


  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2010 à 17:44:36

Bonjour,
Le principal problème que j'ai rencontré pour "additionner" des notes de fréquences différentes pour faire un accord, c'est la durée du fichier wav résultant qui doit avoir la longueur du plus grand fichier wav des notes, car comme il faut un nombre entier de "sinusoïdes", si vous voulez faire un fichier de 1 seconde, le son ne sera pas exactement de 1 seconde. On peut faire un fichier de 1 seconde en prenant le nombre de sinusoïdes qui tient dans 1 sec et complèter avec des zéros mais le son sera < 1 sec.
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2010 à 17:49:14

@ Slylandro : J'avais pas vu ton post. :)
Sympa tout ça, j'ajouterai peut-être ça à mon post (ou à mon futur tuto). ;)
Merci !
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2010 à 18:19:36

J'ai encore de quoi potasser
  • Partager sur Facebook
  • Partager sur Twitter
8 avril 2010 à 17:27:27

Autre problème à prendre en compte. Quand on veut faire un accord de plusieurs notes, il faut faire attention à la longueur du fichier qui doit contenir des périodes entières, ce qui veut dire qu'il faut mettre des zéros binaires quand la sinusoîde se termine avant la fin de fichier.
Et un petit dernier problème à éviter. Il faut faire attention à la fréquence d'échantillonage du fichier que l'on crée, qui doit être égale à celle de la carte son.
  • Partager sur Facebook
  • Partager sur Twitter
8 avril 2010 à 17:37:45

L'article donne des valeurs de -32268 à 32267 pour le 16 bits.
N'est-ce pas plutôt de -32768 à 32767?
  • Partager sur Facebook
  • Partager sur Twitter
8 avril 2010 à 18:11:32

Citation : Marc Mongenet


L'article donne des valeurs de -32268 à 32267 pour le 16 bits.
N'est-ce pas plutôt de -32768 à 32767?



J'avais déjà posé cette question à la page 2, les valeurs concernent en fait l'amplitude des sinusoïdes et non les maximums d'une variables codées sur 16 bits ;)
  • Partager sur Facebook
  • Partager sur Twitter
8 avril 2010 à 18:26:16

Citation : Taurre

J'avais déjà posé cette question à la page 2, les valeurs concernent en fait l'amplitude des sinusoïdes et non les maximums d'une variables codées sur 16 bits ;)



Euh, le problème est que la réponse en page 2 est insensée: tu demandes si ça ne serait pas la plage de valeurs B au lieu de la A, et on te répond "Non c'est bien la plage C". Je pense qu'il y a eu un malentendu (enfin un mal-lu) :

Citation

Citation

Pour les valeurs codées sur 16 bits tu indiques que la valeur peut aller de -32268 à 32267. Ne serait-ce pas plutôt de -32767 à +32767 ?


Non les valeurs sont bien codées sur -32768 - 32767


  • Partager sur Facebook
  • Partager sur Twitter
8 avril 2010 à 19:59:27

Je devais avoir du caca dans les yeux. o_O
J'ai édité le post. :-°

Je m'excuse pour ceux qui avaient fait la remarque. :-°
  • Partager sur Facebook
  • Partager sur Twitter
21 avril 2010 à 17:28:00

Autre desagrément, lorsque l'on applique une enveloppe ADSR sur la sinusoïde, le volume sonore diminue.
  • Partager sur Facebook
  • Partager sur Twitter
21 mai 2014 à 11:24:18

j'ai une toute petite question.

Pourquoi mets tu *32267 pour multiplier ton sinus.

Sinon tout le reste est vraiment super compréhensible merci bcp

  • Partager sur Facebook
  • Partager sur Twitter
il faut s'accrocher
21 mai 2014 à 12:57:31

Bonjour,

je crois que c'est parce que data est un entier sur 16 bit (int16_t data[]) dont les valeur évolue entre -32267 et +32267 et donc le sinus étant une valeur entre -1 et 1, il obtient des valeurs sur toute la plage mémoire possible.

D'ailleurs il le dit lui même:

En fait ça dépend du nombre de bits par échantillon que vous avez choisi 
Si vous avez choisi 8 bits, les données seront non signées et pourront prendre des valeurs allant de 0 à 255 (inclus).
 Le «point milieu» est situé à la valeur 127.
Par contre si vous avez choisi 16 bits, les données seront signées et pourront prendre des valeurs allant de -32768 à 32767.
 Le «point milieu» est situé à la valeur ... ... 0 



-
Edité par breizhbugs 21 mai 2014 à 12:59:18

  • Partager sur Facebook
  • Partager sur Twitter
** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
2 mai 2019 à 20:15:41

Juste une question comme ça si t existe encore : tu l'écris où tout ce code ?

  • Partager sur Facebook
  • Partager sur Twitter
20 mars 2020 à 6:59:54 - Message modéré pour le motif suivant : Merci de créer votre propre sujet


20 mars 2020 à 13:10:47

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter