Documentation

How to connect Gomo Sounds to your AI assistant, your engine and your game.

What you get

Each game becomes an audio package with a manifest.json that says which file plays for each sound in the game. A real example, from the game Beetle Kingdom, with a creature that has three versions (pick one at random on each play), an interface click and the theme music in a loop:

{
  "format": "gomo-sounds/manifest@1",
  "game": { "id": "…", "name": "Beetle Kingdom" },
  "exportedAt": "2026-11-10T21:40:12Z",
  "sounds": [
    {
      "key": "beetle-king.roar",
      "entity": "Beetle King",
      "entityId": "…",
      "externalId": "res://scenes/beetle_king.tscn",
      "event": "Roar",
      "eventId": "…",
      "inheritedFrom": null,
      "section": "effects",
      "artist": null,
      "title": null,
      "generationIds": ["…", "…", "…"],
      "fileIds": ["…", "…", "…"],
      "loops": [false, false, false],
      "bpms": [null, null, null],
      "generationId": "…",
      "durationSec": 2.4,
      "prompt": "deep roar of a giant beetle, its shell rattling",
      "files": [
        "sounds/beetle-king/roar_1.wav",
        "sounds/beetle-king/roar_2.wav",
        "sounds/beetle-king/roar_3.wav"
      ],
      "file": "sounds/beetle-king/roar_1.wav"
    },
    {
      "key": "@interface.click",
      "entity": "Interface",
      "entityId": null,
      "externalId": null,
      "event": "Click",
      "eventId": "…",
      "inheritedFrom": null,
      "section": "interface",
      "artist": null,
      "title": null,
      "generationIds": ["…"],
      "fileIds": ["…"],
      "loops": [false],
      "bpms": [null],
      "generationId": "…",
      "durationSec": 0.6,
      "prompt": "soft button click, hollow wood",
      "files": ["sounds/_pastas/interface/click.wav"],
      "file": "sounds/_pastas/interface/click.wav"
    },
    {
      "key": "@music.anthill-theme",
      "entity": "Music",
      "entityId": null,
      "externalId": null,
      "event": "Anthill theme",
      "eventId": "…",
      "inheritedFrom": null,
      "section": "music",
      "artist": "Shell Studio",
      "title": "Anthill theme",
      "generationIds": ["…"],
      "fileIds": ["…"],
      "loops": [true],
      "bpms": [96],
      "generationId": "…",
      "durationSec": 90,
      "prompt": "adventure theme with marimba and strings, cheerful and curious",
      "files": ["sounds/_pastas/music/anthill-theme.ogg"],
      "file": "sounds/_pastas/music/anthill-theme.ogg"
    }
  ]
}

The fields are explained in manifest.json.

Sound format

Every sound comes out as 16-bit PCM WAV, at the generator's rate (44.1 kHz), ready for any engine.

What How it comes out
Channels Mono for everything the game positions (footsteps, hits, creatures, objects and interface): the engine sets the side and distance. Stereo for the backgrounds in the Ambience folder and for music, in any folder. You can force mono or stereo per sound under advanced in the generate panel, or through MCP (channels in generate_sounds). Sounds generated before 2026-10-16 may be stereo.
Loudness Each sound comes out at a loudness target for its type, in LUFS: interface and movement −21, creature −18, impact −15, ambience −24, everything else −18. The peak stays below −1 dBFS. So the game's sounds already arrive balanced with each other.
Length From 0.5 to 30 s per sound.
Start On short sounds, the silence before the sound is cut. If the hit still takes a while (the generator sometimes puts a breath before the impact), use Trim to the attack in the Editor: the random footstep lands with the foot.
End Ends with a natural fade, no hard cut (unless the sound asks for an abrupt end).
Loop Loop sounds come already joined in the file itself, at the length you asked for: they loop with no click.

Sounds come out dry, with no echo or room: the game provides the space.

Download as .zip

Without a plugin, any engine uses the .zip package. On the game page, click the down arrow at the top (it opens Send to game), then Prefer a .zip? Choose the sounds, tick the sounds and click Download .zip. Only chosen sounds ("Use this") go in.

Inside the .zip (the names here are the manifest's technical ones: entity is the thing of the game, shown on the site as a label on the cards; event is the sound; variations are the versions):

Path What it is
manifest.json The list of every sound in the package (see below).
sounds/<entity>/<event>.wav The sound of an entity's event (e.g. sounds/wolf/howl.wav).
sounds/_pastas/<folders>/<event>.wav The sound of a folder event, which applies to everything inside it (Interface, Ambience and your own folders).
<event>_1.wav, <event>_2.wav... When the event has more than one chosen variation, one per file: pick one at random on each play.

A sound shared by several entities (inherited from the folder) appears only once in the .zip; each entity points to the same file in the manifest.

manifest.json

The manifest says which file plays for each event. The full example is at the top; the short version, with an entity event:

{
  "format": "gomo-sounds/manifest@1",
  "game": { "id": "…", "name": "Iron and Snow" },
  "exportedAt": "2026-10-16T22:07:38Z",
  "sounds": [
    {
      "key": "wolf.howl",
      "entity": "Wolf",
      "event": "Howl",
      "loops": [false, false],
      "durationSec": 3,
      "files": ["sounds/wolf/howl_1.wav", "sounds/wolf/howl_2.wav"],
      "file": "sounds/wolf/howl_1.wav"
    }
  ]
}
Field What it is
format Always gomo-sounds/manifest@1. If it changes, the format changed.
game The game's id and name.
exportedAt When the package was made (UTC).
key The sound's unique key: <entity>.<event>; for a folder event, @<folders>.<event> (e.g. @interface.click). Use it to play by name.
entity / entityId The entity that owns the event; for a folder event, the folder path and a null entityId.
externalId The scene id in the game, when it came from the plugin (e.g. the scene path in Godot).
event / eventId The event's name and id.
inheritedFrom Which folder the sound is inherited from, or null if it belongs to the entity.
section The sound's tab: effects, interface, ambience or music. The plugin plays music in sequence, with a crossfade; everything else at random.
artist / title Music only: the artist (the account name) and the title, the same ones written in the file tags. Null for other sounds.
files The files of the chosen variations, in order: pick one at random on each play.
file The first of files, if you only want one.
loops For each variation, whether it is a loop (play it repeating).
bpms For each variation, the music's tempo (music only; null for other sounds).
generationId The id of the first variation.
durationSec Length of the first variation, in seconds.
prompt The text that generated the first variation.
generationIds / fileIds The ids of the variations and files in Gomo Sounds.

In the engine, read the manifest once, store it by key and, on each play, pick a random item from files. So a sound doesn't get tiring when it plays many times, vary the pitch a little (±5%) on each play: that's what the Godot plugin does.

Music quality

Music has quality levels, in the pill next to the length, in the generate panel. Each level shows its cost per minute, and the Generate button shows the total before you generate.

Level What for
Draft Trying out the idea. Ready in seconds.
Good Prototypes.
High Ready for the game. It's the default.
Maximum The bigger model: more detail, takes longer. Costs twice as much as High. It shows with a diamond in the list, and music made with it gets the made on Maximum badge.

Only the levels turned on at the moment show up. Music comes out as stereo OGG Vorbis (not WAV, like the effects).