Allegro 4.2.2 problème son

Giglobastre Messages postés 9 Statut Membre -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, J'ai besoin de jouer un son, j'ai déjà essayer plusieurs librairies (SDL+SDL_mixer/OpenAL/Fmod) mais celles ci sont bien trop complexes pour ce que nous avons a faire (uniquement jouer un son). je me suis donc tourner vers allegro étant donner que j'utilise déjà la partie graphique.
Ayant vu sur d'autres forums que allegro ne lisait pas les format compressés de .wav j'ai téléchargé un extrait 16bit PCM.

Voici le code:

#include <stdio.h>
#include <stdlib.h>
#include <allegro.h>

int main()
{
    install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);
    SAMPLE *sample ;
    sample= load_sample("D:/Codeblocks/projets/16bit pcm.wav");
    play_sample(sample, 255, 128, 1000, 0);

    return 0;
}
END_OF_MAIN();


j'ai essayer de remplacer
install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);
par
install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, 0);
voire même d’enlever mais rien n'y fait, le programme plante au lancement et rien n'est jouer.
j'ai également remplacer dans le play_sample 128 par 0, ceci ne change rien non plus.

et dernièrement, j'ai remplacé load_sample par load_wav ce qui ne change rien non plus.

j'ai aussi essayer plusieurs .wav mais rien n'y fait.

voici la liste des prototypes: https://liballeg.org/stabledocs/en/alleg026.html

j'ai vu que des wrappers pour pouvoir jouer des mp3 existaient. je code sur codeblocks, w10 64bit

merci d'avance.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
 

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    Tu n'as pas initialisé Allego elle-même avec
    allegro_init()
    et il manque aussi la macro
    END_OF_MAIN()
    à la fin de ton main.

    Tu devrais aussi faire un contrôle d'erreurs, pour savoir exactement à quel niveau il y aurait un problème, et essayer avec un fichier sans espaces.

    Allegro est fournit avec un programme "exsample" que tu peux tester en ligne de commande pour voir s'il n'y a pas un problème avec ton matériel. Le code source de ce programme est fournit avec la "librairie" Allegro. Il est peut-être sur ta machine, autrement on trouve aussi exsample.c là :

    https://sourceforge.net/p/alleg/allegro/ci/ecb3132864649d5728e403b511c206932bc23849/tree/examples/exsample.c

    Il montre comment initialiser correctement Allegro, comme utiliser les fonctions liées au son et contrôler les erreurs éventuelles avec des messages d'erreurs informatifs du type d'erreur.

    Dal
    1
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      mes indications ci-dessus sont pour Allegro 4.

      Pour Allegro 5 c'est assez différent :

      ex_audio_simple.c a cette tête : https://github.com/liballeg/allegro5/blob/master/examples/ex_audio_simple.c

      plus de
      allegro_init()
      mais
      al_init()
      , plus de
      install_sound()
      mais
      al_install_audio()
      , etc.
      0
    2. Giglobastre Messages postés 9 Statut Membre > [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Salut, merci de ta réponse.
      j'ai utilisé le code de exsample que j'ai un peu modifié (notamment enlevé les modif de pitch). le voici:
      #include <stdio.h>
      #include <stdlib.h>
      #include <allegro.h>
      
      int main(int argc, char *argv[])
      {
          SAMPLE *the_sample;
          int pan = 128;
          int pitch = 1000;
      
          if (allegro_init() != 0)
              return 1;
      
          if (argc != 2)
          {
              allegro_message("Usage: '16bit_pcm.[wav|voc]'\n");
              return 1;
          }
      
          install_keyboard();
      
          /* install a digital sound driver */
          if (install_sound(DIGI_AUTODETECT, MIDI_NONE, NULL) != 0)
          {
              allegro_message("Error initialising sound system\n%s\n", allegro_error);
              return 1;
          }
           /* read in the WAV file */
          the_sample = load_sample("D:/Codeblocks/projets/16bit_pcm3.wav");
          if (!the_sample)
          {
              allegro_message("Error reading WAV file '%s'\n", argv[1]);
              return 1;
          }
      
          if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) != 0)
          {
              if (set_gfx_mode(GFX_SAFE, 320, 200, 0, 0) != 0)
              {
                  set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
                  allegro_message("Unable to set any graphic mode\n%s\n", allegro_error);
                  return 1;
              }
          }
           /* start up the sample */
          play_sample(the_sample, 255, pan, pitch, TRUE);
      
          /* destroy the sample */
         destroy_sample(the_sample);
      
         return 0;
      }
      END_OF_MAIN();


      j'ai enlevé l'espace dans le nom du fichier et j'ai re check avec audacity que c’était bien un format non compressé.

      quand je compile et lance aucune erreur ne s'affiche et une fenêtre allegro s'ouvre me disant que le fichier est joué.

      en revanche aucun son sort de mon pc,dans le mixeur des volumes windows les sons systèmes de sont pas a 0. peut être il faut que je télécharge un fichier .voc a la place du wav..

      je suis déjà content que le code compile et qu'il n'y ai pas d'erreur.
      0
    3. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      et 16bit_pcm3.wav contient bien quelque chose d'audible en double cliquant dessus, tes enceintes son allumées, etc.
      0
    4. Giglobastre Messages postés 9 Statut Membre > [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention  
       
      je viens de re tester, tout fonctionne, j'ai tester 3 versions:
      une venant d'internet donc pas garanti d’être 16bit pcm
      une autre qui est le meme extrait d'avan que j'ai reconverti sur audacity
      et le 16bit_pcm3 qui est le meme extrait converti sur audacity en "autre format compressé". les 3 contiennent bien un son.
      0
    5. Giglobastre Messages postés 9 Statut Membre > [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention  
       
      peut être que codeblocks a besoin d'autorisation pour utiliser jouer un son. quand la fenêtre allegro s'ouvre en disant que le son est joué aucune source en plus n’apparaît dans le mixeur de volume et la barre de son de la source "son système" ne bouge pas.
      0