@Override public boolean canProvide() { if (lastFrame == null) lastFrame = audioPlayer.provide(); return lastFrame != null; }
@Override public AudioPlayer createPlayer() { AudioPlayer player = constructPlayer(); player.addListener(lifecycleManager); if (remoteNodeManager.isEnabled()) { player.addListener(remoteNodeManager); } return player; }
public synchronized boolean isPlaying() { return player.getPlayingTrack() != null; }
/** * check if the player can be paused to start with * * @return if its either playing or already paused */ public synchronized boolean canTogglePause() { return player.getPlayingTrack() != null || player.isPaused(); }
/** * toggle paused * * @return true if paused, false otherwise */ public synchronized boolean togglePause() { if (!player.isPaused()) { pauseStart = System.currentTimeMillis() / 1000L; player.setPaused(true); } else { currentSongStartTimeInSeconds += (System.currentTimeMillis() / 1000L) - pauseStart; player.setPaused(false); } return player.isPaused(); }
public void skipTrack() { trackEnded(); if (isInRepeatMode() && player.getPlayingTrack() != null) { player.startTrack(player.getPlayingTrack().makeClone(), false); return; } player.stopTrack(); QueuedAudioTrack poll = queue.poll(); if (poll != null) { lastRequester = poll.getUserId(); player.startTrack(poll.getTrack(), false); } }
@Override public void doCommand(CommandEvent event) { AudioHandler handler = (AudioHandler)event.getGuild().getAudioManager().getSendingHandler(); User u = event.getJDA().getUserById(handler.getRequester()); event.reply(event.getClient().getSuccess()+" Skipped **"+handler.getPlayer().getPlayingTrack().getInfo().title +"** (requested by "+(u==null ? "someone" : "**"+u.getName()+"**")+")"); handler.getPlayer().stopTrack(); } }
@Override public void doCommand(CommandEvent event) { AudioHandler handler = (AudioHandler)event.getGuild().getAudioManager().getSendingHandler(); if(handler.getPlayer().isPaused()) { event.replyWarning("The player is already paused! Use `"+event.getClient().getPrefix()+"play` to unpause!"); return; } handler.getPlayer().setPaused(true); event.replySuccess("Paused **"+handler.getPlayer().getPlayingTrack().getInfo().title+"**. Type `"+event.getClient().getPrefix()+"play` to unpause!"); } }
public String getTopicFormat(JDA jda) { if(isMusicPlaying(jda)) { long userid = getRequester(); AudioTrack track = audioPlayer.getPlayingTrack(); String title = track.getInfo().title; if(title==null || title.equals("Unknown Title")) title = track.getInfo().uri; return "**"+title+"** ["+(userid==0 ? "autoplay" : "<@"+userid+">")+"]" + "\n" + (audioPlayer.isPaused() ? JMusicBot.PAUSE_EMOJI : JMusicBot.PLAY_EMOJI) + " " + "[" + FormatUtil.formatTime(track.getDuration()) + "] " + FormatUtil.volumeIcon(audioPlayer.getVolume()); } else return "No music playing " + JMusicBot.STOP_EMOJI + " " + FormatUtil.volumeIcon(audioPlayer.getVolume()); }
public static long consumeTrack(AudioPlayer player) throws Exception { ByteBuffer buffer = ByteBuffer.allocate(960 * 2 * 2); MutableAudioFrame frame = new MutableAudioFrame(); frame.setBuffer(buffer); CRC32 crc = new CRC32(); while (player.getPlayingTrack() != null && player.provide(frame, 10, TimeUnit.SECONDS)) { buffer.flip(); crc.update(buffer.array(), buffer.position(), buffer.remaining()); } return crc.getValue(); } }
public int addTrack(QueuedTrack qtrack) { if(audioPlayer.getPlayingTrack()==null) { audioPlayer.playTrack(qtrack.getTrack()); return -1; } else return queue.add(qtrack); }
private MusicPlayerHandler(Guild guild, DiscordBot bot) { rng = new Random(); AudioManager guildManager = guild.getAudioManager(); player = playerManager.createPlayer(); this.bot = bot; this.guildId = guild.getIdLong(); guildManager.setSendingHandler(new AudioPlayerSendHandler(player)); queue = new LinkedList<>(); scheduler = new TrackScheduler(player); player.addListener(scheduler); player.setVolume(Integer.parseInt(GuildSettings.get(guild.getIdLong()).getOrDefault(GSetting.MUSIC_VOLUME))); playerInstances.put(guild.getIdLong(), this); int savedPlaylist = Integer.parseInt(GuildSettings.get(guild.getIdLong()).getOrDefault(GSetting.MUSIC_PLAYLIST_ID)); if (savedPlaylist > 0) { playlist = CPlaylist.findById(savedPlaylist); } if (savedPlaylist == 0 || playlist.id == 0) { playlist = CPlaylist.getGlobalList(); } activePlayListId = playlist.id; skipVotes = new HashSet<>(); }
if (musicManager == null || musicManager.getPlayer().getPlayingTrack() == null) { context.reply("No music is playing on this guild! To play a song use `{{prefix}}play`"); return; context.reply("Current volume: **%d**", musicManager.getPlayer().getVolume()); return; musicManager.getPlayer().setVolume(newVolume); context.reply("Set volume to **%d**", newVolume); } catch (NumberFormatException e) {
/** * Start the next track, stopping the current one if it is playing. */ public void nextTrack() { // Start the next track, regardless of if something is already playing or not. In case queue was empty, we are // giving null to startTrack, which is a valid argument and will simply stop the player. player.startTrack(queue.poll(), false); }
private void initialize() { if (!initialized) { initialized = true; log.debug("Initializing centralized stream for {}.", track.getInfo()); trackPlayer.addListener(new Listener()); trackPlayer.playTrack(track); } }
@Override public void close() throws IOException { player.stopTrack(); }
@Override public boolean startTrack(AudioTrack track, boolean noInterrupt) { if (track == null) { stopTrack(); } else { synchronized (lock) { AudioTrack previousTrack = getPlayingTrack(); if (noInterrupt && previousTrack != null) { return false; } if (previousTrack != null) { if (streamCursor == null) { fallback.stopTrack(); } else { detachStream(); } dispatchEvent(new TrackEndEvent(this, previousTrack, REPLACED)); } streamCursor = manager.openTrack(track, detachListener); if (streamCursor == null) { fallback.startTrack(track, false); } dispatchEvent(new TrackStartEvent(this, track)); } } return true; }
@Override public void doCommand(CommandEvent event) { AudioHandler handler = (AudioHandler)event.getGuild().getAudioManager().getSendingHandler(); Settings settings = event.getClient().getSettingsFor(event.getGuild()); int volume = handler.getPlayer().getVolume(); if(event.getArgs().isEmpty()) { event.reply(FormatUtil.volumeIcon(volume)+" Current volume is `"+volume+"`"); } else { int nvolume; try{ nvolume = Integer.parseInt(event.getArgs()); }catch(NumberFormatException e){ nvolume = -1; } if(nvolume<0 || nvolume>150) event.reply(event.getClient().getError()+" Volume must be a valid integer between 0 and 150!"); else { handler.getPlayer().setVolume(nvolume); settings.setVolume(nvolume); event.reply(FormatUtil.volumeIcon(nvolume)+" Volume changed from `"+volume+"` to `"+nvolume+"`"); } } }
@Override public int getVolume() { return fallback.getVolume(); }
@Override public boolean isPaused() { return fallback.isPaused(); }