Fixes https://github.com/Aurorastation/Aurora.3/issues/21806
Headphones using the PlayNonloopingSound proc meant that in
datum/sound_token/New(), it wasnt being dynamically assigned its own
channel and so the associated sound.channel was defaulting to zero. This
broke a bunch of stupid sound stuff when the headphones were A.) playing
while onscreen but not within range of a listener and B.) stopping songs
while other SFX happened to be playing and C.) probably other cases.
PlayNonloopingSound is not used anywhere else in the repo at this time.
V2 of [previous music playing
PR](https://github.com/Aurorastation/Aurora.3/pull/21466). TLDR no
longer uses the connect_range component for implementation because it
turned out a bit too inflexible for overlapping music players.
Removes a NanoUI template for the [TGUI
update](https://github.com/Aurorastation/Aurora.3/pull/21046).
New changelog:
- refactor: "Ported Jukebox's NanoUI interface to TGUI."
- refactor: "Ported Jukebox audio playing functionality to a component."
- refactor: "Sound keys refactored from singletons to datums, along with
larger breakout of sound.dm to allow for easier SFX updates in future."
- code_imp: "Expanded track datums to include track lengths."
- code_imp: "Reorganized music file folders for more intuitive access."
- rscadd: "Earphone status feedback text now includes track length."
- rscadd: "Added autoplay functionality to earphones."
- bugfix: "Fixed earphones' 'Previous Song' verb not sending you to the
end of the playlist when used while the first track is selected."
- bugfix: "Fixed gain adjustment for 'Konyang-1' (-23 dB -> standard
-9.8 dB)."
- bugfix: "Fixed y-offset of audioconsole-running overlay animation to
line up with the actual screen."
---------
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
Adds soundplayer functionality to earphones, headphones and earbuds.
They can now play music, loaded via music cartridges with preset
playlists.
Heavily based off CMSS13's Walkmans and our Audioconsoles.
Current Features:
- All earphones have a cartridge slot. Cartridges can be inserted by
clicking an earphone, and removed via an eject_music_cartridge() verb.
- Inserting a cartridge will load a playlist containing /datum/tracks,
where track names and sound files are loaded.
- Shift+Clicking or will Start/Stop a playlist, creating or deleting an
active sound_player token.
- Alt+Clicking with Pause/Unpause the current track, preserving an
active sound_player token.
- Attack_self will eject the music cartridge. Ejecting a music cartridge
also terminates the sound_player token.
- Volume controllable via verb.
Missing features i am too weak to figure out:
- There is no auto—next song, and a user must manually use next_song()
or previous_song() verbs to iterate through a playlist.
- Part and parcel with no auto-next: Tracks automatically loop due to
using the PlayLoopingSound() proc. Ideally, tracks should not loop.
- There is no accomodation for user-uploaded sound files.
- There are no UI implementations of earphone controls, which could be
more user friendly.
Music Cartridge CoderIcons:
<img width="430" height="106" alt="aaa"
src="https://github.com/user-attachments/assets/5c15d5f4-b2e1-4ece-8076-2e93a5853168"
/>
### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
| sound/music/regional/venus/all_night.ogg | Rollergirl
(https://rollergirl.bandcamp.com/album/rollergirl) | CC BY-NC-SA 3.0 |
| sound/music/regional/venus/billy_ocean.ogg | Rollergirl
(https://rollergirl.bandcamp.com/album/rollergirl) | CC BY-NC-SA 3.0 |
| sound/music/regional/venus/artificially_sweetened.ogg | Stevia Sphere
(https://steviasphere.bandcamp.com/album/artificially-sweetened-single)
| CC BY 3.0 |
|sound/music/regional/venus/real_love.ogg | Stevia Sphere
(https://steviasphere.bandcamp.com/album/artificially-sweetened-single)
| CC BY 3.0 |
| sound/music/regional/venus/dance.ogg | ウナチャンUNACHAN
(https://unachan.bandcamp.com/track/dance) | CC BY 3.0 |
| sound/music/regional/venus/love_sensation.ogg | ウナチャンUNACHAN and
bedroomtheft (https://unachan.bandcamp.com/track/love-sensation) | CC BY
3.0 |
| sound/music/regional/venus/funky_girl.ogg | B~mO9000
(https://bmo9000.bandcamp.com/album/v-i-n-t-a-g-e) | CC BY-NC-SA 3.0 |
| sound/music/regional/venus/break_the_system.ogg |
(https://bmo9000.bandcamp.com/album/wanted-in-80s [Download Only]) | CC
CC BY-SA 3.0 |
| sound/music/regional/xanu/xanu_rock_3.ogg | Swara Sutra
(https://swarasutra.bandcamp.com/album/indulgence) | CC BY-SA 3.0 |
All sound files compressed to 20K sample rate. No
transformations/remixing
Turned a ton of unmanaged globals into managed globals.
Refactored some UT output.
Removed some unused things, including vars.
Added a test to ensure people don't keep adding new unmanaged vars.
* sdaf
* sdaf
* sdfa
* sadf
* sfda
* gfd
* reduce thrusters volume
* sdafsadsdaf
* sdfa
* Reduced some sound ranges and made some/more not ignore walls for loops
* health analyzers too
* ivdrip adjustment
* most tools now use play_tool_sound to have the sound played, reduced range for it
* SDQL2 update
* fix that verb
* cl
* fix that
* toworld
* this is pointless
* update info
* siiiiick..
* vv edit update
* fix that
* fix editing vars
* fix VV
* Port the /TG/ globals controller.
* part 1
* part 2
* oops
* part 3
* Hollow Purple
* sadas
* bsbsdb
* muda na agaki ta
* ids 1-15
* 16-31
* 41-75
* bring me back to how things used to be before i lost it all
* the strength of mayhem
* final touches
* cl
* protect some vars
* update sdql2 to use glob
* stuff?
* forgot that is not defined there
* whoops
* observ
* but it never gets better
* a
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>