SleepeyDev-OnTogetherLocalPlaylist icon

OnTogetherLocalPlaylist

Your own music folder as a mixtape in the game's music player, with a scrub bar - and listen together with anyone else in the lobby who has the mod.

Last updated 3 hours ago
Total downloads 4
Total rating 0 
Categories Mods Audio
Dependency string SleepeyDev-OnTogetherLocalPlaylist-0.6.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305

README

On-Together: Local Playlist

Your own music folder, as a mixtape in the game's own music player - and, if you want, in everyone else's.

Your music

Point the mod at a folder and it shows up as an extra mixtape alongside the shipped ones. There is a Folder... button on the mini music player, so you never have to open a config file.

The track list, next/previous, loop, the volume slider, the now-playing text and auto-advance are the game's own - the mod just supplies the tracks. Titles and artists come from ID3 or Vorbis tags, falling back to Artist - Title filenames and then to the containing folder name. Files are ordered the way Explorer orders them.

Formats: .mp3 .ogg .wav .aif .aiff. Unity has no desktop decoder for .flac, .m4a, .aac, .opus or .wma, so those are skipped with a note in the log. Tracker modules (.it .mod .s3m .xm) can be switched on with AllowTrackerFormats.

Network drives: use a mapped drive letter. Unity's audio loader cannot resolve UNC paths like \\nas\music.

Tracks stream from disk rather than decompressing into memory, and only the current track plus its two neighbours stay loaded. A resident track costs roughly its own file size instead of the ~50 MB a decompressed five-minute song would take, so the folder can be as large as you like without the memory following it.

Listening together

Press Share and anyone else in the lobby running this mod can press Listen and hear exactly what you hear, in time with you.

  • Both sides opt in. Nothing leaves your machine until you press Share, and nothing arrives until you press Listen.
  • Players without the mod are never contacted and never receive a byte. They hear the game's own music, as always.
  • Full quality. Whole track files are sent ahead of time over Steam's peer-to-peer transport, not squeezed through voice chat, and the next track transfers while the current one plays.
  • The shared music arrives as its own Shared mixtape, so the game's own player controls it.
  • With several people sharing, Listen walks through them: first, next, then off. The button says which - Listen, Next, Leave.

Listening and sharing are mutually exclusive, because there is one audio source behind every mixtape. Starting one stops the other, and the row says so.

Only the audio and the title and artist are sent. Never the folder, never a path, never a filename.

Scrubbing

The mini player gets a scrub bar with a 01:23 / 04:56 readout - click or drag anywhere on it to jump. It works for the game's own mixtapes as well as yours. MP3 durations are read from the file's own frame headers rather than estimated, so the bar does not lie about where the end is.

Keeping the folder in sync

Files added to or removed from the folder are noticed on their own. The mod waits for the folder to go quiet for a moment first, so copying a whole album triggers one rescan at the end rather than a hundred, and a file still being written is not read half-finished. Reload is there for the cases a watcher cannot cover, like a network drive.

A rescan never interrupts playback. Tracks are matched by path, so anything still present keeps its loaded audio and carries on from exactly where it was, even if its position in the list changed.

Configuration

BepInEx/config/com.sleepeydev.ontogether.localplaylist.cfg, created on first launch. Everything worth changing day to day is on the mini player instead.

Key Default What it does
Playlist / MusicFolder (empty) Folder to scan. The Folder... button writes this.
Playlist / Enabled true Master switch for the local mixtape
Playlist / MixtapeName Local Name shown on the mixtape
Playlist / IncludeSubfolders true Scan subfolders too
Playlist / AllowTrackerFormats false Also accept .it .mod .s3m .xm
Playlist / MaxTracks 300 Safety cap; the game builds one button per track
Playlist / WatchFolder true Notice files appearing and disappearing
Sharing / Enabled true Allow the Share and Listen buttons to exist at all
Sharing / MaxListeners 6 How many people may listen to you at once
Sharing / ListenLatencyMs 250 How far behind the broadcaster to sit
UI / SeekBarEnabled true Scrub bar on the mini player
UI / SeekBarOnVanillaMixtapes true Also scrub the game's own mixtapes
UI / ModPanelEnabled true The folder / Reload / Share / Listen row
Diagnostics / VerboseLogging false Log every scan, load and eviction
Diagnostics / DumpUi + DumpUiKey false, F3 Dump the music-player UI tree to the log

There are more keys for the exact pixel positions of everything the mod adds; each one carries its own explanation in the file.

Is any of this safe?

Worth answering plainly, because "a mod that receives files from strangers" deserves the question.

  • A received track is written to a temporary cache under a name this mod chooses - the track's own id in hex, plus an extension from a fixed list. The sender has no influence on the filename, so nothing can be written outside that folder and nothing executable can land in it.
  • Only people in your current lobby who are advertising this mod are accepted. There is a per-peer byte budget, a cap of four transfers at once and a 512 MB cache ceiling, so a peer cannot fill your disk or keep you busy.
  • Every received file is checked against its format's own signature before it goes anywhere near the audio decoder, and anything that fails is deleted unread.
  • The cache is cleared when you leave.

What remains: a file that passes those checks is still decoded by the game's audio engine, exactly as any track you downloaded and played would be. That is the same exposure as playing a downloaded song in any player - small, but not zero. Listen to people you know.

Compatibility

Built against On-Together v1.1.7, BepInEx 5.4.23.5. If the game updates and something moves, the mod logs which handles it could not resolve and disables only the affected feature.

Everyone sharing must be on the same version of the mod.