Forum rules - please read before posting.

FMOD Integration

Hi Chris,
we are currently trying to transition to FMOD for the audio of our game. While the general transition isn't too complicated and I have also found custom actions for FMOD audio playback, the main challenge is regarding speech audio.
As Speech audio (especially playing it through IDs) is deeply integrated into AC, I wanted to ask if you are thinking about having this integrated as an option (similar to the adressable option). This could be another define (FMODisPresent), and would enable handling speech audio through the programmer instrument in FMOD.
If it's not something you are planning to include, what would be the best way to tackle this, making sure that things like the speech timeline track etc. still work?


  • edited December 2020

    It should be possible to override behaviour using events - you can still rely on AC's Speech Manager for assigning / defining the audio data itself.

    When speech is played, it triggers the OnStartSpeech event, which gives information about the character, text, and ID (tutorial here). This is triggered for speech present in Timeline as well as ActionLists.

    With a line ID number, you can get the associated SpeechLine class - and from there the relevant data (i.e. manually-assigned audio clip, or text via the Description box):

    private void StartSpeech (AC.Char character, string lineText, int lineID)
        SpeechLine speechLine = KickStarter.speechManager.GetLine (lineID);
        AudioClip audioClip = speechLine.customAudioClip;
        // or:
        string audioData = speechLine.description;

    Once you've gotten the audio data and used it to play it via custom means, you can then prevent AC from playing audio itself by unchecking Auto-play speech audio files? in the Speech Manager.

  • Ah nice, that seems like a great solution. Thank you!

  • @Onat First time post here. It's really nice to see that someone has gotten FMOD to work in AC! I have been searching and waiting for a no-code solution for years that will work with FMOD. It's almost entirely my only hangup with committing to an engine. I'm an audio engineer and can't imagine working on my own game without my "power tools".

    Can you tell any more about how it's working out for you? Was this, by chance, your starting point: ? Or did you develop your own custom AC actions? Have you come across any issues other than your VO one? How did that resolve for you? Are you able to do all your calls to FMOD without writing any code? As a Unity noob and having no coding chops whatsoever, my biggest concern is hitting a roadblock here.

    Thanks in advance for your insight.

  • Hi @LMo sorry for the late reply. In fact I have just started with the implementaiton, as there were so many other things to do. The VO part seems to work already, It's been just a couple of days, but once I'm done with the implementation, I'll try to upload relevant parts of it in the wiki.

    @ChrisIceBox as far as I can tell, the FaceFx integration is not triggered by playing audio through a custom solution (maybe because of disabling auto-play speech audio files). Is there an official way to still keep all the other functionality, or something else that you would recommend?

  • You can use the FaceFXIntegration script's Play function to manually trigger a facial animation:

    FaceFXIntegration.Play (speakingCharacter, filename, audioClip);

    The script below may need to be adapted to suit your purposes, but here's how you'd extract the relevant information from a Speech class as it gets played:

    using UnityEngine;
    using AC;
    public class FaceFXExample : MonoBehaviour
        private void OnEnable () { EventManager.OnStartSpeech_Alt += StartSpeech; }
        private void OnDisable () { EventManager.OnStartSpeech_Alt -= StartSpeech; }
        private void StartSpeech (Speech speech)
            AC.Char speaker = speech.GetSpeakingCharacter ();
            if (speaker)
                AudioClip audioClip = KickStarter.runtimeLanguages.GetSpeechAudioClip (speech.LineID, speaker);
                FaceFXIntegration.Play (speaker, speech.log.speakerName + speech.log.lineID, audioClip);
  • Hi, is the above still up to date? And the wiki for FMOD? I am keen to try and integrate FMOD into my project, thanks

  • I can't speak for the Github link or the work of others, but my own comments here should still be valid, yes.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Welcome to the official forum for Adventure Creator.