Repository navigation
Creating Custom Radio Stations
A custom station selects one or more collections and defines a radio schedule. Use CSL Music Mod Station Editor or write the JSON file by hand.
Put station JSON files in the root of CSLMusicMod_Music. Put audio in the root or an immediate child directory.
CSLMusicMod_Music/
├── Night Drive.json
├── Night Drive.png
├── Night/
│ ├── Empty Streets.ogg
│ └── Last Train.ogg
└── Ident/
└── Station ID#blurb.ogg
This layout defines the Night and Ident collections. The loader does not search child directories for JSON files.
- Install CSL Music Mod Station Editor.
- Run the editor with Java 8 or a newer compatible Java runtime.
- Select your collections and build the schedule.
- Save the generated
.jsonfile in the root ofCSLMusicMod_Music. - Review the file against the Station JSON Reference. The mod ignores editor metadata such as top-level
descriptionand contextname. - Restart the game, then select the station from the radio panel.
The current JSON loader defines the supported fields. Review each file that Station Editor creates before you publish it.
This station uses every .ogg file in the Night directory. The mod builds a schedule from the content types it finds.
{
"name": "Night Drive",
"collections": ["Night"]
}The loader drops the station if Night contains no supported .ogg files.
{
"name": "Night Drive",
"collections": ["Night", "Ident"],
"thumbnail": "Night Drive.png",
"schedule": [
{ "type": "blurb", "min": 0, "max": 1 },
{ "type": "music", "min": 2, "max": 4 }
]
}The game selects zero or one blurb, then two to four music tracks, before it repeats the state chain. Each state draws matching content from the station's collections.
The thumbnail path starts from the JSON file's directory. If you omit the field or the loader cannot find the file, the mod uses its built-in station thumbnail. Use a square image; the mod creates a 64 by 64 atlas entry from it.
- Give each custom station a unique internal
name. - Match collection names to immediate directory names, including letter case.
- Use
Userdefinedfor the root user collection. - Write song filters with the display name, omitting
.oggand any content-type suffix. - Duplicate station names overwrite an existing dictionary entry. Directory enumeration order cannot provide a stable override, so avoid duplicates.
Use Context-Sensitive Radio to select different collections or songs according to game time, weather, city happiness, or active disasters.
- Enable detailed logging, restart the game, and load a city.
- Confirm that the station appears in the radio list.
- Open its playlist and check every expected content type.
- Play entries and skip through enough content to exercise each schedule state.
- Check the game log for
Cannot load channel,Unknown context type, or missing named-condition messages.
- Wiki may not be updated frequently and not match the latest version.
- Any text referring to key mappings refers to the default settings. Feel free to adjust these settings in the Options Panel > Key Mappings.
- The naming of mod features, and other related terms, are based on English. If you are using a translator, please pay attention to the difference from in-game text.
