Aller au contenu


[finalement Résolu] Jouer De La Musique En Boucle


  • Veuillez vous connecter pour répondre
31 réponses à ce sujet

#1 Von Zeeple

Von Zeeple

    Grille pain Dwemer


Posté 20 janvier 2006 - 22:23

J'aimerais qu'une musique (mp3) soit jouée en boucle à la place de celle de morrowind dans une certaine cellule.
Existe-t-il une fonction autre que StreamMusic qui pourrait faire l'affaire?

Modifié par Von Zeeple, 22 janvier 2006 - 19:57.

Le Steampunk, c'est bon, mangez en  !

#2 Mordicus

Mordicus

    Philippe Risoli & Muppets show


Posté 21 janvier 2006 - 00:23

Pas que je sache, tu es obligé d'avoir recours à StreamMusic.

Sinon, tu peux convertir ton mp3 en wav et utiliser une autre commande, comme PlayLoopSound.

Mais là aussi, pour empêcher ma musique de Morrowind de se lancer, tu devras utiliser StreamMusic + un fichier mp3 ou midi silencieux. Il n'y a pas d'autre choix. Et donc cela revient toujours à passer par StreamMusic... :green:
(Ultra)VGM récalcitrant et moddeur allergique aux jeux vidéo.

#3 Von Zeeple

Von Zeeple

    Grille pain Dwemer


Posté 21 janvier 2006 - 10:57

j'ai essayé de faire un script:

begin GDI_masser_music

short doonce
short timer

if ( doonce == 0 )
StreamMusic, "GDI_music_masser.mp3"
set doonce to 1
set timer to ( timer + GetSecondsPassed )
endif

If ( timer >= 46 )
 set doonce to 0
 set timer to 0
endif

end

Ma musique dure 46s et j'ai penser que si StreamMusic se répetait toutes les 46s on aurrait de la musique boucle.
Ma ca ne marche pas, la musique ne se joue qu'une seule fois, apres c'est celle de morrowind qui démare...
Ya-t-il une erreur dans le script?
Le Steampunk, c'est bon, mangez en  !

#4 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 21 janvier 2006 - 11:07

oui ...

begin GDI_masser_music

short doonce
short timer

if ( doonce == 0 )
StreamMusic, "GDI_music_masser.mp3"
set doonce to 1
endif

set timer to ( timer + GetSecondsPassed )

If ( timer >= 46 )
set doonce to 0
set timer to 0
endif

end

Le timer ne s'incrémente que si doonce == 0, or il doit s'incrementer en continu. :shocked:
Le script peut etre plus simple :

begin GDI_masser_music

short timer

if ( timer == 0 )
StreamMusic, "GDI_music_masser.mp3"
endif

set timer to ( timer + GetSecondsPassed )

If ( timer >= 46 )
set timer to 0
endif

end


Bon courage pour la suite. ;)
Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#5 Von Zeeple

Von Zeeple

    Grille pain Dwemer


Posté 21 janvier 2006 - 11:31

Merci beaucoup, ce script va beaucoup me servir!

Edit: merci Fandorn mais ton premier script présente le meme probleme et avec le second, la musique ne démarre pas du tout! :shocked:

Modifié par Von Zeeple, 21 janvier 2006 - 11:51.

Le Steampunk, c'est bon, mangez en  !

#6 Mordicus

Mordicus

    Philippe Risoli & Muppets show


Posté 21 janvier 2006 - 12:06

Il te faut associer se script avec un activator (n'importe quel objet ou objet invisible) que tu placeras dans la cell où tu veux qu'on l'entende...
(Ultra)VGM récalcitrant et moddeur allergique aux jeux vidéo.

#7 Gwen Armor

Gwen Armor

Posté 21 janvier 2006 - 16:49

Bonjour à tous,
Je poste dans ce même topic, car devant asscier un script à un activator, je viens d'essayer le script proposé par Fandorn Delavie.
Voici la harpe déclarée dans le texte comme activator. le mp3 d'une misique perso est placé dans le dossier \music\explore

http://img469.imageshack.us/img469/8414/screenshot707ha.th.jpg

Cependant, si je charge le mod, la harpe a disparue... donc pas de musique

Est-ce que quelqu'un peut expliquer le rapport avec le script ? ou ce serait autre chose ?

merci, @+
Gwen
---------------------------------------------
L'essentiel est invisible aux yeux
---------------------------------------------

#8 a3jv

a3jv

    ... à 4 je reviens.


Posté 21 janvier 2006 - 17:07

Sûrement un problème de sauvegarde.
Si c'est ta petite maison favorite ta save l'a en mémoire sans la harpe dernièrement rajoutée donc elle invalide la modif et a plus forte raison si tu as sauvegardé dans cette cell.
Les choses n'ont que l'importance ou la valeur qu'on leur donne.

#9 Orann

Orann

    Nérévarine de Pertevue


Posté 21 janvier 2006 - 17:34

Il faut que la musique jouée par stream music soit dans le dossier music/ . Moi quand j'ai essayer de faire jouer des musiques du dossier explore, même les musiques de base, ça marchait pas :green:
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#10 Gwen Armor

Gwen Armor

Posté 21 janvier 2006 - 17:35

Rebonjour, et merci a3jv.
En attendant le post, j'ai nettoyé la save, nettoyé le mod, regardé les warnings. Dans les warnings, une alerte pour absence du mp3 dans le dossier music (je l'avais placé dans "explore").
J'ai rechargé le mod, et oh surprise, la musique se met en route... quand je quittes la pièce par un téléport vers une autre pièce... donc le script de Fandorn dans ce topic marche. Cependant, pas au bon endroit (elle ne démarre qu'après avoir quitté la pièce). D'autre part, arrivé au bout des 221 secondes déclarées pour le timer,  le morceau s'arrête et enchaîne sur la musique de MW.
Si vous avez des hypothèses ?
@+ et merci,
Gwen.
---------------------------------------------
L'essentiel est invisible aux yeux
---------------------------------------------

#11 Mordicus

Mordicus

    Philippe Risoli & Muppets show


Posté 21 janvier 2006 - 17:52

Voir le messageOrann, le 21.01.2006 à 17:34, dit :

Il faut que la musique jouée par stream music soit dans le dossier music/ . Moi quand j'ai essayer de faire jouer des musiques du dossier explore, même les musiques de base, ça marchait pas ;)
Normalement ça marche sans problème. J'y suis arrivé.  :lol:

GWen Armor, essaie ceci (Orann aussi, et ça devrait marcher):

1- Dans le menu Gameplay->Globals

Créer une nouvelle valeur GeoMusicTimer : avec "float", et la valeur 0.00

2- Créer le script suivant:

begin GDI_masser_music
	
	  if ( geoMusicTimer < 221 ); mettre la longueur du morceau de musique
			if ( geoMusicTimer == 0 )
				streammusic "ma_musique.mp3"; Orann, ici tu peux utiliser "mondossier\mamusique.mp3"
			endif
			set geoMusicTimer to ( geoMusicTimer + GetSecondsPassed )
			return
		endif
		set geoMusicTimer to 0
	
end GDI_masser_music

Puis attacher ce script à un activator dans la cell.

3- Supposons que la cell soit une grotte, ou une pièce. Sur la porte de sortie (ou chaque porte de sortie), attacher ce second script (pour relancer la musique par défaut une fois la cell quittée):

begin GDI_music_off

if ( OnActivate == 0 )
   return
endif

set geoMusicTimer to 0

streammusic "Explore/Morrowind Title.mp3"
 
Activate

end GDI_music_off

Mieux encore, pour le script de sortie, vous pouvez utiliser une fonction random afin que ce ne soit pas toujours la même musique qu'on entende une fois la cell quittée. Cela donne (j'ai piqué le truc à Kafou :green: ) :

begin GDI_music_off

short musique

if ( OnActivate == 0 )
   return
endif

set geoMusicTimer to 0
	set musique to random 8
 if ( musique == 1 )
	 streammusic "Explore/mx_explore_1.mp3"
 elseif ( musique == 2 )
	 streammusic "Explore/mx_explore_2.mp3"
 elseif ( musique == 3 )
	 streammusic "Explore/mx_explore_3.mp3"
 elseif ( musique == 4 )
	 streammusic "Explore/mx_explore_4.mp3"
 elseif ( musique == 5 )
	 streammusic "Explore/mx_explore_5.mp3"
 elseif ( musique == 6 )
	 streammusic "Explore/mx_explore_6.mp3"
 elseif ( musique == 7 )
	 streammusic "Explore/mx_explore_7.mp3"
 elseif ( musique == 7 )
else
	  streammusic "Explore/Morrowind Title.mp3"
endif
Activate

end GDI_music_off

Modifié par Mordicus, 21 janvier 2006 - 17:56.

(Ultra)VGM récalcitrant et moddeur allergique aux jeux vidéo.

#12 Gwen Armor

Gwen Armor

Posté 21 janvier 2006 - 18:14

Merci Mordicus,
J'essaye dès ce soir en suivant tes propos (mais en adaptant au nom de mes variables).
Je me pose à la lecture des scripts une question : est-ce que geomusictimer est une variable globale ? sinon, est-ce que je peux déclarer un nom de variable perso du type Gwen_streamzic ? (plus facile à identifier)
Encore merci pour votre aide qui devrait donner la solution à Von Zeeple par la même occasion.
@+ Gwen
---------------------------------------------
L'essentiel est invisible aux yeux
---------------------------------------------

#13 Mordicus

Mordicus

    Philippe Risoli & Muppets show


Posté 21 janvier 2006 - 18:39

Oui, tu peux l'appeler comme tu veux, c'est bien une variable globale que tu crées toi-même. Il suffit de penser à reporter son nom dans les scripts ( à la place de GeoMusicTimer donc...)

Modifié par Mordicus, 21 janvier 2006 - 18:40.

(Ultra)VGM récalcitrant et moddeur allergique aux jeux vidéo.

#14 Orann

Orann

    Nérévarine de Pertevue


Posté 21 janvier 2006 - 21:33

Merci Mordicus pour l'info :)

Mais personnellement, je pense que je vais laisser comme c'est comme ça les musiques ne sont pas jouées aléatoirement dans Morrowind puisqu'elles ne sont pas dans le dossier explore mais ne se lancent que quand je le décide.

Je vais sûrement te piquer le bout du script pour les musiques aléatoires ;)
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#15 Gwen Armor

Gwen Armor

Posté 21 janvier 2006 - 23:16

Bonsoir à tous,
Ce post pour confirmer qu'après l'avoir testé, le script de Mordicus pour jouer une musique en boucle dans une cell d'un mod fonctionne à la perfection.

; Script du mod "Le dome de l'Alchimiste"
; Utilise la Var globale "Gwen_SreamMusic"
; Merci à Mordicus sur le forum : http://www.wiwiland.com/morrowind/forum/

begin Gwen_Harp_music 
	
	  if ( Gwen_SreamMusic < 201 ); longueur du morceau de musique
			if ( Gwen_SreamMusic == 0 )
				streammusic "Gwen\Gwen_Sheebeg & Sheemore.mp3"; 
			endif
			set Gwen_SreamMusic to ( Gwen_SreamMusic + GetSecondsPassed )
			return
		endif
		set Gwen_SreamMusic to 0
	
end Gwen_Harp_music

Je n'ai pas encore essayé les scripts d'arrêt de la boucle, voire de lecture aléatoire dans le repertoire "Explore", cependant, ils ne semblent pas forcement nécessaire. Si on quitte la Cell, le morceau à la fin de sa boucle s'arrête et la musique s'enchaîne avec un des thèmes de mw.

Merci Mordicus.

[Edit] 17/02/06
je rajoute ce scrip modifié qui fonctionne bien, il peut servir à d'autres.
Les modifications permettent  de jouer une musique en boucle en activant un objet. Une deuxième activation de l'objet arrêtera la musique. Pour cela, il suffit de créer un fichier mp3 de 1 seconde d'un signal vide et de le mettre dans le bon répertoire.
; Script du mod "Le dôme de l'Alchimiste"
; Utilise la Var globale "Gwen_SreamMusic"
; Merci à Mordicus sur le forum : http://www.wiwiland.com/morrowind/forum/

begin Gwen_Harp_boucle 
   short doOnce

if ( OnActivate == 1 )
	if (doOnce == 0)
		if ( Gwen_SreamMusic < 201 ); la durée du morceau de musique
			if ( Gwen_SreamMusic == 0 )
				streammusic "Gwen\Gwen_Sheebeg & Sheemore.mp3";
				set doOnce to 1
			endif
			set Gwen_SreamMusic to ( Gwen_SreamMusic + GetSecondsPassed )
			return
		endif
		set Gwen_SreamMusic to 0
	else
		streammusic "Gwen\Gwen_Sheebeg & Sheemore end.mp3";fichier vide
		set Gwen_SreamMusic to 0
		set doOnce to 0
	endif
endif
end Gwen_Harp_boucle
[/edit]

Modifié par Gwen Armor, 17 février 2006 - 01:09.

---------------------------------------------
L'essentiel est invisible aux yeux
---------------------------------------------

#16 Von Zeeple

Von Zeeple

    Grille pain Dwemer


Posté 22 janvier 2006 - 20:01

Chez moi aussi ça marche, grand merci mordicus!

screenshot bonus:
la cell qui ira avec le script:
http://img9.imageshack.us/img9/5848/masserstation2oa.jpg
Le Steampunk, c'est bon, mangez en  !

#17 Orann

Orann

    Nérévarine de Pertevue


Posté 23 janvier 2006 - 10:41

J'utilise un script très semblable (je pense que seuls les noms des musiques changent  :green: ) et j'ai remarqué qu'il y avait un problème si on combat. Dans ce cas la musique de combat se met en route, normal. Mais si on termine le combat avant que le timer est atteint la durée de fin de la chanson, une musique ,normale est jouée. Et je supose que si le combat dure plus longtemps que la durée normale, la musique de combat sera coupée au profit de celle la... :beat:

Y-a t-il un moyen de détecter la fin du combat?
Sinon, peut t-on détecter quelle musique de combat est jouée pour savoir sa durée? (mais je pense que ça poserait problème si un combat dure plus longtemps qu'une musique)...
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#18 Mordicus

Mordicus

    Philippe Risoli & Muppets show


Posté 23 janvier 2006 - 10:51

En théorie c'est impossible je crois, puisqu'on ne peut pas vraiment couper la musique des combats.

Mais dans la pratique, ça marche.... enfin j'ai réussi une fois, un peu par hasard, avec un mp3 silencieux de quelques secondes (on ne peut pas arrêter la musique de combat, mais selon le réglage du timer, on arrive à l'interrompre ou à la relancer au bout d'une seconde, donc elle n'est pas audible). Je vais essayé de retrouver le script et le fichier mp3, car à quelques secondes de différence ça ne marche pas...

Par contre j'utilisais AUSSI un mp3 silencieux pour la musique d'Exploration. Donc je ne sais pas ce qu'il va se passer avec la musique d'exploration (est-ce qu'elle sera jouée jusqu'au bout, ou interrompue sans cesse... c'est à voir)
(Ultra)VGM récalcitrant et moddeur allergique aux jeux vidéo.

#19 Orann

Orann

    Nérévarine de Pertevue


Posté 23 janvier 2006 - 14:59

Excuse moi si j'ai mal comprit ta réponse mais il semble que tu cherche à supprimer la musique de combat pour laisser la musique d'exploration?  :green:

On fait, je ne veux pas couper les musiques de combat. Je voudrai juste que ma musique d'exploration se lance à la fin des musiques de combats normaux...  :beat:
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#20 Mordicus

Mordicus

    Philippe Risoli & Muppets show


Posté 23 janvier 2006 - 17:54

Dans ce cas c'est très difficile. Il faut en gros choisir entre :
- Musique de Fond originale et musique de combat originale
- Musique personnelle (avec timer)... donc interruption de la musique selon la position du timer (ton problème actuel)
et une dernière option (celle que je viens de donner):
- Pas de musique de fond (mp3 silencieux très court), et du coup pas de musique de combat.

Mais, dans ce dernier cas, il reste une astuce pour remettre la musique en fond: placer ta musique de fond sur un activateur en .wav, avec playsound ou playloopsound. D'ailleurs, il me semble que playsound marche aussi avec un fichier mp3 (de mémoire... à vérifier).

Tu n'auras pas de musique de combat mais tu auras ta musique de fond qui jouera toujours en boucle. Et tu pourras, un peu plus loin, placer un autre activator avec une autre musique.

Mais ce sera sans la musique de combat.

Maintenant, il y a peut-être moyen de ruser avec on onPChitme pour réintroduire la musique de combat... mais je n'ai  jamais essayé.  :green:

Modifié par Mordicus, 23 janvier 2006 - 17:59.

(Ultra)VGM récalcitrant et moddeur allergique aux jeux vidéo.

#21 Orann

Orann

    Nérévarine de Pertevue


Posté 23 janvier 2006 - 19:03

Oki donc si je comprend bien il est impossible d'avoir une musique de fond unique si je maintiens les musiques de combat car, à la fin d'un combat, une musique aléatoire parmi celle du dossier explore sera forcément jouée... Donc dans ce cas, il vaut mieux que je laisse les musiques aléatoires tout le temps comme ça, ça ne choquera pas le joueur d'avoir une musique aléatoire à la fin d'un combat.

Par contre, est-il possible de détecter le lancement d'un combat quelconque (pas avec des npc prédéfinis)? Comme ça j'arrêterai mon timer...

Merci pour tes réponses Mordicus. :green:
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#22 Mordicus

Mordicus

    Philippe Risoli & Muppets show


Posté 24 janvier 2006 - 00:03

Voir le messageOrann, le 23.01.2006 à 19:03, dit :

Oki donc si je comprend bien il est impossible d'avoir une musique de fond unique si je maintiens les musiques de combat car, à la fin d'un combat, une musique aléatoire parmi celle du dossier explore sera forcément jouée... Donc dans ce cas, il vaut mieux que je laisse les musiques aléatoires tout le temps comme ça, ça ne choquera pas le joueur d'avoir une musique aléatoire à la fin d'un combat.
Hélas oui, on n'a peu de marge avec la musique dans Morrowind.

Je pense que ta solution est encore la plus simple. Par contre, tu peux faire en sorte que ce ne soit pas totalement aléatoire. Par exemple, tu peux placer une musique spéciale (dans un autre dossier qu'Explore) sur une porte à l'entrée d'une cell, ou d'un activateur. Comme ça, tu es sûr que le joueur l'entendra à ce moment là. Et si, par exemple, un combat avec est prévu avec un PNJ, tu dois pouvoir relancer la musique une fois le PNJ mort ( if ( OnDeath == 1 ), streammusic, "Orann\mamusique.mp3", endif)... c'est tout bête mais ça évite les problèmes de timer.

Citation

Par contre, est-il possible de détecter le lancement d'un combat quelconque (pas avec des npc prédéfinis)? Comme ça j'arrêterai mon timer...
Apparemment, sans attacher de script au PNJ c'est difficile... La plupart des scripts rusent, en détectant quand le PJ ou le PNJ prend son arme, quand il est touché, etc.

Il faudrait voir ce que donne un script global avec les variables GetAttacked, StartCombat ou GetTarget. Essaie avec ces trois:

if ( Player -> GetAttacked == 1 ); je pencherais pour celle-là

if ( GetTarget, Player == 1 )

if ( startcombat, Player == 1 )

Désolé de ne pas pouvoir mieux aider pour l'instant, je n'ai trop creusé par là...  :P
(Ultra)VGM récalcitrant et moddeur allergique aux jeux vidéo.

#23 Orann

Orann

    Nérévarine de Pertevue


Posté 24 janvier 2006 - 10:03

Oki je vais consulter les Bibles Tutoriales pour voir ce qu'elles en pensent  :P  Sinon, je suppose que si ça existait tu me l'aurai déjà proposé, mais à tout hasard, peut-on détecter une musique de combat en train de se jouer? (comme on peut détecter un son)...
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#24 Mordicus

Mordicus

    Philippe Risoli & Muppets show


Posté 24 janvier 2006 - 11:27

Voir le messageOrann, le 24.01.2006 à 10:03, dit :

Oki je vais consulter les Bibles Tutoriales pour voir ce qu'elles en pensent  :P  Sinon, je suppose que si ça existait tu me l'aurai déjà proposé, mais à tout hasard, peut-on détecter une musique de combat en train de se jouer? (comme on peut détecter un son)...
Apparemment non... toutes les fonctions liées à la musique sont très limitées, et GetSoundPlaying ne s'applique qu'aux "sound ID", pas aux musiques (.mp3) ni aux noms de fichiers des sons (.wav).

Il y a probablement des astuces pour faire démarrer une musique de son choix au début d'un combat (post précédent), mais j'avais cherché sur divers forum Morrowind des exemples de scripts, et l'on en trouve finalement très peu pour la musique. Je me souviens que Kafou avait évoqué le problème de la musique de combat dans un post, peut-être qu'il a une idée.

Sinon, pour info, tu peux regarder une discussion ici (en anglais). L'idée est créer un PNJ (allié) minuscule et invisible dans une cell, qui suit le PJ et sortira immédiatement son arme lorsque le PJ sera attaqué. Si on ne peut pas facilement détecter quand le PJ est attaqué ou attaque, on peut facilement détecter quand un PNJ (allié ou compagnon - commande AIFollowing) est attaqué ou attaque... Dès lors, tu peux détecter le début (et la fin) d'un combat et lancer la musique de ton choix au bon moment. :lol:

Modifié par Mordicus, 24 janvier 2006 - 11:28.

(Ultra)VGM récalcitrant et moddeur allergique aux jeux vidéo.

#25 Orann

Orann

    Nérévarine de Pertevue


Posté 24 janvier 2006 - 13:58

Le principe est interessant mais je ne pense pas avoir les compétences en script pour pousser cette idée jusqu'à son terme. Je pense que je vais me contenter pour le moment de ce que j'ai déjà  :?

Par contre, si un pro du script se sent d'attaque pour tester la méthode, je serai preneur du futur script fonctionnel  ;)

Merci beaucoup Mordicus pour ta patience, tes recherches et tes idées.  :oops:
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)