# Some question about studio and sample

**URL:** <https://qa.fmod.com/t/some-question-about-studio-and-sample/24194>\
**Category:** FMOD Studio\
**Created:** [April 17, 2026, 7:35pm UTC](https://qa.fmod.com/t/some-question-about-studio-and-sample/24194 "2026-04-17T19:35:43Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Heorleav](https://avatars.discourse-cdn.com/v4/letter/h/4bbf92/32.png) [@Heorleav](https://qa.fmod.com/u/Heorleav)\
**Post date:** [April 17, 2026, 7:35pm UTC](https://qa.fmod.com/t/some-question-about-studio-and-sample/24194/1 "2026-04-17T19:35:43Z")

</div>

I’m trying to integrate FMOD with Godot, but I’m not very clear on how the engine works.

1. As I understand it, Studio API commands are only actually processed when `Studio::System::update()` is called.  
If I call`update()`before making other Studio API calls, will those API calls be deferred until the next update?

2. I want to align the beats between two audio samples as precisely as possible.  
Currently, I start one event first, then start the second one using a timeline beat callback. However, I noticed that the callback is only processed during `update()`, which introduces some latency.  
Is there a better way to schedule playback at a precise position?

3. I’m aiming for sample-accurate synchronization. How does `setDelay` work? If it allows pre-scheduling or pre-mixing audio data, that would be ideal.

---

<div class="post-metadata">

**Author:** ![Connor\_FMOD](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/connor_fmod/32/3685_2.png) [@Connor\_FMOD](https://qa.fmod.com/u/Connor_FMOD)\
**Post date:** [April 23, 2026, 2:54am UTC](https://qa.fmod.com/t/some-question-about-studio-and-sample/24194/2 "2026-04-23T02:54:45Z")

</div>

1. An exert from: [FMOD Engine | Studio Api System - Studio::System::Update](https://fmod.com/docs/2.03/api/studio-api-system.html#studio_system_update)  
When Studio is initialized in the default asynchronous processing mode this function submits all buffered commands for execution on the **[Studio Update thread](https://fmod.com/docs/2.03/api/glossary.html#studio-update-thread)** for asynchronous processing. This is a fast operation since the commands are not processed on the calling thread. When Studio is initialized with **[FMOD\_STUDIO\_INIT\_SYNCHRONOUS\_UPDATE](https://fmod.com/docs/2.03/api/studio-api-system.html#fmod_studio_init_synchronous_update)** queued commands will be processed immediately when calling this function.

2. A potential solution could be using the `FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE` flag.

3. [FMOD Engine | Core Api Channelcontrol - Channelcontrol::Setdelay](https://fmod.com/docs/2.03/api/core-api-channelcontrol.html#channelcontrol_setdelay) is used for exactly that. However, it does require accessing the [FMOD Engine | Core Api](https://fmod.com/docs/2.03/api/core-api.html). Our FMOD Engine API install includes and example of how to use `setDelay()`: `C:\Program Files (x86)\FMOD SoundSystem\FMOD Studio API Windows\api\core\examples\gapless_playback.cpp`.  
To improve playback times you can also use:  
[FMOD Engine | Studio Api Bank - Studio::Bank ::Loadsampledata](https://fmod.com/docs/2.03/api/studio-api-bank.html#studio_bank_loadsampledata)  
[FMOD Engine | Studio Api Eventdescription - Studio::Eventdescription::Loadsampledata](https://fmod.com/docs/2.03/api/studio-api-eventdescription.html#studio_eventdescription_loadsampledata)

Hope this helps!

---

<div class="post-metadata">

**Author:** ![Heorleav](https://avatars.discourse-cdn.com/v4/letter/h/4bbf92/32.png) [@Heorleav](https://qa.fmod.com/u/Heorleav)\
**Post date:** [April 23, 2026, 7:17am UTC](https://qa.fmod.com/t/some-question-about-studio-and-sample/24194/3 "2026-04-23T07:17:15Z")

</div>

I should look the documentation carefully. The example is useful, thanks.
