¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 Audio Loop para Rpg Maker XP [Definitivo] el Lun Feb 05, 2018 5:23 am

Reputación del mensaje :100% (2 votos)

Super_SaiyanDios

avatar
Audio Loop para Rpg Maker XP [Definitivo]
RPG Maker (XP)

Más de alguno ya debe haberlo visto, pero bueno lo dejo aquí por si no eres uno de ellos:
Si más de alguno intento colocar una melodía loopeada en Rpg maker XP se habra dado cuenta
de que no se loopea. La Melodía comunmente se reproduce, termina y se vuelve a reproducir
desde su inicio. Esto es porque RPG Maker XP no reconoce archivos de audio con un loop,
aunque en Rpg Maker VX ACE y Rpg Maker MV sí se puede.

Bueno con todo esto que explicaremos muy detalladamente a continuación, les permitira
reproducir melodías loopeadas de forma definitiva, esto quiere decir que será tambien
efectivo al momento de comprimir su proyecto con el mismo instalador del maker o con
otros sistemas compresores, aunque esto tambien dependera mucho de su sistema compresor.

¿Que es un audio loop?
Es digamos un Blucle que se genera en una determinada area de la musica.
No como lo hace el maker por defecto desde su Inicio a Final, si no que
desde un tiempo que se desee tomar como Punto "A" hasta otro tiempo
para tomar como Punto "B". La musica comenzará desde su INICIO hasta que
despues colisione con su punto "A" y finalmente se reprodusca la música
hasta llegar al punto "B", justo despues de toparse con el punto "B"
instantaneamente volvera la música al punto "A" hasta terminar nuevamente
en el punto "B" y así volver hasta el Punto "A" sucesivamente creando este
bucle de forma ilimitada.




INSTRUCCIONES DE INSTALACIÓN:

- Abrimos nuestro proyecto, nos vamos a el editor de Script, le damos a insertar, y
 copiamos lo siguiente:

RGSS Linker:

Código:
#===============================================================================
# RGSS Linker (Kernel)
#  Fonction permettant de charger des extensions utilisant le RGSS Linker
#===============================================================================
# ©️ 2015 - Nuri Yuri (塗 ゆり)
#===============================================================================
module Kernel
  unless @RGSS_Linker #>Pour éviter le problème du RGSS Reset avec les projets sans loader
    
  @RGSS_Linker = {:core => Win32API.new("RGSS Linker.dll","RGSSLinker_Initialize","p","i")}
  Win32API.new("kernel32","GetPrivateProfileString","ppppip","i").call("Game","Library",0,lib_name = "\x00"*32,32,".//Game.ini")
  raise LoadError, "Failed to load RGSS Linker." unless(@RGSS_Linker[:core].call(lib_name)==1)
  lib_name = nil
  module_function
  #=============================================================================
  #>Kernel.load_module
  #  Permet de charger une extension RGSS
  #=============================================================================
  #E : module_filename : String : nom de fichier qui contient l'extension
  #    module_function : String : nom de la fonction qui va charger l'extension
  #=============================================================================
  def load_module(module_filename, module_function)
    return if @RGSS_Linker[module_filename]
    mod = @RGSS_Linker[module_filename] = Win32API.new(module_filename, module_function, "", "")
    mod.call
  end
  
  end #>unless @RGSS_Linker
end

- Insertamos otro script DEBAJO del anterior y copiamos esto:

FmodEx:

Código:
#===============================================================================
# Audio (FmodEx)
#  Réécriture du module Audio pour intégrer l'utilisation de FmodEx
#===============================================================================
# ©️ 2015 - Nuri Yuri (塗 ゆり)
# ©️ 2015 - GiraPrimal : Concept LOOP_TABLE
#===============================================================================
#Script réalisé par des membres de Community Script Project
#===============================================================================
module Audio
  LOOP_TABLE = [
  # [ "Audio/xxx/Nom_de_fichier", debut, fin ]
  # Ajoutez ici
  
 
  # Note : Pensez à ajouter une virgule après chaque ]
  #        (sauf pour la dernière ligne et le ] ci-dessous).
  ]
  #=============================================================================
  #>Mise en minuscule des noms de fichier pour améliorer la recherche
  #---
  LOOP_TABLE.each do |i| i[0].downcase! end
  
  unless @bgm_play #>Pour éviter le problème du RGSSReset
  #=============================================================================
  #>Chargement et initialisation de FmodEx
  #=============================================================================
  Kernel.load_module("RGSS FmodEx.dll","Init_FmodEx")
  ::FmodEx.init(32)
  #=============================================================================
  #>Indication de la lib' utilisée par défauts
  #=============================================================================
  @library = ::FmodEx
  #=============================================================================
  #>Sauvegarde des fonctions du RGSS
  #=============================================================================
  @bgm_play = method(:bgm_play)
  @bgm_fade = method(:bgm_fade)
  @bgm_stop = method(:bgm_stop)
  @bgs_play = method(:bgs_play)
  @bgs_fade = method(:bgs_fade)
  @bgs_stop = method(:bgs_stop)
  @me_play = method(:me_play)
  @me_fade = method(:me_fade)
  @me_stop = method(:me_stop)
  @se_play = method(:se_play)
  @se_stop = method(:se_stop)
  #=============================================================================
  #>Définition des volumes
  #=============================================================================
  @master_volume = 100
  @sfx_volume = 100
  #=============================================================================
  #>Définition des extensions supportés par FmodEx
  #=============================================================================
  EXT = ['.ogg', '.mp3', '.wav', '.mid', '.aac', '.wma', '.it', '.xm', '.mod', '.s3m', '.midi']
  #=============================================================================
  #>Création/définition des fonctions
  #=============================================================================
  module_function
  def bgm_play(file_name, volume = 100, pitch = 100)
    volume = volume * @master_volume / 100
    return @bgm_play.call(file_name, volume, pitch) if(@library != ::FmodEx)
    filename = check_file(file_name)
    bgm = ::FmodEx.bgm_play(filename, volume, pitch)
    loop_audio(bgm, file_name)
  end
  def bgm_fade(time)
    return @bgm_fade.call(time) if(@library != ::FmodEx)
    ::FmodEx.bgm_fade(time)
  end
  def bgm_stop
    return @bgm_stop.call if(@library != ::FmodEx)
    ::FmodEx.bgm_stop
  end
  def bgs_play(file_name, volume = 100, pitch = 100)
    volume = volume * @sfx_volume / 100
    return @bgs_play.call(file_name, volume, pitch) if(@library != ::FmodEx)
    filename = check_file(file_name)
    bgs = ::FmodEx.bgs_play(filename, volume, pitch)
    loop_audio(bgs, file_name)
  end
  def bgs_fade(time)
    return @bgs_fade.call(time) if(@library != ::FmodEx)
    ::FmodEx.bgs_fade(time)
  end
  def bgs_stop
    return @bgs_stop.call if(@library != ::FmodEx)
    ::FmodEx.bgs_stop
  end
  def me_play(file_name, volume = 100, pitch = 100)
    volume = volume * @master_volume / 100
    return @me_play.call(file_name, volume, pitch) if(@library != ::FmodEx)
    file_name = check_file(file_name)
    ::FmodEx.me_play(file_name, volume, pitch)
  end
  def me_fade(time)
    return @me_fade.call(time) if(@library != ::FmodEx)
    ::FmodEx.me_fade(time)
  end
  def me_stop
    return @me_stop.call if(@library != ::FmodEx)
    ::FmodEx.me_stop
  end
  def se_play(file_name, volume = 100, pitch = 100)
    volume = volume * @sfx_volume / 100
    return @se_play.call(file_name, volume, pitch) if(@library != ::FmodEx)
    file_name = check_file(file_name)
    ::FmodEx.se_play(file_name, volume, pitch)
  end
  def se_stop
    return @se_stop.call if(@library != ::FmodEx)
    ::FmodEx.se_stop
  end
  #=============================================================================
  #>check_file
  #  Vérifie la présence du fichier et retourne le nom du fichier existant
  #  /!\ Ne corrige pas la connerie
  #=============================================================================
  def check_file(file_name)
    return file_name if File.exist?(file_name)
    EXT.each do |ext|
      filename = file_name+ext
      return filename if File.exist?(filename)
    end
    return file_name
  end
  #=============================================================================
  #>loop_audio
  # Fonction permettant de réaliser automatiquement l'appel de set_loop_points
  #=============================================================================
  def loop_audio(sound, file_name)
    filename = file_name.downcase
    LOOP_TABLE.each do |i|
      if(i[0] == filename)
        return sound.set_loop_points(i[1], i[2])
      end
    end
  end
  end
end

Bien... una vez terminemos de pegar los script, necesitaremos los siguientes archivos .dll

-fmodex.dll
-RGSS FmodEx.dll
-RGSS Linker.dll
-RGSS104E.dll

Que lo pueden descargar Aquí (Has Clic aquí):

Estos archivos .dll los tienen que dejar junto al ejecutador de su proyecto.
Deberia quedar algo como esto:



Y listo, ahora su Rpg maker XP esta listo para leer audios loop.

Autor y Creditos a:

- Nuri Yuri (塗 ゆり) (https://www.pokecommunity.com/showthread.php?t=349496)
- GiraPrimal

Agradecimientos a :

- AlanVenator (Pagina con Instrucciones en Español)(https://wahackforo.com/t-50921/como-loopear-musica)
- Nagato Yuki (Pagina web con recursos)(http://www.rpg-maker.fr/scripts-505-extension-rgss-fmodex.html#top)
- Wecoc       (Mundo Maker) (http://www.mundo-maker.com/u342)

- SOLUCIÓN DE POSIBLES ERRORES:

Puede que Habitualmente te aparesca el siguiente mensaje de error:



No te preocupes no es ninguna falla del script ni del sistema.
Es por que un audio que se está llamando para reproducir no se encuentra en la carpeta correcta o no existe en su actual
proyecto. Suele ocurrir está falla ya que comúnmente cuando se crea un proyecto nuevo, los audios y gráficos (RTP) no
vienen incluidos y es normal de que cuando se ejecuta el proyecto nuevo, los datos se cargan desde el lugar principal
de instalación del RPG Maker XP. En conclusión, este script necesitara al menos que todos los audios que se usaran en el
proyecto actual se encuentren en su carpeta de Audio propia. De esta forma el error no ocurrirá jamás.

También puede existir errores referente a el archivo RGSS104E.dll



La solución es tan simple como renombrar ese RGSS104E.dll por el cual tu rpg maker xp esta usando siempre, ejemplo:
RGSS102J.dll Pues si lo desconoces, puedes abrir con el bloc de notas (de windows) el archivo "Game.ini" que se
encuentra junto al ejecutador de tu proyecto.

Aparecerá esto:

[Game]
Library=RGSS102J.dll
Scripts=Data\Scripts.rxdata
Title=Project1
RTP1=Standard
RTP2=
RTP3=

Como puedes ver aquí se muestra tu versión de archivo .dll que se carga. No es conveniente re nombrarlo desde
aquí y guardarlo, pero si por algún otro motivo tienes que cambiarlo, puedes re nombrarlo desde aquí sin ningún
problema a la versión de .dll que se este usando y finalmente guardarlo, pero si lo haces de esta forma,
cada vez que le des al botón de guardar cambios en el editor de Rpg maker XP, este archivo volverá a quedar
con su .dll original del maker y tendrás que re nombrarlo a cada instante, es por ello que no es muy amigable
cambiarlo desde aquí.

- LOOPEAR UN ARCHIVO DE AUDIO ATRAVES DE LOS METADATOS.

Bueno con respecto al sistema Audio Loop explicado con anterioridad, esto les ayudará a crear
cualquier audio que deseen con un bucle comprimido en los metadatos de la melodía.
¿Que necesitamos?:

Bueno necesitaremos un buen programa de edición de audio, en mi caso usare Audacity
Ustedes pueden usar el que deseen, pero yo voy a usar y explicar con el Audacity.

Bien una vez Abierto, arrastramos la Melodía sobre el programa, en mi caso usare la Melodia
de Sigma Theme Final, de Megaman X6 (Siempre es bueno hacerle una copia de respaldo a su música).

Al cargar la Música hay que ver el lugar correcto donde se repite la Música, desde su comienzo
y Final. Como ejemplo para su explicación, usaremos la Imagen Anterior.

Donde el Color Rojo Representa el inicio del tema Musical, casi la mayoría de los casos es
un ritmo por el cual no se vuelve a repetir despues, como es el caso de la Melodia Principal.

Donde el Color Verde Representa la Melodía Principal de la Música como lo pueden ver
tambien se repite en los colores Amarillo y Morado, solo que en estos dos ultimos no lo necesitaremos.

Donde el color Amarillo como hemos dicho antes se repite la melodía principal por segunda vez, para
no ocupar espacio en nuestro proyecto la vamos a eliminar.

Donde el color Morado como hemos dicho antes se repite la melodía principal por Tercera vez, solo
que aqui se va decreciendo para dar termino de la Melodía. Para no ocupar espacio en nuestro proyecto
tambien la vamos a eliminar.



Estableceremos la zona de loop en la melodía principal, de esta forma se reproduce la canción completa
una vez, primero desde el inicio del tema musical, luego la melodía principal y luego se repetirá
indefinidamente dependiendo de lo que hayamos puesto en la zona del Punto A y el Punto B.



Para establecer la zona de loop, nos ayudaremos de dos marcas, para insertarlas nos vamos a
Pistas --> Añadir etiqueta en la selección o simplemente pulsando a la vez la tecla Control + B.



Ahora hay que ajustar la colocación de las etiquetas, tienen que quedar las dos en la misma posición
respecto a la melodía, (para que no haya ningún salto raro en la canción). El sitio ideal es justo
antes de una onda, en un punto de silencio, es decir, que la onda pase por el 0, el eje horizontal.
(Con esto conseguimos evitar ruidos que se producen al loopear mal una canción). Nos ayudamos del
zoom para tener una mejor visión.



Comprobamos que hemos ajustado bien, para ello seleccionamos toda la región del bucle, luego pulsamos
la tecla Shift y le damos al boton de play para reproducir cíclicamente. Si al pasar del final del
bucle al principio no escuchamos nada extraño y el cambio es fluido, es que hemos ajustado bien.



Borramos todo desde el final del bucle hasta el final de la canción (Zona de Color Amarillo y Morado)
Con esto reducimos peso del archivo.

Antes de exportar, debemos irnos a la parte de abajo del programa y con el botón derecho cambiar el
formato a muestras (o samples). También hay que asegurarse de que está seleccionado longitud en vez de final.





Volvemos a seleccionar el área del bucle y le damos a exportar (Archivo --> Exportar audio) Como formato
Seleccionamos "Archivos Ogg Vorbis" y en calidad elige la que desees.

Una vez hecho eso nos sale Editar etiquetas de metadatos y añadimos dos etiquetas, una que se llame "LOOPSTART"
y otra "LOOPLENGTH" (es Obligación). En los valores ponemos los de comienzo de selección y los de longitud.



Le damos a aceptar y listo, ya tenemos una canción loopeada lista para insertar en nuestro proyecto de RPG Maker XP.

- LOOPEAR LA MELODÍA DE VICTORIA:

Tambien quiero dejar un Script que les permite Seleccionar un BGM para el Tema Musical de Ganar la batalla.
Basicamente al Ganar un combate en vez de seleccionar un ME seleccionas un BGM para la melodía de victoria.

Que implica esto?

Bueno... esto permite hacer una melodía de Victoria Loopeada y que cuando el jugador pulse el boton para continuar,
la Melodia se decrece y termine para continuar con el mapa.

Aqui el Script:

Código:
#==============================================================================
# musik_tall (modified for waterpg , http://waterpg.coolforum.info)
#==============================================================================
class Scene_Battle
  #
  #
  VICTORY_BGM = "" #   <<<<=== Aquí el nombre de la Melodía de Victoria.
  #
  #
  FADE_DURATION1 = 1000
  FADE_DURATION2 = 0.25
  #
end

#==============================================================================
# ¡ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  alias xrxs_bp18_start_phase5 start_phase5
  def start_phase5
    # ŒÄ‚Ñ–ß‚·
    if VICTORY_BGM == ""
      xrxs_bp18_start_phase5
      return
    end
    #
    $game_system.battle_end_me.name = ""
    xrxs_bp18_start_phase5
    Audio.bgm_play("Audio/BGM/" + VICTORY_BGM)
  end
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  alias xrxs_bp18_battle_end battle_end
  def battle_end(result)
    xrxs_bp18_battle_end(result)
    #
    #
    if VICTORY_BGM == ""
      Audio.me_fade(FADE_DURATION1)
      @me_fade_thread = Thread.new do
        sleep(FADE_DURATION2)
        Audio.me_stop
        @me_fade_thread.kill
      end
    else
      Audio.bgm_fade(FADE_DURATION1)
      @bgm_fade_thread = Thread.new do
        sleep(FADE_DURATION2)
        $game_system.bgm_play($game_temp.map_bgm)
        @bgm_fade_thread.kill
           end
        end    
    end
  end

Puedes añadirlo justo debajo de los 2 Script de Loopeo.

- LOOPEAR MÚSICA CON SCRIPT:

Bueno, como podran ver, el script de loopeo llamado "FmodEx" se pueden agrupar los audios que desean loopear con
un sistema diferente. Ademas de poder loopear lo que haya en cualquier carpeta (siempre y cuando se ejecuten como  
BGM o BGS) tambien se abre a un paso de poder loopear otros tipos de formato de Audio como lo es el de Mp3.

Primero que todo deberan de abrir el editor de audio Audacity, si tiene un editor de audio que solo cuente la
cantidad de Milisegundos mucho mejor, ya que audacity al cumplir los 60.000 milisegundos marca un valor en "m" y
vuelve el conteo a 0, (Necesitamos un contador de milisegundos que supere los 60.000) Yo voy a explicar de todas
formas como hacerlo con Audacity (es solo cosa de matematicas).

Hagan exactamente lo mismo que han hecho con el sistema de loopeo de metadatos con Audacity y cuando ya justo
antes de que vayan a exportar su melodía, debemos irnos a la parte de abajo del programa y con el botón derecho
cambiar el formato a "hh : mm : ss + Milisegundos". Tambien a comparación del metadatos hay que asegurarse de que
este seleccionado Fin en vez de Longitud.



Ahora biene lo importante... No todas, pero algunas melodias superan los 60.000 miligundos tanto como en "fin"
que como en el "Comienzo de la selección" si su programa lee superior a 60.000, ejemplo 105.689 milisegundos,
anote con toda confiansa sus cifras en el script. Ahora en el caso de Audacity hemos colocado una melodia
que supera los 60.000 milisegundos de loopeo apareciendo estas cifras:



Como se puede ver si se aumenta la cifra de "m" esa cifra se multiplica por 60000 y el resultado se le suma
los "s". Ahora bien es algo unico y de Locura, pero en el caso de que sean horas "h" las que aumente, esa
cigra se multiplica por 60 el resultado se le suma lo de "m" y el resultado se Multiplica por 60000 y el
resultado de esa multiplicación se le suma lo de "s" y finalmente el Resultado de esa suma se coloca en el
Script.

Recuerda la síntesis de el script es la siguiente:

[ "Audio/W/X",  Y, Z]

En donde W : Añade el nombre de la carpeta en donde se encuentra el audio que quieres loopear.
En donde X : Añade el nombre del audio que quieres loopear ( No incluir el formato )
En donde Y : Añade los milisegundos de la música donde comienza el loopeo (Punto A)
            "Comienzo de la selección" en Audacity.
En donde Z : Añade los milisegundos de la música donde termina el loopeo (Punto B)
            "Fin" en Audacity.

Bueno y finalmente puedes guardar la música en otro formato o simplemente cerramos el audacity ya que
en el script ya tenemos colocado el lugar de loopeo de la música, de esta manera se puede dejar en el
formato de audio deseado siempre y cuando sea uno de los siguientes:

Formatos revisados con Audacity

.ogg = Loopea Perfecto
.mp3 = Loopea Perfecto a 128 Kbps
.wav = Loopea Perfecto (WAV Microsoft) PCM de 16bit con signo) con Audacity.
      El problema es que pesa mucho el tamaño en sus resultados.
.mid o .midi = Loopea Perfecto
.aac = Desconozco su Funcionamiento
.wma = Desconozco su Funcionamiento
.it  = Desconozco su Funcionamiento
.xm  = Desconozco su Funcionamiento
.mod = Desconozco su Funcionamiento
.s3m = Desconozco su Funcionamiento

A pesar de que todos los formatos loopean bien y de forma fluida sea el formato que sea. El
problema es respecto al tiempo en que se ajusta el inicio y fin del loopeo con el Script de FmodEx.
Eso es lo que principalmente ocasiona diferencias de tiempos. Como es el caso del .Mp3 puede dar un
pequeño cambio en el tiempo al momento de ajustar los valores de loopeo, desconozco el motivo pero
parece ser la secuencia de reproducción, ya que el formato mp3 al estar con 192 Kbps genera esto.
Entonces el formato MP3 al transformarse a los 128 Kbps evitara este error, La solución es exitosa
y muy efectiva pero aun así se recomienda utilizar el formato .ogg para todo lo que hay que loopear.

No es una crítica ni nada por el estilo pero intenten de no copiar el script de "wahackforo.com" ya que esta mal
puesto en el foro y me costo muchos errores por eso. Aquí en Universo maker lo encontrarán limpio, esto
quiere decir que la separación de cada párrafo es la ordenada y correcta.

Listo... y eso seria todo exactamente.
Ojala les funcione, parece algo dificil pero ya verán que no lo es cuando ya tengan el conocimiento.
Hay que aclarar que no hay ningún ruido o silencio en el transcurso del loopeo siempre y cuando se
haga todo bien. Ademas si la ventana se minimetiza y el audio de igual forma se loopea (Sin fallas) Ópalo Guiño.
Aquí les dejo la Demo con todo:

DEMOSTRACIÓN (Has Clic aquí):

(Perdónenme por el ambiente de el Mapa y las falta de ortografía en el tema es que lo he hecho Apurado Ópalo Sonrisa Grande).

AYÚDANOS SOBRE EL AUDIO .MID o .MIDI

Ahora si tienes este sistema el audio .MID o .MIDI ya no se loopea de forma automatica.
Aunque siempre puedes ajustar una posición de loopeo en el Script "FmodEx".

En lo personal no pude descifrar el lugar de loopeo en los MIDI del Maker, ademas de no poder
reproducir los midi en audacity y no pude ver los mili segundos exactos de loopeo, aun así
me las ingenie para ver aproximadamente el punto de loopeo y ajustarlo en la Demo.

Si Alguien sabe de algún software para reproducir y ver los mili segundos de un Midi
o de un software que muestre el bucle de los Midi del rpg maker. Que nos comente
por favor, en este tema seria de gran ayuda.

¿Y la Plantilla de U.Maker?
Pido enormes disculpas por no utilizarla ya que se trata de un largo post y difícil para mi de coordinar con la plantilla, podría hacer cosas raritas en el sitio
y sin intenciones xd. bueno ojala les sirva a otro grupito más de gente, bye

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.