PEAK

Details

Last Updated
6 days ago
First Uploaded
6 days ago
Downloads
124K
Likes
19
Size
3.3MB
Dependency string
onlystar-sPEAKer-1.9.7
Dependants

Sophisticated Pulse-Eloquent Acoustic Kymatologic Eidolon Reverberator

Thunderstore Version Thunderstore Downloads Thunderstore Likes

🎶 ...or just sPEAKer

This is sPEAKer, my first ever mod!

Unlike the bugle, sPEAKer is an independent audio source. You can just press play and enjoy your music. Drop it, toss it around, audio will just not stop!

sPEAKer at the PEAK
sPEAKer at the PEAK.

The main feature of this mod is that it works as a true portable speaker. Instead of playing 2D music for everyone, it leverages spatial audio to make it part of the immersive experience of PEAK.

Plays its own sound
It won't stop playing if you drop it.

Additionally, it supports MP3 and WAV out-of-the-box on top of your regular OGG files.

You can also download mixtapes from the Thunderstore or put together your own and share with friends, or even upload them too!

🎮 Controls & Features

Primary playback uses your regular interaction buttons, whatever they are. Controller compatible.

  • Primary: Play/Pause toggle

  • Secondary: Next Song

  • Scroll: Volume Up/Down

The following controls are not meant for Controllers. For rebinding, see "Keybinds" section.

  • Shift + Secondary: Previous Song

  • Ctrl + Secondary: Toggle Shuffle

  • Alt + Secondary: Cycle Loop modes

  • P: Activate Drone Mode

  • Ctrl + P: Activate Drone Recall

  • O: Dance Emote (when Drone Mode is active)

  • U: Bring up sPEAKer UI (queue system)

  • Local Volume Control: Is available via Pause Menu:

    This slider only affects your own playback.

Manual Installation

  1. Install BepInEx for PEAK
  2. Install required dependencies
    • PEAKLib.Items
    • PEAKLib.Core
    • SoftDependencyFix
    • MonoDetour_BepInEx_5
    • MonoDetour
  3. Place the mod files in your BepInEx plugins folder
  4. Launch PEAK

NOTE: Not all dependencies go into /plugins. If you have issues, use a mod manager before asking for support.

Adding Music

After launching PEAK, your main music folder will be created:

.../plugins/onlystar-sPEAKer Music

You can place audio files directly in it, or you can use mixtapes.

📀 Introducing: Mixtapes

A mixtape is simply a folder containing your collection of audio files.

Just create a new folder inside your main music folder (onlystar-sPEAKer Music) and drop your songs in it. The name of the folder will be used as the mixtape's name by default.

Optionally, you can also include a mixtape.json file inside your mixtape folder:

  {
    "name":  "Undertale Bosses",
    "author":  "onlystar"
  }

This takes priority over default naming, and will be shown in-game when a song from your mixtape starts playing.


Yes, it's "Mixtape Name - Song Name"

🎧 "Mixtapes" in Thunderstore

Mixtapes are really easy to share and manage. Since release, the available catalogue of mixtapes in the Thunderstore has grown to over 200 submissions! Thank you all for the support! I even discovered some bangers by regularly checking what's being uploaded.

But because Thunderstore is now plagued by mixtapes, there's a new filter for them:

Just in case you wanna list them all or filter them out of your browsing.

Bundling a mixtape for Thunderstore Thunderstore icon

If you want to upload your own mixtape as a mod to share with your friends, just put an empty sPEAKer.json file in the same folder as your mixtape folder.

You can follow the instructions for Manual Packaging as described here.

Your package should include manifest.json, README.md, a /plugins folder and (hopefully) a 256x256 icon.png.

Your manifest.json should list sPEAKer as its dependency:

  {
    "name": "Demo_Mixtape",
    "author": "onlystar",
    "version_number": "1.0.0",
    "website_url": "",
    "description": "I'm a short description!",
    "dependencies": [
      "onlystar-sPEAKer-1.9.7" // add this line
    ]
  }

This way, you can point your friends to your mixtape and their mod manager will install sPEAKer along with it.

Think carefully about the "name". Once uploaded, you can't change it.

The plugins folder in your package should look something like this:

plugins/
├── sPEAKer.json
└── my mixtape/
    ├── a true hero.ogg
    ├── omega flowey.mp3
    ├── ...
    └── mixtape.json

sPEAKer.json is the way to tell sPEAKer that your uploaded mod includes a mixtape.

Even though MP3 and WAV are supported, it is highly recommended that you use OGG format. It's the fastest to load, smallest in size and you lose negligible quality. You can use a tool like Convertio or, if you're up for using scripts, check out the Wiki tab for the script I use for mass converting MP3 into OGG.

Once your package is ready, ZIP it and upload it to Thunderstore. You should only select "Mixtapes" in the Categories field.

💡 TIP: Don't delete your original package!

Updating your Thunderstore mixtape

If you wanna add songs to an already published mixtape, add your songs to the original (uncompressed) package and bump the "version_number" up in your manifest.json. DON'T change the "name" field, as it will create a new mixtape instead of updating the existing.

  {
    "name": "Demo_Mixtape",
    "author": "onlystar",
    "version_number": "1.0.1", // previously "1.0.0"
    "website_url": "",
    "description": "",
    "dependencies": [
      "onlystar-sPEAKer-1.9.7"
    ]
  }

ZIP it once again, and reupload it. You should only select "Mixtapes" in the Categories field.

Disclaimer: Make sure you have permission to upload the audio files your mixtape contains to Thunderstore.

More Features!

🪽 Featuring: Drone Mode

Instead of having a dedicated slot, you can make sPEAKer engage Drone mode and it will follow you around!

👉 Drop it, press P and you will be followed anywhere you go.

🔍 If you happen to lose it, use Ctrl + P to make it come back directly to you.

🕺 It can also Dance!

sPEAKer features 9 different dance motions / emotes.

Press O when Drone Mode is activated to strike a move!

🌠 You're in Control

Take your session in however direction you like.

When holding or being followed by sPEAKer, you can press U to bring up the UI.

You can reorder songs by drag and dropping, or directly select one to play from.

Configuration Options 🪚🔧🔨

These are options you can change before starting your game. You can find them in BepInEx/config/onlystar.sPEAKer.cfg or via your mod manager.

Key Category Description Default Value
ExternalAudioFolderPath 💾 Audio Loading Folder path where sPEAKer will mainly load mixtapes and external audio from. It's recommended to leave unchanged. "..\onlystar-sPEAKer Music"
LoadDemoSong 💾 Audio Loading Include a demo song in your track list. true
ExtendedFormatSupport 💾 Audio Loading Enables loading of MP3 and WAV files. May impact performance. true
StartupLoadingIndicator 💾 Audio Loading Shows a loading text during game start. true
FastLoad 💾 Audio Loading Makes sPEAKer load songs during gameplay instead of at game start. true
ShowTrackDuration 🔊 Playback Shows every song's current time and length. true
DisplayMixtapeAuthor 🔊 Playback Displays mixtape author during mixtape playback. true
ShuffleOnStart 🔊 Playback Start with Shuffle enabled by default. Saves you a toggle if you only want shuffled playback. false
TurnOnAndPlay 🔊 Playback Make sPEAKer start playing immediately after turning it on. false
SoundEffectsEnabled 🔊 Playback Enables JBL sound effects. true
UseSpatialAudio 🔊 Playback Enables proximity-based audio. If false, playback will sound globally instead of coming from the sPEAKer. true
SpawnAtGameStart 📻 Spawning Automatically spawn a sPEAKer around the crash site when a game starts. true
SpawnWithF4 📻 Spawning Allows the host to spawn a sPEAKer in their hands when pressing F4.
Only one sPEAKer may exist at a time.
true
RecallEnabled 📻 Spawning Enables recalling existing sPEAKer when pressing F4.
Only works if SpawnWithF4 is also enabled. Also, a sPEAKer can only be recalled if it's in the ground (not in a slot).
true
DebugMode 📜 Logging Enables custom verbose logging. If you want to report a bug, please include your BepInEx/LogOutput.log! false

⌨️ Keybinds

To change keybinds more easily, I recommend using ModConfig mod. However, given how BepInEx loads configurations, you'll still need to restart your game before keybind changes take effect, at least for now.

The following keybinds are currently configurable:

Key Description Default Value
DroneToggle Drone Mode toggle. P
RecallCommand Hold this while pressing DroneToggle key to make sPEAKer "recall" to you instead of looking for people nearby. Ctrl
(so default usage is Ctrl + P)
DanceEmote Makes sPEAKer dance when Drone Mode is active. O
SpawnKey Key to spawn a sPEAKer if the corresponding spawning option is enabled. F4
QueueUIKey Opens Queue UI. U

More keybinds are coming in future updates.

🎛️ Technical Notes

  • For the best experience, everyone in the room should have the same tracks and mixtapes.
  • The host always owns the tracklist canon, which means everyone must play the host's catalogue regardless if you have more music locally.
  • If you're missing a song your host has, you'll hear white noise instead. Songs are content-hashed on load, so playback will resume when the host plays something you do have.
  • Large files (4MB+) and MP3/WAV files cause significant lag spikes during loading. OGG is strongly recommended.
  • If you experience lag when playing music, you can load during game startup instead by setting FastLoad to false. You'll then experience a big lag spike when game boots up until music loading finishes, but have no lag during playback.
  • Beware of loading too much music with FastLoad set to false, as every song will fully load into RAM. This has been tested with up to 250 songs (a mp3/wav/ogg test mix) on a 32 GB system. Potentially more songs could be achieved by using OGG exclusively, and even more if you choose more aggressive compression methods.
  • ExternalAudioFolderPath is set only on first mod load. When moving your game folder, the path won't automatically change. You should set it to your music's folder new location, or you can delete config/onlystar.sPEAKer.cfg to regenerate the correct path (this also resets your other configs).
  • When importing a profile code, it copies both mods AND configs from the original profile. This includes their ExternalAudioFolderPath, which will inevitably be an invalid path in your machine. To avoid issues, sPEAKer will automatically default to a relative path to plugins/onlystar-sPEAKer Music when it detects it has been installed through a profile code. Downloaded mixtapes are unaffected by this config, which is probably the main source of music for shared profiles anyway.
  • Shuffle randomizes your list every time you toggle it on, so you might get repeated songs if you toggle it more than once.

Coming up next... 🔮

  • [2.0.0] YouTube Radio
  • A long break from modding

Created by onlystar - Bringing music to the PEAK experience!

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.