Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème pour le TP "visualisation spectrale"

Variante du cours

Sujet résolu
Anonyme
    9 août 2006 à 13:50:33

    Bonjour à tous ! :)

    En faisant le TP "visualisation spectrale", j'ai décidé de ne pas faire exactement comme matéo, c'est à dire de ne pas colorer l'écran mais d'utiliser une surface de la taille d'un pixel (1,1) et de la blitter. Je n'est pas encore réaliser le dégrader. Mais là, problème, rien ne s'affiche : je pense avoir repérer le problème mais ne comprend pas à quoi il est du. Voici mon code :


    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <FMOD/fmod.h>

    int main(int argc,char *argv[])
    {
      SDL_Surface *screen = NULL,*pixel = NULL;
      SDL_Event event;
      FSOUND_STREAM *music = NULL;
      int continuer = 1,time = SDL_GetTicks();
      float *spectre = NULL;
      float frequence = 0;
      SDL_Rect position = {0};
      long i = 0,j = 0;

      FSOUND_Init(44100,32,0);

      music = FSOUND_Stream_Open("music.mp3",0,0,0);
      FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(),1);
      FSOUND_Stream_Play(FSOUND_FREE,music);

      SDL_Init(SDL_INIT_VIDEO);

      screen = SDL_SetVideoMode(512,255,32,SDL_HWSURFACE);

      pixel = SDL_CreateRGBSurface(SDL_HWSURFACE,1,1,32,0,0,0,0);

          while(continuer)
          {
            SDL_PollEvent(&event);

                switch(event.type)
                {
                  case SDL_QUIT :
                    continuer = 0;
                    break;
                }

                if(SDL_GetTicks() - time >= 25)
                {
                  spectre = FSOUND_DSP_GetSpectrum();
                  SDL_FillRect(screen,NULL,SDL_MapRGB(screen->format,0,0,0));

                      for(i = 0;i < 512;i ++);
                      {
                        frequence = spectre[i] * 20 * screen->h;
                        position.x = i;

                            if(frequence > screen->h)
                              frequence = screen->h;

                            for(j = 0;j <= frequence;j ++)
                            {
                              position.y = 255 - j;
                              SDL_FillRect(pixel,NULL,SDL_MapRGB(pixel->format,j,255 - j,0));
                              SDL_BlitSurface(pixel,NULL,screen,&position);
                            }
                      }

                  SDL_Flip(screen);
                  time = SDL_GetTicks();
                }
          }

      SDL_FreeSurface(pixel);
      SDL_Quit();
      FSOUND_Stream_Stop(music);
      FSOUND_Stream_Close(music);
      FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(),0);
      FSOUND_Close();
      return EXIT_SUCCESS;
    }





    Vous remarquerez le printf : je pense que le problème est là, printf ne me sort que des "0.000000" ?!? o_O
    Quel est le problème ??

    Merci d'avance ! ;)

    J'ai trouvé l'erreur, c'est le point virgule après le for, excusez-moi. :euh:
    • Partager sur Facebook
    • Partager sur Twitter

    Problème pour le TP "visualisation spectrale"

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown