[RPG-MAKER.FR] Oniromancie: tout l'univers de RPG Maker en français - Scripts - Audio +

Oniromancie: Scripts - Audio +


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace

Apprendre
RPG Maker

Guides
Tutoriels
Astuces
Making-of


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Nylu
Par NanakyTim

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

News: Game design: ouvrir son jeu aux (...) / News: Des jeux et des screens / News: Alex 2019 : tests et nominations (...) / Jeux: Wendy Whedon / Sorties: Wendy Whedon /

Chat  

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

136 connectés actuellement

10212675 visiteurs
depuis l'ouverture

1130 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires






TOP
GAMEMAKING


Les 5 plus
visités

Akademiya RPG Maker

Alex d'Or

Blog of Chaos17

BloGecko

ConsoleFun

Au hasard

Level Up!

Lunae - le bazar d'Emz0

Guelnika & E-magination

Les deux derniers

Zarok

Akademiya RPG Maker

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Audio +
Script pour RPG Maker XP
Ecrit par Zeus81

Ce script pour XP et/ou VX permet d'ajouter des fonctionnalités audio comme mettre le son à droite ou à gauche, mettre en pause, répétition, etc...
Vous pouvez aussi vous en servir pour jouer plusieurs BGM, BGS, ME en même temps.
Cependant c'est pas un script pour débutant, il faut savoir gérer ses sons, par exemple tout arrêter quand on retourne à l'écran titre.
C'est pas très compliqué mais ça nécessite quelque modifications des scripts.

Petit inconvénient concernant les fichiers midi :
Déjà on ne peut en lire qu'un à la fois.
Les fichiers midi ne sont pas lu par RM mais par Windows, ce qui fait que le son est différent.
De plus si vous modifiez le volume ou autre d'un fichier midi les modifications se feront directement sur l'ordinateur, ce qui n'est pas terrible.
Je déconseille donc la lecture de midi en utilisant ce script par contre avec RM y'a pas de problème c'est comme avant.

Toutes les explications pour l'utiliser sont au début du script.
A mettre au dessus du Main.



Portion de code:





#=================================

# Audio +
# Script créé par Zeus81
#=================================
#
#
# Manuel d'utilisation :
#
# Les commandes suivantes doivent être écrites dans un script.
#
#
# OUVERTURE D'UN NOUVEAU FICHIER AUDIO :
# Advanced_Audio.new("identifiant", "nom du fichier")
#
# identifiant = Nom quelconque dont on se servira ensuite pour modifier notre son.
#
# nom du fichier = Nom du fichier à lire (avec le chemin et l'extension).
#
# Exemple : Advanced_Audio.new("BGS 01", "Audio/BGS/020-People02.ogg")
#
# Note : Si un autre fichier audio porte le même identifiant il sera remplacé.
#
#
# DEMARRER LA LECTURE :
# Advanced_Audio["identifiant"].play(répétition, départ, fin)
#
# identifiant = Identifiant précédemment indiqué.
# Attention si l'identifiant ne correspond à aucun fichier ouvert, ça plantera.
#
# répétition = Précise si le fichier doit être lu en boucle ou pas.
# Pour lire en boucle mettez true, sinon false.
#
# départ = Temps à partir d'où débute la lecture en millisecondes.
# Si vous mettez -1 ce sera à partir de la dernière position de lecture.
#
# fin = Temps où s'arrêtera la lecture en ms.
# Si vous mettez -1 ça ira jusqu'à la fin du fichier.
#
# Exemple : Advanced_Audio["BGS 01"].play(true, 0, -1)
#
# Note : Les répétitions redémarrent non pas à la position de départ indiqué mais au début du fichier.
#
#
# METTRE EN PAUSE :
# Advanced_Audio["identifiant"].pause
#
#
# SORTIR DE PAUSE :
# Advanced_Audio["identifiant"].resume
#
#
# ARRETER LA LECTURE :
# Advanced_Audio["identifiant"].stop
#
# Note : Contrairement à la pause si vous voulez redémarrer la lecture il faudra passer par play.
# Ce qui signifie qu'il faudra remettre les options (répétition, départ, fin).
#
#
# FERMER LE FICHIER :
# Advanced_Audio["identifiant"].close
#
# Note : Ferme le fichier et libère la mémoire (en théorie).
#
#
# MODIFICATION DU VOLUME :
# Advanced_Audio["identifiant"].volume_change(volume, temps)
#
# volume = Nouveau volume du fichier entre 0 et 100
#
# temps = Durée de transition en nombre de frames.
#
# Exemple : Advanced_Audio["BGS 01"].volume_change(50, 40)
#
# Note : Par défaut le volume est à 100%
#
#
# MODIFICATION DE LA BALANCE (GAUCHE DROITE) :
# Advanced_Audio["identifiant"].balance_change(balance, temps)
#
# balance = Nouvelle balance du fichier entre -100 et 100
# A -100 le son est à gauche, à 0 au centre, à 100 à droite.
#
# Exemple : Advanced_Audio["BGS 01"].balance_change(-75, 200)
#
# Note : Par défaut la balance est à 0
#
#
# MODIFICATION DE LA VITESSE (TEMPO) :
# Advanced_Audio["identifiant"].pitch(vitesse)
#
# vitesse = Nouvelle vitesse de lecture en pourcentage.
# 200 = 2x, 100 = 1x, 50 = 0.5x
#
# Exemple : Advanced_Audio["BGS 01"].pitch(120)
#
# Note : Par défaut la vitesse est à 100%
#
#
# AUTRES FONCTIONS :
#
# Advanced_Audio["identifiant"].position : retourne la position de lecture actuelle
# Advanced_Audio["identifiant"].length : retourne la durée totale du fichier
# Advanced_Audio["identifiant"].mode : retourne l'état actuel (playing, paused, stopped)
#
# Advanced_Audio.reset : Ferme tous les fichiers audio

if defined?(Advanced_Audio)

Advanced_Audio.reset

else

class << Graphics
alias zeus81_advanced_audio_update update
def update
zeus81_advanced_audio_update
Advanced_Audio.update
end
end


class Advanced_Audio

MciSendString = Win32API.new("winmm", "mciSendString", "ppll", "l")
@@buffer = " "*256
@@audio = {}

def self.[](aliasname)
return @@audio[aliasname]
end
def self.call(command)
return (MciSendString.call(command, @@buffer, @@buffer.size, 0) == 0)
end
def self.update
@@audio.each_value {|audio| audio.update}
end
def self.reset
@@audio.each_value {|audio| audio.volume(1000); audio.close}
end

def initialize(aliasname, filename)
@aliasname = aliasname
@@audio[@aliasname].close if @@audio[@aliasname] != nil
@@audio[@aliasname] = self
Advanced_Audio.call("open \"#{filename}\" alias \"#@aliasname\" type MPEGVideo")
Advanced_Audio.call("set \"#@aliasname\" time format ms")
@volume = 1000.0
@balance = 0.0
@volume_duration = @balance_duration = 0
update
end

def play(repeat=true, from=-1, to=-1)
command = "play \"#@aliasname\""
command.concat(" from #{from}") if from != -1
command.concat(" to #{to}") if to != -1
command.concat(" repeat") if repeat
Advanced_Audio.call(command)
end
def pause
Advanced_Audio.call("pause \"#@aliasname\"")
end
def resume
Advanced_Audio.call("resume \"#@aliasname\"")
end
def stop
Advanced_Audio.call("stop \"#@aliasname\"")
end
def close
@@audio.delete(@aliasname)
Advanced_Audio.call("close \"#@aliasname\"")
end
def position
Advanced_Audio.call("status \"#@aliasname\" position")
return @@buffer.to_i
end
def length
Advanced_Audio.call("status \"#@aliasname\" length")
return @@buffer.to_i
end
def mode
Advanced_Audio.call("status \"#@aliasname\" mode")
return @@buffer.gsub("\000", "")
end
def pitch(pitch)
Advanced_Audio.call("set \"#@aliasname\" tempo #{pitch.to_i}")
Advanced_Audio.call("set \"#@aliasname\" speed #{(pitch*10).to_i}")
end
def left_volume(volume)
Advanced_Audio.call("setaudio \"#@aliasname\" left volume to #{volume.to_i}")
end
def right_volume(volume)
Advanced_Audio.call("setaudio \"#@aliasname\" right volume to #{volume.to_i}")
end
def volume(volume)
Advanced_Audio.call("setaudio \"#@aliasname\" volume to #{volume.to_i}")
end

def volume_change(volume, duration=0)
@volume_target = [[volume*10, 0].max, 1000].min
@volume_duration = [duration*2, 1].max
end
def balance_change(balance, duration=0)
@balance_target = [[balance*10, -1000].max, 1000].min
@balance_duration = [duration*2, 1].max
end

def update
if @volume_duration > 0
@volume = (@volume * (@volume_duration - 1) + @volume_target) / @volume_duration.to_f
@volume_duration -= 1
end
if @balance_duration > 0
@balance = (@balance * (@balance_duration - 1) + @balance_target) / @balance_duration.to_f
@balance_duration -= 1
end
if @last_volume != @volume or @last_balance != @balance
@last_volume = @volume
@last_balance = @balance
left_volume((1000 - @balance) * @volume / 1000)
right_volume((1000 + @balance) * @volume / 1000)
end
end

end

end



foxfiesta - posté le 25/02/2009 à 10:22:27. (449 messages postés)

Wah pas mal ce script !

*s'en va ouvrir son éditeur de scripts*

Game Dev Alliance


RPG-Man - posté le 25/02/2009 à 12:06:25. (812 messages postés)

Rubyste, C#iste, 17 ans, over-booké.

Huhu, je garde en mémoire ça! Très utile (par exemple si on veut mettre le son en pause dans le menu, pour reprendre après!).
Zeus81, tu es un génie!

Blog de l'Usine en Folie| Vous l'attendez tous impatiemment ! | Geex


Metroid_Prime - posté le 25/02/2009 à 12:17:44. (183 messages postés)

Ca peut être très utile comme script ^^


Rockmik - posté le 25/02/2009 à 18:45:50. (12670 messages postés) - honor

En ligne

Merci. ;)

Les ramens, c'est délicieux.


tamtammort - posté le 26/02/2009 à 13:20:44. (376 messages postés)

Merci pour ce script, une p'tite place dans mes crédits pour Zeus !


berka - posté le 26/02/2009 à 16:57:58. (493 messages postés)

planchant sur un script

Portion de code : Tout sélectionner

1
Advanced_Audio.call("open \"#{filename}\" alias \"#@aliasname\" type MPEGVideo")  



pas besoin de définir un format particulier, ca évitera les problemes de codecs pour les formats autres que mp3.

bon script !

amicalement,
berka

Twitter: Pensées politiques et juridiques. Réflexions informatiques


Zeus81 - posté le 26/02/2009 à 20:59:31. (11071 messages postés)

Ben justement si on précise rien, ça ne lit plus les ogg et les fonctions de boucle ou de balance ne marchent quasiment que pour le mp3.


FoxFiesta - posté le 27/02/2009 à 11:01:17. (449 messages postés)

Pour ceux qui ont des problèmes avec les MIDIs, je pense que DBPowerAmp peut les transformer en mp3, ogg...

Le logiciel est téléchargeable ici. :D

Game Dev Alliance


megalatios - posté le 27/02/2009 à 17:20:28. (12184 messages postés)

Alias God Mode, alias Zeus. Je suis absolu...

Super. Est-ce que ce script permet aussi de diffuser des BGM aléatoires lors qu'on a accès au menu? Si oui, Zeus81 sera l'un de mes messies...

Onche onche party - Fan de géopolitique et de Trotter - Calcul mental - Je suis une star


Ipnoz - posté le 27/02/2009 à 22:21:22. (539 messages postés)

Nostalgique!

Cool ton script zeus :)

Moi, j'active les flocons d'oniro :D


RPG-man - posté le 17/03/2009 à 18:24:54. (812 messages postés)

Rubyste, C#iste, 17 ans, over-booké.

Ben, Zeus ça y'est, je l'ai prit pour Galactic Battle, pour par exempler mettre la musique en pause pendant le mini-menu en jeu.
Merci!

Blog de l'Usine en Folie| Vous l'attendez tous impatiemment ! | Geex


Ryk - posté le 12/10/2010 à 16:50:27. (33 messages postés)

C++ && Ruby

Alors ça c'est du beau code!! Content de voir un script si bien documenté qui fonctionne nickel.

:elusun

L'imagination est plus importante que la connaissance.


Nana - posté le 15/05/2013 à 19:33:39. (45 messages postés)

Rêveuse Passionée

Super script merci beaucoup !


Degenpy - posté le 18/11/2015 à 18:30:44. (32 messages postés)

Jeune maker qui essaie des trucs.

Excellent script Zeus comme d'hab ! :D
Pensez à bien installer un codec Ogg si ce n'est pas déjà le cas. Il est trouvable ici http://www.vorbis.com/setup_windows/ (site officiel), sinon les musiques en Ogg ne se liront pas.
Par contre lors de la lecture multipistes les pistes se désynchronisent entre elles. Pour mon projet j'aimerai rajouter des pistes qui se greffe à la mélodie principal au fur et à mesure de l'avancé dans un donjon. Pour qu'elles soient bien synchronisées je les lancent toutes en même temps et je met à le volume à zéro pour les pistes que je n'utilise pas tout de suite (j'ai régler le volume à 0 de base dans le script) puis j'augmente le volume de ces pistes en fondu au fur et à mesure de l'avancé dans le donjon avec des commandes script dans les événements. Mais à force de boucler les pistes finissent par se désynchroniser entre elles.
J'ajoute que les pistes font toutes la même longueur et que le problème apparait que soit en OGG, Mp3 ou Wav.
Tu aurais une solution Zeus ?


crazyboko - posté le 30/12/2018 à 15:22:19. (15 messages postés)

Bon sang de bonsoir !

Ce script m'intéresse fortement pour éviter que les musiques recommencent au début après un combat...

Mais je n'arrive même pas à les écouter.

Premier évènement :
Script : Advanced_Audio.new("machin", "Audio/BGS/bidule.wav")

Deuxième évènement :
Script : Advanced_Audio["machin"].play(false, 0, -1)

La musique bidule.wav est dans le dossier BGS.

Et pourtant rien ne se lance (ni en mp3 ni en ogg) :feu


J'ai copié collé le script donc normalement pas d'erreur.

Je vois que ça a l'air de marcher pour les autres.
Alors quelqu'un aurait une idée sur ce que je fais mal pour réussir à lancer la zic ?

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site:

Communauté: Accueil | News | Forum | Flash-news | Sorties | Chat | Commentaires | Galerie | Blogs | Articles perso | Screen de la semaine | Palmarès | Livre d'or | Recherche | Interviews | OST | L'Annuaire | Divers
Apprendre: Le Wiki | Tutoriels | Guides | Gaming-Live | Tests | Making-of
Télécharger: Programmes | Scripts | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | Collection Oniro | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Hébergés: Aëdemphia | Fighting Robots Quest | Geex | Inexistence | La Légende d'Ibabou | Nylu | Sarcia | Super Mario RPG - Lost Souls
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis