You are viewing a potentially older version of this package. View all versions.
Yoshify-DiscJockey-1.2.1 icon

DiscJockey

An all-in-one custom Boombox solution - featuring song downloading, custom song loading, realtime audio streams and a fully networked media player UI

Date uploaded 4 months ago
Version 1.2.1
Download link Yoshify-DiscJockey-1.2.1.zip
Downloads 183969
Dependency string Yoshify-DiscJockey-1.2.1

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

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

Preferred version: 5.4.2100

README

DiscJockey - an all-in-one custom Boombox solution

About

Why settle for random when you can choose what you want to play?

DiscJockey is a batteries-included media player and downloader that gives you full control over the Boombox. DiscJockey has a built-in audio engine of sorts that allows you to stream music over the network in real time - it doesn't matter who has what track!

DiscJockey has been designed as a drop-in replacement for Custom Boombox Music

Features

  • Audio is streamed in realtime. It doesn't matter who has what songs, everyone will hear the same thing.
  • A custom made vanilla-like media player UI for boomboxes, opened with a configurable hotkey. Supports play/stop, sequential/shuffle/repeat playlist algorithms, volume control and more!
  • Custom track loading from disk - also searches for and loads other plugins custom tracks!
  • Powered by yt-dlp and allows downloading audio in-game from any one of these sites!
  • Fully Networked - every interaction is synced over the network
  • A host of options to configure in the config - interface colour, disabled battery drain and more!
  • Other miscellaneous QoL features, like being able to use the Boombox while in orbit

Planned

  • Further UI improvements, like a search bar.

Adding Custom Music

Simply drag any MP3 or WAV file into the Custom Songs folder within the DiscJockey plugin folder. If your audio has a sample rate lower than 48khz, it'll be resampled at load - the effect on load time is minimal.

Other plugins that contain a Custom Songs folder will also be loaded by DiscJockey.

Expected folder structure

Note: the Custom Songs, Download Cache and Downloaders folders will be created at first launch. It's essential that the discjockey file lives in the Assets folder within the Yoshify-DiscJockey folder!

BepInEx/
  plugins/
    Yoshify-DiscJockey/
      Assets/
        discjockey
      Lib/
        DiscJockey.dll
        <other dll dependencies>

Common problems

Config has duplicated entries

The config changed quite a lot in the latest version. If you're updating from an old version, you'll need to delete the config and recreate it by launching your game.

Bugs

DiscJockey has been tested extensively within my friend group, but that doesn't mean it's flawless. If you find any issues, please file an issue on GitHub here

Credits

Screenshots

CHANGELOG

1.2.1

  • Improvements
    • Vanilla Boombox interactions through LMB are now smarter
      • If you own the current or last played track, activating the Boombox will now respect the playback modes you have set in DiscJockey (sequential, shuffle, repeat)
      • If you don't own the current or last played track, activating the Boombox will play the first track in your tracklist
  • Fixes
    • DiscJockey will now accurately reflect rebound keybinds in the hovertip and controltip for the Boombox when using InputUtils
    • First time downloads of yt-dlp and ffbinaries will no longer fail and abort for users that have double-byte characters (JP/CN/KR characters, some accented characters, etc.) in their path or in their machines hostname
    • You can now open DiscJockey while looking at a Boombox even when holding an item
    • Fixed a rare case in which DiscJockey's audio can desync if a player holding the Boombox activates it through LMB while another player has the DiscJockey UI open
    • DiscJockey will behave significantly better with item interactions now (most notably with ReservedItem mods) (thank you @Rhapsody, @grandteki and @flipf17 !)
      • DiscJockey was originally disabling player Interact input when the panel was open - this appears to break Vanilla interact behaviour in some bizarre, buggy fashion. This has been reworked into a prefix instead.

1.2.0

  • New features
    • Added a delete button to tracklist buttons - note this won't delete the file, it'll just remove it from your tracklist
    • New config options:
      • Permanently Keep Downloaded Songs - this will make downloaded songs save directly to your Custom Songs folder and bypass all caching mechanisms. False by default.
      • Add Vanilla Boombox Music To Tracklist - added the vanilla Boombox music to your tracklist. False by default.
      • Enemies Hear Music [SYNCED WITH HOST] - this was actually a bug that I decided to turn into a config option. True by default, but when False enemies like the blind dog and slime won't hear the Boombox.
  • Fixes
    • Players can now interact with DiscJockey by looking at it even when it's held by another player.

1.1.3

  • Fixes
    • Fixed issue preventing youtu.be URLs from being parsed correctly (thanks @Leader!)
    • Fixed issue preventing DiscJockey from progressing to the next track while the Boombox was unmonitored (not held or not looked at) (thanks @Kalem!)

1.1.2

  • Fixes
    • Fixed folder structure when using r2modman
    • Fixed audio with a sample rate lower than 48khz playing back incorrectly (thanks @NotSoEvilDead!)
      • Audio lower than 48khz is now resample on the fly due to Opus codec requirements
    • Fix tracklist buttons not resetting indicator state when playback stopped
    • Made the download cache less angry about doing its job
    • Added fix to the Netcode patch init method for InputUtils soft dependency
    • Updated config description for Keybind to be explicit that the InputUtils binding takes priority over it

1.1.1

  • Lets try uploading the correct README this time...

1.1.0

  • New features
    • Codebase rewritten to implemented realtime audio streaming
    • Networked config syncing (where applicable)
    • A variety of new config options:
      • Interface colour
      • Interface transparency
      • Disable battery drain [SYNCED WITH HOST]
      • Networked volume control [SYNCED WITH HOST]
      • Default Boombox volume
    • Direct support for Youtube playlists
    • UI improvements
    • Escape key now closes DiscJockey
    • You can now open DiscJockey while looking at a Boombox
    • Implemented smarter download caching
    • Added track scrolling effect to now playing and buttons on hover
    • Added support for LethalCompany InputUtils for in-game rebinds
  • Fixes
    • Fixed song duplication issue (GH #4)
    • Changed OnLoadAllAudioFromDirectory from LogError to LogWarning if empty (GH #5)
    • Duplicated tooltip bug fixed (GH #5)
    • Fixed tracklist sorting desync
    • Fixed rare issue causing DiscJockey to shut off when Boombox was pocketed (thanks @broiiler!)
    • Fixed issue causing downloaded content with unicode characters to fail loading
    • Added timeout to YT-DLP so that if it does get stuck, it'll bail out after 30 seconds
    • Mading playing/stopping tracks from outside the UI with left-click more reliable
    • A plethora of other community reported bugs
  • Removed
    • Track scrubbing - might make a return, the tradeoff of making it work with real-time streaming wasn't worth the effort in my opinion. If the community wants it badly enough, I'll revisit.
    • Chat alerts
  • Dependencies
    • Added Concentus, UniTask and NAudio

1.0.1

  • Added MD5 Checksum verification to FFBinaries downloads

1.0.0

  • Initial release