Class AudioMixerSendHandler

java.lang.Object
com.dianxin.tori.api.lavaplayer.AudioMixerSendHandler
All Implemented Interfaces:
net.dv8tion.jda.api.audio.AudioSendHandler

public class AudioMixerSendHandler extends Object implements net.dv8tion.jda.api.audio.AudioSendHandler
Audio mixer handler that combines multiple Lavaplayer audio sources into a single audio stream for Discord transmission.

This class allows registering multiple audio players (e.g., music, TTS, sound effects) on different channels and mixes their outputs together. It implements AudioSendHandler to provide 20ms audio frames to JDA's audio system.

The mixing process:

  1. Collects audio frames from all registered players
  2. Sums the PCM samples (accumulation)
  3. Applies clipping to prevent audio distortion
  4. Converts the mixed signal back to byte format for transmission

Usage example:


 AudioMixerSendHandler mixer = new AudioMixerSendHandler();
 mixer.registerChannel("MUSIC", musicPlayer);
 mixer.registerChannel("TTS", ttsPlayer);
 audioConnection.setAudioSendHandler(mixer);
 
See Also:
  • AudioPlayer
  • Constructor Details

    • AudioMixerSendHandler

      public AudioMixerSendHandler()
  • Method Details

    • registerChannel

      public void registerChannel(String channelId, com.sedmelluq.discord.lavaplayer.player.AudioPlayer player)
      Registers an AudioPlayer to a specific channel.
      Parameters:
      channelId - Channel name (Ex: "MUSIC", "TTS")
      player - Lavaplayer AudioPlayer instance
    • removeChannel

      public void removeChannel(String channelId)
    • canProvide

      public boolean canProvide()
      Specified by:
      canProvide in interface net.dv8tion.jda.api.audio.AudioSendHandler
    • provide20MsAudio

      public ByteBuffer provide20MsAudio()
      Specified by:
      provide20MsAudio in interface net.dv8tion.jda.api.audio.AudioSendHandler
    • isOpus

      public boolean isOpus()
      Specified by:
      isOpus in interface net.dv8tion.jda.api.audio.AudioSendHandler