How to use it
Three steps to a mix you can hear over the ship.
1 Open the Audio mixer and move the five sliders.
Open the Audio mixer and move the five sliders for speech, cues, music, ambience and alerts.
Each slider shows its percentage, and the change is audible while something is playing.
2 Set how far everything else drops while D47 talks.
Set how far everything else drops while D47 talks.
The duck slider shows a value in decibels, and other audio dips while D47 speaks.
! The one that stops people.
Move the slider yourself, or use the Windows mixer, to change the volume.
The level changes; asking the AI to turn itself down changes nothing.
Why it works this way
How loud each kind of sound is, and how far it drops out of the way while Directive 47 speaks.
1 Six categories, and everything audible is one of them.
2 Ducking is a fraction, not a second level.
Speech and alerts have no duck row, because there is nothing for them to duck under. A row that does not apply is absent rather than greyed out. And moving a level re-levels whatever is playing at that moment, because setting a level by ear is the only way to set one.
3 Ambience follows the music Elite is playing.
Directive 47 ships with no music of its own — drop your own .mp3, .m4a, .flac or .wav files into data/audio and they are picked up while it runs. Tracks shuffle within a folder and the whole folder plays before any repeats, because you did not number your files. Ambience plays only while Elite is running, and stops within a few seconds of the game closing.
4 No tool sets a level or a mute.
“By voice” never silently means “by the language model”. Every row here is reachable through the model-free keyword router, which is a different path with a different caller. The one tool, manage_music, only pauses, resumes and skips the ambient music.
The details
How loud each kind of sound is, whether it is muted, and how far it drops out of the way while Directive 47 is speaking.
The six categories
Everything audible goes through one queue, and everything on that queue belongs to exactly one of these:
| Category | What it is |
|---|---|
| Speech | Everything D47 says out loud. |
| Alerts | The danger callouts — interdiction, shields down, low fuel. The one thing that cuts in mid-sentence. |
| Overheard chatter | Invented radio traffic between other pilots and controllers, not meant for you. |
| Sound cues | The short markers for listening, thinking and answering. |
| Thinking bed | The loop that plays underneath a turn while D47 works. |
| Ambient music | The background layer that follows what you are doing. |
Each has a Level from 0 to 1 and a Mute. They are separate on purpose: a level of zero and a mute sound identical and mean different things, and flicking the mute back should not cost you the level you had it at.
What silences what
Ranking decides who goes next, not who gets cut off. Something already playing is normally left to finish, and there are exactly three exceptions:
| What arrives | What it cuts | What it leaves alone |
|---|---|---|
| An alert | Anything being said, mid-word | Nothing; only “stop” overrules it |
| You starting to talk to it | Invented NPC chatter, playing or queued | Everything else, including the sound cue |
| “Stop” | Everything audible, including the alert | Nothing |
The middle row is the narrow one, and it fires when you open the microphone rather than when the answer arrives. Transcription and the model together take several seconds, and a four-line exchange finishes inside them, so waiting for the answer would mean hearing the whole exchange out anyway.
It stays shut until the loop goes quiet again, rather than only cutting what was audible at that moment. An exchange is written and voiced ahead of what you are hearing, so the next speaker is already on their way when the first is cut off, and would otherwise arrive a second later.
It reaches invented chatter and nothing else: a message the game sent you, a callout you switched on, and a sound cue are all left where they are. And it is only ever you who does it — an unprompted line of Directive 47’s own queues up behind the chatter like anything else, because nobody was waiting on it.
The sound cue is the reason the rule is written this way. A cue is a fifth of a second and it plays immediately before the sentence it introduces, so anything allowed to cut in on rank alone would truncate the cue that announced it, every single turn.
Ducking
Speech and alerts are what everything else gets out of the way of, so the other three carry a Duck while D47 speaks number as well. It is a fraction of that category’s level rather than a level of its own — turn music down and its ducked form goes down with it.
1 does not duck at all. 0 goes silent until the sentence ends. Out of the box the thinking
bed sits at 0.35, which is enough to stay audible as evidence the turn is still running and
quiet enough not to compete with the words, and music sits at 0.2.
Speech and alerts have no duck row, because there is nothing for them to duck under. A row that does not apply is absent rather than greyed out.
What you hear if you never touch it
The defaults are what D47 sounded like before there was a mixer, with one addition: ambient music arrives at half level and ducking to a fifth, because a background layer that turns up at full volume is one you switch off rather than turn down.
{
"bed": { "level": 1, "muted": false, "duckUnderSpeech": 0.35 },
"music": { "level": 0.5, "muted": false, "duckUnderSpeech": 0.2 },
"cue": { "level": 1, "muted": false, "duckUnderSpeech": 1 },
"overheard": { "level": 0.5, "muted": false, "duckUnderSpeech": 1 },
"speech": { "level": 1, "muted": false, "duckUnderSpeech": 1 },
"alert": { "level": 1, "muted": false, "duckUnderSpeech": 1 }
}
That block is the audio section of data/settings.json. You never have to edit it — every
value has a row — but it is a plain file and it reads the way the rows do.
It takes effect while you are listening to it
Moving a level re-levels whatever is playing at that moment rather than waiting for the next clip. Turn the bed down while a turn is running and it goes quiet under your hand, which is the only way to set a level by ear.
Your own sounds
Drop audio files into data/audio beside the executable. .mp3, .m4a, .aac, .wma,
.flac and .wav are read, at any sample rate and channel count; D47 converts them to 48 kHz
mono as it loads them. The folders are made for you on first run, and Open audio folder on
the Your own audio row opens data\audio in Explorer:
data/audio/
cues/<state>/ idle, listening, transcribing, thinking, speaking, answered, unsure, failed
alerts/<alert>/ interdiction, piracy, bounty-hunter, under-fire, overheating,
rival-territory, timer-elapsed
beds/ the loop under a working turn
music/<situation>/ ambience — see below
Windows does the decoding. A Windows N edition has no MP3 or AAC decoder until the Media Feature
Pack is installed; .wav works without it.
A sound goes in the folder for where it is used, under any file name. A cue or alert folder with
files in it plays only those, one picked each time the cue plays; an empty one plays the shipped
sound. beds/ works the same way, with one file picked when a turn starts and looped for that
turn. Each folder plays every file once, in shuffled order, before any repeats, and never the same
file twice in a row. A file loose in cues/, alerts/ or music/, outside a named folder, is not
read.
Files are picked up while D47 is running, without a restart, and a reload never cuts a clip that is already playing.
The Your own audio row accounts for every file under data\audio: a count for each folder
that has files in it, then every file that was never a candidate — in the wrong place, or not a
format D47 reads — and finally every file that was tried and would not load:
cues/listening: 5 files
alerts/under-fire: 1 file
music/combat-dogfight: 12 files
Ignored: klaxon.wav is directly in alerts; put it in a folder such as alerts/under-fire.
Ignored: notes.txt is not an audio format D47 reads.
Skipped: engine-room: Windows has no decoder for this file. On a Windows N edition, install the Media Feature Pack.
Ambience
music/<situation>/ is a background layer of its own, with its own level and its own
ducking, separate from the cues and the thinking bed. Elite writes a Music event naming the
situation it is scoring, and D47 plays from the folder for that track:
| Folder | Elite track | Without a track, from Status.json |
|---|---|---|
docked |
Starport |
Docked at a station or an outpost. |
supercruise |
Supercruise |
In supercruise. |
normal-space |
Exploration |
In a ship, a fighter or an SRV, and neither of the above — including landed. |
on-foot |
OnFoot |
Out of the ship. |
general |
— | Anything else, and the last fallback. |
main-menu |
MainMenu |
|
docking-computer |
DockingComputer |
|
galaxy-map |
GalaxyMap |
|
system-map |
SystemMap |
|
scanner |
SystemAndSurfaceScanner |
|
codex |
Codex |
|
combat-dogfight |
Combat_Dogfight |
|
combat-large |
Combat_LargeDogFight |
|
combat-srv |
Combat_SRV |
|
combat-unknown |
Combat_Unknown |
|
interdiction |
Interdiction |
|
capital-ship |
CapitalShip |
|
unknown-encounter |
Unknown_Encounter |
|
unknown-exploration |
Unknown_Exploration |
|
unknown-settlement |
Unknown_Settlement |
|
guardian-sites |
GuardianSites |
|
fog-cloud |
Lifeform_FogCloud |
|
arrival-from-supercruise |
DestinationFromSupercruise |
|
arrival-from-hyperspace |
DestinationFromHyperspace |
|
fleet-carrier |
FleetCarrier_Managment |
|
squadrons |
Squadrons |
|
powerplay |
GalacticPowers |
|
cqc-menu |
CQCMenu |
|
cqc |
CQC |
When Elite’s track has a folder with files in it, that folder plays. Otherwise the folder comes
from what Status.json states — the five in the last column — and then general. An empty
folder changes nothing. NoTrack, NoInGameMusic and any track not listed have no folder.
To hear this music rather than Elite’s, set Elite’s music volume to zero (Options, Audio).
Ambience plays only while Elite is running. D47 checks for the game’s window every two seconds: when the game closes, crashed or not, the track stops, and when it starts again the music picks up for the situation it is in, unless you paused or muted it. Until Elite’s window appears, which is a few seconds after launch, nothing plays.
Tracks are shuffled within a folder and the whole folder plays before any of them repeats — you
did not number your files, and hearing the same one every time you dock is what happens if D47
plays them in name order. Two seconds of silence separate a track that ends from the next one,
the pause a CD puts between tracks. A situation with nothing in it falls back to general; general with
nothing in it is quiet, which is what every Commander gets until they drop something in. D47
ships with no music of its own.
Changing situation stops the old track rather than letting it play out: arriving at a station is the moment the docking music is wanted, not thirty seconds later. Muting the category stops it, and unmuting starts one — a switch whose effect waits for the next time you dock is a switch that reads as broken.
Pause, resume and next track
The keyboard’s play/pause and next-track keys control the ambient music. D47 registers as a Windows media session, so it also appears in the volume flyout with the current track’s file name and working buttons. Nothing else D47 plays — speech, cues, alerts or the thinking bed — answers to these keys.
- Pause holds the track where it is. Resume continues it from that point.
- Next ends the track and starts the next one in the shuffle. It also ends a pause.
- While paused, a change of situation starts nothing. Resume starts the new situation’s track.
- With Elite closed, resume and next reply “Elite is not running.” and play nothing. Pause still works.
- Pause lasts until you resume or restart D47. It is not the Mute setting, which is saved and unchanged by these keys.
Windows sends the media keys to whichever media session was used last. With Spotify or another player also open, the keys may go to that player instead.
The same three actions work by voice — “pause the music”, “resume the music”, “next track” or
“skip track” — through manage_music, which the model can also call:
{"type":"object","properties":{"action":{"type":"string","description":"What to do to the music.","enum":["pause","resume","next"]}},"required":["action"],"additionalProperties":false}
Not reachable by the model
No tool sets a level or a mute; manage_music only pauses, resumes and skips the music.
Directive 47 cannot turn its own voice down, and it cannot turn the danger callouts down either — those are the two things that would make it harder to hear exactly when
hearing it matters, and no request needs them.
Every row is still reachable by voice, through the model-free keyword router, and from the Settings tab. “By voice” never silently means “by the language model”.