Lire des mp3 sous ubuntu

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

Re: Lire des mp3 sous ubuntu

Message par hub73 »

C'est bien çà, un pausemovie() mais cela ne fonctionne pas. Il ne pause pas le fichier. Il continue à le lire. Le jingle si lit en même temps. JE ne sais pas si ça vient de mon code ou un mauvais fonctionnement d'ubuntu.

Code : Tout sélectionner

Procedure Jouer_interruption(NomFichier$)
 
  Define SonLocal
  Define Window_2
 
  If MovieStatus(gSonLu) > 0
   
    PauseMovie(gSonLu)
    Delay(50)
    Ajouter_au_log ("Pause fichier en cours.")
   
  EndIf
   
  SonLocal = LoadMovie(#PB_Any, NomFichier$)
 
  If SonLocal <> 0
   
    Ajouter_au_log ("Lecture du fichier interruption '" + NomFichier$ + "'")
    Afficher_message ("Lecture du fichier interruption '" + NomFichier$ + "'")
    Window_2 = OpenWindow(#PB_Any, 100, 150, 800, 100, "Lecture d'un fichier mp3 interruption : '" + NomFichier$ + "'")
    PlayMovie(SonLocal ,WindowID(Window_2))
    HideWindow (Window_2, #True)
   
    SetActiveWindow(Window_0)
   
    While MovieStatus(SonLocal) > 0 : Wend
   
    Delay(50)
    FreeMovie (SonLocal)
   
    CloseWindow (Window_2)
   
    If MovieStatus(gSonLu) = -1
      ResumeMovie(gSonLu)
      Ajouter_au_log ("Reprise du dernier fichier en cours.")
      Afficher_message ("Reprise du dernier fichier en cours.")
    EndIf
   
  Else
   
    Ajouter_au_log("ERREUR : Impossible de lire le fichier'" + NomFichier$ + "'")
   
  EndIf

  EndProcedure
Dernière modification par hub73 le mer. 20/janv./2021 22:28, modifié 1 fois.
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: Lire des mp3 sous ubuntu

Message par hub73 »

Code : Tout sélectionner

; ----------------------------------------------------------------------
;
; PROGRAMME d'AUTOMATION RADIO DES FLORALIES
;
; ----------------------------------------------------------------------

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

EnableExplicit

XIncludeFile "formulaire_programme_automation.pbf"

#LECTURE_LISTE_OFF = 0
#LECTURE_LISTE_ON = 1
#LECTURE_LISTE_INIT = 2
#LECTURE_LISTE_ITEM_CHARGER =  3
#LECTURE_LISTE_ITEM_EN_COURS = 4
#LECTURE_LISTE_ITEM_FINIE = 5
#LECTURE_LISTE_ITEM_SUIVANT = 6
#LECTURE_LISTE_TERMINEE = 7
#LECTURE_LISTE_BOUCLER = 8

Global Event
Global Fini
 
Global gEtat_lecture 
Global gItem_lecture
Global gMaxItem_lecture
Global gNbBoucle_lecture

Global gSonLu
Global gSonTest 


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

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

Procedure Ajouter_au_log (Message$)
  
  Define Texte$
  
  Texte$ = FormatDate("%hh:%ii:%ss", Date()) + " - " + FormatDate(" %dd/%mm/%yyyy", Date()) + " : " + Message$
  AddGadgetItem (Listview_log, -1, Texte$)
  SetGadgetState (Listview_log, CountGadgetItems(Listview_log)-1)
  
EndProcedure

Procedure Arreter_son()
  
  gEtat_lecture = #LECTURE_LISTE_OFF
  gMaxItem_lecture = 0
  gItem_lecture = 0
  Ajouter_au_log ("Arrêt du son et de la playlist.")
  Afficher_message ("Arrêt du son et de la playlist.")
  If IsMovie(gSonTest )
    StopMovie (gSonTest )
  EndIf
  If IsMovie(gSonLu)
    StopMovie (gSonLu)
  EndIf
  
EndProcedure

Procedure Quitter()
  
  Define Result
  
  Result = MessageRequester("Quitter le programme", "Veuillez faire votre choix :", #PB_MessageRequester_YesNo)
  If Result = #PB_MessageRequester_Yes   
    ProcedureReturn 1
  Else                                   
    ProcedureReturn 0
  EndIf
  
EndProcedure

Procedure Creer_nouvelle_liste()
  
  Define Result
  
  Result = MessageRequester("Créer une nouvelle liste", "Cette action effacera la liste en cours...", #PB_MessageRequester_YesNo)
  
  If Result = #PB_MessageRequester_Yes    
    
    ClearGadgetItems(Listview_playlist)
    Afficher_message ("Nouvelle playlist")
    SetWindowTitle (Window_0, "Programme Automation Radio Les Floralies : " + "Nouvelle")
    gEtat_lecture = #LECTURE_LISTE_OFF
    gMaxItem_lecture = 0
    gItem_lecture = 0
    gNbBoucle_lecture = 0
    Arreter_son()
    
    ProcedureReturn 1
    
  Else
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

Procedure Enlever_element()
  
  Define Result
  
  Result = GetGadgetState(Listview_playlist)
  If Result <> -1
    RemoveGadgetItem(Listview_playlist, Result)
  EndIf
  
EndProcedure

Procedure Jouer_element()
  
  Define Resultat
  Define NomFichier$
  
  Resultat = GetGadgetState(Listview_playlist)
  If Resultat<> -1
    NomFichier$ = GetGadgetItemText(Listview_playlist, Resultat)
    
    gSonTest = LoadMovie(#PB_Any, NomFichier$)
    
    If gSonTest <> 0
      
      OpenWindow(0, 100, 150, MovieWidth(gSonTest), MovieHeight(gSonTest), "Lecture d'un fichier mp3 en test.")
      PlayMovie(gSonTest , WindowID(0))
      
    Else
      
      MessageRequester("Erreur", "Impossible de lire le fichier son mp3 de test !", 0)
      
    EndIf
    
  Else
    
    MessageRequester("Erreur", "Impossible de lire le fichier son mp3 de test !", 0)
    
  EndIf
    
EndProcedure

Procedure Initier_lecture_liste()
  
 gMaxItem_lecture = CountGadgetItems(Listview_playlist)-1
  
  If gMaxItem_lecture <> -1
  
    Ajouter_au_log ("Initialisation de la lecture de la playlist.")
    Afficher_message ("Initialisation de la  lecture de la playlist.")
    gItem_lecture = 0
    gEtat_lecture = #LECTURE_LISTE_ITEM_SUIVANT
  Else
    MessageRequester("Erreur", "La Playliste est vide !", 0)
    gItem_lecture = 0
    gMaxItem_lecture = 0
    gEtat_lecture = #LECTURE_LISTE_OFF
  EndIf
  
EndProcedure

Procedure Boucler_lecture_liste()
  
  gMaxItem_lecture = CountGadgetItems(Listview_playlist)-1
  
  If gMaxItem_lecture <> -1
    gNbBoucle_lecture = gNbBoucle_lecture + 1
    
    Ajouter_au_log ("Bouclage " + gNbBoucle_lecture + " de la lecture de la playlist.")
    Afficher_message ("Bouclage " + gNbBoucle_lecture + " de la  lecture de la playlist.")
    gItem_lecture = 0
    gEtat_lecture = #LECTURE_LISTE_ITEM_SUIVANT
    
  Else
    MessageRequester("Erreur", "La Playliste est vide !", 0)
    gItem_lecture = 0
    gMaxItem_lecture = 0
    gEtat_lecture = #LECTURE_LISTE_OFF
  EndIf
  
EndProcedure


Procedure Gerer_liste_lecture()
  
    If gItem_lecture <= gMaxItem_lecture
      
      gEtat_lecture = #LECTURE_LISTE_ITEM_CHARGER
      gItem_lecture = gItem_lecture +1   
      
    EndIf
      
EndProcedure

Procedure Determiner_lecture_element_liste_finie()
    
  If MovieStatus(gSonLu) = 0
    
     If gItem_lecture <=  gMaxItem_lecture
        
        gEtat_lecture = #LECTURE_LISTE_ITEM_FINIE
        
      Else
        
        gEtat_lecture = #LECTURE_LISTE_TERMINEE
        
      EndIf
      
    Delay(50) ; laisse le temps au player extérieur de démarrer
       
  EndIf    
    
EndProcedure

Procedure Charger_et_jouer_element_liste()
  
  Define NomFichier$
  Define Window_1
  
    NomFichier$ = GetGadgetItemText(Listview_playlist, gItem_lecture-1)
    
    gSonLu = LoadMovie(#PB_Any, NomFichier$) 
    
    If gSonLu <> 0
      
      Ajouter_au_log ("Lecture du fichier '" + NomFichier$ + "'")
      Afficher_message ("Lecture du fichier '" + NomFichier$ + "'")
      Window_1 = OpenWindow(#PB_Any, 100, 150, 800, 100, "Lecture d'un fichier mp3 : '" + NomFichier$ + "'")
      PlayMovie(gSonLu,WindowID(Window_1))
      HideWindow (Window_1, #True)
      SetActiveWindow(Window_0)
      gEtat_lecture = #LECTURE_LISTE_ITEM_EN_COURS
      
    Else
      
      Ajouter_au_log("ERREUR : Impossible de lire le fichier'" + NomFichier$ + "'")
      gEtat_lecture = #LECTURE_LISTE_ITEM_SUIVANT
      
    EndIf
    
  EndProcedure
  Procedure Terminer_lecture_liste()
    
  Ajouter_au_log ("Fin de la lecture de la playlist.")
  Afficher_message ("Fin de la lecture de la playlist.")
  gItem_lecture = 0
  gMaxItem_lecture = 0
  gEtat_lecture = #LECTURE_LISTE_BOUCLER
    
EndProcedure

Procedure Monter_dans_liste()
EndProcedure

Procedure Descendre_dans_liste()
  
EndProcedure

Procedure Modifier_element()
  
  Define Position
  Define Fichier$
  
   Position = GetGadgetState(Listview_playlist)
   If Position <> -1
    Fichier$ = OpenFileRequester("Choisissez un fichier mp3 de remplacement", "", "mp3 files|*.mp3",0)
    If Fichier$ <> ""
      SetGadgetItemText(Listview_playlist, Position, Fichier$)
    Else
      MessageRequester("Erreur de fichier", "Impossible de modifier l'élément !", 0)
    EndIf     
  EndIf
  
EndProcedure

Procedure Charger_liste()
  
  Define StandardFile$ 
  Define Pattern$
  Define Pattern
  Define NomFichier$
  
  StandardFile$ = "texte.txt"   ; set initial file+path to display
  ; With next string we will set the search patterns ("|" as separator) for file displaying:
  ;  1st: "Text (*.txt)" as name, ".txt" and ".bat" as allowed extension
  ;  2nd: "PureBasic (*.pb)" as name, ".pb" as allowed extension
  ;  3rd: "All files (*.*) as name, "*.*" as allowed extension, valid for all files
  Pattern$ = "Text (*.txt)|*.txt|All files (*.*)|*.*"
  Pattern = 0    ; use the first of the three possible patterns as standard
  NomFichier$ = OpenFileRequester("Chargement d'une playliste", StandardFile$, Pattern$, Pattern)
  If NomFichier$
    If ReadFile(0, NomFichier$)
        ClearGadgetItems(Listview_playlist)
        While Eof(0) = 0           
          AddGadgetItem ( Listview_playlist, -1, ReadString(0))
        Wend
        CloseFile(0)
        Ajouter_au_log ("Fichier playlist chargé.")
        Afficher_message ("Fichier playlist chargé '" + NomFichier$ + "'.")
        SetWindowTitle (Window_0, "Programme Automation Radio Les Floralies : " + NomFichier$)
        
        gEtat_lecture = #LECTURE_LISTE_OFF
        gMaxItem_lecture = 0
        gItem_lecture = 0
        gNbBoucle_lecture = 0
        Arreter_son()
        
      Else
        MessageRequester("Information","Impossible d'ouvrir le fichier !")
      EndIf  
  Else
    Afficher_message ("Pas de playliste chargée.") 
  EndIf  
  
EndProcedure

Procedure Sauvegarder_liste()
  
  
  Define StandardFile$ 
  Define Pattern$
  Define Pattern
  Define NomFichier$
  Define i
    
  
  StandardFile$ = "texte.txt"   ; set initial file+path to display
  
  ; With next string we will set the search patterns ("|" as separator) for file displaying:
  ;  1st: "Text (*.txt)" as name, ".txt" and ".bat" as allowed extension
  ;  2nd: "PureBasic (*.pb)" as name, ".pb" as allowed extension
  ;  3rd: "All files (*.*) as name, "*.*" as allowed extension, valid for all files
  
  Pattern$ = "Text (*.txt)|*.txt|All files (*.*)|*.*"
  Pattern = 0    ; use the first of the three possible patterns as standard
  NomFichier$ = SaveFileRequester("Indiquez le nom du fichier à sauvegarder", StandardFile$, Pattern$, Pattern)
  
  If NomFichier$
    If CreateFile(0, NomFichier$)
      For i=0 To CountGadgetItems(Listview_playlist)-1
        WriteStringN(0,GetGadgetItemText (Listview_playlist, i))
      Next
      CloseFile(0)
      Afficher_message ("Playlist sauvegardée '" + NomFichier$ + "'.")
      SetWindowTitle (Window_0, "Programme Automation Radio Les Floralies : " + NomFichier$)
      
      gEtat_lecture = #LECTURE_LISTE_OFF
      gMaxItem_lecture = 0
      gItem_lecture = 0
      gNbBoucle_lecture = 0
      Arreter_son()
      
    Else
      MessageRequester("Information","Impossible de créer le fichier")
    EndIf
  Else
    Afficher_message ("Pas de playliste enregistrée.") 
  EndIf
  
EndProcedure

Procedure Ajouter_fichier ()
  
  Define Fichier$
  
  Fichier$ = OpenFileRequester("Choisissez un fichier mp3", "", "mp3 files|*.mp3",0)
  If Fichier$ <> ""
    AddGadgetItem ( Listview_playlist, -1, Fichier$)
  Else
    MessageRequester("Erreur de fichier", "Impossible d'ajouter le fichier à la liste.", 0)
  EndIf
  
EndProcedure

Procedure Ajouter_interruption()
  
  Define Fichier$
  Define Chaine$
  
  Fichier$ = OpenFileRequester("Choisissez un fichier mp3", "", "mp3 files|*.mp3",0)
  If Fichier$ <> ""
    Chaine$ = GetGadgetText (String_quand_interruption) + " | " + Fichier$   
    AddGadgetItem ( ListView_interruption, -1, Chaine$)
  Else
    MessageRequester("Erreur", "Impossible d'ajouter le fichier à la liste.", 0)
  EndIf
  
EndProcedure

Procedure Modifier_interruption()
  
  Define Position
  Define Fichier$
  Define Chaine$
  
  Position = GetGadgetState(ListView_interruption)
  If Position <> -1
   
   Fichier$ = OpenFileRequester("Choisissez un fichier mp3", "", "mp3 files|*.mp3",0)
   If Fichier$ <> ""
      Chaine$ = GetGadgetText (String_quand_interruption) + " | " + Fichier$   
      SetGadgetItemText(ListView_interruption, Position, Chaine$)
    Else
      MessageRequester("Erreur", "Impossible de modifier l'élément !", 0)
    EndIf
  EndIf
  
EndProcedure

Procedure Supprimer_interruption()
  
  Define Result
  
  Result = GetGadgetState(ListView_interruption)
  
  Define Result
  
  If Result <> -1
    RemoveGadgetItem(ListView_interruption, Result)
  EndIf  
  
EndProcedure

Procedure Creer_nouvelle_interruption()
  
  Define Result
  
  Result = MessageRequester("Créer une nouvelle liste d'interruptions", "Cette action effacera la liste en cours...", #PB_MessageRequester_YesNo)
  
  If Result = #PB_MessageRequester_Yes    
    
    ClearGadgetItems(Listview_interruption)
    Afficher_message ("Nouvelle liste d'interruptions")
    SetGadgetText (Text_titre_interruption, "Interruption : " + "Nouvelle")
    
    ProcedureReturn 1
  Else
    ProcedureReturn 0
  EndIf  
  
EndProcedure

Procedure Charger_interruption()
  
  Define StandardFile$
  Define Pattern$
  Define Pattern
  Define NomFichier$
  
  StandardFile$ = "interruption.dat"   ; set initial file+path to display
  ; With next string we will set the search patterns ("|" as separator) for file displaying:
  ;  1st: "Text (*.txt)" as name, ".txt" and ".bat" as allowed extension
  ;  2nd: "PureBasic (*.pb)" as name, ".pb" as allowed extension
  ;  3rd: "All files (*.*) as name, "*.*" as allowed extension, valid for all files
  Pattern$ = "Text (*.dat)|*.dat|All files (*.*)|*.*"
  Pattern = 0    ; use the first of the three possible patterns as standard
  NomFichier$ = OpenFileRequester("Chargement d'une liste d'interruptions", StandardFile$, Pattern$, Pattern)
  If NomFichier$
    If ReadFile(0, NomFichier$)
        ClearGadgetItems(Listview_interruption)
        While Eof(0) = 0           
          AddGadgetItem ( Listview_interruption, -1, ReadString(0))
        Wend
        CloseFile(0)
        Ajouter_au_log ("Fichier d'interruptions chargé.")
        Afficher_message ("Fichier d'interruption chargé '" + NomFichier$ + "'.")
        SetGadgetText (Text_titre_interruption, "Interruption : " + NomFichier$)
      Else
        MessageRequester("Information","Impossible d'ouvrir le fichier !")
      EndIf  
  Else
    Afficher_message ("Pas de liste d'interruptions chargée.") 
  EndIf  
  
EndProcedure

Procedure Sauvegarder_interruption()
  
  Define StandardFile$
  Define Pattern$
  Define Pattern
  Define NomFichier$
  Define i
  
  StandardFile$ = "interruption.dat"    ; set initial file+path to display
  
  ; With next string we will set the search patterns ("|" as separator) for file displaying:
  ;  1st: "Text (*.txt)" as name, ".txt" and ".bat" as allowed extension
  ;  2nd: "PureBasic (*.pb)" as name, ".pb" as allowed extension
  ;  3rd: "All files (*.*) as name, "*.*" as allowed extension, valid for all files
  
  Pattern$ = "Text (*.dat)|*.dat|All files (*.*)|*.*"
  Pattern = 0    ; use the first of the three possible patterns as standard
  NomFichier$ = SaveFileRequester("Indiquez le nom du fichier à sauvegarder", StandardFile$, Pattern$, Pattern)
  
  If NomFichier$
    If CreateFile(0, NomFichier$)
      For i=0 To CountGadgetItems(Listview_interruption)-1
        WriteStringN(0,GetGadgetItemText (Listview_interruption, i))
      Next
      CloseFile(0)
      Afficher_message ("Fichier d'interruption sauvegardé '" + NomFichier$ + "'.")
      SetGadgetText (Text_titre_interruption, "Interruption : " + NomFichier$)
    Else
      MessageRequester("Information","Impossible de créer le fichier")
    EndIf
  Else
    Afficher_message ("Pas de liste d'interruptions enregistré.") 
  EndIf
  
EndProcedure

Procedure Jouer_interruption(NomFichier$)
  
  Define SonLocal
  Define Window_2
  
  If MovieStatus(gSonLu) > 0
    
    PauseMovie(gSonLu)
    Delay(50)
    Ajouter_au_log ("Pause fichier en cours.")
    
  EndIf
    
  SonLocal = LoadMovie(#PB_Any, NomFichier$)
  
  If SonLocal <> 0
    
    Ajouter_au_log ("Lecture du fichier interruption '" + NomFichier$ + "'")
    Afficher_message ("Lecture du fichier interruption '" + NomFichier$ + "'")
    Window_2 = OpenWindow(#PB_Any, 100, 150, 800, 100, "Lecture d'un fichier mp3 interruption : '" + NomFichier$ + "'")
    PlayMovie(SonLocal ,WindowID(Window_2))
    HideWindow (Window_2, #True)
    
    SetActiveWindow(Window_0)
    
    While MovieStatus(SonLocal) > 0 : Wend
    
    Delay(50)
    FreeMovie (SonLocal)
    
    CloseWindow (Window_2)
    
    If MovieStatus(gSonLu) = -1
      ResumeMovie(gSonLu)
      Ajouter_au_log ("Reprise du dernier fichier en cours.")
      Afficher_message ("Reprise du dernier fichier en cours.")
    EndIf
    
  Else
    
    Ajouter_au_log("ERREUR : Impossible de lire le fichier'" + NomFichier$ + "'")
    
  EndIf
 
  EndProcedure
  
  
  Procedure Gerer_interruptions()
    
    Define Heures_actuelle
    Define Minutes_actuelle
    Define Secondes_actuelle
    
    Define Heures
    Define Minutes
    
    Define Chaine$
    Define Fichier$
    Define i
    
  
  Heures_actuelle = Val (FormatDate("%hh", Date()))
  Minutes_actuelle = Val(FormatDate("%ii", Date()))
  Secondes_actuelle = Val(FormatDate("%ss", Date()))
  
  For i=0 To CountGadgetItems(Listview_interruption)-1
    
   Chaine$ = GetGadgetItemText (Listview_interruption, i)
   Heures = Val( Mid(Chaine$, 1,2))
   Minutes = Val(Mid(Chaine$, 4,2))
   Fichier$ = Trim(Mid(Chaine$, 8))
 
   If Heures_actuelle = Heures
     If Minutes_actuelle = Minutes
       If Secondes_actuelle = 0
         Jouer_interruption (Fichier$)
         Delay (1000) ; pour passer à la seconde suivante et ne pas répéter
       EndIf
     EndIf
   EndIf
 
 Next

EndProcedure

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

OpenWindow_0(0,0)
SetWindowTitle (Window_0, "Programme Automation Radio Les Floralies")
HideWindow(Window_0, #False,#PB_Window_ScreenCentered)

Ajouter_au_log ("Démarrage du programme...")
Afficher_message ("Bienvenue - hubert.bayre@orange.fr - version 0.1")

If InitMovie() = 0
  Ajouter_au_log ("ERREUR : Système de lecture non initialisé !")
  MessageRequester("Erreur", "Système de lecture non initialisé !", 0)
EndIf

gEtat_lecture = #LECTURE_LISTE_OFF
gMaxItem_lecture = 0
gItem_lecture = 0
gNbBoucle_lecture = 0

Repeat
	Event = WindowEvent()
	If Event
		Select Event
			Case #PB_Event_CloseWindow
				Fini = 1
			Case #PB_Event_Gadget ; on a reçu un message en provenance d'un gadget PureBasic
			  Select EventGadget()
			    Case Button_ajouter_fichier
			      Ajouter_fichier()
			    Case Button_enlever_element
			      Enlever_element()
			    Case Button_monter_element
			      Monter_dans_liste()
			    Case Button_descendre_element
			      Descendre_dans_liste()
			    Case Button_jouer_element
			      Jouer_element()
			    Case Button_modifier_element
			      Modifier_element()
			    Case Button_nouvelle_liste
			      Creer_nouvelle_liste()
			    Case Button_charger_liste
			      Charger_liste()
			    Case Button_sauvegarder_liste
			      Sauvegarder_liste()
			    Case Button_jouer_liste
			      If gEtat_lecture = #LECTURE_LISTE_OFF
			        gEtat_lecture = #LECTURE_LISTE_INIT
			      Else
			        MessageRequester("ERREUR", "La playlist est déjà en cours de lecture !", 0)
			       EndIf
			    Case Button_stop
			      Arreter_son()
			    Case Button_interruption_ajouter
			      Ajouter_interruption()
			    Case Button_interruption_supprimer
			      Supprimer_interruption()
			    Case Button_interruption_modifier
			      Modifier_interruption()
			    Case Button_interruption_nouveau
			      Creer_nouvelle_interruption()
			    Case Button_interruption_charger
			      Charger_interruption()
			    Case Button_interruption_sauvegarder
			      Sauvegarder_interruption()
			    Case Button_quitter
               Fini = Quitter()
			    EndSelect
		EndSelect
	Else
		Delay(2)
	EndIf
	
	Select gEtat_lecture
	  Case #LECTURE_LISTE_OFF
	    ; rien
	  Case #LECTURE_LISTE_ON
	    Gerer_liste_lecture()
	  Case #LECTURE_LISTE_INIT
	    Initier_lecture_liste()
	  Case #LECTURE_LISTE_ITEM_CHARGER
	    Charger_et_jouer_element_liste()
	  Case #LECTURE_LISTE_ITEM_SUIVANT
	    Gerer_liste_lecture()
	  Case #LECTURE_LISTE_ITEM_EN_COURS
	    Determiner_lecture_element_liste_finie()
	  Case #LECTURE_LISTE_ITEM_FINIE
	    Gerer_liste_lecture()
	  Case #LECTURE_LISTE_TERMINEE
	    Terminer_lecture_liste()	    
	  Case #LECTURE_LISTE_BOUCLER
	    Boucler_lecture_liste()
	EndSelect
	
	Gerer_interruptions()
	
	SetGadgetText (Text_titre, FormatDate(" %dd/%mm/%yyyy", Date()) + " - "  + "Automation Radio Les Floralies " + " - " + FormatDate("%hh:%ii:%ss", Date()))
	
Until fini
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: Lire des mp3 sous ubuntu

Message par hub73 »

Finalement je supprime l'utilisation de la librairie movie() pour de l'Ogg. Je convertirai mes fichiers. Le programme en sera que plus sérieux. La çà fait un peu bidouille même si çà fonctionne !
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Lire des mp3 sous ubuntu

Message par venom »

Ok ok du coup tu pars sur la lib audio ?
Le OGG reste un bon format pas trop lourd je trouve.







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: Lire des mp3 sous ubuntu

Message par hub73 »

Oui. Du coup j'ai pu améliorer la qualité. Je n'ai plus ces fenêtres qui s'ouvraient. Et cette fois les coupures jingles fonctionnent ! J'ai juste l'impression qu'il y a un petit temps de latence lors des chargements des fichiers ogg.
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Lire des mp3 sous ubuntu

Message par venom »

Ok. Cool si ça fonctionne.

Tu converti avec quoi tes MP3 ?







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: Lire des mp3 sous ubuntu

Message par hub73 »

SoundConverter. Il est rapide et facile d'utilisation. Il propose tout un tas de paramètres intéressants lors de la conversion en lot. C'est l'étape avant la diffusion. Les logiciels que j'utilise sous windows fonctionnent en mp3. WavePad, MixPad. L'enregistreur physique réalise l'enregistrement en mp3 à la base.

Le passage à la librairie 'sound()' me permet d'afficher des informations sur la position et la durée des fichiers, c'est plus pratique. La seule chose étrange est la lecture au démarrage qui ne s'effectue pas de suite. Il doit peut être décompresser ou mettre en cache lors du loadsound. Pour la suite des fichiers lus, il n'y a pas ce temps 'de chargement'.
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: Lire des mp3 sous ubuntu

Message par hub73 »

Le temps de latence disparait si j'utilise #PB_Sound_Streaming en option du LoadSound. Mais il devient alors impossible d'avoir la longueur et la position du fichier son Ogg alors lu !
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Lire des mp3 sous ubuntu

Message par venom »

Ah tiens, je n'ai jamais fait attention à ça. :?






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: Lire des mp3 sous ubuntu

Message par hub73 »

C'est indiqué dans la documentation. Du coup en mode streaming beaucoup de fonctions audios ne sont plus disponibles. PauseSound() et RestoreSound() par exemple. Donc en streaming je ne peux plus stopper un morceau, jouer le jingle et continuer le morceau... Il est joué 'au dessus'.
.
En mode non streaming. Je ne sais pas si c'est intéressant de charger d'abord tous les fichiers en loadsound (ce qui provoquera un long temps de chargement en début de programme ce qui n'est pas grave.), puis utiliser des loadsound ensuite.

Je ne sais pas du tout comment cela fonctionne. Si c'est stocké dans la mémoire vive ou autre.
J'ai recherché s'il y avait des fonctions purebasic qui indiquaient l'utilisation de la mémoire, mais je n'ai pas trouvé.
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Lire des mp3 sous ubuntu

Message par venom »

hub73 a écrit :C'est indiqué dans la documentation. Du coup en mode streaming beaucoup de fonctions audios ne sont plus disponibles. PauseSound() et RestoreSound() par exemple. Donc en streaming je ne peux plus stopper un morceau, jouer le jingle et continuer le morceau... Il est joué 'au dessus'.
Non, avec #PB_Sound_Streaming tu dois indiqué le canal du son jouer. Pour que purebasic sache sur quel son il doit faire tel ou tel action.

exemple basique qui fonctionne :wink: :

Code : Tout sélectionner

InitSound()           ; Initialisation des Sons
UseOGGSoundDecoder()  ; Utilisation des fichiers ogg

; Chargement d'un son depuis un fichier
LoadSound(27, #PB_Compiler_Home +"Examples\3D\Data\Siren.ogg")

; Le son joue en boucle (#PB_Sound_Loop) et en multi channel (#PB_Sound_MultiChannel)
canal = PlaySound(27, #PB_Sound_Loop|#PB_Sound_MultiChannel, 20) ; canal en debut de ligne renvoie le canal du son jouer

MessageRequester("Info", "Ok pour pause."+#CRLF$+"canal = "+canal)
  PauseSound(27, canal) ; on fait pause en précisent le canal
 
MessageRequester("Info", "Ok pour reprendre.")
  ResumeSound(27, canal) ; on reprend en précisent a nouveau le canal
 
MessageRequester("Info", "Ok pour quitter.")
FreeSound(27) ; on supprime de la mémoire avant de quitter
End ; on quitte





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: Lire des mp3 sous ubuntu

Message par hub73 »

Ok. Merci Venom. Je tenterai à nouveau. Sans streaming le programme marche et le son est diffusé sans problème : http://hbayre.fr/radio/player/
Comme tout tourne en boucle, une fois le fichier chargé une première fois, ensuite il n'a plus le soucis du temps 'de cache'.
Juste une autre question au passage. Purebasic fonctionne t-il sur un Raspberry PI4 ? (Il semblerai que non, je n'y suis pas parvenu, ce serait par rapport au processeur du PI).
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Lire des mp3 sous ubuntu

Message par venom »

Cool. Le principal, c'est que ça fonctionne comme tu le souhaites. :wink:
hub73 a écrit :Purebasic fonctionne t-il sur un Raspberry PI4 ? (Il semblerai que non, je n'y suis pas parvenu, ce serait par rapport au processeur du PI).
Non PureBasic ne fonctionne pas sous PI pour les raisons que tu as cité ci-dessus :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre