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.

Audio mixer Speech 80% Cues 60% Music 40% Ambience and Alerts sit below these two.

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.

Duck everything else while D47 speaks -12 dB Move a slider while something is playing and you hear the change as you make it. Nothing has to be re-triggered to audition it.

! 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.

The AI cannot touch the mixer. Asking it to turn itself down does nothing. Move the slider, or use your Windows mixer.
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.

SPEECH everything it says out loud ALERTS the one thing that cuts in mid-sentence SOUND CUES listening, thinking, answering THINKING BED the loop under a running turn AMBIENCE follows what you are doing Everything audible goes through one queue, and belongs to exactly one of these. Each has a Level and a Mute, and they are separate on purpose. A level of zero and a mute sound identical and mean different things.

2 Ducking is a fraction, not a second level.

DUCK IS A FRACTION of that category’s own level not a level of its own SO TURNING MUSIC DOWN takes its ducked form down with it 1 does not duck at all. 0 goes silent until the sentence ends. The bed sits at 0.35 — audible enough to prove the turn is running, quiet enough not to compete.

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.

Elite's music track combat-dogfight, galaxy-map… where you are docked, supercruise, on-foot… general the last fallback → → an empty folder changes nothing Set Elite's music volume to zero (Options, Audio) to hear yours instead of the game's.

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.

IT CANNOT TURN DOWN its own voice or the danger callouts YOU STILL CAN by voice, through the router and from the Settings tab Those are the two things that would make it harder to hear exactly when hearing it matters.

“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”.