sithlord999
Member
I have the script that lets you play psf files with RPG Maker XP but the musci dosent loop. It plays through once and stops. Here's the script:
Code:
#==============================================================================
# â– Audio
#------------------------------------------------------------------------------
# Credits for Winamp class and Winamp.dll to Andreas21 (C) 2004
#
# Credits to Squall for Audio module and Game_system functions.
# squall@loeher.zzn.com
#
#==============================================================================
module Audio
#==========================================================================
# â– Winamp
#==========================================================================
class Winamp
#------------------------------------------------------------------------
# â— initialize
#------------------------------------------------------------------------
def initialize
in_dll = 'DLL\in_psf.dll'
out_dll = 'DLL\out_wave.dll'
winamp_dll = 'DLL\Winamp.dll'
@ReadIni = Win32API.new('kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l')
@FindWindow = Win32API.new('user32', 'FindWindowA', %w(p p), 'l')
@Init_Winamp = Win32API.new(winamp_dll, 'Init_Winamp', %w(p p l), 'l')
@Winamp_Play = Win32API.new(winamp_dll, 'Winamp_Play', 'p', 'l')
@Winamp_Pause = Win32API.new(winamp_dll, 'Winamp_Pause', '', '')
@Winamp_Stop = Win32API.new(winamp_dll, 'Winamp_Stop', '', 'l')
@Winamp_IsPlaying = Win32API.new(winamp_dll, 'Winamp_IsPlaying', '', 'l')
@Winamp_GetFileInfo = Win32API.new(winamp_dll, 'Winamp_GetFileInfo', %w(p l), 'p')
@Winamp_SetVolume = Win32API.new(winamp_dll, 'Winamp_SetVolume', 'l', '')
@Winamp_IsPaused = Win32API.new(winamp_dll, 'Winamp_IsPaused', '', 'l')
@Init_Winamp.call(in_dll, out_dll, setup)
end
def play(file)
return @Winamp_Play.call(file)
end
def pause
@Winamp_Pause.call()
end
def stop
return @Winamp_Stop.call()
end
def is_playing?
return @Winamp_IsPlaying.call()
end
def get_file_info(playfile, length_adr)
return @Winamp_GetFileInfo.call(playfile, length_adr)
end
def set_volume(volume)
@Winamp_SetVolume.call(volume)
end
def is_paused?
return @Winamp_IsPaused.call()
end
def setup
game_name = 0.chr * 255
zeichen = @ReadIni.call('Game', 'Title', '', game_name, 255, ".\\Game.ini")
return @FindWindow.call('RGSS Player', game_name.slice!(0, zeichen))
end
end
#--------------------------------------------------------------------------
# â— define constant
#--------------------------------------------------------------------------
WINAMP = Winamp.new
#--------------------------------------------------------------------------
# â— Audio.psf_play(filename, [volume])
#--------------------------------------------------------------------------
def self.psf_play(filename, volume = 255)
for extension in ['.psf', '.minipsf', '.psf2', '.minipsf2']
if FileTest.exist?(filename + extension)
filename = filename + extension
break
end
end
WINAMP.play(filename)
WINAMP.set_volume(volume)
end
#--------------------------------------------------------------------------
# â— Audio.psf_playing?
#--------------------------------------------------------------------------
def self.psf_playing?
if WINAMP.is_playing? == 0
return false
else
return true
end
end
#--------------------------------------------------------------------------
# â— Audio.psf_pause
#--------------------------------------------------------------------------
def self.psf_pause
WINAMP.pause
end
#--------------------------------------------------------------------------
# â— Audio.psf_paused?
#--------------------------------------------------------------------------
def self.psf_paused?
if WINAMP.is_paused? == 0
return false
else
return true
end
end
#--------------------------------------------------------------------------
# â— Audio.psf_stop
#--------------------------------------------------------------------------
def self.psf_stop
WINAMP.stop
end
end
#==============================================================================
# â– Game_System
#------------------------------------------------------------------------------
# Changes added to the bgm_play and bgm_stop functions.
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# â— Play Back Ground Music
#--------------------------------------------------------------------------
def bgm_play(bgm)
@playing_bgm = bgm
if bgm != nil and bgm.name != ""
Audio.bgm_play("Audio/BGM/" + bgm.name, bgm.volume, bgm.pitch)
Audio.psf_play("Audio/BGM/" + bgm.name, bgm.volume)
else
Audio.bgm_stop
Audio.psf_stop
end
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# â— Stop playing BGM
#--------------------------------------------------------------------------
def bgm_stop
Audio.bgm_stop
Audio.psf_stop
end
end