You are viewing a potentially older version of this package. View all versions.
SleepeyDev-OnTogetherLocalPlaylist-0.6.2 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.

Date uploaded 2 weeks ago
Version 0.6.2
Download link SleepeyDev-OnTogetherLocalPlaylist-0.6.2.zip
Downloads 13
Dependency string SleepeyDev-OnTogetherLocalPlaylist-0.6.2

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.

Feedback

Report any issues to https://github.com/sleepeyagent/OnTogether-LocalPlaylist

CHANGELOG

Changelog

0.6.4

  • Links to the source repository are back.

0.6.3

  • Packaging only. Nothing in the mod itself changed.

0.6.2

  • Repackaged. Nothing in the mod itself changed.

0.6.1

  • Updated links

0.6.0

  • The documentation now describes the mod that exists. It still claimed nothing was ever sent to other players, and listed the folder picker and sharing as unbuilt plans.

0.5.3

  • Tracks really stream now. Setting the compression flag alongside streaming made Unity warn on every load and quietly decompress the whole track into memory instead - tens of megabytes per track rather than a small buffer.
  • Receiving is bounded: at most four transfers at once and 512 MB of cache, so a peer cannot fill the disk. A received file is checked against its format's signature before it is ever handed to the audio decoder.
  • The slow-seek warning no longer prints on every scrub.

0.5.2

  • The mixtape arrows are shown even when the game ships only one tape. Without the summer DLC there is exactly one, and the game hides the arrows in that case - which left the mod's own tapes unreachable until a music folder was set.
  • Listening no longer needs a music folder of your own. The shared tape is added on its own, and works with the local playlist switched off entirely.
  • Buffering progress now updates in place. The track title is only redrawn when the game decides to, so the percentage used to sit stale until you flicked between mixtapes.
  • With several people sharing, Listen walks through them: first, next, then off. The button says which - Listen, Next, Leave.

0.5.1

  • Share and Listen moved onto the same row as Folder and Reload. Their own row made the music player tall enough to run off the bottom of the screen.
  • The status line now carries the folder, the track count and whatever sharing is doing, in one line.

0.5.0

  • Listen together. Press Share and anyone else in the lobby with this mod can press Listen and hear exactly what you hear, in time with you. Both sides opt in; players without the mod are never contacted and never receive a byte.
  • Tracks are sent whole and ahead of time, so playback is full quality rather than a compressed voice stream, and the next track transfers while the current one plays.
  • The shared music arrives as its own mixtape, so the game's own player controls it.

0.4.2

  • Fixed the enormous green rectangle behind the Folder and Reload buttons. They were cloned from a track-list row whose decoration children keep their authored size no matter how small the button is made, and whose hover script switched an 814 px outline on. The buttons are now cloned from a proper dialog button whose parts scale with it, and clones no longer carry the game's own scripts.
  • The folder dialog picks a folder again, with a "Use this folder" confirm button so that standing inside the right folder is obviously the answer.

0.4.1

  • The Folder and Reload buttons were stretched across the whole player. They are cloned from a track-list row, which is anchored to stretch under a layout group; their anchors are now pinned before their size is set.
  • The folder dialog now shows the files in a folder. Windows' folder-picking mode hides them, so a music folder with no subfolders looked empty. Pick any track and the mod takes its folder.

0.4.0

  • A Folder... button on the mini music player opens the real Windows folder dialog, so the music folder can be chosen in game instead of by editing a config file.
  • A Reload button next to it rescans without restarting.
  • New files dropped into the folder are picked up on their own, once the folder goes quiet.
  • Reloading no longer interrupts the music: the scan matches tracks by path, so anything still there keeps playing from exactly where it was.
  • The row shows the folder name and the track count.

0.3.1

  • The mini music player is a little taller, so the scrub bar has its own row instead of being squeezed against the bottom edge. The hover box that keeps the panel open grows with it.
  • The time readout sits to the right of the bar instead of on top of it, and is smaller.
  • Clicking anywhere on the bar jumps there. Previously only the handle responded, because the slider it is cloned from does not accept clicks on its track.

0.3.0

  • Scrub bar on the mini music player: jump to any point in a track, with a time readout. Works for the game's own mixtapes too.
  • Exact track durations read from the MP3 frame headers, so the scrub bar does not lie about the end of a variable-bitrate file.
  • Diagnostics: DumpUi writes the music-player UI tree to the log (F3 by default).

0.2.0

  • Local music folder appears as its own mixtape in the in-game player, driving the vanilla track list, next/previous, loop, volume slider, now-playing text and auto-advance.
  • ID3v2.2/2.3/2.4, ID3v1 and Vorbis-comment tag reading, with filename and folder fallbacks.
  • Tracks stream from disk; only the current track and its neighbours stay resident.
  • Explorer-style natural ordering of files.