FMOD Workspace Tour and Project Setup
=====================================
FMOD Studio is <strong>middleware</strong>: it sits between your <strong>audio files</strong> and your <strong>game engine</strong>, so designers can define <strong>how</strong> sounds play (layers, randomization, parameters, music transitions) without hard-coding every case in C#, GDScript, or Blueprint. This chapter orients you in the <strong>workspace</strong> and sets up a <strong>first project</strong> you will extend in later chapters.
Who this chapter is for
-----------------------
- Developers who outgrew “one AudioClip per action” and need <strong>variation</strong> and <strong>control</strong>
- Sound designers moving from a DAW into <strong>runtime-ready</strong> authoring
- Anyone evaluating <strong>FMOD</strong> versus <strong>Wwise</strong> or engine-native audio
By the end, you will know the main <strong>panels</strong> in FMOD Studio, the difference between <strong>events</strong> and <strong>assets</strong>, and how to create a <strong>project</strong> and <strong>bank</strong> ready for a simple integration test.
What FMOD Studio does (and does not do)
---------------------------------------
FMOD Studio <strong>does</strong>:
- Author <strong>events</strong> (playable objects the game triggers by name or GUID)
- Drive <strong>mix</strong> and <strong>music</strong> with <strong>parameters</strong> (health, intensity, biome, and so on)
- Build <strong>banks</strong> (packed files the engine loads—often per level or platform)
- Support <strong>snapshots</strong> for temporary bus-level overrides (e.g. muffled underwater mix)
FMOD Studio <strong>does not</strong>:
- Replace a <strong>DAW</strong> for full music production (you still compose and bounce stems elsewhere)
- Run inside the game by itself—you need the <strong>FMOD Engine API</strong> and an <strong>integration</strong> (e.g. Unity package, Godot GDExtension or community bridge)
Typical indie workflow:
- Record or export WAV/OGG from Audacity, Reaper, or similar
- Import into <strong>FMOD Studio</strong> and build <strong>events</strong>
- Assign <strong>parameters</strong> and <strong>routing</strong> to buses
- <strong>Build</strong> banks and hook the game to <strong>play</strong> events and <strong>set</strong> parameters
First launch: main areas of the window
--------------------------------------
When you open FMOD Studio, learn these regions:
- <strong>Event Browser</strong> – Tree of <strong>events</strong>, <strong>folders</strong>, and sometimes <strong>snapshots</strong>; this is how you navigate what the game can trigger
- <strong>Editor</strong> – Timeline-style view for the <strong>selected event</strong> (tracks, instruments, logic)
- <strong>Mixer</strong> – <strong>Buses</strong>, <strong>VCAs</strong>, routing, sends, and levels; your <strong>master</strong> and <strong>submix</strong> structure lives here
- <strong>Bank Browser</strong> – Which <strong>events</strong> and <strong>assets</strong> land in which <strong>bank</strong> file for build output
- <strong>Transport</strong> – Audition the current event; <strong>solo</strong> and <strong>mute</strong> while authoring
Exact labels can vary slightly by version, but the <strong>event → mixer → bank</strong> triangle is stable across FMOD Studio 2.x.
Core vocabulary (use these terms consistently)
----------------------------------------------
- <strong>Event</strong> – The thing the game <strong>starts</strong> or <strong>stops</strong>; can be one-shot, looping, or complex music
- <strong>Instrument</strong> / <strong>module</strong> – A sound-producing block on a track (single file, multi-instrument, scatter, etc.)
- <strong>Parameter</strong> – A <strong>numeric</strong> control exposed to the game (often 0–1 or a custom range) that modulates volume, pitch, switching, or music logic
- <strong>Bank</strong> – A <strong>binary</strong> package built for a platform; the engine loads banks, not loose FMOD project files
- <strong>Bus</strong> – A <strong>mixer node</strong>; events route <strong>into</strong> buses, and snapshots can affect <strong>bus</strong> effects and levels
Create your first project
-------------------------
- <strong>File → New Project</strong> (or equivalent) and save under <strong>version control</strong> with your game or in a sibling <code>audio-fmod/</code> repo.
- Pick a <strong>sample rate</strong> policy that matches your game (commonly <strong>48 kHz</strong>; stay consistent with source files).
- Create a <strong>folder</strong> structure early, for example: <code>SFX/Weapons</code>, <code>SFX/UI</code>, <code>Music/Levels</code>, <code>Ambience</code>, <code>Mix/Snapshots</code>.
- Add a <strong>master</strong> routing habit: route gameplay events through a <strong><code>SFX</code></strong> bus and music through <strong><code>Music</code></strong>, both feeding <strong><code>Master</code></strong>. You will thank yourself when you add <strong>snapshots</strong> later.
Create a minimal test event
---------------------------
- <strong>Import</strong> a short <strong>WAV</strong> (a click or footstep).
- <strong>New Event</strong> → choose a <strong>2D</strong> or <strong>3D</strong> event type appropriate to your game (2D is fine for UI tests).
- Drag the asset to a <strong>track</strong> so the event <strong>plays</strong> when auditioned.
- Name the event clearly (<code>UI/Click_Default</code>) so programmers can find it without a spreadsheet.
- Assign the event to a <strong>bank</strong> (e.g. <code>Master</code> or <code>Test</code> bank) in the <strong>Bank</strong> view so it <strong>builds</strong>.
<strong>Pro tip:</strong> Use <strong>slash-style</strong> virtual folders in names (<code>SFX/Weapons/Pistol</code>) even if the on-disk folder differs—programmers often search by string.
Build banks and know where they go
----------------------------------
- Open <strong>Bank</strong> settings and confirm <strong>platform</strong> (Desktop, Mobile, Console SDK as applicable).
- <strong>Build</strong> banks and note the <strong>output path</strong> (your game integration will expect this path or a copy step in CI).
- Keep <strong>debug</strong> and <strong>release</strong> bank outputs <strong>separate</strong> if you use <strong>logging</strong> or <strong>profiling</strong> in development.
You have not hooked the engine yet—that is fine. The goal of this chapter is a <strong>clean</strong> <strong>project</strong> with <strong>one</strong> <strong>auditionable</strong> <strong>event</strong> inside a <strong>named</strong> <strong>bank</strong>.
Common mistakes to avoid
------------------------
- <strong>No bank assignment</strong> – Events that never ship because they are not in any built bank
- <strong>Chaotic event names</strong> – <code>Event1</code> does not scale; use <strong>paths</strong> and <strong>conventions</strong>
- <strong>Mixing sample rates</strong> – Importing 44.1 kHz and 48 kHz without a <strong>project-wide</strong> rule causes confusion
- <strong>Authoring only in headphones</strong> – Check <strong>speakers</strong> and <strong>mono</strong> for UI and voice at least once
Mini exercise
-------------
Create <strong>two</strong> events in the same bank: <code>SFX/UI/Hover</code> and <code>SFX/UI/Confirm</code>, each with a different asset. Route both to a <strong><code>UI</code></strong> bus under <strong><code>Master</code></strong>. <strong>Build</strong> the bank and confirm both events appear in the <strong>build log</strong> without errors.
Next chapter preview
--------------------
In <strong>Events, Tracks, and Basic Signal Flow</strong>, you will break down <strong>multi-track</strong> events, <strong>loop</strong> regions, <strong>one-shots</strong> versus <strong>sustained</strong> sounds, and how <strong>routing</strong> choices affect <strong>3D</strong> attenuation later.
Further reading
---------------
- Official <strong>FMOD</strong> documentation for your Studio version (installation, glossary, and API overview)
- <a href="/guides/audacity">Audacity for Game Audio</a> for <strong>recording</strong> and <strong>export</strong> before you import into FMOD