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

Future Audio Work #2940

Closed
7 of 39 tasks
Drapersniper opened this issue Aug 18, 2019 · 62 comments
Closed
7 of 39 tasks

Future Audio Work #2940

Drapersniper opened this issue Aug 18, 2019 · 62 comments
Labels
Category: Audio Cog Type: Informational

Comments

@Drapersniper
Copy link
Contributor

@Drapersniper Drapersniper commented Aug 18, 2019

This issue is to gather features to be suggested for or worked on for Audio this supersedes and replaces #2494 due to the changes added by #2904

Open Issues:

  • Lavalink status (#1811)
  • Document Lavalink setup with multiple instances (#2843) (This could also send a message to the bot owner)

TODO:

  • Queue: move songs up and down the list by number of songs (#621)
  • Break Search command into multiple subcommands
  • Wastebin lists of links to tracks
  • Remove multiple songs at once
  • Make Queue aware when enqueuing playlists and/or albums
  • Add more dispatches
  • Add more public APIs to allow for more Audio add-ons

Requests:

Maybe:

  • A thumbsup/thumbsdown on a np message to make a song play more frequently on a playlist in tandem with the playlist checking on #1544, + skip stats (playlist playing stat saving/management)
  • Lyrics support
  • Expand Spotify playlist support to use SoundCloud API
  • Jukebox price to be charged per song instead of per command?
  • Pillow Audio 😝
  • Add RPC functionality; information on doing this at #3741
  • add [p]makeplaylist that enqueue n number of recently played tracks in the server
  • add [p]playstric <author> || <track name> which would allow using Global Cache and JDA cache directly.
  • Add special casing for Live stream playlists

Next Todo

  • Autojoin/bind (a command to bind the bot to a text channel and a voice channel for the duration of the audio session), also setting a lock on the audio set notify channel via this method, pinned queue
  • Configurable limit on max concurrent audio streams (#272)
  • More Spotify functionality using their API
    • Search for Artists, Playlists and Albums
    • Use Song Metadata for info
      [ ] Spotify Search command
  • Absolute Vote toggle (Voting system that DJ's can't bypass)
  • Auto Join a music channel

In Edge

  • [p]audioset role To accept a list of roles
  • Set maximum allowed volume
  • Effects
  • Channel specific volume settings
  • Configurable maximum queue size - Places where the Queue is Controllate already been added, now need to add a command to set it. (Note to self, Hard coded > Bot Owner > Server Mods)
  • Add a [p]mixplaylist <url> command based on the newly discovered behaviour of youtube mix playlists - #2940 (comment)

Done

  • Persist queues on reboot/reload Done in #3242 but want to make it avaliable as part of #3459

What about sfx?

Want to suggest something?

  • Just leave a comment below!
@Flame442 Flame442 added the Type: Informational label Aug 19, 2019
@jack1142
Copy link
Member

@jack1142 jack1142 commented Aug 23, 2019

Unless this feature is already proposed somewhere, I would like to propose option to be able to use [p]prev to be able to go more than one song backwards and also to be able to use it with shuffle enabled - similarly to how it is in regular music players.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Aug 26, 2019

Currently it will work with Shuffle (with #2904 ), but not more than 1 song, so i'll add that

@Vexed01
Copy link
Contributor

@Vexed01 Vexed01 commented Aug 27, 2019

As we discussed in Discord, a possible feature is allowing server owners/admins to move playlists between servers they own/administrate in.
A possible change to this original idea is that a non admin/owner user in server A can then copy a playlist to server B if they have admin/owner perms where the playlist is being copied to.
These would only apply for guild playlists.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Aug 29, 2019

@Vexed01 this would overcomplicate the existing playlist perms quite a bit, privacy is also a concern. and as such am Against this.

However ... Currently you'll be able to copy a playlist from guild A to the User Scope and from the User scope to the Guild scope on Server B.

This allows less cross server information display, and if they really want to copy cross server a 2 step proccess seems okay to me.

@Vexed01
Copy link
Contributor

@Vexed01 Vexed01 commented Aug 30, 2019

@jack1142
Copy link
Member

@jack1142 jack1142 commented Sep 4, 2019

Hmm, I have another proposition, option to limit the range for volume command? I saw someone that wanted such feature before so that he could enable users to change volume but not let them change it from for example 50% to 150% which would annoy everyone in vc.

@Ianardo-DiCaprio
Copy link
Contributor

@Ianardo-DiCaprio Ianardo-DiCaprio commented Oct 18, 2019

Ability to add multiple songs in the play command by separating the songs with a character that's not used often such as "|". Which would be used like [p]play Eminem Lucky You | Joyner ADHD and it adds both songs.

@ltukezl
Copy link

@ltukezl ltukezl commented Jan 27, 2020

I mostly use redbot for playing local songs and it works pretty well for basic operation of !play "path/music.mp3"
Would it be possible to have commands such as !play "folder" to enqueue all music in that folder.
!local folder is extremely cumbersome since i wouldn't want to transfer all my files to new "localtracks" folder.
For my use case navigation and stuff like that isn't really a concern since i'm always using "copy as path" with windows.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Jan 27, 2020

@ltukezl possible it is, however for privacy reason I’m agaisnt being able to pass a local path to the bot for play, as of 3.3 you are able to create symbolic links so you don’t need to copy the files into the local tracks folder, the reason the local tracks folder exist is due to the aforementioned privacy concerns.

@ltukezl
Copy link

@ltukezl ltukezl commented Jan 27, 2020

Fair. symlinks feels decent enought workaround.
Thank you.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Jan 27, 2020

The above said it’s not a hard no, if you can give some examples of use cases where it would prove beneficial to all users and not just yourself, I’m more than happy to look into the possibilities.

@ltukezl
Copy link

@ltukezl ltukezl commented Jan 27, 2020

Since it already worked for regular mp files I didn't really concern too much about the possible privacy issues.

While the symlink does function well (EDIT subfolders with music doesn't work, returns nothing found. maybe it's on my end so i'll debug it tomorrow) , it doesn't really scale too well to my 400 albums. So my enchantment suggestions would fall either into the !local folder enchantments such as skip 10 menus and show more albums per menu.
Maybe it could accept the path via DM where the owner might be more likely to post private info or with enought rights the bot could instantly delete messages that has been processed as local path / folder.

Either way I don't really have good solution on hand but I recon queuing whole folders easier would still be beneficial to some portion of users.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Jan 28, 2020

Nothing found after you select play or nothing found as in the folder doesn’t get shown? This is no longer something that shouldn’t be in this issue please take any further issue to our discord server and we can talk there. I’m interested to understand exactly what you mean by not found as in when and where it happens

@Drapersniper Drapersniper added the Blocked By: Other PR label Jan 30, 2020
@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Jan 30, 2020

Blocked by #3459

@aikaterna
Copy link
Member

@aikaterna aikaterna commented Feb 3, 2020

Have a command, most likely usable for server owners, bot owners, bot mod, bot admin that toggles on a bias for lyrics-based song titles via a yt search. This would append "lyrics" to a [p]search query on first glance (could def be implemented differently), and in regards to the idea of the audio track API/caching idea that Draper has, could prioritize cached tracks with lyrics in the song title or similar.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Feb 3, 2020

Add a [p]mixplaylist <url> command based on the newly discovered behaviour of youtube mix playlists

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Feb 3, 2020

MAYBE: add [p]playstric <author> || <track name> which would allow using Global Cache and JDA cache directly.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Feb 3, 2020

add [p]makeplaylist that enqueue n number of recently played tracks in the server

@PredaaA
Copy link
Member

@PredaaA PredaaA commented Feb 7, 2020

Show the enqueued playlist name (and url?) when using genre command.

@fixator10
Copy link
Contributor

@fixator10 fixator10 commented Feb 9, 2020

thingie

@Drapersniper Drapersniper removed their assignment Feb 29, 2020
@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Feb 29, 2020

I won't be continuing work here, I wont close this issue as its a good way to congragate all feature requests and work. hopefully it assists Aika and anyone else working on Audio in the future.

@NeuroAssassin
Copy link
Contributor

@NeuroAssassin NeuroAssassin commented Apr 10, 2020

Add RPC functionality; information on doing this at #3741

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Apr 11, 2020

Add special casing for Live stream playlists
Note: Users wont be mix livestream with normal songs due to special casing, but this will allow playlist to always have accurate livestream data

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Apr 11, 2020

[p]audioset role To accept a list of roles?

@PredaaA
Copy link
Member

@PredaaA PredaaA commented Nov 12, 2020

It would be really cool to implement this. For more care about resources usage.
image

@aikaterna
Copy link
Member

@aikaterna aikaterna commented Nov 25, 2020

Add support for YouTube music api, non async ref can be found at https://github.com/sigma67/ytmusicapi/tree/master/ytmusicapi

@aikaterna
Copy link
Member

@aikaterna aikaterna commented Dec 3, 2020

Add a playlist search command to be able to search for tracks on a saved Red playlist, the output would return artist/title/link like many of the other song displays (queue, playlist info, etc)

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Dec 3, 2020

Would we want to also add enqueue functionality allowing you to play the search result ?

@aikaterna
Copy link
Member

@aikaterna aikaterna commented Dec 3, 2020

Possibly, my use case was trying to search a saved playlist for specific artists so that I could remove them with playlist remove commands.

@npc203
Copy link
Contributor

@npc203 npc203 commented Dec 17, 2020

some default audio eq presets would be cool(i am aware of how to save eq configs). idk how to justify the need but somewhere on the lines of red having default songs maybe. Would be useful to show off how eq is cool.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Dec 17, 2020

some default audio eq presets would be cool(i am aware of how to save eq configs). idk how to justify the need but somewhere on the lines of red having default songs maybe. Would be useful to show off how eq is cool.

Yeah planning to do this on the rewrite and give users a handful of premade presets such as base boos, piano, voice etc

@Pogogo007
Copy link

@Pogogo007 Pogogo007 commented Dec 19, 2020

Make Query option 5 (JDA) optional on GlobalAPI and implement on audio (Draper on disc)

@wcrigger
Copy link

@wcrigger wcrigger commented Jan 9, 2021

We use RedBot to stream an Icecast URL, which is working flawlessly. However, when poking around at audio features, I came across the "[p] audioset status enable" command that updates the bot's status as to what is currently playing (sweet!). However, after enabling the feature and having the first song updated as its status, subsequent songs in the same stream are not captured, or at least not set as the status of the bot as expected. That first song it determines is playing becomes a static status for the bot.

I think it'd be really cool if RedBot could refresh its now playing data frequently (possibly at a configurable interval), and capture what is currently playing, and update its status accordingly. I believe this can be achieved by sending the "Icy-MetaData" in the request header, and by reading the response "metaint" header and parsing it accordingly. I found some example python code for this, and I think it'd be something along the lines of this:

request.add_header('Icy-MetaData', 1)
  response = urllib2.urlopen(request)
  icy_metaint_header = response.headers.get('icy-metaint')
  if icy_metaint_header is not None:
      metaint = int(icy_metaint_header)
      read_buffer = metaint+255
      content = response.read(read_buffer)
      title = content[metaint:].split("'")[1]
      print title

...perhaps in a try/except block, where if successful, it updates the status as to what is currently playing, else, if failure, possibly blanking out the status, or outputting something generic.

Thanks in advance for the consideration. You all have something really cool here!

@SnooPee508
Copy link

@SnooPee508 SnooPee508 commented Jan 18, 2021

Hello! I have an awesome Idea! Is it possible in equalizer that bot owners can create global equalizer presets? So that adding filters like Bassboost, treble etc. If it is possible then we don't need to add separate filters command. This can come in handy :)

@fmohican
Copy link

@fmohican fmohican commented Feb 25, 2021

Hello,
Currently I face a issues with nicely and lovely Red Audio (Cog?), let's get to the point....
I setup myself an instance of red on my Windows Server, everything went fine till i want to setup few playlists from local albums.

On a first hand i search a lot how to create playlists from local files, how to setup media patch without going on C:\Users\[myuser]\AppData\Local\Red-DiscordBot\Red-DiscordBot\data\[myInstanceOfRed]\cogs\Audio\localtracks and i can't found anything.
I can't find any workaround for the files path, but i found an workaround for creating playlist so, i convert all files to mp3 pack into folders and then upload to %appdata%\Local\Red-DiscordBot\Red-DiscordBot\data\[myInstanceOfRed]\cogs\Audio\localtracks, everything went fine and smooth with follow commands

.local folder [name]
playlist queue [name] --scope Global
.stop
[repeat]

So as i said everything went fine till i have to repeat operation, every playlist queue [name] --scope Global i have to wait 5 minutes to execute another, on a simple math 4 albumes (no matter how long/short are) i have to wait 20 minutes (in total).
It's frustrating not to be able to go over certain limits, even if it means taking risks, since we are talking about a selfhosted instance of Red and just as frustrated is waiting a few hours to get a job done that you can do in 20 minutes at most.

To resume everything.

  • Possibility to create playlist from local files without any cooldown or 'workaround'.
  • Possibility to set custom cooldown on every command. (optionally a warning like, if you fall below a certain value, no more support is offered. You do it at your own risk. )

Transcript from discord: https://gist.github.com/fmohican/9bd522c9550ff787e8ca38c7751099d1

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Feb 25, 2021

Hello,
Currently I face a issues with nicely and lovely Red Audio (Cog?), let's get to the point....
I setup myself an instance of red on my Windows Server, everything went fine till i want to setup few playlists from local albums.

On a first hand i search a lot how to create playlists from local files, how to setup media patch without going on C:\Users\[myuser]\AppData\Local\Red-DiscordBot\Red-DiscordBot\data\[myInstanceOfRed]\cogs\Audio\localtracks and i can't found anything.
I can't find any workaround for the files path, but i found an workaround for creating playlist so, i convert all files to mp3 pack into folders and then upload to %appdata%\Local\Red-DiscordBot\Red-DiscordBot\data\[myInstanceOfRed]\cogs\Audio\localtracks, everything went fine and smooth with follow commands

.local folder [name]
playlist queue [name] --scope Global
.stop
[repeat]

So as i said everything went fine till i have to repeat operation, every playlist queue [name] --scope Global i have to wait 5 minutes to execute another, on a simple math 4 albumes (no matter how long/short are) i have to wait 20 minutes (in total).
It's frustrating not to be able to go over certain limits, even if it means taking risks, since we are talking about a selfhosted instance of Red and just as frustrated is waiting a few hours to get a job done that you can do in 20 minutes at most.

To resume everything.

  • Possibility to create playlist from local files without any cooldown or 'workaround'.
  • Possibility to set custom cooldown on every command. (optionally a warning like, if you fall below a certain value, no more support is offered. You do it at your own risk. )

Transcript from discord: https://gist.github.com/fmohican/9bd522c9550ff787e8ca38c7751099d1

Implementation of this allow. Appending/creating a playlist from an existing local folder.

Given the size of queues and potential risk from it I will not remove the cooldown here unless there's a lot of push back. If there is then I'm removing the 3 scopes and making playlist only creatable by bot owners

@fmohican
Copy link

@fmohican fmohican commented Feb 25, 2021

Implementation of this allow. Appending/creating a playlist from an existing local folder.

Given the size of queues and potential risk from it I will not remove the cooldown here unless there's a lot of push back. If there is then I'm removing the 3 scopes and making playlist only creatable by bot owners

There is no point for that cooldown on local files even old hdd can handle easy hundred of mp3s. There is a lot of time wasted on cooldown, as i said on transcript, for public bot it make sense, for self-hosted instance doesn't, since is my Server/IP/Files its my own responsibility to take care of them. Enforcing limits doesn't help everyone.

Also eliminating local playlists cause a dependency of platforms like youtube/spotify/etc... Don't get me wrong, i like to be in control of my data, even on discord.

@aikaterna
Copy link
Member

@aikaterna aikaterna commented Feb 25, 2021

Please keep arguments off this topic. Thanks.

@Ryonez
Copy link

@Ryonez Ryonez commented Feb 25, 2021

Given the size of queues and potential risk from it I will not remove the cooldown here unless there's a lot of push back. If there is then I'm removing the 3 scopes and making playlist only creatable by bot owners

Could you please go over the potential risks?
We could also have it so the bot owner gets to bypass the cooldown with a prompt maybe.

Edit: Response in Discord:

in short, your bot can get ddosed and/or you could possibly corrupt your playlist files

@aikaterna
Copy link
Member

@aikaterna aikaterna commented Feb 25, 2021

I have already commented on this in support in the main server.

@Mathizsias
Copy link

@Mathizsias Mathizsias commented Mar 19, 2021

Songs when played with !local start are not pre-shuffled and always appear to start with the same song from the folder. Even though the bot is configured to !shuffle. The same !shuffle works fine for !play.

@fixator10
Copy link
Contributor

@fixator10 fixator10 commented Apr 4, 2021

There is some probability that lavalink WS shutdown happens indefinitely, unless SIGKILL happens.

Approximate reproduce steps:

1. Run Red with audio with some usage for some time (probably let it play on some servers)
2. Run `await bot.shutdown(restart=True)`
3. [V3/edge]: Red will stop on `[INFO] red.Audio.WS.LLServer: Shutdown Lavalink WS.`
4. ^ that will continue indefinitely until SIGKILL is given:
   [2021-04-04 00:39:53] [INFO] red.Audio.WS.LLServer: Shutdown Lavalink WS.
   [2021-04-04 00:40:44] [INFO] red.main: Signals.SIGTERM received. Quitting...
   [2021-04-04 00:40:44] [INFO] red.main: Shutting down with exit code: ExitCodes.SHUTDOWN
   [2021-04-04 00:40:44] [INFO] red.main: Please wait, cleaning up a bit more
   Apr 04 04:40:54 systemd[1]: kurisuv3.service: State 'stop-sigterm' timed out. Killing.
   Apr 04 04:40:54 systemd[1]: kurisuv3.service: Killing process 7935 (python3.8) with signal SIGKILL.
   Apr 04 04:40:54 systemd[1]: kurisuv3.service: Main process exited, code=killed, status=9/KILL
   Apr 04 04:40:54 systemd[1]: kurisuv3.service: Failed with result 'timeout'.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Apr 4, 2021

There is some probability that lavalink WS shutdown happens indefinitely, unless SIGKILL happens.

Approximate reproduce steps:

1. Run Red with audio with some usage for some time (probably let it play on some servers)
2. Run `await bot.shutdown(restart=True)`
3. [V3/edge]: Red will stop on `[INFO] red.Audio.WS.LLServer: Shutdown Lavalink WS.`
4. ^ that will continue indefinitely until SIGKILL is given:
   [2021-04-04 00:39:53] [INFO] red.Audio.WS.LLServer: Shutdown Lavalink WS.
   [2021-04-04 00:40:44] [INFO] red.main: Signals.SIGTERM received. Quitting...
   [2021-04-04 00:40:44] [INFO] red.main: Shutting down with exit code: ExitCodes.SHUTDOWN
   [2021-04-04 00:40:44] [INFO] red.main: Please wait, cleaning up a bit more
   Apr 04 04:40:54 systemd[1]: kurisuv3.service: State 'stop-sigterm' timed out. Killing.
   Apr 04 04:40:54 systemd[1]: kurisuv3.service: Killing process 7935 (python3.8) with signal SIGKILL.
   Apr 04 04:40:54 systemd[1]: kurisuv3.service: Main process exited, code=killed, status=9/KILL
   Apr 04 04:40:54 systemd[1]: kurisuv3.service: Failed with result 'timeout'.

I meant here #4565 Fixator, but its fine. i just tested edge and no longer reproducing if the issue persist after the latest update give me a shout on the PR.

@aikaterna
Copy link
Member

@aikaterna aikaterna commented Apr 5, 2021

Just adding a link back to #3492 here as I saw it wasn't linked. I ran into this myself today where I missed the loading message where audio was loading in Spotify tracks.

  • play a spotify playlist
  • bot is still enqueing
  • run [p]stop
  • bot stops playback of current song, keeps feeding in converted songs as it keeps going

@Technetium1
Copy link

@Technetium1 Technetium1 commented Apr 9, 2021

It would be nice to be able to delete large amounts of tracks from the playlist. For example 40-50,52 or 40-50|52. Might be better to use the bar to keep format with the current request for playing multiple tracks, but it feels most natural to use a comma for both.

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented Apr 14, 2021

Note to self: You fucking moron yes its jacks fault but you should make better usage on destination in the arg parse logic ... fix yo shit.

@ltzmax
Copy link
Contributor

@ltzmax ltzmax commented Apr 27, 2021

Add a possible way to toggle notify to a channel, example [p]audioset notify #testing.

@aikaterna
Copy link
Member

@aikaterna aikaterna commented Apr 27, 2021

Add a possible way to toggle notify to a channel, example [p]audioset notify #testing.

This is already listed in the main description of this topic as "setting a lock on the audio set notify channel via this method".

@Drapersniper
Copy link
Contributor Author

@Drapersniper Drapersniper commented May 24, 2021

Closing, this one is becoming ungodly; if i missed anything from #5075 feel free to bring it over there.

@Cog-Creators Cog-Creators locked as off-topic and limited conversation to collaborators May 24, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Category: Audio Cog Type: Informational
Projects
None yet
Development

No branches or pull requests