• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

RGSS FmodEx extension

MysteriousUser94

Guest
0
Posts
    You need to write a C/C++ program that loads the functions of the RGSS.
    I recommand to rename the RGSS104E.dll I give to RGSS102E.dll because your illegal version of RMXP use RGSS102E.dll (which is buggy as hell btw). It's not the name that is important, that's the content of the whole thing. You can rename any dll you want to RGSS104E.dll the RGSS Linker will say the same "It's not RGSS104E.dll", btw the RGSS Linker doesn't care of the name of the dll since you give him the name you gave to RGSS104E.dll.
     

    z_orochii

    PKMN Trainer
    3
    Posts
    15
    Years
  • Hi Nuri Yuri. I was looking at your script and I got interested in the part that says that you can use DLS for MIDI, since that sounds pretty cool. I've found some free DLS to try it out but I can't get it to work.

    I changed a little of code in order to add the DLS name directly to the bgm_play function when it is called but haven't been able to use the DLS, it seems to ignore whatever I pass it as a string.

    Here is the code I have, just in case.
    Code:
    #===
    #Audio (FmodEx)
    #  A rewrite of Audio module to integrate FmodEx
    #---
    #? 2015 - Nuri Yuri (? ??)
    #? 2015 - GiraPrimal : Concept of LOOP_TABLE
    #---
    #Script written by the members of the Community Script Project
    #===
    module Audio
      LOOP_TABLE = [
      # [ "Audio/xxx/File_name", begin, end ]
      # Add here
    
      
      # Note : Renember to add a comma after each ]
      #       (except for the last line and the below ]).
      ]
      #---
      #>Puts the file names in lowercase to improve the search
      #---
      LOOP_TABLE.each do |i| i[0].downcase! end
      DLS_FILENAME = "Fury.dls"
      @asdf = ""
      unless @bgm_play #>To avoid the RGSSReset problem
      #===
      #>Load and initialize FmodEx
      #===
      Kernel.load_module("RGSS FmodEx.dll","Init_FmodEx")
      ::FmodEx.init(32)
      #---
      #>Indication of the default lib'
      #---
      @library = ::FmodEx
      #---
      #>Saving the RGSS functions
      #---
      @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)
      #---
      #>Volumes definition
      #---
      @master_volume = 100
      @sfx_volume = 100
      #===
      #>Extensions supported by FmodEx
      #===
      EXT = ['.ogg', '.mp3', '.wav', '.mid', '.aac', '.wma', '.it', '.xm', '.mod', '.s3m', '.midi']
      #===
      #>Creation/definition of the functions
      #===
      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)
        
        ext = check_extension(filename)
        print ext
        case ext
        when 'mid'
          bgm = ::FmodEx.bgm_play(filename, volume, pitch, false, nil, DLS_FILENAME)
        else
          bgm = ::FmodEx.bgm_play(filename, volume, pitch)
        end
        
        
        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
      #  Check the presence of the file and return the filename
      #  /!\ Doesn't correct the mistake
      #====
      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
      #===
      #>check extension
      # '\_(?,)/'
      #====
      def check_extension(file_name)
        return file_name.split(".")[-1]
      end
      #===
      #>loop_audio
      # Function that automatically call the 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

    I'm also interested in the play from position thing. I'll see if I can make that work too later, since it's a cool feature only seen in RMVXAce (the RPG Maker with the best default audio module so far).

    Thanks for this by the way, it's pretty cool :^).
     
    38
    Posts
    8
    Years
    • Seen Aug 10, 2021
    Hello there, guys.

    It's my first time posting something here, and I came with some questions about this FmodEx.
    Since I'm kinda noob in programing in Ruby, I'm struggling to understand it properly. So, let's go:

    1-Where exactly do I need to put these scripts? I created two new classes under Audio sections, which ones is "RGSS Linker" and "FmodEx Audio". Is it right?

    2-How I set the especifc audio files that I want to loop? I did the following set only, but it didn't work:

    LOOP_TABLE = ["Audio/BGM/217 Route 4 (Summer)",346273,1465664]

    Where the first set is the audio file, (folder, subfolder, file name, LOOPSTART and LOOPLENGTH. I believe it's wrong... Is there something more I need to add? And can I add more than just one file?

    3-This works for map BGM too, or just Battle BGM? If it works on maps, do I need to add some event on the map calling some kind of script?

    4- Do I need to tag the LOOPSTART and the LOOPLENGTH on the audio file on some kind of audio editing program (like Audacity) before I set the music on the game?

    I believe that's all for now.

    Thanks in advance!! ^^


    EDIT: I did it to work in maps. It's working fine on maps, but it doesn't work in battle themes... Why? :/
    Can someone help me?
     
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Excuse me.

    When i use Metal Claw (on EBS and V17.2), give me this:
    I look in 'Audio>SE>Animation' and the sound is '.ogg' format.
    Code:
    ---------------------------
    Pokemon Essentials
    ---------------------------
    [Pok?mon Essentials version 17.2]
    
    Exception: FmodEx::Error
    
    Message: Audio (FmodEx):122:in `initialize'FMOD error! (25) Unsupported file or audio format. 
    
    
    MoveAnimations Script:68:in `pbAnimation'
    
    Audio (FmodEx):122:in `se_play'
    
    Audio (FmodEx):122:in `se_play'
    
    Game_System:249:in `se_play'
    
    AudioPlay:207:in `pbSEPlay'
    
    MoveAnimations Script:5649:in `pbMoveAnimationSpecific525'
    
    MoveAnimations Script:5646:in `each'
    
    MoveAnimations Script:5646:in `pbMoveAnimationSpecific525'
    
    (eval):1:in `pbAnimation'
    
    PokeBattle_Battle:2452:in `eval'

    What can i do to fix that?

    Ty ty!
     
    Last edited:

    MysteriousUser94

    Guest
    0
    Posts
    .ogg doesn't mean it's an .ogg file.

    I suggest you open the file with Audacity and you re-encode it to .ogg by saving the file on the original file.
     

    lil_hill

    Music Enthusiast
    1
    Posts
    4
    Years
    • Seen Jul 27, 2020
    I'm having issues with I believe to be the rgss102 file and rgss104 file conflicting but honestly i'm trash at this sort of stuff, I've been stuck for almost two hours now. Any help is majorly appreciated! 😊
     

    Attachments

    • help.png
      help.png
      6.1 KB · Views: 19
    Last edited:
    5
    Posts
    4
    Years
    • Seen Jul 22, 2021
    I've been having a problem, where it will play the beginning of the music track, stop briefly, then play the beginning part again. It will do this over, and over again. Does anyone have the same problem, or know of a solution?

    Thank you.
     
    2
    Posts
    6
    Years
    • Seen Mar 16, 2020
    I've been having a problem, where it will play the beginning of the music track, stop briefly, then play the beginning part again. It will do this over, and over again. Does anyone have the same problem, or know of a solution?

    Thank you.

    I'm having the same problem. It only plays the beginning of the song. I've checked the tags in Audacity and they are correct.
     
    1
    Posts
    3
    Years
    • Seen Aug 26, 2023
    I'm having issues with I believe to be the rgss102 file and rgss104 file conflicting but honestly i'm trash at this sort of stuff, I've been stuck for almost two hours now. Any help is majorly appreciated! 😊

    So, I had the same issue... Go to your game folder and find the file that is titled "Game" as a Configuration Setting file (if that makes sence). Change the the library to RGSS104 instead of what is there already, assuming you have RGSS104E in your folder. It should work from then on!
     
    3
    Posts
    4
    Years
    • Seen Jul 6, 2023
    Excuse me. I have a problem. I want to loop Tellur Town (Autumn) from pokken tournament, but after the bgm is going to be playing, it appears an error like this

    FMOD error (23) File not found!

    Please tell me how to fix it.
    Thanks.
     

    MysteriousUser94

    Guest
    0
    Posts
    Make sure that the filename of the music doesn't contains any special characters like é
    For some reason it's not working fine on Windows.
     

    The cool Treecko

    Wild Treecko appeared!
    146
    Posts
    3
    Years
  • [SIZE=+2]Introduction[/SIZE]​
    Hi, I present one of the first scripts that uses the RGSS Linker !
    This script is a rewrite of Audio module to use the C/C++ functions coded in the RGSS FmodEx.dll and RGSS Linker.dll DLLs.
    RGSS FmodEx.dll depends on fmodex.dll, therefore to avoid the dependences problems, I included the file in the following archive : http://www.mediafire.com/download/jrlci7hwh5z0zhe/Fichiers+DLL+FmodEX.zip
    You must paste these files in your project's root and everything should be fine.

    Update of the DLL :
    http://www.mediafire.com/file/knt7ran4nhbw0sq/RGSS_FmodEx.dll
    http://www.mediafire.com/file/vj64d7cuwj2ct27/fmodex.dll

    Note : This files were analysed by Kapersky and doesn't contain viruses, if a virus is found by your antivirus, it's a false positive.
    The RGSS Linker is a bit special, it links RGSS functions in dynamic way by using static metric. Some AV such as Avast have difficulties with that and panick for nothing.

    [SIZE=+2]Contents[/SIZE]
    Here are links to the different parts of this post :
    ¤ [alink id="rgsslinker"]RGSS Linker Script[/alink id]
    ¤ [alink id="audio"]Audio (FmodEx) Script[/alink id]
    ¤ [alink id="sound"]FmodEx::Sound class methods[/alink id]
    ¤ [alink id="fmodex"]FmodEx module methods[/alink id]
    ¤ [alink id="credits"]Credits[/alink id]
    [a id]rgsslinker[/a id]
    [SIZE=+2]RGSS Linker script[/SIZE]
    This script permit to define the necessaries methods for the good function of the next script.
    Your project must use RGSS104E.dll for that script function properly.
    Code:
    #===
    #RGSS Linker (Kernel)
    #  Function that helps the load of extentions using RGSS Linker.
    #---
    #© 2015 - Nuri Yuri (塗 ゆり)
    #===
    module Kernel
      unless @RGSS_Linker #>To avoid the RGSS Reset problem
         
      @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
      #  Helps to load a RGSS extension
      #---
      #I : module_filename : String : Name of the file which contains the extension
      #    module_function : String : Name of the function that will load the 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
    [a id]audio[/a id]
    [SIZE=+2]Audio module Script (FmodEx)[/SIZE]
    This script must be placed after the RGSS Linker script otherwise it won't work.
    Code:
    #===
    #Audio (FmodEx)
    #  A rewrite of Audio module to integrate FmodEx
    #---
    #© 2015 - Nuri Yuri (塗 ゆり)
    #© 2015 - GiraPrimal : Concept of LOOP_TABLE
    #---
    #Script written by the menbers of the Community Script Project
    #===
    module Audio
      LOOP_TABLE = [
      # [ "Audio/xxx/File_name", begin, end ]
      # Add here
    
      
      # Note : Renember to add a comma after each ]
      #       (except for the last line and the below ]).
      ]
      #---
      #>Puts the file names in lowercase to improve the search
      #---
      LOOP_TABLE.each do |i| i[0].downcase! end
       
      unless @bgm_play #>To avoid the RGSSReset problem
      #===
      #>Load and initialize FmodEx
      #===
      Kernel.load_module("RGSS FmodEx.dll","Init_FmodEx")
      ::FmodEx.init(32)
      #---
      #>Indication of the default lib'
      #---
      @library = ::FmodEx
      #---
      #>Saving the RGSS functions
      #---
      @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)
      #---
      #>Volumes definition
      #---
      @master_volume = 100
      @sfx_volume = 100
      #===
      #>Extensions supported by FmodEx
      #===
      EXT = ['.ogg', '.mp3', '.wav', '.mid', '.aac', '.wma', '.it', '.xm', '.mod', '.s3m', '.midi']
      #===
      #>Creation/definition of the functions
      #===
      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
      #  Check the presence of the file and return the filename
      #  /!\ Doesn't correct the mistake
      #====
      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
      # Function that automatically call the 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
    Note : The begin and end contained in LOOP_TABLE must be in milliseconds. They apply only for the BGM and BGS.
    [a id]sound[/a id]
    [SIZE=+2]FmodEx::Sound methods[/SIZE]​
    Here are the methods of the FmodEx::Sound class.
    At the exception of initialize, the following methods can return nil.
    Think check if the result is not nil before using them in calculations.

    You can create a sound independently of the BGM, BGS, ME and SE by using the "new" method of FmodEx::Sound (with the arguments of the initialize method).
    initialize(filename, volume = 100, pitch = 100, position = 0, looping = true, streaming = true, *args)
    Initialize a sound.
    Arguments : filename, volume, pitch, position, looping, streaming, memory_data, dls_file_name
    Optional from volume (include)
    If the position is less than 0, sound will initially paused.
    memory_data corresponds at a string/channel who contains the file data.
    dls_file_name is the name of the dls file used to read the midis.

    stop
    Stop the sound (automatically release the channel and the sound)
    Return true if the stop was made, false if stop isn't possible.
    Raise a FmodEx::Error exception if FmodEx fails and no Fade Thread is associated with sound.

    fade(time_ms)
    Fade out of a sound.
    The user indicate the time in milliseconds.
    Return true if the sound fade was triggered, false if not.

    pause(pause_state)
    Pausing a sound.
    The user indicates if he wants the sound to be paused (true) or played (false).
    Returns requested pause status, or nil if it is not possible.
    Raises a FmodEx :: Error exception if FmodEx can not paused the sound.

    paused?
    Retrieve the "pause" status of a sound.
    Return true if the sound is in pause, false if not.
    Raise a FmodEx::Error exception if FmodEx cannot retrieve the status.

    set_loop_points(begin_pt, end_pt)
    Indicate the loop points of the sound.
    If the sound is looped, the user can indicate the begin and end of the loop in milliseconds.
    Returns true if this was done, nil if this is not possible.
    Raise a FmodEx::Error exception if FmodEx cannot save the loop points.

    set_looping(state)
    Indicate the loop possibility.
    The user indicates if he wants the sound is looped (true) or not (false)
    Returns the requested status, nil if is not possible.
    Raise a FmodEx::Error exception if FmodEx cannot modify the sound status.

    looping?
    Return if the sound is looped or not.
    Raise a FmodEx::Error exception if FmodEx cannot retrieve the status.

    set_position(position_ms)
    Indicates the playing position of a sound.
    The user indicate the playing position in milliseconds.
    Return the requested position if it cannot save.
    Raise a FmodEx::Error exception if FmodEx cannot modify the position.

    get_position
    Return the actual position of the sound playing.
    Raise a FmodEx::Error exception if FmodEx fails.

    set_volume(volume)
    Indication of sound volume.
    The user indicates the desired volume between 0 and 100.
    Returns the requested volume if realized.
    Raise a FmodEx::Error exception if FmodEx fails.

    get_volume
    Returns the sound volume.
    Raise a FmodEx::Error exception if FmodEx cannot retrieve the volume.

    set_frequency(frequency)
    Indicate the sound frequency.
    Return the indicated frequency if it was realized.
    Raise a FmodEx::Error exception if FmodEx cannot change the sound frequency.

    get_frequency
    Retrieve the sound frequency .
    Raise a FmodEx::Error exception if FmodEx cannot retrieve the sound playing frequency.

    set_pan(pan)
    Indicates the sound pan (-100 = Left, 0 = Center, 100 = right)
    Return the requested value.
    Raise a FmodEx::Error exception if FmodEx cannot modify the pan.

    get_pan
    Retrieve sound pan.
    Raise a FmodEx::Error exception if FmodEx cannot retrieve the pan.

    playing?
    Is FmodEx currently playing the sound ?
    Return true if is the case.
    Raise a FmodEx::Error exception if FmodEx cannot know what it does of the sound.

    length
    Retrieve the sound temporal length in milliseconds.
    Raise a FmodEx::Error exception if FmodEx cannot retrieve the sound length.
    [a id]fmodex[/a id]
    [SIZE=+2]
    FmodEx module methods​
    [/SIZE]

    FmodEx.init(nb_of_channels)
    FmodEx initialisation.
    nb_of_channels indicate the desired number of channels.
    Return true if is succeed, false if already initialized.
    Raise a FmodEx::Error exception if FmodEx fails in its task.

    FmodEx.bgm_play(filename, volume = 100, pitch = 100, streaming = true, *args)
    Play a ME.
    Returns the ME sound playing.
    Arguments : filename [,volume [, pitch [, streaming [, memory [, dls]]]]]
    memory is the string that contain the file in RAM.
    dls_file_name is the name of the dls file used to read the midis.

    FmodEx.bgm_stop
    Stop a BGM.

    FmodEx.bgm_fade(time_ms)
    Fade the BGM out.
    time_ms is the fade out time in milliseconds.

    FmodEx.bgm_sound
    Retrieve the object FmodEx::Sound of BGM.
    Can be nil if no BGM is played.

    FmodEx.bgs_play(filename, volume = 100, pitch = 100, streaming = true, *args)
    Play a BGS.
    Returns the BGS sound playing.
    Arguments : filename [,volume [, pitch [, streaming [, memory [, dls]]]]]
    memory is the string that contain the file in RAM.
    dls_file_name is the name of the dls file used to read the midis.

    FmodEx.bgs_stop
    Stop a BGS.

    FmodEx.bgs_fade(time_ms)
    Fade the BGS out.
    time_ms is the fade out time in milliseconds.

    FmodEx.bgs_sound(filename, volume = 100, pitch = 100, streaming = true, *args)
    Retrieve the object FmodEx::Sound of BGS.
    Can be nil if no BGS is played.

    FmodEx.me_play
    Play a ME.
    Returns the ME sound.
    Arguments : filename [,volume [, pitch [, streaming [, memory [, dls]]]]]
    memory is the string that contain the file in RAM.
    dls_file_name is the name of the dls file used to read the midis.

    FmodEx.me_stop
    Stop a ME.

    FmodEx.fade_out(time_ms)
    Fade the ME out.
    time_ms is the fade out time in milliseconds.

    FmodEx.me_sound
    Retrieve the object FmodEx::Sound of ME.
    Can be nil if no ME is played.

    FmodEx.se_play(filename, volume = 100, pitch = 100, streaming = true, *args)
    Play a SE.
    Returns the SE sound.
    Arguments : filename [,volume [, pitch [, streaming [, memory [, dls]]]]]
    memory is the string that contain the file in RAM.
    dls_file_name is the name of the dls file used to read the midis.

    FmodEx.se_stop
    Stops the SE.
    [a id]credits[/a id]
    [size=+2]Credits[/size]​
    FIRELIGHT TECHNOLOGIES PTY LTD. - FMOD Ex API
    Enterbrain - RGSS
    Nuri Yuri - RGSS Linker, RGSS FmodEx, Audio (FmodEx)
    GiraPrimal - LOOP_TABLE


    Voilà, I think that the thing is complete, if you want use the RGSS linker, follow this link : https://github.com/NuriYuri/RGSS-Linker
    Original topic : https://pokemonworkshop.com/forum/index.php?topic=542.msg8417#msg8417
    Translator :
    KaiserYoshi
    (He asked to post this script here :p)

    can something in the scripts or dll's be changed to make it work with rgss102 library? i have to keep changing the game.ini after every save which is super annoying.
     
    Last edited:
    6
    Posts
    3
    Years
    • Seen Jun 10, 2022
    Hi !
    Since I've put the FModex in my game I can't enter any Pokémon Center and I get this error message :

    [Pokémon Essentials version 17.2]
    Exception: FmodEx::Error
    Message: FMOD error! (23) File not found.

    Audio Modual:65:in `initialize'
    Audio Modual:65:in `bgm_play'
    Audio Modual:65:in `bgm_play'
    Game_System:61:in `bgm_play_internal2'
    Game_System:70:in `bgm_play_internal'
    Game_System:51:in `bgm_play'
    AudioPlay:60:in `pbBGMPlay'
    Game_Map:123:in `autoplay'
    Scene_Map:109:in `follow_transfer'
    Follow Pokemon:1702:in `transfer_player'
     
    9
    Posts
    3
    Years
    • Seen Dec 26, 2021
    Hi !
    Since I've put the FModex in my game I can't enter any Pokémon Center and I get this error message :

    [Pokémon Essentials version 17.2]
    Exception: FmodEx::Error
    Message: FMOD error! (23) File not found.

    Audio Modual:65:in `initialize'
    Audio Modual:65:in `bgm_play'
    Audio Modual:65:in `bgm_play'
    Game_System:61:in `bgm_play_internal2'
    Game_System:70:in `bgm_play_internal'
    Game_System:51:in `bgm_play'
    AudioPlay:60:in `pbBGMPlay'
    Game_Map:123:in `autoplay'
    Scene_Map:109:in `follow_transfer'
    Follow Pokemon:1702:in `transfer_player'

    Does the BGM of your Pokémon Center have a é in it? I had the same error and found that changing the BGM name to Pokemon Center with a regular e instead of é (as well as other maps) fixed the problem
     
    5
    Posts
    4
    Years
  • Hi, im using this script and i have an issue. I follow all steps and the project run, but there is no sound (BGS,BGM...anything). However, if i change my folder's name (Pokemon OS) to other one (Pokemon OS1, Pokemon Os security) it works fine.

    I dont know if there is something wrong with folder or something. Can u help me?
     
    6
    Posts
    3
    Years
    • Seen Jun 10, 2022
    Does the BGM of your Pokémon Center have a é in it? I had the same error and found that changing the BGM name to Pokemon Center with a regular e instead of é (as well as other maps) fixed the problem

    Yeah that was the issue I found it too and forgot to come back and edit this response to the thread
     
    1
    Posts
    2
    Years
    • Seen Jun 23, 2021
    Exception `RuntimeError' at 361:RGSS_Linker:10 - Failed loading RGSS Linker.dll:
    361:RGSS_Linker:10:in `initialize': Failed loading RGSS Linker.dll: (RuntimeError)
    from 361:RGSS_Linker:10:in `new'
    from 361:RGSS_Linker:10:in `<module:Kernel>'
    from 361:RGSS_Linker:7:in `<main>'

    Running PE 19.1 and demo Steam version of RMXP
     
    Last edited:
    3
    Posts
    2
    Years
    • Seen Dec 27, 2021
    Exception `RuntimeError' at 361:RGSS_Linker:10 - Failed loading RGSS Linker.dll:
    361:RGSS_Linker:10:in `initialize': Failed loading RGSS Linker.dll: (RuntimeError)
    from 361:RGSS_Linker:10:in `new'
    from 361:RGSS_Linker:10:in `<module:Kernel>'
    from 361:RGSS_Linker:7:in `<main>'

    Running PE 19.1 and demo Steam version of RMXP

    So v19 of Pokemon Essentials doesn't actually use the RGSS system anymore and now uses mkxp-z instead, so all you have to do to fix this issue is remove the RGSS linker.dll and the RGSS FmodEX.dll from your root folder (and remove the scripts from the project) and it should work fine.

    Remember that you have to still keep the fmodex.dll file in your root folder, just delete the other two.
     
    Back
    Top