IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Traitement de fichier audio .wav


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 51
    Par défaut Traitement de fichier audio .wav
    Salut à tous.

    Je dois réaliser un programme en C++ qui devra effectuer un traitement sur les FFT de signaux audio au format .wav

    J'ai trouvé une classe sur le net.

    Mon problème c'est que j'ai du mal à l'utiliser.
    Mon objectif premier serait d'arriver à charger un fichier .wav et de le lire pour déja arriver à faire marcher la classe dans son utilisation la plus basique.

    Je charge les fichiers d'entêtes ainsi que les fichiers .cpp correspondants.

    Pour faire simple j'ai tenté d'implémenter ma classe de la façon suivante dans mon fichier main.cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "Sound.h"
    #include <iostream>
    using namespace std;
     
    int main(){
        Csound monson1;
        monson1.PlayFile(musique1.wav);
    return 0;}
    Le rapport de plantage me donne :

    Compilation en cours...
    Main2.cpp
    main2.cpp(8) : error C2065: 'Csound' : identificateur non déclaré
    main2.cpp(8) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'monson1'
    main2.cpp(8) : error C2065: 'monson1' : identificateur non déclaré
    main2.cpp(9) : error C2065: 'monson1' : identificateur non déclaré
    main2.cpp(9) : error C2228: la partie gauche de '.PlayFile' doit avoir un class/struct/union
    le type est ''unknown-type''
    main2.cpp(9) : error C2065: 'musique1' : identificateur non déclaré
    main2.cpp(9) : error C2228: la partie gauche de '.wav' doit avoir un class/struct/union
    le type est ''unknown-type''
    Sound.cpp
    sound.cpp(513) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : voir la déclaration de 'strcpy'
    sound.cpp(515) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : voir la déclaration de 'strcpy'
    sound.cpp(516) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : voir la déclaration de 'strcpy'
    sound.cpp(526) : error C2664: 'CreateFileW' : impossible de convertir le paramètre 1 de 'const CStr' en 'LPCWSTR'
    Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    sound.cpp(574) : error C2664: 'CreateFileW' : impossible de convertir le paramètre 1 de 'const CStr' en 'LPCWSTR'
    Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    sound.cpp(686) : error C2664: 'sndPlaySoundW' : impossible de convertir le paramètre 1 de 'const CStr' en 'LPCWSTR'
    Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    Génération de code en cours...
    Voila

    Est-ce que quelqu'un peut m'aider ?

    Merci

    Florian

  2. #2
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Salut,
    première chose, pour la lisibilité, pense à utiliser les balises code pour le code et citation pour les rapports d'erreur.

    Ensuite la classe que tu tentes d'utiliser se nomme CSound avec un grand S et non pas Csound. Le C++ est sensible à la casse !

    Enfin, dans les propriétés de ton projet, section générale, utilise un "multi-byte" character set et non pas un "Unicode".

    Optionnellement, tu peux définir _CRT_SECURE_NO_WARNINGS (toujours dans les propriétés dans C++/Préprocessor) pour ne plus que Visual t'ennuie avec les warnings de sécurité sur les fonctions de chaines de la lib C.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 51
    Par défaut
    Grand merci.

    Pour le nom de la classe je suis un bon boulet.

    Par contre l'histoire de l'unicode j'aurais pu rester bloquer pendant très longtemps ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 51
    Par défaut
    Merci encore, ça a résolu mon premier problème.
    Ca m'a permis d'avancer un peu.

    Maintenant je veux faire une FFT sur ce son. J'implémente donc comme indiqué dans la page où j'ai téléchargé la classe.
    Et là miracle : ça plante ...

    Je ne comprends pas ce qu'il me dit étant donné que CSoundProcessing est bien une classe


    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
     
    #include "Sound.h"
    #include <iostream>
     
    using namespace std;
     
    int main()
    {
    		//Création du process
    	CSoundProcessing process1;
     
    	// Création de l'objet
    	CSound fichierson1;		
     
    	// Ouverture du fichier
    	fichierson1.OpenFile("musique1.wav");
     
     
    	// Initialisation du process sur fichierson1
    	process1.SetSound(&fichierson1);
     
     
    	//obtenir la FFT du signal
    	/*
    	Note :
    	mono : tabFFT[0] et tabFFT[1] sont identiques
    	stéréo : tabFFT[0] contient le canal gauche et tabFFT[1] le canal droit
    	*/
    CTab<double> tabFFT[2];
    if(process1.GetFFT(tabFFT))
    {
       int indexFreqMax = 0;
       double max = 0.0;
     
       //trouver la fréquence dominante (en amplitude)
       for(int i=0;i<tabFFT[0].Size();i++)
       {
          if(tabFFT[0] > max)
          {
             max = tabFFT[0];
             indexFreqMax = i;
          }
       }
     
     
    return 0;
    }
    Le rapport d'erreurs :
    Main2.cpp
    main2.cpp(9) : error C2079: 'process1' utilise une class de 'CSoundProcessing' non défini
    main2.cpp(19) : error C2228: la partie gauche de '.SetSound' doit avoir un class/struct/union
    le type est 'int'
    main2.cpp(29) : error C2228: la partie gauche de '.GetFFT' doit avoir un class/struct/union
    le type est 'int'
    main2.cpp(37) : error C2679: '>' binaire*: aucun opérateur trouvé qui accepte un opérande de partie droite de type 'double' (ou il n'existe pas de conversion acceptable)
    est peut-être 'built-in C++ operator>(const double *, const double *)'
    lors de la tentative de mise en correspondance de la liste des arguments '(CTab<TYPE>, double)'
    with
    [
    TYPE=double
    ]
    main2.cpp(39) : error C2440: '='*: impossible de convertir de 'CTab<TYPE>' en 'double'
    with
    [
    TYPE=double
    ]
    Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    main2.cpp(48) : fatal error C1075: fin de fichier rencontrée avant que l'élément accolade '{' gauche de 'main2.cpp(7)' soit équilibré

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Il te faut peut-être inclure les fichier d'en-tête (.h) dans lesquels sont définies les classes CSoundProcessing et CTab ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 51
    Par défaut
    Effectivement, concernant la déclaration des fichiers d'entête.
    Par contre j'ai toujours le problème concernant les doubles

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/05/2015, 10h22
  2. Prétraitement du son (fichier audio d'extension .wav)
    Par asma_tata dans le forum MATLAB
    Réponses: 0
    Dernier message: 22/02/2014, 20h21
  3. dessiner la forme d'onde d'un fichier audio
    Par cgodefrw dans le forum DirectX
    Réponses: 7
    Dernier message: 26/06/2005, 08h40
  4. obtenir la durée d'un fichier audio
    Par cgodefrw dans le forum DirectX
    Réponses: 2
    Dernier message: 07/10/2004, 16h49
  5. Récupérer les infos sur un fichier audio
    Par Halleck dans le forum Windows
    Réponses: 13
    Dernier message: 17/04/2004, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo