Allegro 4.2.2 problème son

Fermé
Giglobastre Messages postés 9 Date d'inscription mercredi 4 janvier 2017 Statut Membre Dernière intervention 27 mars 2017 - Modifié par baladur13 le 17/03/2017 à 11:01
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 - 17 mars 2017 à 14:50
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

[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 090
Modifié par [Dal] le 16/03/2017 à 15:20
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
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 090
Modifié par [Dal] le 16/03/2017 à 15:34
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
Giglobastre Messages postés 9 Date d'inscription mercredi 4 janvier 2017 Statut Membre Dernière intervention 27 mars 2017 > [Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024
Modifié par baladur13 le 17/03/2017 à 11:02
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
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 090
17 mars 2017 à 11:11
et 16bit_pcm3.wav contient bien quelque chose d'audible en double cliquant dessus, tes enceintes son allumées, etc.
0
Giglobastre Messages postés 9 Date d'inscription mercredi 4 janvier 2017 Statut Membre Dernière intervention 27 mars 2017 > [Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024
17 mars 2017 à 11:15
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
Giglobastre Messages postés 9 Date d'inscription mercredi 4 janvier 2017 Statut Membre Dernière intervention 27 mars 2017 > [Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024
17 mars 2017 à 11:24
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