Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 4067 miembros registrados.
El último usuario registrado es segaj89.

Nuestros miembros han publicado un total de 84121 mensajes en 11982 argumentos.

[RMXP] Un Posible Script de Audio Loop

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Un Posible Script de Audio Loop

Mensaje por AsFzKakarotto el 2017-06-12, 21:47

Hola amigos de Mundo Maker.
Cavando en lo mas profundo del internet, en los proyectos de Rpg maker XP Orientales… he encontrado este script… quizás sea difícil de entender ¿no?.
Y no es por ello que me ha llevado a pedir vuestra ayuda jajajaja por que de seguro que si fuera por todos los script que he encontrado, estaría lleno de mis mensajes xd.
La cosa es que este script  se parece a uno que lo he soñado en años por su real existencia, ya que de todos los inconvenientes que tiene RMXP el sistema de loopeo en un audio de formato [.Ogg] es lo que más me dolió que no tuviera ( Igual te adoro XP ).
Eh encontrado en algunos post ya pasados, algunas soluciones…
Ejemplo el script Audio_Loop que viene junto al de Audio_Player ,digamos que es un proyecto que nos permite crear un script para que nuestros audios personalizados se repitan constantemente de un punto a otro.
La idea fue genial pero tiene 2 inconvenientes…
1• No se puede minimizar la ventana del juego o la música se detiene.
2• Dentro de la unión entre un punto y otro existe un pequeño tiempo
 de silencio muy molestos y sin solución (esto no me agrado mucho).
Aun así es una de las pequeñas soluciones que agradezco como a muchos.

Y la otra magnifica solución fue el Rpg maker XP con el sistema de script transformado a VX, que si no me equivoco lo hizo el gran wecoc.
Este ultimo me gusto bastante ya que tiene dicho sistema y funciona como yo lo he deseado, pero resulta que ese método no funciona más a la hora de que el proyecto es comprimido, ya sea por el mismo rpg o con otros programas, el objetivo es igual. Y además aun desconozco si es compatible con los script de Rpg maker XP, ya que como se ha transformado a VX, creo que no funcionan o tal vez si, en conclusión no me he fijado bien… así que no lo confirmo.

Ya… me dejo de mensajes largos y aquí dejo el script (es que quería explicarme):

Código:
#==============================================================================
# ■ BGMモジュール Ver.0.0.1
#------------------------------------------------------------------------------
#  BGM用音楽制御モジュール。
#   使用方法は各関数の説明を参照してください。
#------------------------------------------------------------------------------
# このモジュールを使用する場合はRattiE氏の EasyConv を導入しておいてください
#  → MoonlightINN(http://cgi.members.interq.or.jp/aquarius/rasetsu/)
#     → EasyConv は↓こちら
# http://cgi.members.interq.or.jp/aquarius/rasetsu/MoonlightINN/trash/tkoolxp.html
#
# このモジュールを使用する場合は ツクールXPのRTP を最新にアップデート
# しておいてください。(要:RGSS102J.dll)
#------------------------------------------------------------------------------
# by 和希
#------------------------------------------------------------------------------
# 2005/11/26 v0.0.1 初出。
#==============================================================================
module Bgm

  BGM_ALIAS = "bgm" # xpbgmBGMのエイリアス名(MCIの識別名)
  LOOP_CHECK_TIMING = 0.01  # ループ再生監視の頻度[秒] (実際はこれより遅くなる)
  @@filename  = nil   # 現在開いているファイル名
  @@stop_req  = false # 停止要求フラグ
  @@loop_thread = nil # ループ再生監視スレッド

  #--------------------------------------------------------------------------
  # このメソッドは内部用です!
  #--------------------------------------------------------------------------
  # ○ MCIにコマンド文字列を送信する
  #    command : コマンド文字列
  #    buffer  : MCIからの返事を格納するバッファ
  #    buf_len : bufferのサイズ
  #    hwnd    : RGSSからだと基本的に使わない
  #--------------------------------------------------------------------------
  def self.mciSendString( command, buffer=nil, buf_len=0, hwnd=0 )
    mci = Win32API.new('winmm.dll', 'mciSendStringA', %w(p p l l), 'l')

    ret = mci.call( EasyConv::u2s(command), buffer, buf_len, hwnd )
    if buffer != nil
      buffer.gsub!(/\A(.*)\Z/){ EasyConv::s2u( $1 ) }
    end
    return ret
  end

  #--------------------------------------------------------------------------
  # ● 再生する
  #--------------------------------------------------------------------------
  #    filename : 再生するファイル
  #    pos      : 再生開始場所(省略した場合はそのまま開始)
  #--------------------------------------------------------------------------
  def self.play(filename, pos=nil)
    if @@filename.nil? or @@filename != filename
      if not @@filename.nil?
        # @@filename が nil 以外なら別のファイルオープン中
        close # 強制再生中断&ファイルクローズ
      end
      # ファイルオープン ret==0 なら成功
      ret = mciSendString("open \"#{filename.to_s}\" alias #{BGM_ALIAS}")
      if ret == 0
        # ファイルオープン成功
        @@filename = filename.dup
      end
    end
    @@stop_req = false
    # ファイルオープン状態なら再生開始
    if not @@filename.nil?
      # 再生開始位置が設定されていた場合は、そこから再開する
      if not pos.nil?
        seek(pos)
      end
      mciSendString("play #{BGM_ALIAS}")
      # ループ再生監視スレッドの開始
      @@loop_thread = Thread.new do
        while !(@@filename.nil?) and !@@stop_req
          sleep(LOOP_CHECK_TIMING) # 待機する
          # MCIに再生状態を問い合わせる
          buffer = "\0" * 256 # 256バイト
          mciSendString("status #{BGM_ALIAS} mode", buffer, 255)
          buffer.delete!("\0")
          if (buffer != "playing") and !@@stop_req
            # 再生していない場合は先頭に移動して再生
            mciSendString("seek #{BGM_ALIAS} to 0")
            mciSendString("play #{BGM_ALIAS}")
          end
        end
        @@loop_thread = nil
      end # ループ再生監視スレッド、ここまで
    end
  end

  #--------------------------------------------------------------------------
  # ● 停止する
  #--------------------------------------------------------------------------
  def self.stop
    if not @@filename.nil?
      # ファイルを開いている場合は停止して先頭に戻す
      @@stop_req = true
      mciSendString("stop #{BGM_ALIAS}")
      mciSendString("seek #{BGM_ALIAS} to 0")
    end
  end

  #--------------------------------------------------------------------------
  # ● 一時停止する
  #--------------------------------------------------------------------------
  def self.pause
    if not @@filename.nil?
      # ファイルを開いている場合は一時停止する
      @@stop_req = true
      mciSendString("pause #{BGM_ALIAS}")
    end
  end

  #--------------------------------------------------------------------------
  # ● 一時停止を解除する
  #--------------------------------------------------------------------------
  def self.resume
    if not @@filename.nil?
      # ファイルを開いている場合は一時停止を解除する
      mciSendString("resume #{BGM_ALIAS}")
      @@stop_req = false
      # ループ再生監視スレッドの開始
      @@loop_thread = Thread.new do
        while !(@@filename.nil?) and !@@stop_req
          sleep(LOOP_CHECK_TIMING) # 待機する
          # MCIに再生状態を問い合わせる
          buffer = "\0" * 256 # 256バイト
          mciSendString("status #{BGM_ALIAS} mode", buffer, 255)
          buffer.delete!("\0")
          if (buffer != "playing") and !@@stop_req
            # 再生していない場合は先頭に移動して再生
            mciSendString("seek #{BGM_ALIAS} to 0")
            mciSendString("play #{BGM_ALIAS}")
          end
        end
        @@loop_thread = nil
      end # ループ再生監視スレッド、ここまで
    end
  end

  #--------------------------------------------------------------------------
  # ● 現在位置を取得する
  #--------------------------------------------------------------------------
  #    ファイルを開いていない場合は nil 、それ以外は位置を整数で返す
  #--------------------------------------------------------------------------
  def self.position
    if not @@filename.nil?
      # ファイルを開いている場合は現在位置を取得する
      buffer = "\0" * 256 # 256バイト
      mciSendString("status #{BGM_ALIAS} position", buffer, 255)
      buffer.delete!("\0")
      return buffer.to_i
    end
    return nil # ファイルを開いていない場合は nil を返す
  end

  #--------------------------------------------------------------------------
  # ● 現在位置を設定する
  #--------------------------------------------------------------------------
  #    pos : 指定位置
  #--------------------------------------------------------------------------
  def self.seek(pos)
    if not @@filename.nil?
      # ファイルを開いている場合は指定位置(pos)に移動させる
      @@stop_req = true
      mciSendString("seek #{BGM_ALIAS} to #{pos.to_s}")
    end
  end

  #--------------------------------------------------------------------------
  # ● 開いているファイルを閉じる
  #--------------------------------------------------------------------------
  def self.close
    if not @@filename.nil?
      # ファイルを開いている場合は停止する
      stop
      # そして閉じる
      @@filename = nil
      mciSendString("close #{BGM_ALIAS}")
    end
  end
end

No se lo que es, no se como funciona y no se como llamarlo, pero según como he leído algo, no estoy seguro pero permite realizar acciones con los audios de BGM y dentro de los comandos está el deseado LOOP, por eso me gustaría saber en manos de expertos o aficionados ¿Que demonios hace el script y como llamar sus comandos?.
Nota: lo he pegado en el maker y no ocurre nada, tampoco hay errores.
En el script se menciona algo de “EasyConv” si es un script de requerimiento aquí esta:

Código:
#==============================================================================
# ■ EasyConv module - Ver 0.91
#------------------------------------------------------------------------------
#  文字コード簡易変換モジュール。
#   コードは「Dante98とかのページ」に掲載されたものを流用しています。
#------------------------------------------------------------------------------
# 注意!).当モジュールに関するバグ報告、質問等は「Dante98とかのページ」
# 管理人の郵便はみがき氏ではなく、下記の連絡先までお願いします。
#------------------------------------------------------------------------------
# HP  :Moonlight INN
# URL:http://cgi.members.interq.or.jp/aquarius/rasetsu/
# 管理人:RaTTiE
# e-mail:rasetsu@aquarius.interq.or.jp
#--- 簡易リファレンス ---------------------------------------------------------
# EasyConv::s2u(text) : S-JIS -> UTF-8
# EasyConv::u2s(text) : UTF-8 -> S-JIS
#==============================================================================

module EasyConv
  
  # API用定数定義
  
  CP_ACP = 0
  CP_UTF8 = 65001
  
  #--------------------------------------------------------------------------
  # ● S-JIS -> UTF-8
  #--------------------------------------------------------------------------
  def s2u(text)
  # API定義
    m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
    w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  # S-JIS -> Unicode
    len = m2w.call(CP_ACP, 0, text, -1, nil, 0);
    buf = "\0" * (len*2)
    m2w.call(CP_ACP, 0, text, -1, buf, buf.size/2);

  # Unicode -> UTF-8
    len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil) - 1;
    ret = "\0" * len
    w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil);
    
    return ret
  end
  # module_functionとして公開
  module_function :s2u
  #--------------------------------------------------------------------------
  # ● UTF-8 -> S-JIS
  #--------------------------------------------------------------------------
  def u2s(text)
  # API定義
    m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
    w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  # UTF-8 -> Unicode
    len = m2w.call(CP_UTF8, 0, text, -1, nil, 0);
    buf = "\0" * (len*2)
    m2w.call(CP_UTF8, 0, text, -1, buf, buf.size/2);

  # Unicode -> S-JIS
    len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil) - 1;
    ret = "\0" * len
    w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil);

    return ret
  end
  # module_functionとして公開
  module_function :u2s
end

Pero consecuentemente no creo que el sistema lo necesite o tenga algo que ver, lo dejo por si a caso.
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 73

Gracias : 11

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Un Posible Script de Audio Loop

Mensaje por BreinLand entertainment el 2017-06-18, 19:21

Te dejo la traducción de los scripts que has puesto, que supongo que explicará que hacen:

Código:

#==============================================================================
# ■ Módulo BGM Ver.0.0.1
#------------------------------------------------------------------------------
#  Módulo de control de la música del BGM.
#  Para su forma de uso, diríjase a la descripción de cada función.
#------------------------------------------------------------------------------
#  Si desea utilizar este módulo tenga encima el script "EasyConv" del Sr. Rattie
#  → MoonlightINN(http://cgi.members.interq.or.jp/aquarius/rasetsu/)
#    → EasyConv está aquí ↓
# http://cgi.members.interq.or.jp/aquarius/rasetsu/MoonlightINN/trash/tkoolxp.html
#
# Actualize a la última versión del RTP de Maker XP si desea utilizar este módulo
# #Debe tener (En: RGSS102J.dll)
#------------------------------------------------------------------------------
# by Kazuki
# Traducción cutre: Izheil
#------------------------------------------------------------------------------
# 2005/11/26 v0.0.1 Primera versión
#==============================================================================
module Bgm

  BGM_ALIAS = "bgm" # xpbgmBGM -> El nombre del BGM (nombre diferente del MCI)
  LOOP_CHECK_TIMING = 0.01  # Frecuencia de fps del loop [s] (en realidad va más lento que esto)
  @@filename  = nil  # Nombre de archivo que está abierto en el momento
  @@stop_req  = false # Indicador de petición de parada
  @@loop_thread = nil # Hilo del loop

  #--------------------------------------------------------------------------
  # Este método es para uso interno del script!
  #--------------------------------------------------------------------------
  # ○ Para enviar una cadena de comandos al MCI
  #    command : Cadena de comandos
  #    buffer  : buffer para almacenar la respuesta del MCI
  #    buf_len : tamaño del buffer (longitud/length)
  #    hwnd    : RGSS no se utiliza
  #--------------------------------------------------------------------------
  def self.mciSendString( command, buffer=nil, buf_len=0, hwnd=0 )
    mci = Win32API.new('winmm.dll', 'mciSendStringA', %w(p p l l), 'l')

    ret = mci.call( EasyConv::u2s(command), buffer, buf_len, hwnd )
    if buffer != nil
      buffer.gsub!(/\A(.*)\Z/){ EasyConv::s2u( $1 ) }
    end
    return ret
  end

  #--------------------------------------------------------------------------
  # ● Reproducir
  #--------------------------------------------------------------------------
  #    filename : Archivo que desea reproducir
  #    pos      : Posición del inicio de reproducción (desde el inicio si se omite)
  #--------------------------------------------------------------------------
  def self.play(filename, pos=nil)
    if @@filename.nil? or @@filename != filename
      if not @@filename.nil?
        # Si @@filename no es nulo otro archivo está siendo abierto
        close # Interrumpte la reproducción forzada y cierra el archivo
      end
      # Éxito si el archivo abierto ret == 0
      ret = mciSendString("open \"#{filename.to_s}\" alias #{BGM_ALIAS}")
      if ret == 0
        # Éxito en la apertura del archivo
        @@filename = filename.dup
      end
    end
    @@stop_req = false
    # Empieza el playback si el archivo está abierto
    if not @@filename.nil?
      # Si la posición del inicio del playback ha sido definida, empezar desde ahí.
      if not pos.nil?
        seek(pos)
      end
      mciSendString("play #{BGM_ALIAS}")
      # Empezar el hilo de monitoreo del loop
      @@loop_thread = Thread.new do
        while !(@@filename.nil?) and !@@stop_req
          sleep(LOOP_CHECK_TIMING) # Standby
          # Poner en cola el MCI según el estado del playback
          buffer = "\0" * 256 # 256バイト
          mciSendString("status #{BGM_ALIAS} mode", buffer, 255)
          buffer.delete!("\0")
          if (buffer != "playing") and !@@stop_req
            # Si no está reproduciéndose, vuelve al inicio y empieza a reproducir
            mciSendString("seek #{BGM_ALIAS} to 0")
            mciSendString("play #{BGM_ALIAS}")
          end
        end
        @@loop_thread = nil
      end # Aquí acaba el hilo de monitoreo del playback
    end
  end

  #--------------------------------------------------------------------------
  # ● Stop
  #--------------------------------------------------------------------------
  def self.stop
    if not @@filename.nil?
      # Si el archivo está abierto, se para y se reinicia
      @@stop_req = true
      mciSendString("stop #{BGM_ALIAS}")
      mciSendString("seek #{BGM_ALIAS} to 0")
    end
  end

  #--------------------------------------------------------------------------
  # ● 一Para parar
  #--------------------------------------------------------------------------
  def self.pause
    if not @@filename.nil?
      # Pausar si el archivo está abierto
      @@stop_req = true
      mciSendString("pause #{BGM_ALIAS}")
    end
  end

  #--------------------------------------------------------------------------
  # ● 一Liberar el tiempo de parada
  #--------------------------------------------------------------------------
  def self.resume
    if not @@filename.nil?
      #Si el archivo está abierto, cancelar la pausa
      mciSendString("resume #{BGM_ALIAS}")
      @@stop_req = false
      # Empezar el hilo de monitoreo del loop
      @@loop_thread = Thread.new do
        while !(@@filename.nil?) and !@@stop_req
          sleep(LOOP_CHECK_TIMING) # Stand by
          # Poner en cola el MCI según el estado del playback
          buffer = "\0" * 256 # 256バイト
          mciSendString("status #{BGM_ALIAS} mode", buffer, 255)
          buffer.delete!("\0")
          if (buffer != "playing") and !@@stop_req
            # Si no se está reproduciendo, volver al inicio y empezar a reproducir
            mciSendString("seek #{BGM_ALIAS} to 0")
            mciSendString("play #{BGM_ALIAS}")
          end
        end
        @@loop_thread = nil
      end # Aquí acaba el hilo de monitoreo del loop hasta ahora
    end
  end

  #--------------------------------------------------------------------------
  # ● Adquirir posición actual
  #--------------------------------------------------------------------------
  #    Nil si el archivo no está abierto, de lo contrario devolver la posición con un número
  #--------------------------------------------------------------------------
  def self.position
    if not @@filename.nil?
      # Si el archivo está abierto obtener la posición actual
      buffer = "\0" * 256 # 256バイト
      mciSendString("status #{BGM_ALIAS} position", buffer, 255)
      buffer.delete!("\0")
      return buffer.to_i
    end
    return nil # Devolver nil si el archivo no está abierto
  end

  #--------------------------------------------------------------------------
  # ● Definir la posición actual
  #--------------------------------------------------------------------------
  #    pos : Posición especificada
  #--------------------------------------------------------------------------
  def self.seek(pos)
    if not @@filename.nil?
      # Moverse a la posición especificada (pos) cuando el archivo está abierto
      @@stop_req = true
      mciSendString("seek #{BGM_ALIAS} to #{pos.to_s}")
    end
  end

  #--------------------------------------------------------------------------
  # ● Cerrar el archivo abierto
  #--------------------------------------------------------------------------
  def self.close
    if not @@filename.nil?
      # Parar si el archivo está abierto
      stop
      # Cerrar
      @@filename = nil
      mciSendString("close #{BGM_ALIAS}")
    end
  end
end

Código:

#==============================================================================
# ■ Módulo EasyConv  - Ver 0.91
#------------------------------------------------------------------------------
#  Módulo de conversión simple de caracteres.
#  El código ha sido hecho con la ayuda de algunos post de Dante98 entre otros.
#------------------------------------------------------------------------------
# ¡Precaución! Para reportes de fallos, preguntas, etc. en este módulo, diríjase a "Dante98 y
# otras páginas"
# Si el creador del post no es Mr. Miyagaki, por favor, diríjase al siguiente contacto.
#------------------------------------------------------------------------------
# HP  :Moonlight INN
# URL:http://cgi.members.interq.or.jp/aquarius/rasetsu/
# Creador:RaTTiE
# e-mail:rasetsu@aquarius.interq.or.jp
#--- Referencia simple ---------------------------------------------------------
# EasyConv::s2u(text) : S-JIS -> UTF-8
# EasyConv::u2s(text) : UTF-8 -> S-JIS
#==============================================================================

module EasyConv
 
  # Definición constante API
 
  CP_ACP = 0
  CP_UTF8 = 65001
 
  #--------------------------------------------------------------------------
  # ● S-JIS -> UTF-8
  #--------------------------------------------------------------------------
  def s2u(text)
  # Definición de API
    m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
    w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  # S-JIS -> Unicode
    len = m2w.call(CP_ACP, 0, text, -1, nil, 0);
    buf = "\0" * (len*2)
    m2w.call(CP_ACP, 0, text, -1, buf, buf.size/2);

  # Unicode -> UTF-8
    len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil) - 1;
    ret = "\0" * len
    w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil);
   
    return ret
  end
  # module_functionとして公開
  module_function :s2u
  #--------------------------------------------------------------------------
  # ● UTF-8 -> S-JIS
  #--------------------------------------------------------------------------
  def u2s(text)
  # Definición de API
    m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
    w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  # UTF-8 -> Unicode
    len = m2w.call(CP_UTF8, 0, text, -1, nil, 0);
    buf = "\0" * (len*2)
    m2w.call(CP_UTF8, 0, text, -1, buf, buf.size/2);

  # Unicode -> S-JIS
    len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil) - 1;
    ret = "\0" * len
    w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil);

    return ret
  end
  # Publicado como module_function
  module_function :u2s
end

Así que... por lo que entiendo, el script importante es el primero, y las líneas que te interesan deben ser estas:

Código:
 
  BGM_ALIAS = "bgm" # xpbgmBGM -> El alias del BGM (nombre diferente del MCI)
  LOOP_CHECK_TIMING = 0.01  # Frecuencia de fps del loop [s] (en realidad va más lento que esto)
  @@filename  = nil  # Nombre de archivo que está abierto en el momento
  @@stop_req  = false # Indicador de petición de parada
  @@loop_thread = nil # Hilo del loop

 #    filename : Archivo que desea reproducir
  #    pos      : Posición del inicio de reproducción (desde el inicio si se omite)

Intenta hacer llamadas de script con lo de @@filename y @@loop_thread, porque el script en sí... no parece dar muchas explicaciones.

En loop thread no se si se refiere al número de loops que quieres hacer o algo (con que pongas 999, o hasta el infinito y más allá... creo que debería ser suficiente)
avatar
BreinLand entertainment
Soñador
Soñador

0/3

Créditos 209

Gracias : 48

http://breinland.tk/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Un Posible Script de Audio Loop

Mensaje por Wecoc el 2017-06-18, 20:08

Voy a soltar éste post aquí: Script de música y Audio
Han salido varios scripts de Audio para RPG maker que dan nuevas funcionalidades y arreglan ese tipo de problemas, puesto que el sistema de Audio por defecto del maker es muy limitado. En ese post comenté tres de los más conocidos.

También se habló hace un tiempo de SoLoud, una nueva librería de audio que tiene una API para RPG maker y que en principio soluciona ese tipo de problemas, pero no sé como se usa, la verdad... no he llegado a investigarlo a fondo aún. Lo probaré, si resulta ser una mina de oro ya haré un tutorial de uso.

Edito: Lo he probado y no puede usarse con RPG maker XP porque requiere de muchos módulos solo disponibles en versiones más recientes de Ruby. Según parece SoLoud solo es usable en RPG maker VX Ace y quizá RPG maker XP Ace (Kiss Tutorial). Lástima, porque prometía bastante. Para poder usarlo habría que hacer un script completamente distinto al wrapper para Ruby que da el programa, o bien lograr hacer un script de compatibilidad a parte, con integración de DL, Mutex, Fiber, EM y algunas clases más.

Me han comentado que Pokessentials tiene un módulo interesante de Audio también, así que seguramente valga la pena tirar por ahí.

AsdfKakaroto escribió:Y la otra magnifica solución fue el Rpg maker XP con el sistema de script transformado a VX, que si no me equivoco lo hizo el gran wecoc.
No me queda claro a qué te refieres exactamente. Yo el Audio Module apenas lo he tocado puesto que es un tema que se me escapa de las manos, solo lo intenté adaptar (sin buen resultado) cuando intenté recrear el sistema iMuse.
avatar
Wecoc
Administrador
Administrador



Créditos 9129

Gracias : 471

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Un Posible Script de Audio Loop

Mensaje por AsFzKakarotto el 2017-07-01, 17:02

BreinLand entertainment: Muchísimas Gracias por dedicar tu tiempo en traducir los script, por lo visto, tiraba dardos a ello pero no los esperados, le daré igualmente una revisada.

Wecoc: Gracias también por abrir más de esta búsqueda referente a el sistema Audioloop, daré una vista por allí.

@Wecoc escribió:No me queda claro a qué te refieres exactamente. Yo el Audio Module apenas lo he tocado puesto que es un tema que se me escapa de las manos, solo lo intenté adaptar (sin buen resultado) cuando intenté recrear el sistema iMuse.

Me he equivocado es el Rpg maker VX Ace con el sistema Rpg XP.
No he encontrado el post, por lo que no me acuerdo si los has hecho tu.
Pero dejo aquí la demo:
http://share.cherrytree.at/showfile-28235/aceinrmxp.rar (AceinXP)
Aun la tengo en mi galería ya que llamo bastante la atención.
------------------------------------------------------------------------------------------------------------------------------------------------------
El sistema es como Rpg maker XP pero el funcionamiento es con Rpg maker VX Ace  o algo así.
de hecho se abre el juego con Rpg maker VX Ace pero el editor "Game.rxproj" con Rpg maker XP
Nota: Para revisar los cambios de el proyecto  se debe cerrar el editor.
El la demo añadi en batalla el audio de Rpg maker VX ACE para que se haga notar el loopeo.
He hecho mis propias músicas loop con el Audacity y al probarlas se aplica la repetición perfectamente así que no es tema de el audio, entre ellos el sistema de Audioloop funciona bien pero la compresión de este proyecto hace anular el sistema de loop. y la escritura de este no se si es compatible con los de Rpg maker XP como es de forma común.
------------------------------------------------------------------------------------------------------------------------------------------------------

Quisas no me he explicado bien.... el loopeo del que yo hablo se basa en una determinada área de la música, este al llegar a dicho tiempo vuelva atrás hasta donde el punto en que se dio inicio y asi sucesivamente. No se trata de un loopeo en que al terminar la música este vuelva a reproducir.

------------------------------------------------------------------------------------------------------------------------------------------------------
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 73

Gracias : 11

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Un Posible Script de Audio Loop

Mensaje por Wecoc el 2017-07-02, 01:09

Me parece que es bastante obvio que te refieres a un sistema como el Kiss Tutorial (lo que llaman XP Ace, que comenté antes), pero creo que precisamente el tema del audio se tocó poco en ese tipo adaptación, está más centrada en el Tilemap y en el aspecto gráfico. Aún así la verdad es que me interesa saber si lo del Audio loop está solucionado, es algo que nunca pensé en comprobar. También de paso probar si le funciona SoLoud como dije en el post anterior.

Lo que usaste en la demo que has pasado viene a ser la versión primitiva del XP Ace, si no me equivoco era el primer intento decente que se hizo de adaptar XP a una versión posterior de Ruby. Eso salió por allá el 2012. Ahora que hay el XP Ace me temo que el que usaste ya quedó desfasado.

Debo decir que pasar un proyecto de XP a XP Ace es prácticamente como cambiarlo de versión del maker, así que para juegos ya empezados no vale la pena hacerlo solo para solucionar lo del Audio Loop; sigue siendo más factible una reescritura del module Audio en RGSS. Además para usar XP Ace hay que tener unas bases de programación.

Info adicional:
Fuera del tema del maker también quería comentar que hace tiempo me topé con un programa en el que sucedía básicamente lo mismo con los ogg, y la solución que se hacía ahí era reproducir automáticamente la canción de nuevo cuando faltaban unas décimas de segundo para que terminara, contrarestando así el pequeño silencio producido por recargar la canción. Aunque es claramente una chapuza, funcionaba xD Si ni con el module Audio se arregla ese problema podría llegar a valer la misma idea. Otra opción si el module Audio en sí no soluciona ese "lag" sería permitir nuevos formatos de audio y convertir los ogg a esos. El formato ogg siempre tiene que cargarse totalmente antes de reproducirse y por eso hace ese salto, pero otros formatos se cargan distinto así que no tienen ese fallo.
avatar
Wecoc
Administrador
Administrador



Créditos 9129

Gracias : 471

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Un Posible Script de Audio Loop

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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