Bonsoir à tous,
Continuant mes premiers pas avec libsndfile (et avec C++... merci pour votre indulgence), je cherche à modifier le bloc suivant
de façon à travailler avec une copie intégrale des données du fichier wav, et non par bloc de 1024 comme c'est la cas ici.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 define BUFFER_LEN 1024 static double data [BUFFER_LEN] ; int readcount ; SNDFILE *infile ; while ((readcount = sf_read_double (infile, data, BUFFER_LEN))){ ... // do something with data }
Il me faut pour cela un tableau dynamique, ne connaissant pas à l'avance le nombre de blocs de 1024 dans le fichir wav.
Le plus simple me semble t-il est de travailler avec une variable de type vector<double> à laquelle je pourrais appliquer une fonction push_back dans le corps du while.
Je me retrouve bien entendu avec l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 std::<vector> song; .. while ((readcount =sf_read_double(infile, data, BUFFER_LEN))){ song.push_back(data); }
N'ayant peut-etre pas besoin de travailler avec des blocs de 1024, j'ai essayé l'approche suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part no matching function for call to 'std::vector<double>::push_back(double[1024])'
Mais j'ai bien sûr un problème de conversion 'double*' to double
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 static double data ; std::vector<double> song; while(readcount = sf_read_double(infile, data, 1)){ song.push_back (data); };
Si qq'un avait une astuce/solution svp.
Thanks!
Partager