What soulshaker posted is already fine. Audio is a module that can be accessed anywhere in the engine. Heck, look at what def bgm_play does in Game_System:
#--------------------------------------------------------------------------
# * Play Background Music
# bgm : background music to be played
#--------------------------------------------------------------------------
def bgm_play(bgm)
@playing_bgm = bgm
if bgm != nil and bgm.name != ""
Audio.bgm_play("Audio/BGM/" + bgm.name, bgm.volume, bgm.pitch) #<================ This right here
else
Audio.bgm_stop
end
Graphics.frame_reset
end
Besides, to call $game_system.bgm_play, the passed argument must be a RPG::AudioFile object. So you would have to do this:
a = RPG::AudioFile.new(FILENAME, VOLUME, PITCH) # VOLUME and PITCH can be omitted and they will default to values of 100
$game_system.bgm_play(a)
It's been almost a month and OP hasn't responded, so we can assume this is already solved.