Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2483 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  gestion du son avec FMOD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gestion du son avec FMOD

n°627836
smilm
Posté le 01-02-2004 à 18:18:10  profilanswer
 

Salut!
 
En me baladant sur le net et en pompant dans des codes sources j'ai reussi a coder un tit quelque chose pour me jouer du son, mais ca ne marche pas.
 

Code :
  1. unit zik;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs,fmod, StdCtrls;
  6. procedure initialisationSound;
  7. type
  8. pSample = ^tSample;
  9. tSample = record
  10.   sample : PFsoundSample;
  11.   channel : byte;
  12.   end;
  13.   mysample = tSample;
  14.   TForm1 = class(TForm)
  15.     Button1: TButton;
  16.   private
  17.     { Déclarations privées }
  18.   public
  19.     { Déclarations publiques }
  20.   end;
  21. var
  22.   Form1: TForm1;
  23.        fusee : mysample;
  24. implementation
  25. {$R *.dfm}
  26. procedure initialisationSound;
  27. begin
  28. FSOUND_close;
  29. FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
  30. FSOUND_setdriver(0);
  31. FSOUND_SetMixer(FSOUND_MIXER_AUTODETECT);
  32. Fsound_init(44100,4,0);
  33. FSOUND_SetReserved(0,true);
  34. fusee:=FSOUND_Sample_Load(FSOUND_FREE,'fusee.mp3',FSOUND_STEREO,0);
  35. FSOUND_PlaySound (FSOUND_FREE, fusee);
  36. end;
  37. end.


 
Delphi me dit que je mélange tsample et pointer, mais je ne maitrise pas bien cette histoire de pointeurs et je débute tout juste fmod.
Quelqu'un pourrait me donner un coup de main et me dire ce qui ne va pas ?
Merci d'avance.


Message édité par smilm le 01-02-2004 à 18:18:30

---------------
AfterEnd: Batissez un nouveau monde
mood
Publicité
Posté le 01-02-2004 à 18:18:10  profilanswer
 

n°627846
antp
Super Administrateur
Champion des excuses bidons
Posté le 01-02-2004 à 18:22:31  profilanswer
 

FSOUND_PlaySound s'attend à quoi ? un pSample ?
Tu dois mettre un @ devant fusee quand tu le passes en param, pour passer l'adresse (càd un pointeur) plutôt que la structure elle-même


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°627876
smilm
Posté le 01-02-2004 à 18:38:47  profilanswer
 

bon j'ai fais ca, mais ca marche pas.
 

Code :
  1. unit zik;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs,fmod, StdCtrls;
  6.     procedure initialisationSound;
  7. type
  8. pSample = ^tSample;
  9. tSample = record
  10.   sample : PFsoundSample;
  11.   channel : byte;
  12.   end;
  13.   mysample = tSample;
  14.   TForm1 = class(TForm)
  15.     Button1: TButton;
  16.     procedure Button1Click(Sender: TObject);
  17.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  18.   private
  19.     { Déclarations privées }
  20.   public
  21.     { Déclarations publiques }
  22.   end;
  23. var
  24.   Form1: TForm1;
  25.   fusee : ^mysample;
  26. implementation
  27. {$R *.dfm}
  28. procedure initialisationSound;
  29. begin
  30. FSOUND_close;
  31. FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
  32. FSOUND_setdriver(0);
  33. FSOUND_SetMixer(FSOUND_MIXER_AUTODETECT);
  34. Fsound_init(44100,4,0);
  35. FSOUND_SetReserved(0,true);
  36. fusee:=FSOUND_Sample_Load(FSOUND_FREE,'fusee.mp3',FSOUND_STEREO,0);
  37. end;
  38. procedure TForm1.Button1Click(Sender: TObject);
  39. begin
  40. FSOUND_PlaySound (FSOUND_FREE, @fusee);
  41. end;
  42. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  43. begin
  44.     FSOUND_Close();
  45. end;
  46. end.


 
Par contre, ya pas d'erreur.
 
Le fichier fusee.mp3 est dans le dossier de l'executable.(le seul et unique dossier du 'projet' d'ailleurs)


---------------
AfterEnd: Batissez un nouveau monde
n°627889
antp
Super Administrateur
Champion des excuses bidons
Posté le 01-02-2004 à 18:51:52  profilanswer
 

ouais mais t'as pas modifié juste un truc : t'as modifié aussi la déclaration de fusee :p
C'est probablement plus logique, mais comme fusee est maintenant ^tSample et plus un tSample simple, tu devrais pouvoir le passer en paramètre sans le "@" (sinon déclare-le comme un pSample au lieu d'un ^tSample)


Message édité par antp le 01-02-2004 à 18:53:26

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°627916
smilm
Posté le 01-02-2004 à 19:09:06  profilanswer
 

WHAOU!!!
CA MARCHE
 
Merci ANTP
Je t'aime! !!! lol
 [:yaisse1]  [:yaisse2v]  [:kimouss]
 
code final  (j'ai enlever des trucs inutile apparament)

Code :
  1. unit zik;
  2.  
  3.   interface
  4.  
  5.   uses
  6.     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.     Dialogs,fmod, StdCtrls;
  8.       procedure initialisationSound;
  9.   type
  10. //  pSample = ^tSample;
  11.   tSample = record
  12.     sample : PFsoundSample;
  13.     channel : byte;
  14.     end;
  15.  
  16. //   mysample = pSample;
  17.  
  18.     TForm1 = class(TForm)
  19.       Button1: TButton;
  20.       procedure Button1Click(Sender: TObject);
  21.       procedure FormClose(Sender: TObject; var Action: TCloseAction);
  22.     procedure FormCreate(Sender: TObject);
  23.  
  24.     private
  25.       { Déclarations privées }
  26.     public
  27.       { Déclarations publiques }
  28.  
  29.     end;
  30.  
  31.   var
  32.     Form1: TForm1;
  33.     fusee : ^tsample;
  34.   implementation
  35.  
  36.   {$R *.dfm}
  37.  
  38.   procedure initialisationSound;
  39.   begin
  40.   Fsound_init(44100,2,0);
  41.   fusee:=FSOUND_Sample_Load(1,'intro.mp3',FSOUND_STEREO,0);
  42.   end;
  43.  
  44.   procedure TForm1.Button1Click(Sender: TObject);
  45.   begin
  46.   FSOUND_PlaySound (1,fusee);
  47.   end;
  48.  
  49.   procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  50.   begin
  51.       FSOUND_Close();
  52.  
  53.   end;
  54.  
  55.   procedure TForm1.FormCreate(Sender: TObject);
  56. begin
  57.   initialisationSound;
  58. end;
  59. end.


Message édité par smilm le 01-02-2004 à 19:33:38

---------------
AfterEnd: Batissez un nouveau monde
n°627984
smilm
Posté le 01-02-2004 à 20:46:35  profilanswer
 

Encore une petite question, plus ou moins hs mais bon.
 
J'aimerais savoir comment on récupére le chemin du fichier que l'utilisateur selectionne dans un "FileOpen" que j'utilise grace a une ActionList.
 
J'aimerais grace a ce chemin, remplacer le "fusee.mp3" par le chemin que l'utilisateur demande et ainsi pouvoir avoir un lecteur mp3 tout basic.
 
Merci d'avance


---------------
AfterEnd: Batissez un nouveau monde
n°627990
smilm
Posté le 01-02-2004 à 20:49:28  profilanswer
 

SmilM a écrit :

Encore une petite question, plus ou moins hs mais bon.
 
J'aimerais savoir comment on récupére le chemin du fichier que l'utilisateur selectionne dans un "FileOpen" que j'utilise grace a une ActionList.
 
J'aimerais grace a ce chemin, remplacer le "fusee.mp3" par le chemin que l'utilisateur demande et ainsi pouvoir avoir un lecteur mp3 tout basic.
 
Merci d'avance


 
c bon j'ai trouvé!
FileName...:)


---------------
AfterEnd: Batissez un nouveau monde
n°628013
smilm
Posté le 01-02-2004 à 21:08:31  profilanswer
 

Je continue mon monologue mais la je galere un peu plus...
j'ai un petit probleme de type de variables:
 
 
fpath: string;
----
fpath:= FileOpen1.Dialog.FileName;
---
fusee:=FSOUND_Sample_Load(FSOUND_FREE,fpath,FSOUND_STEREO,0);
---
 
Le probleme est que FSOUND_Sample_Load demande un PAnsiChar, alors que fpath est un string, et d'aprés ce que je vois dans la doc de delphi strtoPAnsiChar() n'existe pas.
Comment dois-je proceder ?
 
Merci d'avance.


Message édité par smilm le 01-02-2004 à 21:23:27

---------------
AfterEnd: Batissez un nouveau monde
n°628032
antp
Super Administrateur
Champion des excuses bidons
Posté le 01-02-2004 à 21:24:00  profilanswer
 

PChar(fpath)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°628237
smilm
Posté le 02-02-2004 à 08:20:01  profilanswer
 

Merci encore [:kintarox]  
Ca marche !
J'ai meme rajouter une trackbar pour gerer le son :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  gestion du son avec FMOD

 

Sujets relatifs
STL : gestion des exception. appel explicite?Gestion de fichier des repertoires
Gestion des collisions avec OPCODEQuelle structure de base adopter ? Gestion d'événements.
Gestion des champs en auto-incrémentation avec PEARgestion du retour a la ligne dans une variable???
[Delphi] Gestion mémoire bizarre[Tomcat] Gestion de cache ?
Creer Systeme NEWS - HTML - avec gestion admin ???Projet de gestion hasardeuse de frame (vrai défi inside)
Plus de sujets relatifs à : gestion du son avec FMOD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR