Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

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

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

News: Les pommes de terre volent haut, (...) / Scripts: Old RPG Maker Style 1.12 / Jeux: NoRoi / Jeux: Dyhortfight chapitre 4 / Programmes: [2000-2003] EasyRPG Player / Chat

Bienvenue
visiteur !





Désactiver
la neige


publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

137 connectés actuellement

26707560 visiteurs
depuis l'ouverture

1603 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Guelnika & E-magination

Zarok

RPG Maker - La Communauté

Lumen

Tous nos partenaires

Devenir
partenaire



Audio +

Ajoute des fonctionnalités audio comme mettre le son à droite ou à gauche, mettre en pause, répétition, etc...

Script pour RPG Maker XP
Ecrit par Zeus81
Publié par zeus81 (lui envoyer un message privé)
Signaler un script cassé

❤ 0

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 : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
#=================================
# 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



Mis à jour le 4/7/2020.






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

❤ 0

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 (0 messages postés)

❤ 0

J'aime mapper mais je sais pas mapper ...

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!


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

❤ 0

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


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

❤ 0

En ligne

Merci. ;)

Les ramens, c'est délicieux.


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

❤ 0

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)

❤ 0

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)

❤ 0

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 (443 messages postés)

❤ 0

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


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

❤ 0

Nostalgique!

Cool ton script zeus :)

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


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

❤ 0

J'aime mapper mais je sais pas mapper ...

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!


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

❤ 0

C++ && Ruby

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

:plusun

L'imagination est plus importante que la connaissance.


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

❤ 0

Rêveuse Passionée

Super script merci beaucoup !


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

❤ 0

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 ?

Clique ici pour découvrir Ah'ra Project, élu meilleur jeu 2027 selon l'UFC que choisir.


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

❤ 0

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 | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
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
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers