Skip to content

Configuration

Introduction

This feature was introduced in v3.2.

Milthm stores user-editable settings in a config.toml file. The file is written in TOML. If the file does not exist, Milthm will create one from the default configuration and restore settings from older versions when available.

DANGER

Carefully read the documentation below before modifying the configuration file. Invalid TOML or invalid typed values can make Milthm fall back to a default configuration until the file is fixed.

Find the Configuration File

Milthm loads config.toml from its platform-specific app data storage path.

Common player-build paths are:

OS or PlatformPath
Windows%AppData%\..\LocalLow\Morizero\Milthm\config.toml
Linux~/.config/unity3d/Morizero/Milthm/config.toml
macOS~/Library/Application Support/Morizero/Milthm/config.toml
Android (Google Play)/storage/emulated/<userid>/Android/data/com.morizero.milthm/files/config.toml
Android (TapTap)/storage/emulated/<userid>/Android/data/game.taptap.morizero.milthm/files/config.toml
iOSUse the system Files app and find Milthm.

Configuration Sections

Milthm writes the following top-level sections:

  • Notice
  • GeneralSetting
  • GameplaySetting
  • AudioSetting
  • VideoSetting
  • NetworkSetting

Notice is a generated localized notice string. Editing it does not change Milthm settings.

GeneralSetting

KeyTypeDefaultPlatformDescription
Languagestring | "auto"autoAllUI language as a BCP-47 tag. If auto, Milthm uses the detected system language list and falls back when no supported language matches.

GameplaySetting

KeyTypeDefaultPlatformDescription
NoteFlowSpeedfloat0.25AllUser flow-speed value. Negative values fall back to the default. Non-negative values are clamped to [0, 1.25]; gameplay uses this value + 0.75.
NoteSizefloat-1AllUser note-size value. Negative values use the device default: PC 0.1, Pad 0.25, Phone 0.45, otherwise 0.5. Non-negative values clamp to [0, 1]; gameplay scale is 1 + value.
HighlightChordbooltrueAllHighlight chords.
DisableHitSoundboolfalseAllDisable hit sounds.
HitSoundSetIDint0AllSelect hit sound set. Milthm recognizes IDs 0 through 4.
EnableHitBiasIndicatorboolfalseAllEnable the early/late hit-bias indicator.
EnableAdLibEffectbooltrueAllEnable the ripple-like ad-lib effect when clicking.
BackgroundDimfloat0AllBackground dim level, clamped to [0, 1].
TimeSavingRetryPolicy"SingleClick" | "DoubleClick"SingleClickAllSkip the blank portion at the beginning of a chart during retry. DoubleClick is case-insensitive; other values behave like single-click.
SongTitlePolicyCultureFriendly | AlwaysOriginal | AlwaysLatin | AlwaysBoth | CultureGreedyCultureFriendlyAllSong title display policy. See below.
EnableNotificationsboolfalseAllEnable garden notifications. Platform permission is still required on platforms that require notification permission.
NonexistentDifficultyEntryPriorityGreaterThanAllValid | LessThanAllValid | AlwaysBottom | AlwaysTopGreaterThanAllValidAllPlacement for songs that do not have the currently selected difficulty when the active filter or sort mode cannot compare them directly.
SongListSortingLocalestring""AllLocale passed to ICU ucol_open for song-list sorting. If empty, Milthm uses GeneralSetting.Language as the default.
RandomSongSoftmaxTemperaturefloat5AllControls how strongly random-song selection favors songs close to the player's current Reality. Invalid, infinite, NaN, or non-positive values fall back to 5.

SongTitlePolicy Options

ValueDescription
CultureFriendlyPrefer the original title when it matches the detected/current language; otherwise prefer the Latin title.
AlwaysOriginalAlways show the original title.
AlwaysLatinShow the Latin title when one exists; otherwise show the original title.
AlwaysBothShow both original and Latin titles when a Latin title exists; otherwise show the original title.
CultureGreedyLike CultureFriendly, but shows both original and Latin titles instead of only Latin when the culture differs.

AudioSetting

KeyTypeDefaultPlatformDescription
BGMVolumefloat0.75AllBGM volume, clamped to [0, 1.5].
HitVolumefloat0.75AllHit sound volume, clamped to [0, 1.5].
UIVolumefloat0.75AllUI sound volume, clamped to [0, 1.5].
PlayOnFocusLossbooltrueDesktopKeep playing when the app loses focus.
ActivatedDeviceAudioSettingActivatedDeviceSettingModelSee belowDesktopSelected output audio device.
DeviceSettingsArray<AudioSettingDeviceSettingModel>[]AllPer-device historical audio settings.

AudioSettingActivatedDeviceSettingModel

KeyTypeDefaultDescription
DeviceTypestringautoAudio backend/API name, such as CoreAudio, ASIO, WASAPI, or auto.
DeviceNamestringautoAudio device name as reported by the system or driver, or auto.

AudioSettingDeviceSettingModel

KeyTypeDefaultDescription
DeviceTypestring""Audio backend/API name.
DeviceNamestring""Specific audio device name.
BufferSizeint0Audio buffer size in samples.
Offsetdouble0Visual offset in seconds for this device. Example: 0.01 means a 10 ms delay.

VideoSetting

KeyTypeDefaultPlatformDescription
FrameRateint0AllFPS setting. 0 means auto; values below 0 mean unlimited.
EnableVSyncbooltrueDesktopEnable VSync.
ResolutionstringfullscreenDesktopfullscreen uses the highest detected resolution; WIDTHxHEIGHT selects an explicit resolution, such as 1920x1080. Invalid values fall back to the highest detected resolution, or 1920x1080 if none is detected.
RenderWithinSafeAreaboolfalseAndroid / iOSRender within the screen safe area.
EnableLowResolutionboolfalseAndroid / iOSEnable low-resolution rendering.
LowResolutionScalefloat0.5Android / iOSLow-resolution scale, clamped to [0.25, 1].
FitGamePlayScreenRatioboolfalseAndroid / iOSFit gameplay screen ratio.
GraphicsBackend"auto" | "OpenGL" | "Vulkan"autoAndroidSelect Android graphics backend. OpenGL and Vulkan are accepted case-insensitively; anything else behaves like auto.

NetworkSetting

Since version v3.0.0, Milthm requires a network connection for full functionality.

KeyTypeDefaultPlatformDescription
GeneralHttpClientGeneralHttpClientSettingModelSee belowAllSettings for non-Milthm HTTP requests, such as network-environment checks and downloads.
MilthmHttpClientMilthmHttpClientSettingModelSee belowAllSettings for Milthm HTTP requests, such as Milkloud and online configuration requests.
BackendAuto | SystemNetSocketsHttpHandler | UnityWebRequestAutoAllHTTP client backend selection.

GeneralHttpClientSettingModel

KeyTypeDefaultPlatformDescription
NetworkEnvironmentCheckTimeoutDuration string2sAllTimeout for checking network availability.
DownloadTimeoutDuration string20sAllTimeout for downloads handled by the general HTTP client.

MilthmHttpClientSettingModel

KeyTypeDefaultPlatformDescription
GeneralTimeoutDuration string20sAllGeneral timeout for Milthm HTTP requests.
OnlineConfigurationRetrievingTimeoutDuration string5sAllTimeout for fetching online configuration. This should not exceed GeneralTimeout.

Duration

Duration values must be TOML strings in the configuration file.

Use a compact sequence of units, for example:

toml
NetworkEnvironmentCheckTimeout = "2s"
DownloadTimeout = "1m30s"
GeneralTimeout = "20s"

Supported units are d, h, m, and s. Uppercase unit letters are also accepted.