PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Lire les fichier son les uns apres les autres
Lire les fichier son les uns apres les autres
Iniciado por Christ_8021, ago., 09 2020 7:57 PM - 5 respostas
Publicado em agosto, 09 2020 - 7:57 PM
Bonsoir,

Je travaille sur un petit programme qui utilise une base de donnée, qui regroupe les historique des bataille de la 2e GM. Je souhaiterai que lorsque l'ont parcoure les enregistrements des fichiers son soient lus (musique de fond).
Avec un fichier cela fonctionne avec ce code :
MultimédiaOuvre(MM_Multimedia1,"B:\Projet\Bataille_2GM\Musiques\Siegfried_line.mp3")
MultimédiaJoue(MM_Multimedia1)
Malheureusement je ne sais pas comment faire pour lire le fichier suivant à la fin du précédent (sans passer par une bd.

Si quelqu'un peut me donner quelques pistes...

Cordialement.
Membro registado
227 mensagems
Popularité : +18 (20 votes)
Publicado em agosto, 10 2020 - 12:33 PM
Bonjour Christ_8021,

Si je vous ai bien compris.
Vous avez une bdd qui contient vos historique des bataille de la 2e GM
Vous les afficher à l'utilisateur et quand ce dernier choisi une bataille (dans une liste, une table...) vous voulez lancer une musique spécifique qui correspond à la bataille
Dans ce cas la, vous savez déjà sur le papier comment relier les musiques avec les batailles donc oui vous n'avez plus qu'à les relier dans votre bdd (le titre de la musique)

Vous faites la liste des musiques à jouer pour la bataille
Je ferrais une procédure en parallèle pour pas bloquer votre utilisateur
où à l'intérieur je ferait quelque chose du genre:
- recherche des musique à jouer dans la bdd en fonction de la bataille
- recherche des musiques sur le disques
MultimédiaFerme ou MultimédiaFin pour arrêter le son de la bataille précédente si il y en a une tester avec MultimédiaEtat
MultimédiaOuvre
MultimédiaJoue
MultimédiaDurée https://doc.pcsoft.fr/fr-FR/?1000017211&name=multimediaduree_fonction ===> pour savoir quand jouer la prochaine musique
on attend en parallèle que la musique soit fini et on lance la prochaine


Qu'il n'y ait qu'une chanson ou toute une playliste à jouer à chaque fois il faut juste que quand l'utilisateur passe à la bataille suivante ( action à déclencher au clique ou à la sélection dans la table) vous lancez votre procédure qui va couper la musique en cour et lancer les nouvelles l'une après l'autre.


En espérant avoir pu vous aider.
Cordialement
Publicado em agosto, 10 2020 - 1:14 PM
Bonjour,

Ce n'est pas tout a fait ça. Néanmoins je vous remercie d'avoir pris de votre temps et je garde en mémoire votre réponse pour l'utiliser sur un autre programme.

Pour celui que j'essai de produire, l'utilisateur final entendra une playlists de musique (Pour l'instant 4 chansons) qui doit tourner en boucle.
Ce que je n'arrive pas a faire c'est que la 2e musique joue a la fin de la première, puis que la troisième se joue à la fin de la seconde.

en vous remerciant encore de votre temps passé.

Cordialement
Membro registado
227 mensagems
Popularité : +18 (20 votes)
Publicado em agosto, 17 2020 - 5:21 PM
Bonjour,

Dans un traitement parallèle tant que le média est ouvert vous pouvez tester
l'état du média si il est arrêter avec MultimédiaEtat(<Champ Multimédia>) = MultimédiaEtatArrêt
ou
si votre fichier média est en position fin avec MultimédiaPosition(<Champ Multimédia>) et MultimédiaDurée(MM_Multimédia1)

quand vous remplissez une des deux conditions vous lancer l'autre média



Note : vous pouvez envisager avec MultimédiaPosition(<Champ Multimédia>) et MultimédiaDurée(MM_Multimédia1) une zone de fondue ou le son est baissé puis raugmenté
Membro registado
3.883 mensagems
Popularité : +227 (347 votes)
Publicado em agosto, 17 2020 - 6:33 PM
Bonjour,
Il est aussi possible de se passer du champ multimédia grâce aux fonctions MCI https://doc.pcsoft.fr/?3051010.
Une fonction automatisée https://doc.pcsoft.fr/?9000072 qui vérifie régulièrement l'état du MCI via MCIEtat permet de passer automatiquement d'un morceau à l'autre.

--
Il y a peut être plus simple, mais, ça tourne
Membro registado
962 mensagems
Popularité : +183 (185 votes)
Publicado em agosto, 18 2020 - 7:46 AM
hello,
le champ Multimedia possède un événement fin de fichier atteinte. Voici un exemple pour l'utiliser dans ton cas de figure :
1 : Dans le code de la fenêtre ajouter :
dans Déclaration globale :
ListeFicSon est un tableau de chaînes
IndFicSon est un entier

dans Initialisation de la fenêtre (ou plus tard pour changer la liste suivant la bataille) :
TableauAjoute(ListeFicSon, "M:\test\sons\Morceau1.mp3")
TableauAjoute(ListeFicSon, "M:\test\sons\Morceau2.mp3")
TableauAjoute(ListeFicSon, "M:\test\sons\Morceau3.mp3")
TableauAjoute(ListeFicSon, "M:\test\sons\Morceau4.mp3")

Ajouter une procédure locale JouerSuivant :
Procedure JouerSuivant()
//Trace("lecture suivante")
IndFicSon++
SI IndFicSon <= ListeFicSon..Occurrence ALORS MultimédiaJoue(Multimédia1,ListeFicSon[IndFicSon])


et dans le champ multimedia appeler cette procédure sur le code de l'événement Fin de fichier atteinte :
JouerSuivant()


Lancer la lecture des fichiers sons comme ceci par exemple :
IndFicSon = 1
MultimédiaJoue(Multimédia1,ListeFicSon[IndFicSon])


--
Ami calmant, J.P