FMOD Lecture d'un fichier mp3 ou ogg

Codes specifiques à Windows
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

FMOD Lecture d'un fichier mp3 ou ogg

Message par hub73 »

Bonjour à vous.
Autant j'arrive à lire le flux de la webradio depuis mon lecteur purebasic window à partir de la librairie FMOD, autant je ne parviens pas à lire directement un fichier mp3 ou un .ogg !

Je cherche à remplacer les commandes classiques de PB LoadSound, Playsound, IsSound, SoundStatus par un appel à celle de FMOD.

Auriez vous un extrait de code qui me permette de lire un fichier mp3 ou ogg depuis FMOD (fmodex.pbi) et de savoir son status (en lecture, en pause, stoppé). Il me faudrait également une procédure qui m'indique la durée du fichier lu.

Merci à vous.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par Ar-S »

Salut,
Il ni a aucune différence, si tu arrives à lire un flux mp3 distant, tu peux le lire en local si tu indiques le bon chemin.
Peut être une histoire de Slahh ou AntiSlash dans ton path ?

Code : Tout sélectionner

URL = "http://server1.chilltrax.com:9000", "Chilltrax"
URL = "G:\AUDIO\MUSIQUE\__ARS\monmp3.mp3","Radio AR-S"
Les 2 marchent.
Montre nous plutôt ton code si tu as des soucis. :wink:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par hub73 »

Merci ! Ah oui cela fonctionne. C'était si simple, moi je cherchais une procédure dédiée uniquement à la lecture d'un son !
Maintenant il me reste à trouver comment obtenir la durée du son lu !
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par hub73 »

Ca y'est je parviens à progresser dans l'écriture de mes fonctions... merci beaucoup !
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par Ar-S »

Content pour toi,
J'avoue que pour ma webradio je n'ai jamais eu à chercher du coté de la durée.
Si tu trouves je serai heureux que tu partages.

J'ai ouvert fmodexmin et j'ai trouvé ces 2 fonctions qui devraient faire l'affaire :
FMOD_Sound_GetLength
et
FMOD_Channel_GetPosition
en utilisant la constante #FMOD_TIMEUNIT_MS tu devrais arriver à quelque chose. Il y a d'autres constantes qui ne sont pas dans la version min (voir doc : https://documentation.help/FMOD-Ex/FMOD_TIMEUNIT.html) mais tu ne devrais pas en avoir besoin.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par hub73 »

J'ai bien progressé sur la compréhension de FMOD. Pour pouvoir effectuer le remplacement des fonctions natives Sound de Purebasic dans mon projet, j'aurai besoin de savoir comment déterminer qu'un fichier est stoppé. En clair qu'il a fini d'être lu. Je ne trouve rien dans la lib de FMOD.
Peut-être si Position de lecture = Duree du fichier (en millisecondes) ?

Ceci n'existe pas ;-) !!! :

Procedure.b FMOD_Determiner_EstArrete (*Son.Son_fmod_struct)

; Retourne #True si en Pause, #False sinon
Define IsStopped

FMOD_Channel_IsStopped(*Son\Channel, @IsStopped)

ProcedureReturn IsStopped

EndProcedure

Sinon mon code

Code : Tout sélectionner

; ----------------------------------------------------------------------
;
; FMOD SOUND Pour Radio les Floralies
;
; ----------------------------------------------------------------------

; Hubert BAYRE : hubert.bayre@wanadoo.fr
; avril 2021


EnableExplicit


IncludeFile "fmodex.pbi"
;IncludeFile "fmodex(short).pbi"


#TIMER01 = 1

Global gFini

Global fmodsystem.i

Structure Son_fmod_struct
  Url.s
  Channel.i
  Sound.i
  Volume.f
  PauseStatus.b
 EndStructure
    
 Global gSonLu.Son_fmod_struct   
 
; ----------------------------------------------------------------------
;
; FENETRE
;
; ----------------------------------------------------------------------
 
Global Window_0

Global Text_message, Button_pause, TrackBar_volume, Button_lecture, Button_Stop, Button_fichier


Procedure OpenWindow_0(x = 0, y = 0, width = 550, height = 230)
  Window_0 = OpenWindow(#PB_Any, x, y, width, height, "Radio Les Floralies - Lecteur", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered | #PB_Window_WindowCentered)
  Text_message = TextGadget(#PB_Any, 20, 140, 520, 25, "", #PB_Text_Center)
  SetGadgetColor(Text_message, #PB_Gadget_FrontColor,RGB(255,255,255))
  SetGadgetColor(Text_message, #PB_Gadget_BackColor,RGB(125,0,245))
  Button_pause = ButtonGadget(#PB_Any, 220, 50, 90, 60, "PAUSE")
  TrackBar_volume = TrackBarGadget(#PB_Any, 10, 20, 530, 25, 0, 10)
  Button_lecture = ButtonGadget(#PB_Any, 120, 50, 90, 60, "LECTURE")
  Button_Stop = ButtonGadget(#PB_Any, 320, 50, 90, 60, "STOP")
  Button_fichier = ButtonGadget(#PB_Any, 20, 50, 90, 60, "FICHIER...")
EndProcedure

; ----------------------------------------------------------------------
;
; PROCEDURES
;
; ----------------------------------------------------------------------

Procedure FMod_Initialiser()

  ;Déclarer l'objet FMOD System
  FMOD_System_Create(@fmodsystem)

  ;Initialiser le system (32 canaux) un seul suffirait pour cet exemple
  FMOD_System_Init(fmodsystem, 32, #FMOD_INIT_NORMAL, 0)
  
EndProcedure
  
Procedure FMOD_charger_son (Url$)
  
  Define Id_son
  
  
  ;CreateStream permet de commencer la lecture avant le chargement complet de l'url
  FMOD_System_CreateStream(fmodsystem, Ascii(Url$), #FMOD_CREATESTREAM, 0, @Id_son)
  
  ProcedureReturn Id_son
  
EndProcedure  



Procedure.s Convertion_affichage_temps (ms)

   Define Resultat$
   Define Minutes
   Define Secondes
   Define Heures
   Define Secondes$
   Define Minutes$
   Define Heures$
   
  Secondes = Mod (Int (ms / 1000),60)
  Minutes = Mod (Int(ms / 60000),60) 
  Heures = Mod (Int(ms / 3600000),60)
  
  If Secondes < 10
    Secondes$ = "0" + Str(Secondes) 
  Else
    Secondes$ = Str(Secondes)
  EndIf
  
  If Minutes < 10
     Minutes$= "0" + Str(Minutes) 
  Else
    Minutes$ = Str(Minutes)
  EndIf
  
 If Heures < 10 
   Heures$ = "0" + Str(Heures) 
  Else
    Heures$ =  Str(Heures)
  EndIf
  
  If Heures > 0
    Resultat$ = heures$ + ":" + minutes$ + ":" + secondes$
  Else
    If Minutes > 0
      Resultat$ = minutes$ + ":" + secondes$
    Else
      If Secondes > 0
        Resultat$ = secondes$ + "s"
      EndIf
    EndIf
  EndIf
    
  ProcedureReturn Resultat$ 
	
EndProcedure


Procedure Afficher_message (Message$)
  
  SetGadgetText (Text_message, Message$)
  
EndProcedure

Procedure Quitter()
  
  Define Result
  
  Result = MessageRequester("Quitter Radio Les FLoralies", "Nous Quitter ? Veuillez faire votre choix !", #PB_MessageRequester_YesNo)
  If Result = #PB_MessageRequester_Yes   
    ProcedureReturn 1
  Else                                   
    ProcedureReturn 0
  EndIf
  
EndProcedure

Procedure Initialiser()
  
  SetGadgetState(TrackBar_volume, 5) 
  
EndProcedure

Procedure FMOD_Jouer_son(*Son.Son_fmod_struct, Volume)
  
  ;On joue le son sur le canal 1
  FMOD_System_PlaySound(fmodsystem, 1, *Son\Sound, 0, @*Son\Channel)

  ;Et on ajuste le volume (le son est compris entre 0.0 et 1.0)
  *Son\Volume = Volume
  FMOD_Channel_SetVolume(*Son\Channel, Volume)

EndProcedure

Procedure FMOD_Arreter_son (*Son.Son_fmod_struct)
  FMOD_Channel_Stop(*Son\Channel)
EndProcedure

Procedure.i FMOD_DonnerPosition (*Son.Son_fmod_struct)
  
  ; Retourne la position en ms du fichier sonore lu
  
  Define CurrentPos
  Define Resultat
  FMOD_Channel_IsPlaying(*Son\Channel,@Resultat)
  
  If Resultat = #True
    FMOD_Channel_GetPosition(*Son\Channel,@CurrentPos,1)
  Else
    Resultat = -1
  EndIf
  
  ProcedureReturn Resultat
  
EndProcedure


Procedure FMOD_Donner_duree_son(*Son.Son_fmod_struct)
  
  Define Duree
  
  If *Son\Sound <> 0
    FMOD_Sound_GetLength (*Son\Sound, @Duree, #FMOD_TIMEUNIT_MS)
  Else
    Duree = -1
  EndIf
  
  ProcedureReturn Duree
  
EndProcedure

Procedure FMOD_Changer_volume (*Son.Son_fmod_struct, Volume)
  
  *Son\Volume = Volume
  FMOD_Channel_SetVolume(*Son\Channel, Volume)
  
EndProcedure

Procedure FMOD_Basculer_pause (*Son.Son_fmod_struct)
  
  FMOD_Channel_GetPaused(*Son\Channel, @*Son\PauseStatus)
        	    
  If *Son\PauseStatus = #False
    FMOD_Channel_SetPaused(*Son\Channel, #True) ;Pause
  Else
    FMOD_Channel_SetPaused(*Son\Channel, #False) ;Reprise de la lecture
  EndIf

EndProcedure

Procedure FMOD_Fermer_son (*Son.Son_fmod_struct)
  
  FMOD_Channel_Stop(*Son\Channel)
  
EndProcedure

Procedure FMOD_fermer()
  
  FMOD_System_Release(fmodsystem)
  
EndProcedure

Procedure.b FMOD_Determiner_EnPause (*Son.Son_fmod_struct)
  
  ; Retourne #True si en Pause, #False sinon
  Define IsPaused
  
  FMOD_Channel_GetPaused(*Son\Channel, @IsPaused)
  
  *Son\PauseStatus = IsPaused
  
  ProcedureReturn IsPaused
  
EndProcedure

Procedure.b FMOD_Determiner_EnLecture (*Son.Son_fmod_struct)
  
  ; Retourne #True si en Pause, #False sinon
  Define IsPlaying
  
  FMOD_Channel_IsPlaying(*Son\Channel, @IsPlaying)
  
  ProcedureReturn IsPlaying
  
EndProcedure


Procedure.b FMOD_Determiner_EstArrete (*Son.Son_fmod_struct)
  
    ; Retourne #True si en Pause, #False sinon
  Define IsStopped
  
  ;FMOD_Channel_IsStopped(*Son\Channel, @IsPlaying)
  
  ProcedureReturn IsStopped
  
EndProcedure


Procedure Charger_son()
  
  Protected StandardFile$ 
  Protected Pattern$
  Protected Pattern
  Protected NomFichier$

  StandardFile$ = "son.ogg"
  
  Pattern$ = "Fichier sonore (*.ogg)|*.ogg|All files (*.*)|*.*"
  Pattern = 0      
  
  NomFichier$ = OpenFileRequester("Fichier sonore", StandardFile$, Pattern$, Pattern)
  If NomFichier$ <> ""
    gSonLu\Url = NomFichier$
    gSonLu \Sound = FMOD_charger_son (NomFichier$)
    SetGadgetText (Text_message,"A lire : '" + NomFichier$ + "'")
  Else
    MessageRequester("Erreur de chemin", "Impossible de charger le fichier sonore !", 0)
  EndIf
      
EndProcedure  


; ----------------------------------------------------------------------
;
; PROGRAMME PRINCIPAL
;
; ----------------------------------------------------------------------


OpenWindow_0(0,0)
SetWindowTitle (Window_0, "Radio Les Floralies : Test ")
AddWindowTimer(Window_0, #TIMER01, 1000)

Afficher_message ("Bienvenue - hubert.bayre@orange.fr - version 1.0")

FMOD_Initialiser()

SetGadgetText (Text_message,"Choisissez une fichier à lire...")

Initialiser()

Repeat
  Select WaitWindowEvent(1)
      
		Case #PB_Event_CloseWindow
		  
		  gFini = Quitter()
		  
		Case #PB_Event_Gadget ; on a reçu un message en provenance d'un gadget PureBasic
		  
		  Select EventGadget()
		      
	        Case Button_fichier
	          
	          Charger_son()
	          
	        Case Button_stop
	          FMOD_Arreter_son (gSonLu)
	      
      	  Case Button_pause
      	    
      	    FMOD_Basculer_pause (gSonLu)
      	    
      	  Case Button_lecture
      	    
      	    FMOD_Jouer_son (gSonLu, 0.5)
            
          Case TrackBar_volume
            
            Define Volume
            Volume = GetGadgetState(TrackBar_volume)/10
            FMOD_Changer_volume(gSonLu, Volume)
              
       EndSelect
	
      Case #PB_Event_Timer
        
      		  Select EventTimer()
      		      
      		    Case #TIMER01	
      	    
      		      ;
      		      
      		  EndSelect		      
      		  
 	EndSelect

  FMOD_DonnerPosition (gSonLu)
  
  
Until gFini

FMOD_Fermer()
Merci !
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par hub73 »

Pour le fichier qui vient d'être lu est qui est arrêté peut être celà ?

Code : Tout sélectionner

Procedure.b FMOD_Determiner_EstArrete (*Son.Son_fmod_struct)
  
 ; Retourne #True si en Arrêté, #False sinon
  Define IsStopped
  Define IsPlaying
  Define IsPaused
  
  FMOD_Channel_GetPaused(*Son\Channel, @IsPaused)
  FMOD_Channel_IsPlaying(*Son\Channel, @IsPlaying)
  
  If IsPaused = #False And IsPlaying = #False
    IsStopped = #True
  Else
    IsStopped = #False
  EndIf
  
  ProcedureReturn IsStopped
  
EndProcedure
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par Ar-S »

Je n'arrive pas à utiliser les FMOD_Channel_GetPosition / SetPosition. Me semble pourtant avoir testé pas mal de trucs pourtant.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par hub73 »

J'utilise ce code pour utiliser FMOD. Je parviens à faire fonctionner les FMOD-_Channel_GetPosition / SetPosition

- J'ai créé une procédure 'EtreSon' pour remplacer IsSound que j'utilisais dans mon code initial. Même si cela semble fonctionner je n'en suis pas trop sur. J'utilisais isSound pour tester que le fichier chargé était ok avant un playsound, freesound, ...

Code : Tout sélectionner

; ----------------------------------------------------------------------
;
; FMOD SOUND Pour Radio les Floralies
;
; ----------------------------------------------------------------------

IncludeFile "fmodex.pbi"


#FMOD_SON_NESAITPAS = 0
#FMOD_SON_LECTURE = 1
#FMOD_SON_PAUSE = 2
#FMOD_SON_ARRET = 3

Global fmodsystem.i

Structure Son_fmod_struct
  Url.s
  Channel.i
  Sound.i
  Volume.f
  PauseStatus.b
 EndStructure
 
; ----------------------------------------------------------------------
;
; PROCEDURES
;
; ----------------------------------------------------------------------

Procedure FMod_Initialiser()

  ;Déclarer l'objet FMOD System
  FMOD_System_Create(@fmodsystem)

  ;Initialiser le system (32 canaux) un seul suffirait pour cet exemple
  FMOD_System_Init(fmodsystem, 32, #FMOD_INIT_NORMAL, 0)
  
EndProcedure
  
Procedure FMOD_Charger_Son (Url$)
  
  Define Id_son
  
  ;CreateStream permet de commencer la lecture avant le chargement complet de l'url
  FMOD_System_CreateStream(fmodsystem, Ascii(Url$), #FMOD_CREATESTREAM, 0, @Id_son)
  
  If Id_son = 0
    MessageRequester ("Erreur", "Fichier son ne peut être chargé '" + Url$ + "'")
  Else
    ;MessageRequester ("Erreur", "Fichier son chargé '" + Url$ + "'")
  EndIf
  
  ProcedureReturn Id_son
  
EndProcedure  

Procedure FMOD_Jouer_Son(*Son.Son_fmod_struct, Volume)
  
  ;On joue le son sur le canal 1
  
  If *Son <> 0
    
        FMOD_System_PlaySound(fmodsystem, 1, *Son\Sound, 0, @*Son\Channel)
      
        ;Et on ajuste le volume (le son est compris entre 0.0 et 1.0)
        *Son\Volume = Volume
        FMOD_Channel_SetVolume(*Son\Channel, Volume / 100)
    
  EndIf

EndProcedure

Procedure FMOD_Arreter_Son (*Son.Son_fmod_struct)
  FMOD_Channel_Stop(*Son\Channel)
EndProcedure

Procedure.i FMOD_DonnerPosition (*Son.Son_fmod_struct)
  
  ; Retourne la position en ms du fichier sonore lu
  
  Define CurrentPos
  Define Resultat
  FMOD_Channel_IsPlaying(*Son\Channel,@Resultat)
  
  If Resultat = #True
    FMOD_Channel_GetPosition(*Son\Channel,@CurrentPos,1)
    Resultat = CurrentPos
  Else
    Resultat = -1
  EndIf
  
  ProcedureReturn Resultat
  
EndProcedure

Procedure FMOD_Boucler_son (*Son.Son_fmod_struct, NombreBoucles)
  FMOD_Sound_SetLoopCount (*Son\Sound, NombreBoucles)
EndProcedure


Procedure FMOD_Donner_duree_son(*Son.Son_fmod_struct)
  
  Define Duree
  
  If *Son\Sound <> 0
    FMOD_Sound_GetLength (*Son\Sound, @Duree, #FMOD_TIMEUNIT_MS)
  Else
    Duree = -1
  EndIf
  
  ProcedureReturn Duree
  
EndProcedure

Procedure FMOD_Changer_volume (*Son.Son_fmod_struct, Volume)
  
  *Son\Volume = Volume
  FMOD_Channel_SetVolume(*Son\Channel, Volume / 100)
  
EndProcedure

Procedure FMOD_Pauser_lecture (*Son.Son_fmod_struct)
  
  FMOD_Channel_SetPaused(*Son\Channel, #True) ;Reprise de la lecture
  *Son\PauseStatus = #True
  
EndProcedure

Procedure FMOD_Reprise_lecture (*Son.Son_fmod_struct)
  
  FMOD_Channel_SetPaused(*Son\Channel, #False) ;Reprise de la lecture
  *Son\PauseStatus = #False
  
EndProcedure

Procedure FMOD_Basculer_pause (*Son.Son_fmod_struct)
  
  FMOD_Channel_GetPaused(*Son\Channel, @*Son\PauseStatus)
        	    
  If *Son\PauseStatus = #False
    FMOD_Channel_SetPaused(*Son\Channel, #True) ;Pause
    *Son\PauseStatus = #True
  Else
    FMOD_Channel_SetPaused(*Son\Channel, #False) ;Reprise de la lecture
    *Son\PauseStatus = #False
  EndIf

EndProcedure

Procedure FMOD_Liberer_son (*Son.Son_fmod_struct)
  
  FMOD_Channel_Stop(*Son\Channel)
  
EndProcedure

Procedure.b FMOD_Determiner_EnPause (*Son.Son_fmod_struct)
  
  ; Retourne #True si en Pause, #False sinon
  Define IsPaused
  
  FMOD_Channel_GetPaused(*Son\Channel, @IsPaused)
  
  *Son\PauseStatus = IsPaused
  
  ProcedureReturn IsPaused
  
EndProcedure

Procedure.b FMOD_Determiner_EnLecture (*Son.Son_fmod_struct)
  
  ; Retourne #True si en Pause, #False sinon
  Define IsPlaying
  
  FMOD_Channel_IsPlaying(*Son\Channel, @IsPlaying)
  
  ProcedureReturn IsPlaying
  
EndProcedure

Procedure.b FMOD_Determiner_Stop (*Son.Son_fmod_struct)
  
  Define Resultat
  
  If FMOD_Determiner_EnLecture (*Son) = #False
    If FMOD_Determiner_EnPause (*Son) = #False
      Resultat = #True
    Else
      Resultat = #False
    EndIf
  Else
    Resultat = #False
  EndIf
  
  ProcedureReturn Resultat
  
EndProcedure  

Procedure.b FMOD_EtreSon (*Son.Son_fmod_struct)
  
  Define Resultat
  
  If *Son = 0
    Resultat = #False
    ProcedureReturn Resultat
  EndIf
  
  If *Son\Sound <> 0
    Resultat = #True
  Else
    Resultat = #False
  EndIf
  
  ProcedureReturn Resultat
  
EndProcedure

Procedure.b FMOD_Determiner_EstArrete (*Son.Son_fmod_struct)
  
 ; Retourne #True si en Arrêté, #False sinon
  Define IsStopped
  Define IsPlaying
  Define IsPaused
  
  FMOD_Channel_GetPaused(*Son\Channel, @IsPaused)
  FMOD_Channel_IsPlaying(*Son\Channel, @IsPlaying)
  
  If IsPaused = #False 
    If IsPlaying = #False
      IsStopped = #True
    Else
      IsStopped = #False
    EndIf
  Else
    IsStopped = #False
  EndIf
  
  ProcedureReturn IsStopped
  
EndProcedure

Procedure.i FMOD_Determiner_status_son(*Son.Son_fmod_struct)
  
  Define Statut
  
  If FMOD_Determiner_EnLecture (*Son) = #True
    Statut = #FMOD_SON_LECTURE
  Else
    If FMOD_Determiner_EnPause (*Son) = #True
      Statut = #FMOD_SON_PAUSE
    Else
      If FMOD_Determiner_EstArrete (*Son) = #True
        Statut = #FMOD_SON_ARRET
      Else
        Statut = #FMOD_SON_NESAITPAS
      EndIf
    EndIf
  EndIf
    
  ProcedureReturn Statut
  
EndProcedure

Procedure FMOD_Arreter_tous_les_sons()
EndProcedure

Procedure FMOD_fermer()
  
  FMOD_System_Release(fmodsystem)
  
EndProcedure

; FIN DE FICHIER ----

hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par hub73 »

Par contre ce que je ne sais pas faire c'est récupérer les messages d'erreur de FMOD.
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par hub73 »

Par contre ce que je ne sais pas faire c'est récupérer les messages d'erreur de FMOD. J'ai vu
Procedure.s FMOD_ErrorString(errcode.l)
Mais va savoir comment utiliser tout çà !
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: FMOD Lecture d'un fichier mp3 ou ogg

Message par hub73 »

J'ai trouvé !
Répondre