Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[R] Son mp3 jeux batch
Auteur Message
Répondre en citant
Message [R] Son mp3 jeux batch 
Salut salut !

Alors voilà, comme dit dans le titre, j'aimerais pour mon jeu, jouer une musique en boucle sous certaine conditions :
- Format mp3 obligé ( déjà que je suis horrifié de constater que les fichiers de mon jeu font 8MO alors mettre une musique .wav de 54MO, je préfère plutôt mourrir )
- La musique fait 4min35, je sais pas si sa complique les choses.
- Fenêtre invisible obligé pour la musique, évidemment.
- Et si l'utilisateur ferme le jeu (que ce soit par la croix ou ctrl-C), la musique dois s'arrêter aussi. Mais sinon, elle se joue en boucle tant que le jeu est ouvert.

Et faire ceci (si possible) sans commande externe (mais le vbs me dérrange pas ^^).

En espérent trouvé une réponse, bien à vous !



Dernière édition par Bad-Code le Mer 20 Sep 2017 - 16:23; édité 2 fois

______________________________________________________
We're just an accident. We're just bad code. - Root
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [R] Son mp3 jeux batch 
Je n'ai pas de solution complète sous la main, mais je peux te donner des pistes et conseils.

Citation:
- Format mp3 obligé ( déjà que je suis horrifié de constater que les fichiers de mon jeu font 8MO alors mettre une musique .wav de 54MO, je préfère plutôt mourrir )
Heu, mp3, bof, y'a 10x mieux en plus compact.
Genre le format ogg vorbis voire même Opus si tes logiciels sont un minimum à jour.
Après, il faut aussi que le materiel que tu vas utiliser pour jouer le son prend en charge ce format, pas toujours gagné.

Citation:
- Et si l'utilisateur ferme le jeu (que ce soit par la croix ou ctrl-C), la musique dois s'arrêter aussi. Mais sinon, elle se joue en boucle tant que le jeu est ouvert.
ça devient assez complexe là dessus, je vais donner 2 pistes (pas forcémént réalisables) :
- détecter la fermeture du programme principal par un procéssus externe (un .bat en arrière plan qui va tuer le procéssus qui gère la musique)
- démarrer la commande en temps que fils lié de cmd, ça veut rien dire mais c'est l'idée et je ne sais pas trop si c'est possible avec cmd.

Citation:
Et faire ceci (si possible) sans commande externe (mais le vbs me dérrange pas ^^).
Alors ça devient délicat là dessus.
Jouer des sons avec du vbs = oz_cry + 1 seul format supporté de mémoire (qui est wav)

Perso, je conseille de prendre ffplay du projet ffmpeg, ça se présente sous la forme d'une commande externe (de 20 Mb en statique, ok), mais qui peut faire énormément de choses et qui est bien plus pratique que du vbs.

Voilà, si d'autres ont d'autres solutions, allez-y moz_cool.




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [R] Son mp3 jeux batch 
Comme y'a une question en suspend dans
http://batch.xoo.it/t5867-Multiples-questions-complexe.htm ,
je vais pas répondre à ce fil.

Toutefois, je voulais savoir, TSnake, quand tu mets un émoticon
avec des lunettes à la fin de ta phrase, qu’est-ce que tu entends par là ?



Répondre en citant
Message [R] Son mp3 jeux batch 
Salut Very Happy
Voici la réponse que vous attendiez : Créer deux vbscripts :
Le 1er vbscript lance la music en boucle en arrière plan sans fenêtre (ici j'ai pris un exemple d'une station radio : DJ Buzz Radio)
Pour le fichier.mp3 ; Take a look at this thread ==> How do I play music on loop in batch? Mr. Green
Le 2ème vbscript qui va contrôler l'existence du batch en cours d'exécution, si on ferme notre batch, alors ce vbs va automaiqument le détecter et par conséquence il va tuer toutes les instances du processus "wscript.exe" par la suite la music va s'arrêter Idea Okay
Voilà l'idée Idea Laughing Okay
Code:
@echo off
Title Listen to the best music with DJ Buzz Radio by Hackoo 2017
Mode 70,3 & color 9E
echo(
echo        Welcome to the world of the music created by Hackoo 2017
Call :Play_DJ_Buzz_Radio
Call :ProcessMonitor
Pause>nul & Exit
:ProcessMonitor
Set "VBS_Monitor_File=%Tmp%\%~n0.vbs"
(
echo Do
echo    Call CheckProcess("%~f0"^)
echo    Pause 1
echo Loop
echo '**************************************************************************
echo Sub CheckProcess(ProcessPath^)   
echo Dim ProcessName : ProcessName = StripProcPath(ProcessPath^)   
echo     With GetObject("winmgmts:" ^& "{impersonationLevel=impersonate}!\\.\root\cimv2"^)   
echo         With .ExecQuery("SELECT * FROM Win32_Process WHERE Commandline LIKE " ^&  CommandLineLike(ProcessName^)^)   
echo             If .Count = 0 Then   
echo                 With CreateObject("WScript.Shell"^) 
echo                     .Run "Taskkill /IM ""Wscript.exe"" /F",0,True
echo                 End With     
echo             End if   
echo         End With   
echo     End With   
echo End Sub   
echo '**************************************************************************
echo Function StripProcPath(ProcessPath^)   
echo     Dim arrStr : arrStr = Split(ProcessPath, "\"^)   
echo     StripProcPath = arrStr(UBound(arrStr^)^)   
echo End Function   
echo '**************************************************************************
echo Function CommandLineLike(ProcessPath^)   
echo     ProcessPath = Replace(ProcessPath, "\", "\\"^)   
echo     CommandLineLike = "'%%" ^& ProcessPath ^& "%%'"   
echo End Function
echo '**************************************************************************
echo 'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo     DblQuote = Chr(34^) ^& Str ^& Chr(34^)
echo End Function
echo '**************************************************************************
echo Sub Pause(Sec^)   
echo     Wscript.Sleep(Sec*1000^)   
echo End Sub   
echo '**************************************************************************
)>"%VBS_Monitor_File%"
Start "" "%VBS_Monitor_File%"
Exit /b
::**************************************************************
:Play_DJ_Buzz_Radio
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set "VBS_MUSIC=%temp%\DJBuzzRadio.vbs"
Set "URL=http://www.chocradios.ch/djbuzzradio_windows.mp3.asx"
Call :Play "%URL%" "%VBS_MUSIC%"
Start "" "%VBS_MUSIC%"
Exit /b
::**************************************************************
:Play
(
echo Play "%~1"
echo Sub Play(URL^)
echo    Dim Sound
echo    Set Sound = CreateObject("WMPlayer.OCX"^)
echo    Sound.URL = URL
echo    Sound.settings.volume = 100
echo    Sound.Controls.play
echo    do while Sound.currentmedia.duration = 0
echo       wscript.sleep 100
echo    loop
echo    wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000
echo End Sub
)>%~2
exit /b
::**************************************************************





______________________________________________________
Mes Contributions en Téléchargement
Répondre en citant
Message [R] Son mp3 jeux batch 
Hackoo a écrit:
Salut Very Happy
Voici la réponse que vous attendiez : Créer deux vbscripts :
Le 1er vbscript lance la music en boucle en arrière plan sans fenêtre (ici j'ai pris un exemple d'une station radio : DJ Buzz Radio)
Pour le fichier.mp3 ; Take a look at this thread ==> How do I play music on loop in batch? Mr. Green
Le 2ème vbscript qui va contrôler l'existence du batch en cours d'exécution, si on ferme notre batch, alors ce vbs va automaiqument le détecter et par conséquence il va tuer toutes les instances du processus "wscript.exe" par la suite la music va s'arrêter Idea Okay
Voilà l'idée Idea Laughing Okay
Code:
@echo off
Title Listen to the best music with DJ Buzz Radio by Hackoo 2017
Mode 70,3 & color 9E
echo(
echo        Welcome to the world of the music created by Hackoo 2017
Call :Play_DJ_Buzz_Radio
Call :ProcessMonitor
Pause>nul & Exit
:ProcessMonitor
Set "VBS_Monitor_File=%Tmp%\%~n0.vbs"
(
echo Do
echo    Call CheckProcess("%~f0"^)
echo    Pause 1
echo Loop
echo '**************************************************************************
echo Sub CheckProcess(ProcessPath^)   
echo Dim ProcessName : ProcessName = StripProcPath(ProcessPath^)   
echo     With GetObject("winmgmts:" ^& "{impersonationLevel=impersonate}!\\.\root\cimv2"^)   
echo         With .ExecQuery("SELECT * FROM Win32_Process WHERE Commandline LIKE " ^&  CommandLineLike(ProcessName^)^)   
echo             If .Count = 0 Then   
echo                 With CreateObject("WScript.Shell"^) 
echo                     .Run "Taskkill /IM ""Wscript.exe"" /F",0,True
echo                 End With     
echo             End if   
echo         End With   
echo     End With   
echo End Sub   
echo '**************************************************************************
echo Function StripProcPath(ProcessPath^)   
echo     Dim arrStr : arrStr = Split(ProcessPath, "\"^)   
echo     StripProcPath = arrStr(UBound(arrStr^)^)   
echo End Function   
echo '**************************************************************************
echo Function CommandLineLike(ProcessPath^)   
echo     ProcessPath = Replace(ProcessPath, "\", "\\"^)   
echo     CommandLineLike = "'%%" ^& ProcessPath ^& "%%'"   
echo End Function
echo '**************************************************************************
echo 'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo     DblQuote = Chr(34^) ^& Str ^& Chr(34^)
echo End Function
echo '**************************************************************************
echo Sub Pause(Sec^)   
echo     Wscript.Sleep(Sec*1000^)   
echo End Sub   
echo '**************************************************************************
)>"%VBS_Monitor_File%"
Start "" "%VBS_Monitor_File%"
Exit /b
::**************************************************************
:Play_DJ_Buzz_Radio
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set "VBS_MUSIC=%temp%\DJBuzzRadio.vbs"
Set "URL=http://www.chocradios.ch/djbuzzradio_windows.mp3.asx"
Call :Play "%URL%" "%VBS_MUSIC%"
Start "" "%VBS_MUSIC%"
Exit /b
::**************************************************************
:Play
(
echo Play "%~1"
echo Sub Play(URL^)
echo    Dim Sound
echo    Set Sound = CreateObject("WMPlayer.OCX"^)
echo    Sound.URL = URL
echo    Sound.settings.volume = 100
echo    Sound.Controls.play
echo    do while Sound.currentmedia.duration = 0
echo       wscript.sleep 100
echo    loop
echo    wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000
echo End Sub
)>%~2
exit /b
::**************************************************************


Waw waw waw --- Je pensais pas que sa allait donné lieu à un code aussi long (et compliqué).
Le vbs me surprendra toujours :3

En revanche, je n'est aucune idée comment faire pour lancer la musique voulue et interrompre la musique selon le processus voulue.
Tu pourrais m'indiqué (la ligne) où est-ce que je peut faire ces changements ?

En tout cas, merci du partage !!

D'ailleurs, sa fait bizarre d'être vouvoyé, t'a le droit de me tutoyer, tu sais Smile




______________________________________________________
We're just an accident. We're just bad code. - Root
Répondre en citant
Message [R] Son mp3 jeux batch 
Voilà, tu change juste cette ligne : Set "MusicPath=C:\chemin_de_votre\fichier.mp3"

Code:
@echo off
Title Listen to the best music with DJ Buzz Radio by Hackoo 2017
Mode 70,3 & color 9E
echo(
echo        Welcome to the world of the music created by Hackoo 2017
Set "MusicPath=http://www.chocradios.ch/djbuzzradio_windows.mp3.asx"
::*******************************************************************************
Call :Play_DJ_Buzz_Radio
Call :ProcessMonitor
Pause>nul & Exit
:ProcessMonitor
Set "VBS_Monitor_File=%Tmp%\%~n0.vbs"
(
echo Do
echo    Call CheckProcess("%~f0"^)
echo    Pause 1
echo Loop
echo '**************************************************************************
echo Sub CheckProcess(ProcessPath^)   
echo Dim ProcessName : ProcessName = StripProcPath(ProcessPath^)   
echo     With GetObject("winmgmts:" ^& "{impersonationLevel=impersonate}!\\.\root\cimv2"^)   
echo         With .ExecQuery("SELECT * FROM Win32_Process WHERE Commandline LIKE " ^&  CommandLineLike(ProcessName^)^)   
echo             If .Count = 0 Then   
echo                 With CreateObject("WScript.Shell"^) 
echo                     .Run "Taskkill /IM "^& DblQuote("wscript.exe"^) ^&" /F",0,True
echo                 End With     
echo             End if   
echo         End With   
echo     End With   
echo End Sub   
echo '**************************************************************************
echo Function StripProcPath(ProcessPath^)   
echo     Dim arrStr : arrStr = Split(ProcessPath, "\"^)   
echo     StripProcPath = arrStr(UBound(arrStr^)^)   
echo End Function   
echo '**************************************************************************
echo Function CommandLineLike(ProcessPath^)   
echo     ProcessPath = Replace(ProcessPath, "\", "\\"^)   
echo     CommandLineLike = "'%%" ^& ProcessPath ^& "%%'"   
echo End Function
echo '**************************************************************************
echo 'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo     DblQuote = Chr(34^) ^& Str ^& Chr(34^)
echo End Function
echo '**************************************************************************
echo Sub Pause(Sec^)   
echo     Wscript.Sleep(Sec*1000^)   
echo End Sub   
echo '**************************************************************************
)>"%VBS_Monitor_File%"
Start "" "%VBS_Monitor_File%"
Exit /b
::**************************************************************
:Play_DJ_Buzz_Radio
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set "VBS_MUSIC=%temp%\DJBuzzRadio.vbs"
Call :Play "%MusicPath%" "%VBS_MUSIC%"
Start "" "%VBS_MUSIC%"
Exit /b
::**************************************************************
:Play
(
echo Play "%~1"
echo Sub Play(MusicPath^)
echo    Dim Sound
echo    Set Sound = CreateObject("WMPlayer.OCX"^)
echo    Sound.URL = MusicPath
echo    Sound.settings.volume = 100
echo    Sound.Controls.play
echo    do while Sound.currentmedia.duration = 0
echo       wscript.sleep 100
echo    loop
echo    wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000
echo End Sub
)>%~2
exit /b
::**************************************************************





______________________________________________________
Mes Contributions en Téléchargement
Répondre en citant
Message [R] Son mp3 jeux batch 
Erf, désolé d'être relou,
mais quand j’intègre le script à mon jeu, tout fonctionne sauf que lorsque je ferme la fenêtre du jeu, la musique ne s'arrête pas.

Pourtant, j'ai beau tout essayer (changement du titre de la fenêtre ect..) , la musique continue..

Y a moyen d'arranger sa ?




______________________________________________________
We're just an accident. We're just bad code. - Root
Répondre en citant
Message [R] Son mp3 jeux batch 
Bad-Code a écrit:
Erf, désolé d'être relou,
mais quand j’intègre le script à mon jeu, tout fonctionne sauf que lorsque je ferme la fenêtre du jeu, la musique ne s'arrête pas.

Pourtant, j'ai beau tout essayer (changement du titre de la fenêtre ect..) , la musique continue..

Y a moyen d'arranger sa ?

Partage ton script ou bien upload le avec la musique (mp3) souhaité dans https://www.mediafire.com/




______________________________________________________
Mes Contributions en Téléchargement
Répondre en citant
Message [R] Son mp3 jeux batch 
Impossible de partager mon script maintenant, il contient plus de 40 images dans son dossier, en revanche je peut te mettre le début du code.

Pour te dire, même avec simplement sa, le bug persiste :

Code:

@echo off
mode con cols=149 lines=52
Setlocal Enabledelayedexpansion
color 07
title Batch Town

rem prend n'importe quel musique mp3, nomme la musique7, et colle la dans le même dossier que le .bat : même après arrêt du batch, la musique continue...
goto :music

:mapping
pause >nul
exit
.
.
.
.
.
.
.
:music
set in=%~dp0
echo(
Set "MusicPath=%in%\Musique7.mp3"
::*******************************************************************************
Call :Play_DJ_Buzz_Radio
Call :ProcessMonitor
goto :mapping
:ProcessMonitor
Set "VBS_Monitor_File=%Tmp%\%~n0.vbs"
(
echo Do
echo    Call CheckProcess("%~f0"^)
echo    Pause 1
echo Loop
echo '**************************************************************************
echo Sub CheckProcess(ProcessPath^) 
echo Dim ProcessName : ProcessName = StripProcPath(ProcessPath^) 
echo     With GetObject("winmgmts:" ^& "{impersonationLevel=impersonate}!\\.\root\cimv2"^) 
echo         With .ExecQuery("SELECT * FROM Win32_Process WHERE Commandline LIKE " ^&  CommandLineLike(ProcessName^)^) 
echo             If .Count = 0 Then   
echo                 With CreateObject("WScript.Shell"^) 
echo                     .Run "Taskkill /IM "^& DblQuote("wscript.exe"^) ^&" /F",0,True
echo                 End With     
echo             End if 
echo         End With 
echo     End With 
echo End Sub 
echo '**************************************************************************
echo Function StripProcPath(ProcessPath^) 
echo     Dim arrStr : arrStr = Split(ProcessPath, "\"^) 
echo     StripProcPath = arrStr(UBound(arrStr^)^) 
echo End Function 
echo '**************************************************************************
echo Function CommandLineLike(ProcessPath^) 
echo     ProcessPath = Replace(ProcessPath, "\", "\\"^) 
echo     CommandLineLike = "'%%" ^& ProcessPath ^& "%%'" 
echo End Function
echo '**************************************************************************
echo 'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo     DblQuote = Chr(34^) ^& Str ^& Chr(34^)
echo End Function
echo '**************************************************************************
echo Sub Pause(Sec^)   
echo     Wscript.Sleep(Sec*1000^)   
echo End Sub 
echo '**************************************************************************
)>"%VBS_Monitor_File%"
Start "" "%VBS_Monitor_File%"
Exit /b
::**************************************************************
:Play_DJ_Buzz_Radio
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set "VBS_MUSIC=%temp%\DJBuzzRadio.vbs"
Call :Play "%MusicPath%" "%VBS_MUSIC%"
Start "" "%VBS_MUSIC%"
Exit /b
::**************************************************************
:Play
(
echo Play "%~1"
echo Sub Play(MusicPath^)
echo    Dim Sound
echo    Set Sound = CreateObject("WMPlayer.OCX"^)
echo    Sound.URL = MusicPath
echo    Sound.settings.volume = 100
echo    Sound.Controls.play
echo    do while Sound.currentmedia.duration = 0
echo       wscript.sleep 100
echo    loop
echo    wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000
echo End Sub
)>%~2
exit /b
::**************************************************************
-------------------------------------------------------------------------------------------------------------------------





______________________________________________________
We're just an accident. We're just bad code. - Root
Répondre en citant
Message [R] Son mp3 jeux batch 
Voilà j'ai changé un peu pour que la musique se joue en boucle :
Code:
@echo off
Title Ecouter de la musique avec batch et vbscript by Hackoo 2017
Mode 70,3 & color 9E
echo(
echo        Welcome to the world of the music created by Hackoo 2017
Rem Changer juste la variable MusicPath
Set "MusicPath=%~dp0Musique7.mp3"
::*******************************************************************************
Call :Play_Music
Call :ProcessMonitor
Pause>nul & Exit
::*******************************************************************************
:ProcessMonitor
Set "VBS_Monitor_File=%Tmp%\%~n0.vbs"
(
echo Do
echo    Call CheckProcess("%~f0"^)
echo    Pause 1
echo Loop
echo '**************************************************************************
echo Sub CheckProcess(ProcessPath^)   
echo Dim ProcessName : ProcessName = StripProcPath(ProcessPath^)   
echo     With GetObject("winmgmts:" ^& "{impersonationLevel=impersonate}!\\.\root\cimv2"^)   
echo         With .ExecQuery("SELECT * FROM Win32_Process WHERE Commandline LIKE " ^&  CommandLineLike(ProcessName^)^)   
echo             If .Count = 0 Then   
echo                 With CreateObject("WScript.Shell"^) 
echo                     .Run "Taskkill /IM "^& DblQuote("wscript.exe"^) ^&" /F",0,True
echo                 End With     
echo             End if   
echo         End With   
echo     End With   
echo End Sub   
echo '**************************************************************************
echo Function StripProcPath(ProcessPath^)   
echo     Dim arrStr : arrStr = Split(ProcessPath, "\"^)   
echo     StripProcPath = arrStr(UBound(arrStr^)^)   
echo End Function   
echo '**************************************************************************
echo Function CommandLineLike(ProcessPath^)   
echo     ProcessPath = Replace(ProcessPath, "\", "\\"^)   
echo     CommandLineLike = "'%%" ^& ProcessPath ^& "%%'"   
echo End Function
echo '**************************************************************************
echo 'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo     DblQuote = Chr(34^) ^& Str ^& Chr(34^)
echo End Function
echo '**************************************************************************
echo Sub Pause(Sec^)   
echo     Wscript.Sleep(Sec*1000^)   
echo End Sub   
echo '**************************************************************************
)>"%VBS_Monitor_File%"
Start "" "%VBS_Monitor_File%"
Exit /b
::**************************************************************
:Play_Music
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set "VBS_MUSIC=%temp%\DJBuzzRadio.vbs"
Call :PlayLoop "%MusicPath%" "%VBS_MUSIC%"
Start "" "%VBS_MUSIC%"
Exit /b
::**************************************************************
:PlayLoop
(
   echo Play "%~1"
   echo Sub Play(MusicPath^)
   echo   Dim Sound
   echo   Set Sound = CreateObject("WMPlayer.OCX"^)
   echo   Sound.URL = MusicPath
   echo   Sound.settings.volume = 100
   echo   Sound.Controls.play
   echo    Sound.settings.setMode "loop", True
   echo   Sound.Controls.play
   echo   While Sound.playState ^<^ 1
   echo      WScript.Sleep 100
   echo   Wend
   echo End Sub
)>%~2
exit /b
::**************************************************************


EDIT :
J'ai remarqué qu'il y a quelques caractères qui s'évapporent avec la coloration syntaxique, alors je l'ai posté en pastebin
Play_Music_Loop.bat




______________________________________________________
Mes Contributions en Téléchargement
Répondre en citant
Message [R] Son mp3 jeux batch 
Hackoo a écrit:
Voilà j'ai changé un peu pour que la musique se joue en boucle :
{{{This code is no well presented}}}

EDIT :
J'ai remarqué qu'il y a quelques caractères qui s'évapporent avec la coloration syntaxique, alors je l'ai posté en pastebin
Play_Music_Loop.bat


Merci mais au final, le code de base fonctionnait !
-----> C'est juste que (bizarrement) si le batch portait le même titre que le nom du fichier, eh bien sa faisait buguer le truc. Donc j'ai juste eu à changer le nom du fichier et c'est bon Okay

En tout cas, thanks pour ton aide !!




______________________________________________________
We're just an accident. We're just bad code. - Root
Message [R] Son mp3 jeux batch 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch