Compiler ressource sonore

Résolu
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 8 mars 2008 à 15:22
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 13 mars 2008 à 22:14
Bonjour,

Je travaille sur un programme dans lequel je je joue un son wave, ce qui fonctionne sur mon ordinateur mais pas sur d'autres.
Comment puis-je incruster le son dans l'exe même et quel est alors son chemin d'acces pour l'instruction soundplayer(path) ?

Codialement,
Anz.

13 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
13 mars 2008 à 21:22
C'est pas qu'on ne sait pas, c'est que ton code est correct, soit tu te plantes dans le nom de la ressource, regarde avec Reflector le nom exact de ta ressource, soit ton son wav n'est pas valide, essaye avec un autre.
3
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
8 mars 2008 à 15:44
Salut,

"Comment puis-je incruster le son dans l'exe même"
=> En ressource incorporée (embedded ressource) par exemple.

"quel est alors son chemin d'acces pour l'instruction soundplayer(path)"
=> si "soundplayer" ne permet que de spécifier un chemin d'accès et pas de travailler directement sur un flux j'ai bien peur que la seule solution soit de lui donner le chemin vers le fichier temporaire dans lequel tu auras extrait le son depuis les ressources.

/*
coq
MVP Visual C#
CoqBlog
*/
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
8 mars 2008 à 18:45
Bonjour coq, merci pour ta réponse,

"j'ai bien peur que la seule solution soit de lui donner le chemin vers
le fichier temporaire dans lequel tu auras extrait le son depuis les
ressources."

Héhé je veux bien, mais je ne sais justement pas comment accéder aux ressources, jusque la je ne m'en servais jamais...

merci a toi,

Anz
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
8 mars 2008 à 18:55
Regarde du côté de Assembly.GetManifestResourceStream et ce qui tourne autour :-)
Et Reflector pour examiner l'assembly.

/*
coq
MVP Visual C#
CoqBlog
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
9 mars 2008 à 18:17
Salut, de quel SoundPlayer parles tu ? celui de l'espace de nom System.Media accepte un Stream en paramètre.

Mettre le son wav en ressource :

   Copier/Coller le son wav dans le projet -> clique droit -> Propriétés -> Action = Ressource incorporée.

Récupérer le son ( voir le lien donné par Coq ) :

   Assembly.GetManifestResourceStream( "ProjectName.ResourceName" );
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
11 mars 2008 à 23:24
Génial !! merci bcp à vous !!

Anz.
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
11 mars 2008 à 23:52
Humf.. Je pensais avoir saisi mais visiblement non:

Assembly assembly = this.GetType().Assembly;
assembly.GetManifestResourceStream("test.wav");
SoundPlayer monson = new SoundPlayer("program.test.wav");
monson.Play();

lors de la génération, il semble qu'il ne trouve pas la ressource pourtant importée dans ressources et en "incorporée" :s

j'utilise bel et bien le soundplayer de System.Media

Merci de votre attention,
cordialement,
Anz.
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
12 mars 2008 à 02:00
Me revoila, j'ai essayé de la maniere suivante:

Assembly assembly = this.GetType().Assembly;
Stream soundstream = assembly.GetManifestResourceStream((assembly.GetName().Name + ".test.wav"));
SoundPlayer monson = new SoundPlayer(soundstream);
 monson.Play();

J'ai l'impression que c'est mieux puisque la génération s'effectue sans erreur, seuleument, je n'ai strictement aucun son :s

Cordialement, Anz.
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
12 mars 2008 à 23:30
Pas plus de résultat en utilisant

Assembly assembly = Assembly.GetExecutingAssembly();
Stream soundstream = assembly.GetManifestResourceStream((assembly.GetName().Name + ".test.wav"));
SoundPlayer monson = new SoundPlayer(soundstream);
monson.PlayLooping();

Je désespère...
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
13 mars 2008 à 19:28
Bon.. si vous savez po tant pis.. juste une question, si jeux créér un fichier de configuration xml incorporé à l'exe dois-je avoir recours à la même procédure (qui n'a pas l'air de fonctionner) ou ya -t-il une méthode spécifique ?

Cordialement,
Anz.
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
13 mars 2008 à 21:37
:'((

Je ne sais pas utiliser reflector, j'avoue avoir regardé un peu mais pas vraiment compris le fonctionnement...

Quant à mon wav il est valide, en effet si je colle un path vers un dossier du disque local, le son fonctionne.. Tu as sans doute raison c'est probablement dans le nom de la ressource qu'il y a un pb (pourtant mon son s'appelle bel et bien test.wav).
A ce propos à tu une idée de pourquoi je n'ai aucun message d'erreur même si la valeur de mon Stream est nulle ?

Quoi qu'il en soit je vais suivre ton conseil et persévérer sur reflector..
Merci de la réponse, même si la solution au problème n'y est pas c'est rassurant :)

Cordialement,
Anz.
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
13 mars 2008 à 21:57
Bon je dois avour que j'ai honte, reflector est très simple à utiliser, et ça marche maintenant nikel... en fait je pensais que reflector etait une instruction et non une appli..;
Merci encore et désolé pour le temps que je vous ai fait perdre :s

Sinon, nouveau problème: je déclare mon soundstream juste apres initializecomponents, comment le déclarer de manière publique pour pouvoir y faire appel (par ex un bouton mute) ?

Merci,

Anz
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
13 mars 2008 à 22:14
C'est bon :) (décidément):

public System.Media.SoundPlayer monson;
       
        public Form1()
        {
            InitializeComponent();
            Assembly assembly = this.GetType().Assembly;
            Stream soundstream = assembly.GetManifestResourceStream("mark_kun_V1.Resources.test.wav");
            monson = new SoundPlayer(soundstream);
            monson.PlayLooping();
        }
0