Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Client-side Jukebox, Client-side Lobby Music, Synchronised Music & TGUI Panel Music Player Improvements #11279

Open
wants to merge 49 commits into
base: master
Choose a base branch
from

Conversation

PowerfulBacon
Copy link
Member

@PowerfulBacon PowerfulBacon commented Aug 1, 2024

Bounty for $55 #11268
Bounty for $20 #11268 (bonus for integrating and improving jukeboxes)

Fixes #11268

HEY GUYS ABSOLUTELY CRAZY UPDATING DROPPING, MAKE SURE YOU READ UNTIL THE END.

I've always wanted to do client-side music, and this seemed like a pretty good time to put it on in the queue for things to research. Fortunately that research was successful and we now have a top-of-the-line, shiny music system complete with spatial audio that actually updates unlike the clunky byond system. Also it won't shouldn't freeze your client for 2 seconds when you hear a song for the first time, which is also good (at least the songs are stored in the cache, so they will persist).

All code in this PR is original and was not ported, except for some license information which was ported from Baystation12/Baystation12#30346 (I was unable to find the original sources).

I expect to be finished by the end of 02/08/2024

TODO Pre-PR requirements:

  • Make it so that reloaded TGUI panels will get music information (Global track manager)
  • Integrate title music
  • Make it so that player movement is only communicated while the panel is actually playing music
  • Make it so that the jukebox can pause music
  • Fix jukebox UI while music is playing

TODO:

  • Fix jukebox volume
  • Admin verb to queue a new title music song
  • Admin verb to add a new song globally to jukeboxes
  • Fade audio in/out, since it takes some time to load when you enter the range of a jukebox
  • Music preferences (Are these still needed if you can quickly mute the music? <- Lobby music definitely is)
  • Add support for spatial-audio in the global track manager
  • Make it so that the lobby music stops playing when you spawn in
  • CONFIG stuff
  • If a jukebox moves, its audio track needs to move too

About The Pull Request

Performs some hefty overhauls when it comes to TGUI panel's music capabilities:

  • Spatial client-side music (This one is the main point of focus for this part of the rework, as it means that internet sounds can be played in a location in the world and jukeboxes will be integrated with the internet music system)
  • Ability to display licensing information about a song
  • Ability to use URLs as a song link
  • Ability to use files as a link which are served through the asset cache framework.
  • [!] Note: Support for music is now limited to MP3 and MP4 files until webview2 is released.
  • Stop music button replaced with a mute button, which will close the music player, muting all songs until you re-open it.
  • When you move out of range of a spatial audio source, the music player will close. When you enter range, the music player will appear at the top of the chat unless muted.
  • Played music is now synced across clients.
  • Songs are loaded from datums defined in the code or, similarly to space-law loading, will be loaded and parsed from a json configuration file stored on the server. Same for license information.

image

Jukebox:

  • Integrates with the unified audio track system
  • Displays license information for songs
  • Adds volume control capabilities
  • Basically now does everything that internet songs can do, while still maintaining the volume changing effect of moving away from the jukebox in the world.
  • Admins can add audio tracks to the global music list, which will be usable in all jukeboxes. This accepts a link that YT-DLP can parse (youtube might block this on the server). Note that only links can be admin-uploaded, music files need to be stored on the repo since I don't really want to clog up the user's cache.
  • Music will play from the correct point and will sync with other players, rather than always restarting.

Lobby Music:

  • Lobby music integrated with the unified audio track system
  • This means that lobby music will display license information, the name and will have volume controls.
  • Admins can queue or replace the lobby song with a different song of their choice.
  • Music will be synced across clients, meaning it will play from the middle of a song if you join late.
  • Implements a playlist system that will rotate the songs when the previous one finishes.
  • Adds in personal lobby music. If you don't want to listen to the synchronised song, you can press a skip button which will then give you personal music which isn't synchronised with the rest of the server.

Round-end Music:

  • Since the round-end music is on the TGUI panel, you will hear round-end music while the server is restarting.

Other:

  • Replaces the OGG title music with MP3 conversions.
  • Adds in a new map config item 'title_music' which is an array of the allowed songs to play for the title, to let maps have custom music.
  • Since its really hard to get the length of a song, we rely on clients to tell us how long the thing they are playing is. This uses a voting system and has been programmed so that if exploited successfully, the impact will be minimal.

I hope you are excited as I am for this, jukeboxes have significantly improved capabilities with this update.

Why It's Good For The Game

  • Allows us to use songs which require attribution
  • Significantly improved jukeboxes
  • Control the sound of the lobby music
  • Skip lobby music that sucks

Configuration

An example configuration can be found below:

[
	{
		"title":"Tinnitus Dance",
		"artist":"Dancefloor is Lava",
		"license":"/datum/license/cc0",
		"audio_file":"sound/music/tinnitus_dance.mp3",
		"url":"https://www.chosic.com/download-audio/24969/",
		"jukebox":1,
		"lobbymusic":1
	},
	{
		"title":"Endless Space",
		"artist":"Solus",
		"license":{
			"title":"CC BY 3.0 (Attribution 3.0 Unported)",
			"legal_text":"https://creativecommons.org/licenses/by/3.0/legalcode.txt",
			"url":"https://creativecommons.org/licenses/by/3.0/deed.en",
			"attribution_required":1
		},
		"audio_file":"sound/ambience/title0.mp3",
		"url":"https://www.newgrounds.com/audio/listen/74946",
		"jukebox":1,
		"roundend":1,
		"lobbymusic":1
	},
	{
		"url":"https://www.youtube.com/watch?v=G2gVAPKlgqA",
		"jukebox":1,
		"lobbymusic":1
	}
]

The following properties are valid:

  • title: string
  • artist: string
  • album: string
  • license: {title: string, legal_text: string, url: string, attribution_required: number}
  • duration: number (in deciseconds, please provide this to prevent using the fallback duration voting system)
  • upload_date: number
  • audio_file: string (filepath of the audio clip, if a file)
  • url: string (Internet URL for the clip, can be youtube, soundcloud, etc. Other config entry points will be automatically loaded if this is used)
  • jukebox: number (1 if this music can be played on a jukebox)
  • roundend: number (1 if this music can be played as the roundend sound)
  • lobbymusic: number (1 if this music can be played as a title music)

Testing Photographs and Procedure

image

2024-08-01.20-25-50.mp4
2024-07-31.18-13-06.mp4
2024-08-01.21-31-04.mp4
2024-08-02.13-46-44.mp4

image

2024-08-02.17-27-50.mp4

Changelog

🆑
refactor: Refactors lobby music and jukeboxes to work clientside.
refactor: Added support for spatial client-side audio.
refactor: Improved the TGUI panel music player to better support music frequently changing.
add: Added license information to played music.
config: Adds new configuration which standardises jukebox and lobby music.
/:cl:

@github-actions github-actions bot added Sound Administration TGUI-Changes Contains changes to TGUI. Make sure its up to date with TGUI 4.0 and removed Config Update labels Aug 1, 2024
@PowerfulBacon PowerfulBacon changed the title Client-side Jukebox, Client-side Lobby Music & TGUI Panel Music Player Improvements Client-side Jukebox, Client-side Lobby Music, Synchronised Music & TGUI Panel Music Player Improvements Aug 1, 2024
@Crossedfall
Copy link
Member

Crossedfall commented Sep 2, 2024

Assuming the TM goes well, I'm good with this.

@PowerfulBacon
Copy link
Member Author

Joining midround appears to not play lobby music

code/modules/holiday/holidays.dm Outdated Show resolved Hide resolved
code/modules/mob/dead/new_player/new_player.dm Outdated Show resolved Hide resolved
config/music.json Outdated Show resolved Hide resolved
@TsunamiAnt
Copy link
Contributor

not sure if this is the right place but here are some bugs we noticed:

  • When using "Play Lobby Song", not everyone heard the new song.
  • The jukebox itself, not the dance-o-tron or whatever, does not work at all.
  • Songs added to the lobby queue also show up in the jukebox list, that part might be intentional, except:
  • No custom music works on jukeboxes, period. Nothing.

Copy link

github-actions bot commented Sep 8, 2024

This pull request has conflicts, please resolve those before we can evaluate the pull request.

Copy link

github-actions bot commented Sep 8, 2024

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@PowerfulBacon PowerfulBacon removed the Test Merged This PR is currently in rotation label Sep 8, 2024
@PowerfulBacon
Copy link
Member Author

For some reason the music on local has completely stopped working, needs investigation

@PowerfulBacon
Copy link
Member Author

not sure if this is the right place but here are some bugs we noticed:

* When using "Play Lobby Song", not everyone heard the new song.

If people have pressed the skip button on their audio panel, then they won't get the new song as they aren't in-sync with the server's lobby music. New title songs added will only play to those currently synced with the server's lobby music.

* Songs added to the lobby queue also show up in the jukebox list, that part might be intentional, except:

This is not intentional and has been fixed.

* The jukebox itself, not the dance-o-tron or whatever, does not work at all.
* No custom music works on jukeboxes, period. Nothing.

Currently investigating these issues, they should be fixed. There are underlying issues that are impossible to solve:

  • Youtube attempts to block youtube-DL which pretty much means it won't work ever.
  • Some links will not work because they are blocked by CORS. This is a hosting error and there is nothing that I can do to solve this. I have added an error message to say when this happens and handling to skip the song if that occurs.

@PowerfulBacon
Copy link
Member Author

After some investigation, if an admin played a song that couldn't be decoded then it would permanently break all music in that round. The system is now considerably more reslient to error songs being added.

@github-actions github-actions bot added the Tools label Sep 24, 2024
@PowerfulBacon
Copy link
Member Author

PowerfulBacon commented Sep 25, 2024

For some reason after some time my game crashes whenever moving.

See attached logs

``` 690.593 AudioPlayer playing 53 asset.c98f399f0178dd6f965f8c754e9d16ec.mp3 { title: 'Endless Space', start: 0, end: 215.259, duration: '35 minutes and 52.5 seconds', link: 'https://www.newgrounds.com/audio/listen/74946', artist: 'Solus', album: null, upload_date: null, license_title: 'CC BY 3.0 (Attribution 3.0 Unported)', license_url: 'https://creativecommons.org/licenses/by/3.0/legalcode.txt' } {"start":28.239,"end":215.259} 690.594 AudioMiddleware update position 608227 406619 2 691.192 AudioPlayer canplaythrough 691.192 AudioPlayer volume update 0.005999999999999998 691.316 AudioMiddleware casting vote asset.c98f399f0178dd6f965f8c754e9d16ec.mp3 215.2586163 691.467 AudioPlayer updating queue with 1 elements 691.467 AudioPlayer update queue updated volume 691.472 AudioPlayer volume update 0.036 691.472 AudioMiddleware update position 608227 406624 2 692.593 AudioPlayer updating queue with 1 elements 692.593 AudioPlayer update queue updated volume 692.593 AudioPlayer volume update 0.06 692.593 AudioMiddleware update position 608227 406628 2 694.151 AudioPlayer updating queue with 1 elements 694.151 AudioPlayer update queue updated volume 694.152 AudioPlayer volume update 0.054 694.152 AudioMiddleware update position 608227 406627 2 695.244 chatRenderer pruned 21 stored messages 696.452 AudioPlayer stop lobby tracks 696.453 AudioPlayer updating queue with 1 elements 696.453 AudioPlayer update queue updated volume 696.453 AudioPlayer volume update 0.054 737.876 AudioPlayer updating queue with 1 elements 737.876 AudioPlayer update queue updated volume 737.877 AudioPlayer volume update 0.05151471862576143 737.877 AudioMiddleware update position 608226 406627 2 737.929 AudioPlayer updating queue with 1 elements 737.929 AudioPlayer update queue updated volume 737.931 AudioPlayer volume update 0.04658359213500126 737.931 AudioMiddleware update position 608225 406627 2 739.303 AudioPlayer updating queue with 1 elements 739.303 AudioPlayer update queue updated volume 739.304 AudioPlayer volume update 0.05151471862576143 739.304 AudioMiddleware update position 608226 406627 2 740.186 AudioPlayer updating queue with 1 elements 740.186 AudioPlayer update queue updated volume 740.187 AudioPlayer volume update 0.04658359213500126 740.188 AudioMiddleware update position 608225 406627 2 740.823 AudioPlayer updating queue with 1 elements 740.823 AudioPlayer update queue updated volume 740.824 AudioPlayer volume update 0.04102633403898972 740.825 AudioMiddleware update position 608224 406627 2 741.502 AudioPlayer updating queue with 1 elements 741.502 AudioPlayer update queue updated volume 741.503 AudioPlayer volume update 0.04658359213500126 741.504 AudioMiddleware update position 608225 406627 2 741.969 AudioPlayer updating queue with 1 elements 741.969 AudioPlayer update queue updated volume 741.970 AudioPlayer volume update 0.05151471862576143 741.970 AudioMiddleware update position 608226 406627 2 742.671 AudioPlayer updating queue with 1 elements 742.671 AudioPlayer update queue updated volume 742.674 AudioPlayer volume update 0.054 742.675 AudioMiddleware update position 608227 406627 2 743.149 AudioPlayer updating queue with 1 elements 743.149 AudioPlayer update queue updated volume 743.151 AudioPlayer volume update 0.05151471862576143 743.151 AudioMiddleware update position 608226 406627 2 746.822 AudioPlayer updating queue with 1 elements 746.823 AudioPlayer update queue updated volume 746.825 AudioPlayer volume update 0.04658359213500126 746.825 AudioMiddleware update position 608226 406626 2 746.980 AudioPlayer updating queue with 1 elements 746.980 AudioPlayer update queue updated volume 746.982 AudioPlayer volume update 0.043029437251522855 746.983 AudioMiddleware update position 608225 406626 2 747.219 AudioPlayer updating queue with 1 elements 747.219 AudioPlayer update queue updated volume 747.221 AudioPlayer volume update 0.03836669234721606 747.221 AudioMiddleware update position 608224 406626 2 747.474 AudioPlayer updating queue with 1 elements 747.475 AudioPlayer update queue updated volume 747.475 AudioPlayer volume update 0.03316718427000252 747.476 AudioMiddleware update position 608223 406626 2 747.783 AudioPlayer updating queue with 1 elements 747.783 AudioPlayer update queue updated volume 747.784 AudioPlayer volume update 0.027689011157192977 747.785 AudioMiddleware update position 608222 406626 2 748.037 AudioPlayer updating queue with 1 elements 748.038 AudioPlayer update queue updated volume 748.039 AudioPlayer volume update 0.022052668077979447 748.039 AudioMiddleware update position 608221 406626 2 748.285 AudioPlayer updating queue with 1 elements 748.286 AudioPlayer update queue updated volume 748.287 AudioPlayer volume update 0.01631934066431689 748.287 AudioMiddleware update position 608220 406626 2 748.574 AudioPlayer updating queue with 1 elements 748.574 AudioPlayer update queue updated volume 748.576 AudioPlayer volume update 0.010522732492588071 748.576 AudioMiddleware update position 608219 406626 2 748.869 AudioPlayer updating queue with 1 elements 748.869 AudioPlayer update queue updated volume 748.870 AudioPlayer volume update 0.004682733256242674 748.870 AudioMiddleware update position 608218 406626 2 749.173 AudioPlayer updating queue with 1 elements 749.173 AudioPlayer update queue found no best songs 749.174 AudioPlayer stop 749.225 AudioPlayer stopping 749.229 AudioMiddleware update position 608217 406626 2 749.390 AudioPlayer updating queue with 1 elements 749.390 AudioPlayer update queue found no best songs 749.390 AudioMiddleware update position 608216 406626 2 749.472 AudioPlayer loading error 4 749.625 AudioPlayer updating queue with 1 elements 749.625 AudioPlayer update queue found no best songs 749.625 AudioMiddleware update position 608215 406626 2 749.873 AudioPlayer updating queue with 1 elements 749.873 AudioPlayer update queue found no best songs 749.873 AudioMiddleware update position 608214 406626 2 750.183 AudioPlayer updating queue with 1 elements 750.183 AudioPlayer update queue found no best songs 750.183 AudioMiddleware update position 608213 406626 2 750.434 AudioPlayer updating queue with 1 elements 750.434 AudioPlayer update queue found no best songs 750.434 AudioMiddleware update position 608212 406626 2 750.730 AudioPlayer updating queue with 1 elements 750.730 AudioPlayer update queue found no best songs 750.730 AudioMiddleware update position 608211 406626 2 750.999 AudioPlayer updating queue with 1 elements 750.999 AudioPlayer update queue found no best songs 750.999 AudioMiddleware update position 608210 406626 2 751.218 AudioPlayer updating queue with 1 elements 751.218 AudioPlayer update queue found no best songs 751.218 AudioMiddleware update position 608209 406626 2 751.500 AudioPlayer updating queue with 1 elements 751.500 AudioPlayer update queue found no best songs 751.500 AudioMiddleware update position 608208 406626 2 751.765 AudioPlayer updating queue with 1 elements 751.765 AudioPlayer update queue found no best songs 751.765 AudioMiddleware update position 608207 406626 2 752.100 AudioPlayer updating queue with 1 elements 752.100 AudioPlayer update queue found no best songs 752.100 AudioMiddleware update position 608206 406626 2 752.326 AudioPlayer updating queue with 1 elements 752.326 AudioPlayer update queue found no best songs 752.326 AudioMiddleware update position 608205 406626 2 752.582 AudioPlayer updating queue with 1 elements 752.583 AudioPlayer update queue found no best songs 752.583 AudioMiddleware update position 608204 406626 2 752.855 AudioPlayer updating queue with 1 elements 752.855 AudioPlayer update queue found no best songs 752.856 AudioMiddleware update position 608203 406626 2 753.115 AudioPlayer updating queue with 1 elements 753.115 AudioPlayer update queue found no best songs 753.115 AudioMiddleware update position 608202 406626 2 753.498 AudioPlayer updating queue with 1 elements 753.498 AudioPlayer update queue found no best songs 753.499 AudioMiddleware update position 608202 406625 2 753.546 AudioPlayer updating queue with 1 elements 753.546 AudioPlayer update queue found no best songs 753.546 AudioMiddleware update position 608201 406625 2 753.771 AudioPlayer updating queue with 1 elements 753.771 AudioPlayer update queue found no best songs 753.771 AudioMiddleware update position 608200 406625 2 754.006 AudioPlayer updating queue with 1 elements 754.007 AudioPlayer update queue found no best songs 754.007 AudioMiddleware update position 608199 406625 2 754.309 AudioPlayer updating queue with 1 elements 754.309 AudioPlayer update queue found no best songs 754.310 AudioMiddleware update position 608198 406625 2 754.568 AudioPlayer updating queue with 1 elements 754.569 AudioPlayer update queue found no best songs 754.569 AudioMiddleware update position 608197 406625 2 754.828 AudioPlayer updating queue with 1 elements 754.829 AudioPlayer update queue found no best songs 754.829 AudioMiddleware update position 608196 406625 2 755.201 AudioPlayer updating queue with 1 elements 755.201 AudioPlayer update queue found no best songs 755.201 AudioMiddleware update position 608195 406625 2 755.271 chatRenderer pruned 39 stored messages 755.619 AudioPlayer updating queue with 1 elements 755.619 AudioPlayer update queue found no best songs 755.619 AudioMiddleware update position 608194 406625 2 755.985 AudioPlayer updating queue with 1 elements 755.985 AudioPlayer update queue found no best songs 755.985 AudioMiddleware update position 608193 406625 2 756.035 AudioPlayer updating queue with 1 elements 756.035 AudioPlayer update queue found no best songs 756.036 AudioMiddleware update position 608193 406624 2 756.336 AudioPlayer updating queue with 1 elements 756.336 AudioPlayer update queue found no best songs 756.336 AudioMiddleware update position 608193 406623 2 756.392 AudioPlayer updating queue with 1 elements 756.392 AudioPlayer update queue found no best songs 756.392 AudioMiddleware update position 608192 406623 2 756.594 AudioPlayer updating queue with 1 elements 756.594 AudioPlayer update queue found no best songs 756.595 AudioMiddleware update position 608192 406624 2 757.251 AudioPlayer updating queue with 1 elements 757.251 AudioPlayer update queue found no best songs 757.251 AudioMiddleware update position 608193 406624 2 757.310 AudioPlayer updating queue with 1 elements 757.310 AudioPlayer update queue found no best songs 757.310 AudioMiddleware update position 608194 406624 2 757.370 AudioPlayer updating queue with 1 elements 757.370 AudioPlayer update queue found no best songs 757.371 AudioMiddleware update position 608195 406624 2 757.927 AudioPlayer updating queue with 1 elements 757.928 AudioPlayer update queue found no best songs 757.928 AudioMiddleware update position 608195 406625 2 757.977 AudioPlayer updating queue with 1 elements 757.977 AudioPlayer update queue found no best songs 757.977 AudioMiddleware update position 608195 406626 2 758.027 AudioPlayer updating queue with 1 elements 758.027 AudioPlayer update queue found no best songs 758.027 AudioMiddleware update position 608195 406627 2 758.077 AudioPlayer updating queue with 1 elements 758.077 AudioPlayer update queue found no best songs 758.077 AudioMiddleware update position 608195 406628 2 758.128 AudioPlayer updating queue with 1 elements 758.128 AudioPlayer update queue found no best songs 758.128 AudioMiddleware update position 608195 406629 2 758.179 AudioPlayer updating queue with 1 elements 758.179 AudioPlayer update queue found no best songs 758.180 AudioMiddleware update position 608195 406630 2 758.267 AudioPlayer updating queue with 1 elements 758.267 AudioPlayer update queue found no best songs 758.267 AudioMiddleware update position 608195 406631 2 758.332 AudioPlayer updating queue with 1 elements 758.332 AudioPlayer update queue found no best songs 758.332 AudioMiddleware update position 608195 406632 2 758.446 AudioPlayer updating queue with 1 elements 758.446 AudioPlayer update queue found no best songs 758.447 AudioMiddleware update position 608195 406633 2 758.507 AudioPlayer updating queue with 1 elements 758.507 AudioPlayer update queue found no best songs 758.507 AudioMiddleware update position 608195 406634 2 758.560 AudioPlayer updating queue with 1 elements 758.561 AudioPlayer update queue found no best songs 758.561 AudioMiddleware update position 608195 406635 2 758.613 AudioPlayer updating queue with 1 elements 758.613 AudioPlayer update queue found no best songs 758.613 AudioMiddleware update position 608195 406636 2 758.662 AudioPlayer updating queue with 1 elements 758.662 AudioPlayer update queue found no best songs 758.662 AudioMiddleware update position 608195 406637 2 758.721 AudioPlayer updating queue with 1 elements 758.721 AudioPlayer update queue found no best songs 758.721 AudioMiddleware update position 608195 406638 2 758.776 AudioPlayer updating queue with 1 elements 758.776 AudioPlayer update queue found no best songs 758.777 AudioMiddleware update position 608195 406639 2 758.833 AudioPlayer updating queue with 1 elements 758.833 AudioPlayer update queue found no best songs 758.833 AudioMiddleware update position 608195 406640 2 758.931 AudioPlayer updating queue with 1 elements 758.931 AudioPlayer update queue found no best songs 758.931 AudioMiddleware update position 608195 406641 2 758.989 AudioPlayer updating queue with 1 elements 758.989 AudioPlayer update queue found no best songs 758.989 AudioMiddleware update position 608195 406642 2 759.042 AudioPlayer updating queue with 1 elements 759.042 AudioPlayer update queue found no best songs 759.042 AudioMiddleware update position 608195 406643 2 759.210 AudioPlayer updating queue with 1 elements 759.210 AudioPlayer update queue found no best songs 759.210 AudioMiddleware update position 608195 406644 2 759.273 AudioPlayer updating queue with 1 elements 759.273 AudioPlayer update queue found no best songs 759.273 AudioMiddleware update position 608195 406645 2 759.378 AudioPlayer updating queue with 1 elements 759.378 AudioPlayer update queue found no best songs 759.378 AudioMiddleware update position 608195 406646 2 759.431 AudioPlayer updating queue with 1 elements 759.431 AudioPlayer update queue found no best songs 759.431 AudioMiddleware update position 608195 406647 2 759.485 AudioPlayer updating queue with 1 elements 759.485 AudioPlayer update queue found no best songs 759.486 AudioMiddleware update position 608195 406648 2 759.543 AudioPlayer updating queue with 1 elements 759.543 AudioPlayer update queue found no best songs 759.543 AudioMiddleware update position 608195 406649 2 759.595 AudioPlayer updating queue with 1 elements 759.596 AudioPlayer update queue found no best songs 759.596 AudioMiddleware update position 608195 406650 2 759.650 AudioPlayer updating queue with 1 elements 759.650 AudioPlayer update queue found no best songs 759.650 AudioMiddleware update position 608195 406651 2 759.719 AudioPlayer updating queue with 1 elements 759.719 AudioPlayer update queue found no best songs 759.719 AudioMiddleware update position 608195 406652 2 759.781 AudioPlayer updating queue with 1 elements 759.781 AudioPlayer update queue found no best songs 759.781 AudioMiddleware update position 608195 406653 2 759.886 AudioPlayer updating queue with 1 elements 759.886 AudioPlayer update queue found no best songs 759.886 AudioMiddleware update position 608195 406654 2 759.941 AudioPlayer updating queue with 1 elements 759.942 AudioPlayer update queue found no best songs 759.942 AudioMiddleware update position 608195 406655 2 759.998 AudioPlayer updating queue with 1 elements 759.998 AudioPlayer update queue found no best songs 759.998 AudioMiddleware update position 608195 406656 2 760.052 AudioPlayer updating queue with 1 elements 760.052 AudioPlayer update queue found no best songs 760.053 AudioMiddleware update position 608195 406657 2 760.121 AudioPlayer updating queue with 1 elements 760.121 AudioPlayer update queue found no best songs 760.121 AudioMiddleware update position 608195 406658 2 760.180 AudioPlayer updating queue with 1 elements 760.180 AudioPlayer update queue found no best songs 760.180 AudioMiddleware update position 608195 406659 2 760.244 AudioPlayer updating queue with 1 elements 760.244 AudioPlayer update queue found no best songs 760.244 AudioMiddleware update position 608195 406660 2 760.306 AudioPlayer updating queue with 1 elements 760.306 AudioPlayer update queue found no best songs 760.306 AudioMiddleware update position 608195 406661 2 760.405 AudioPlayer updating queue with 1 elements 760.405 AudioPlayer update queue found no best songs 760.405 AudioMiddleware update position 608195 406662 2 760.457 AudioPlayer updating queue with 1 elements 760.458 AudioPlayer update queue found no best songs 760.458 AudioMiddleware update position 608195 406663 2 760.509 AudioPlayer updating queue with 1 elements 760.509 AudioPlayer update queue found no best songs 760.509 AudioMiddleware update position 608195 406664 2 760.560 AudioPlayer updating queue with 1 elements 760.560 AudioPlayer update queue found no best songs 760.560 AudioMiddleware update position 608195 406665 2 760.611 AudioPlayer updating queue with 1 elements 760.611 AudioPlayer update queue found no best songs 760.611 AudioMiddleware update position 608195 406666 2 760.660 AudioPlayer updating queue with 1 elements 760.660 AudioPlayer update queue found no best songs 760.660 AudioMiddleware update position 608195 406667 2 760.721 AudioPlayer updating queue with 1 elements 760.721 AudioPlayer update queue found no best songs 760.721 AudioMiddleware update position 608195 406668 2 760.778 AudioPlayer updating queue with 1 elements 760.778 AudioPlayer update queue found no best songs 760.778 AudioMiddleware update position 608195 406669 2 760.873 AudioPlayer updating queue with 1 elements 760.873 AudioPlayer update queue found no best songs 760.873 AudioMiddleware update position 608195 406670 2 760.922 AudioPlayer updating queue with 1 elements 760.922 AudioPlayer update queue found no best songs 760.923 AudioMiddleware update position 608195 406671 2 760.972 AudioPlayer updating queue with 1 elements 760.972 AudioPlayer update queue found no best songs 760.972 AudioMiddleware update position 608195 406672 2 761.021 AudioPlayer updating queue with 1 elements 761.021 AudioPlayer update queue found no best songs 761.021 AudioMiddleware update position 608195 406673 2 761.072 AudioPlayer updating queue with 1 elements 761.073 AudioPlayer update queue found no best songs 761.073 AudioMiddleware update position 608195 406674 2 761.121 AudioPlayer updating queue with 1 elements 761.121 AudioPlayer update queue found no best songs 761.121 AudioMiddleware update position 608195 406675 2 761.184 AudioPlayer updating queue with 1 elements 761.184 AudioPlayer update queue found no best songs 761.185 AudioMiddleware update position 608195 406676 2 761.327 AudioPlayer updating queue with 1 elements 761.327 AudioPlayer update queue found no best songs 761.327 AudioMiddleware update position 608195 406677 2 761.457 AudioPlayer updating queue with 1 elements 761.457 AudioPlayer update queue found no best songs 761.458 AudioMiddleware update position 608195 406678 2 761.512 AudioPlayer updating queue with 1 elements 761.513 AudioPlayer update queue found no best songs 761.513 AudioMiddleware update position 608195 406679 2 761.563 AudioPlayer updating queue with 1 elements 761.563 AudioPlayer update queue found no best songs 761.563 AudioMiddleware update position 608195 406680 2 761.673 AudioPlayer updating queue with 1 elements 761.673 AudioPlayer update queue found no best songs 761.673 AudioMiddleware update position 608195 406681 2 761.848 AudioPlayer updating queue with 1 elements 761.848 AudioPlayer update queue found no best songs 761.848 AudioMiddleware update position 608195 406682 2 761.948 AudioPlayer updating queue with 1 elements 761.949 AudioPlayer update queue found no best songs 761.949 AudioMiddleware update position 608195 406684 2 761.999 AudioPlayer updating queue with 1 elements 761.999 AudioPlayer update queue found no best songs 761.999 AudioMiddleware update position 608195 406685 2 762.048 AudioPlayer updating queue with 1 elements 762.048 AudioPlayer update queue found no best songs 762.048 AudioMiddleware update position 608195 406686 2 762.101 AudioPlayer updating queue with 1 elements 762.101 AudioPlayer update queue found no best songs 762.101 AudioMiddleware update position 608195 406687 2 762.155 AudioPlayer updating queue with 1 elements 762.155 AudioPlayer update queue found no best songs 762.155 AudioMiddleware update position 608195 406688 2 762.305 AudioPlayer updating queue with 1 elements 762.305 AudioPlayer update queue found no best songs 762.305 AudioMiddleware update position 608195 406689 2 762.356 AudioPlayer updating queue with 1 elements 762.356 AudioPlayer update queue found no best songs 762.356 AudioMiddleware update position 608195 406690 2 762.415 AudioPlayer updating queue with 1 elements 762.415 AudioPlayer update queue found no best songs 762.415 AudioMiddleware update position 608195 406691 2 762.534 AudioPlayer updating queue with 1 elements 762.534 AudioPlayer update queue found no best songs 762.534 AudioMiddleware update position 608195 406692 2 762.608 AudioPlayer updating queue with 1 elements 762.608 AudioPlayer update queue found no best songs 762.608 AudioMiddleware update position 608195 406693 2 762.678 AudioPlayer updating queue with 1 elements 762.678 AudioPlayer update queue found no best songs 762.678 AudioMiddleware update position 608195 406694 2 762.737 AudioPlayer updating queue with 1 elements 762.737 AudioPlayer update queue found no best songs 762.737 AudioMiddleware update position 608195 406695 2 762.803 AudioPlayer updating queue with 1 elements 762.803 AudioPlayer update queue found no best songs 762.803 AudioMiddleware update position 608195 406696 2 762.868 AudioPlayer updating queue with 1 elements 762.868 AudioPlayer update queue found no best songs 762.869 AudioMiddleware update position 608195 406697 2 762.922 AudioPlayer updating queue with 1 elements 762.922 AudioPlayer update queue found no best songs 762.922 AudioMiddleware update position 608195 406698 2 762.979 AudioPlayer updating queue with 1 elements 762.979 AudioPlayer update queue found no best songs 762.980 AudioMiddleware update position 608195 406699 2 763.110 AudioPlayer updating queue with 1 elements 763.110 AudioPlayer update queue found no best songs 763.110 AudioMiddleware update position 608195 406700 2 763.184 AudioPlayer updating queue with 1 elements 763.184 AudioPlayer update queue found no best songs 763.184 AudioMiddleware update position 608195 406701 2 763.259 AudioPlayer updating queue with 1 elements 763.259 AudioPlayer update queue found no best songs 763.260 AudioMiddleware update position 608195 406702 2 763.357 AudioPlayer updating queue with 1 elements 763.357 AudioPlayer update queue found no best songs 763.357 AudioMiddleware update position 608195 406703 2 763.439 AudioPlayer updating queue with 1 elements 763.439 AudioPlayer update queue found no best songs 763.439 AudioMiddleware update position 608195 406704 2 763.542 AudioPlayer updating queue with 1 elements 763.543 AudioPlayer update queue found no best songs 763.543 AudioMiddleware update position 608195 406705 2 763.612 AudioPlayer updating queue with 1 elements 763.614 AudioPlayer update queue found no best songs 763.614 AudioMiddleware update position 608195 406706 2 763.674 AudioPlayer updating queue with 1 elements 763.674 AudioPlayer update queue found no best songs 763.675 AudioMiddleware update position 608195 406707 2 763.774 AudioPlayer updating queue with 1 elements 763.774 AudioPlayer update queue found no best songs 763.774 AudioMiddleware update position 608195 406708 2 763.834 AudioPlayer updating queue with 1 elements 763.834 AudioPlayer update queue found no best songs 763.834 AudioMiddleware update position 608195 406709 2 763.893 AudioPlayer updating queue with 1 elements 763.893 AudioPlayer update queue found no best songs 763.893 AudioMiddleware update position 608195 406710 2 763.953 AudioPlayer updating queue with 1 elements 763.953 AudioPlayer update queue found no best songs 763.953 AudioMiddleware update position 608195 406711 2 764.012 AudioPlayer updating queue with 1 elements 764.012 AudioPlayer update queue found no best songs 764.012 AudioMiddleware update position 608195 406712 2 764.081 AudioPlayer updating queue with 1 elements 764.081 AudioPlayer update queue found no best songs 764.082 AudioMiddleware update position 608195 406713 2 764.154 AudioPlayer updating queue with 1 elements 764.155 AudioPlayer update queue found no best songs 764.155 AudioMiddleware update position 608195 406714 2 764.209 AudioPlayer updating queue with 1 elements 764.209 AudioPlayer update queue found no best songs 764.209 AudioMiddleware update position 608195 406715 2 764.262 AudioPlayer updating queue with 1 elements 764.262 AudioPlayer update queue found no best songs 764.262 AudioMiddleware update position 608195 406716 2 764.388 AudioPlayer updating queue with 1 elements 764.388 AudioPlayer update queue found no best songs 764.389 AudioMiddleware update position 608195 406717 2 764.455 AudioPlayer updating queue with 1 elements 764.455 AudioPlayer update queue found no best songs 764.455 AudioMiddleware update position 608195 406718 2 764.522 AudioPlayer updating queue with 1 elements 764.522 AudioPlayer update queue found no best songs 764.522 AudioMiddleware update position 608195 406719 2 764.605 AudioPlayer updating queue with 1 elements 764.605 AudioPlayer update queue found no best songs 764.606 AudioMiddleware update position 608195 406720 2 764.693 AudioPlayer updating queue with 1 elements 764.693 AudioPlayer update queue found no best songs 764.693 AudioMiddleware update position 608195 406721 2 764.934 AudioPlayer updating queue with 1 elements 764.935 AudioPlayer update queue found no best songs 764.935 AudioMiddleware update position 608195 406722 2 765.065 AudioPlayer updating queue with 1 elements 765.065 AudioPlayer update queue found no best songs 765.066 AudioMiddleware update position 608195 406723 2 765.131 AudioPlayer updating queue with 1 elements 765.131 AudioPlayer update queue found no best songs 765.131 AudioMiddleware update position 608195 406724 2 765.195 AudioPlayer updating queue with 1 elements 765.195 AudioPlayer update queue found no best songs 765.195 AudioMiddleware update position 608195 406725 2 765.253 AudioPlayer updating queue with 1 elements 765.253 AudioPlayer update queue found no best songs 765.253 AudioMiddleware update position 608195 406726 2 765.308 AudioPlayer updating queue with 1 elements 765.308 AudioPlayer update queue found no best songs 765.309 AudioMiddleware update position 608195 406727 2 765.390 AudioPlayer updating queue with 1 elements 765.390 AudioPlayer update queue found no best songs 765.390 AudioMiddleware update position 608195 406728 2 765.455 AudioPlayer updating queue with 1 elements 765.455 AudioPlayer update queue found no best songs 765.455 AudioMiddleware update position 608195 406729 2 765.522 AudioPlayer updating queue with 1 elements 765.522 AudioPlayer update queue found no best songs 765.522 AudioMiddleware update position 608195 406730 2 765.747 AudioPlayer updating queue with 1 elements 765.747 AudioPlayer update queue found no best songs 765.747 AudioMiddleware update position 608195 406731 2 765.802 AudioPlayer updating queue with 1 elements 765.802 AudioPlayer update queue found no best songs 765.802 AudioMiddleware update position 608195 406732 2 765.860 AudioPlayer updating queue with 1 elements 765.860 AudioPlayer update queue found no best songs 765.860 AudioMiddleware update position 608195 406733 2 765.919 AudioPlayer updating queue with 1 elements 765.919 AudioPlayer update queue found no best songs 765.919 AudioMiddleware update position 608195 406734 2 765.974 AudioPlayer updating queue with 1 elements 765.974 AudioPlayer update queue found no best songs 765.974 AudioMiddleware update position 608195 406735 2 766.038 AudioPlayer updating queue with 1 elements 766.038 AudioPlayer update queue found no best songs 766.038 AudioMiddleware update position 608195 406736 2 766.097 AudioPlayer updating queue with 1 elements 766.097 AudioPlayer update queue found no best songs 766.097 AudioMiddleware update position 608195 406737 2 766.161 AudioPlayer updating queue with 1 elements 766.161 AudioPlayer update queue found no best songs 766.161 AudioMiddleware update position 608195 406738 2 766.295 AudioPlayer updating queue with 1 elements 766.296 AudioPlayer update queue found no best songs 766.299 AudioMiddleware update position 608195 406739 2 766.378 AudioPlayer updating queue with 1 elements 766.378 AudioPlayer update queue found no best songs 766.378 AudioMiddleware update position 608195 406740 2 766.432 AudioPlayer updating queue with 1 elements 766.432 AudioPlayer update queue found no best songs 766.432 AudioMiddleware update position 608195 406741 2 766.497 AudioPlayer updating queue with 1 elements 766.497 AudioPlayer update queue found no best songs 766.497 AudioMiddleware update position 608195 406742 2 766.563 AudioPlayer updating queue with 1 elements 766.563 AudioPlayer update queue found no best songs 766.563 AudioMiddleware update position 608195 406743 2 766.636 AudioPlayer updating queue with 1 elements 766.637 AudioPlayer update queue found no best songs 766.637 AudioMiddleware update position 608195 406744 2 766.720 AudioPlayer updating queue with 1 elements 766.721 AudioPlayer update queue found no best songs 766.721 AudioMiddleware update position 608195 406745 2 766.802 AudioPlayer updating queue with 1 elements 766.802 AudioPlayer update queue found no best songs 766.802 AudioMiddleware update position 608195 406746 2 766.876 AudioPlayer updating queue with 1 elements 766.876 AudioPlayer update queue found no best songs 766.876 AudioMiddleware update position 608195 406747 2 766.982 AudioPlayer updating queue with 1 elements 766.983 AudioPlayer update queue found no best songs 766.983 AudioMiddleware update position 608195 406748 2 767.036 AudioPlayer updating queue with 1 elements 767.036 AudioPlayer update queue found no best songs 767.036 AudioMiddleware update position 608195 406749 2 767.086 AudioPlayer updating queue with 1 elements 767.086 AudioPlayer update queue found no best songs 767.086 AudioMiddleware update position 608195 406750 2 767.136 AudioPlayer updating queue with 1 elements 767.137 AudioPlayer update queue found no best songs 767.137 AudioMiddleware update position 608195 406751 2 767.187 AudioPlayer updating queue with 1 elements 767.188 AudioPlayer update queue found no best songs 767.188 AudioMiddleware update position 608195 406752 2 767.253 AudioPlayer updating queue with 1 elements 767.253 AudioPlayer update queue found no best songs 767.253 AudioMiddleware update position 608195 406753 2 767.306 AudioPlayer updating queue with 1 elements 767.306 AudioPlayer update queue found no best songs 767.306 AudioMiddleware update position 608195 406754 2 767.365 AudioPlayer updating queue with 1 elements 767.365 AudioPlayer update queue found no best songs 767.365 AudioMiddleware update position 608195 406755 2 767.855 AudioPlayer updating queue with 1 elements 767.855 AudioPlayer update queue found no best songs 767.855 AudioMiddleware update position 608196 406755 2 780.427 AudioPlayer updating queue with 1 elements 780.427 AudioPlayer update queue found no best songs 780.427 AudioMiddleware update position 608204 406627 2 781.180 AudioPlayer updating queue with 1 elements 781.181 AudioPlayer update queue found no best songs 781.181 AudioMiddleware update position 608203 406627 2 781.507 AudioPlayer updating queue with 1 elements 781.507 AudioPlayer update queue found no best songs 781.507 AudioMiddleware update position 608202 406627 2 781.575 AudioPlayer updating queue with 1 elements 781.575 AudioPlayer update queue found no best songs 781.575 AudioMiddleware update position 608210 406626 2 782.764 AudioPlayer updating queue with 1 elements 782.764 AudioPlayer update queue found no best songs 782.765 AudioMiddleware update position 608217 406626 2 783.531 AudioPlayer updating queue with 1 elements 783.531 AudioPlayer volume update 0.035261366246294036 783.532 AudioPlayer playing 53 asset.c98f399f0178dd6f965f8c754e9d16ec.mp3 { title: 'Endless Space', start: 0, end: 215.259, duration: '35 minutes and 52.5 seconds', link: 'https://www.newgrounds.com/audio/listen/74946', artist: 'Solus', album: null, upload_date: null, license_title: 'CC BY 3.0 (Attribution 3.0 Unported)', license_url: 'https://creativecommons.org/licenses/by/3.0/legalcode.txt' } {"start":121.177,"end":215.259} 783.532 AudioMiddleware update position 608223 406627 2 784.038 AudioPlayer canplaythrough 784.038 AudioPlayer volume update 0.035261366246294036 784.121 AudioMiddleware casting vote asset.c98f399f0178dd6f965f8c754e9d16ec.mp3 215.2586163 786.239 AudioPlayer stop track 16 786.239 AudioPlayer updating queue with 1 elements 786.239 AudioPlayer update queue updated volume 786.239 AudioPlayer volume update 0.035261366246294036 786.288 AudioPlayer stop track 18 786.288 AudioPlayer updating queue with 1 elements 786.288 AudioPlayer update queue updated volume 786.288 AudioPlayer volume update 0.035261366246294036 786.339 AudioPlayer stop track 22 786.339 AudioPlayer updating queue with 1 elements 786.339 AudioPlayer update queue updated volume 786.339 AudioPlayer volume update 0.035261366246294036 786.402 AudioPlayer stop track 40 786.402 AudioPlayer updating queue with 1 elements 786.402 AudioPlayer update queue updated volume 786.402 AudioPlayer volume update 0.035261366246294036 786.481 AudioPlayer stop track 46 786.481 AudioPlayer updating queue with 1 elements 786.481 AudioPlayer update queue updated volume 786.482 AudioPlayer volume update 0.035261366246294036 786.558 AudioPlayer stop track 53 786.558 AudioPlayer updating queue with 0 elements 786.560 AudioPlayer update queue found no best songs 786.560 AudioPlayer stop 786.674 AudioPlayer stopping 786.887 AudioPlayer loading error 4 > 815.286 chatRenderer pruned 46 stored messages ```

@PowerfulBacon
Copy link
Member Author

This is weird since update queue should be an incredibly cheap operation that should not lag at all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Major Systems
Development

Successfully merging this pull request may close these issues.

[BOUNTY]: $55 BayStation-esque "Clientside" Musicplayer
5 participants