Bonjours.
J'aimerai récupérer les donnés contenus dans un fichier wav pour faire une reconnaissance de notes.J'aimerai savoir s'il existe une lib permetant de récupérer simplement ses données et si non , s'il existe des tutos l'expliquant.
Merci.
Bonjours.
J'aimerai récupérer les donnés contenus dans un fichier wav pour faire une reconnaissance de notes.J'aimerai savoir s'il existe une lib permetant de récupérer simplement ses données et si non , s'il existe des tutos l'expliquant.
Merci.
tutoriel Ogre:
http://gusgus.developpez.com/Ogre/
Il faut connaitre le format des données dans le fichier :
www.wotsit.org
ensuite, il faut ouvrir le fichier en binaire (fopen() avec "rb") et le lire par caractères (fgetc()) ou par blocs (fread()).
salut
moi perso je prends toujours des wav signed 16bit à 44100hz
pour ouvrir le wav je fais simplement
quelle méthode cherches tu à appliquer pour la reconnaissance de note ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 char header[44]; int wav_size; short *wav_data; void charger_wav(char *path) { FILE *f = fopen(path,"rb"); fseek (f, 0, SEEK_END); int taille = ftell(f) - 44; fseek (f, 0, SEEK_SET); short *data = malloc(taille); fread(header,44,1,f); fread(data,sizeof *data,taille/sizeof *data,f); fclose(f); wav_size = taille / sizeof *wav_data; wav_data = data; }
Salut
La reconnaissance de note, c'est surement aussi compliqué que la reconnaissance optique de caractere (OCR). Parmis les choses compliquées, je suppose que ya la difference entre les harmoniques qui constituent une note d'un instrument et la note reellement jouée par l'instrument ; puis la séparation des instruments et pouvoir dire que ya un meme instrument (meme si on ne l'identifie pas) qui joue ça puis ça ; aussi, gérer le "bruit" ambiant et les percutions.
Maintenant si ton son wav n'est qu'une primitive (genre sinusoïde), c'est peut etre jouable.
En tout cas, il est completement illusoire de croire qu'une bibliotheque va permettre d'obtenir tout ça directement.
Cette méthode n'est pas portable. Le comportement dépend de l'endianness et fait l'hypothèse qu'un short fait 16 bits.
Les globales c'est moche...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 struct wav { char header[44]; int size; short *data; }; void charger_wav (char const *path, struct wav *p_wav) { FILE *f = fopen (path, "rb"); if (f != NULL) { fseek (f, 0, SEEK_END); { int taille = ftell (f) - sizeof p_wav->header; fseek (f, 0, SEEK_SET); { short *data = malloc (taille); if (data != NULL) { size_t const data_size = taille / sizeof *data; /* chargement du header */ int n = fread (p_wav->header, sizeof p_wav->header, 1, f); if (n == 1) { /* chargement des donnees */ n = fread (data, sizeof *data, data_size, f); } fclose (f); if (n == (int) data_size) { /* enregistrement des informations des donnees */ p_wav->size = data_size; p_wav->data = data; } } } } fclose (f), f = NULL; } else { perror (path); } }
Merci de répondre!
c'est ce que je craignait,il n'y a pas de bibliotheques...
Sinon pour la reconnaissance de note,c'est mon frere qui le fait dans le cadre de son TIPE de prepa.Il ma dit qu'il allait uliliser "les series de fourier"(me demandez pas se que c'est je suis que en terminale).Mais il m'a demander de lui faire un truc qui lui ouvre une fichier wave(il a pas trop le temps de programmer).
Je vais essayer avec fopen et tout.
tutoriel Ogre:
http://gusgus.developpez.com/Ogre/
Il y a des bibliothèques FFT (Fast Fourier Transform), mais ce n'est pas à la portée d'un débutant, surtout si il ne connait pas le sujet...
Ton frère de devrait pas prendre l'habitude de faire faire son travail par les autres. Il fera comment le jour de l'examen ? Et dans son travail ?Sinon pour la reconnaissance de note,c'est mon frere qui le fait dans le cadre de son TIPE de prepa.Il ma dit qu'il allait uliliser "les series de fourier"(me demandez pas se que c'est je suis que en terminale).Mais il m'a demander de lui faire un truc qui lui ouvre une fichier wave(il a pas trop le temps de programmer).
Le but de mon frere n'est pas de savoir ouvrire un fichier^^.Nan mais sans rire,d'autres personnes avant on essayer de faire quelque chose dans ce style et elles sont resté bloqué a l'ouverture du fichier!ce qui est quand même un peu bête etant donner que le but du TIPE n'est absolument pas de savoir ouvrire un fichier son!Ton frère de devrait pas prendre l'habitude de faire faire son travail par les autres. Il fera comment le jour de l'examen ? Et dans son travail ?
Je pense m'être fait mal comprendre.Il ne sait pas ouvrire un fichier mais tout ce qui touche au tranformation de fourier etc,il va le faire tout seul!Il y a des bibliothèques FFT (Fast Fourier Transform), mais ce n'est pas à la portée d'un débutant, surtout si il ne connait pas le sujet...
tutoriel Ogre:
http://gusgus.developpez.com/Ogre/
Partager