import typing

import java
import java.chaquopy
import java.lang
import java.util

class AcousticEchoCanceler(AudioEffect):
    @staticmethod
    def create(audioSession: int | java.jint | java.lang.Integer, /) -> AcousticEchoCanceler | None: ...
    @staticmethod
    def isAvailable() -> bool: ...

class AudioEffect(java.lang.Object):
    ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION: typing.ClassVar[str] = ...
    ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL: typing.ClassVar[str] = ...
    ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION: typing.ClassVar[str] = ...
    ALREADY_EXISTS: typing.ClassVar[int] = ...
    CONTENT_TYPE_GAME: typing.ClassVar[int] = ...
    CONTENT_TYPE_MOVIE: typing.ClassVar[int] = ...
    CONTENT_TYPE_MUSIC: typing.ClassVar[int] = ...
    CONTENT_TYPE_VOICE: typing.ClassVar[int] = ...
    EFFECT_AUXILIARY: typing.ClassVar[str] = ...
    EFFECT_INSERT: typing.ClassVar[str] = ...
    EFFECT_POST_PROCESSING: typing.ClassVar[str] = ...
    EFFECT_PRE_PROCESSING: typing.ClassVar[str] = ...
    EFFECT_TYPE_AEC: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_AGC: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_BASS_BOOST: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_DYNAMICS_PROCESSING: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_ENV_REVERB: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_EQUALIZER: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_HAPTIC_GENERATOR: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_LOUDNESS_ENHANCER: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_NS: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_PRESET_REVERB: typing.ClassVar[java.util.UUID] = ...
    EFFECT_TYPE_VIRTUALIZER: typing.ClassVar[java.util.UUID] = ...
    ERROR: typing.ClassVar[int] = ...
    ERROR_BAD_VALUE: typing.ClassVar[int] = ...
    ERROR_DEAD_OBJECT: typing.ClassVar[int] = ...
    ERROR_INVALID_OPERATION: typing.ClassVar[int] = ...
    ERROR_NO_INIT: typing.ClassVar[int] = ...
    ERROR_NO_MEMORY: typing.ClassVar[int] = ...
    EXTRA_AUDIO_SESSION: typing.ClassVar[str] = ...
    EXTRA_CONTENT_TYPE: typing.ClassVar[str] = ...
    EXTRA_PACKAGE_NAME: typing.ClassVar[str] = ...
    SUCCESS: typing.ClassVar[int] = ...
    def finalize(self) -> None: ...
    def getDescriptor(self) -> AudioEffect.Descriptor: ...
    def getEnabled(self) -> bool: ...
    def getId(self) -> int: ...
    def hasControl(self) -> bool: ...
    @staticmethod
    def queryEffects() -> java.chaquopy.JavaArray[AudioEffect.Descriptor]: ...
    def release(self) -> None: ...
    def setControlStatusListener(self, listener: AudioEffect.OnControlStatusChangeListener, /) -> None: ...
    def setEnableStatusListener(self, listener: AudioEffect.OnEnableStatusChangeListener, /) -> None: ...
    def setEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> int: ...

    class OnEnableStatusChangeListener(java.lang.Object):
        def onEnableStatusChange(self, arg1: AudioEffect, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

    class OnControlStatusChangeListener(java.lang.Object):
        def onControlStatusChange(self, arg1: AudioEffect, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

    class Descriptor(java.lang.Object):
        connectMode: str = ...
        implementor: str = ...
        name: str = ...
        type: java.util.UUID = ...
        uuid: java.util.UUID = ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, type: str | java.lang.String, uuid: str | java.lang.String, connectMode: str | java.lang.String, name: str | java.lang.String, implementor: str | java.lang.String, /) -> None: ...
        def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
        def hashCode(self) -> int: ...

class AutomaticGainControl(AudioEffect):
    @staticmethod
    def create(audioSession: int | java.jint | java.lang.Integer, /) -> AutomaticGainControl | None: ...
    @staticmethod
    def isAvailable() -> bool: ...

class BassBoost(AudioEffect):
    PARAM_STRENGTH: typing.ClassVar[int] = ...
    PARAM_STRENGTH_SUPPORTED: typing.ClassVar[int] = ...
    def __init__(self, priority: int | java.jint | java.lang.Integer, audioSession: int | java.jint | java.lang.Integer, /) -> None: ...
    def getProperties(self) -> BassBoost.Settings: ...
    def getRoundedStrength(self) -> int: ...
    def getStrengthSupported(self) -> bool: ...
    def setParameterListener(self, listener: BassBoost.OnParameterChangeListener, /) -> None: ...
    def setProperties(self, settings: BassBoost.Settings, /) -> None: ...
    def setStrength(self, strength: int | java.jshort | java.lang.Short, /) -> None: ...

    class Settings(java.lang.Object):
        strength: int = ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, settings: str | java.lang.String, /) -> None: ...
        def toString(self) -> str: ...

    class OnParameterChangeListener(java.lang.Object):
        def onParameterChange(self, arg1: BassBoost, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jshort | java.lang.Short, /) -> None: ...

class DynamicsProcessing(AudioEffect):
    VARIANT_FAVOR_FREQUENCY_RESOLUTION: typing.ClassVar[int] = ...
    VARIANT_FAVOR_TIME_RESOLUTION: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self, audioSession: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, priority: int | java.jint | java.lang.Integer, audioSession: int | java.jint | java.lang.Integer, cfg: DynamicsProcessing.Config, /) -> None: ...
    def getChannelByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Channel: ...
    def getChannelCount(self) -> int: ...
    def getConfig(self) -> DynamicsProcessing.Config: ...
    def getInputGainByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> float: ...
    def getLimiterByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Limiter: ...
    def getMbcBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.MbcBand: ...
    def getMbcByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Mbc: ...
    def getPostEqBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.EqBand: ...
    def getPostEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Eq: ...
    def getPreEqBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.EqBand: ...
    def getPreEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Eq: ...
    def setAllChannelsTo(self, channel: DynamicsProcessing.Channel, /) -> None: ...
    def setChannelTo(self, channelIndex: int | java.jint | java.lang.Integer, channel: DynamicsProcessing.Channel, /) -> None: ...
    def setInputGainAllChannelsTo(self, inputGain: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setInputGainbyChannel(self, channelIndex: int | java.jint | java.lang.Integer, inputGain: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setLimiterAllChannelsTo(self, limiter: DynamicsProcessing.Limiter, /) -> None: ...
    def setLimiterByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, limiter: DynamicsProcessing.Limiter, /) -> None: ...
    def setMbcAllChannelsTo(self, mbc: DynamicsProcessing.Mbc, /) -> None: ...
    def setMbcBandAllChannelsTo(self, band: int | java.jint | java.lang.Integer, mbcBand: DynamicsProcessing.MbcBand, /) -> None: ...
    def setMbcBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, mbcBand: DynamicsProcessing.MbcBand, /) -> None: ...
    def setMbcByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, mbc: DynamicsProcessing.Mbc, /) -> None: ...
    def setPostEqAllChannelsTo(self, postEq: DynamicsProcessing.Eq, /) -> None: ...
    def setPostEqBandAllChannelsTo(self, band: int | java.jint | java.lang.Integer, postEqBand: DynamicsProcessing.EqBand, /) -> None: ...
    def setPostEqBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, postEqBand: DynamicsProcessing.EqBand, /) -> None: ...
    def setPostEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, postEq: DynamicsProcessing.Eq, /) -> None: ...
    def setPreEqAllChannelsTo(self, preEq: DynamicsProcessing.Eq, /) -> None: ...
    def setPreEqBandAllChannelsTo(self, band: int | java.jint | java.lang.Integer, preEqBand: DynamicsProcessing.EqBand, /) -> None: ...
    def setPreEqBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, preEqBand: DynamicsProcessing.EqBand, /) -> None: ...
    def setPreEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, preEq: DynamicsProcessing.Eq, /) -> None: ...

    class Stage(java.lang.Object):
        def __init__(self, inUse: bool | java.jboolean | java.lang.Boolean, enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def isEnabled(self) -> bool: ...
        def isInUse(self) -> bool: ...
        def setEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def toString(self) -> str: ...

    class MbcBand(DynamicsProcessing.BandBase):
        @typing.overload
        def __init__(self, cfg: DynamicsProcessing.MbcBand, /) -> None: ...
        @typing.overload
        def __init__(self, enabled: bool | java.jboolean | java.lang.Boolean, cutoffFrequency: float | java.jfloat | java.lang.Float, attackTime: float | java.jfloat | java.lang.Float, releaseTime: float | java.jfloat | java.lang.Float, ratio: float | java.jfloat | java.lang.Float, threshold: float | java.jfloat | java.lang.Float, kneeWidth: float | java.jfloat | java.lang.Float, noiseGateThreshold: float | java.jfloat | java.lang.Float, expanderRatio: float | java.jfloat | java.lang.Float, preGain: float | java.jfloat | java.lang.Float, postGain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def getAttackTime(self) -> float: ...
        def getExpanderRatio(self) -> float: ...
        def getKneeWidth(self) -> float: ...
        def getNoiseGateThreshold(self) -> float: ...
        def getPostGain(self) -> float: ...
        def getPreGain(self) -> float: ...
        def getRatio(self) -> float: ...
        def getReleaseTime(self) -> float: ...
        def getThreshold(self) -> float: ...
        def setAttackTime(self, attackTime: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setExpanderRatio(self, expanderRatio: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setKneeWidth(self, kneeWidth: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setNoiseGateThreshold(self, noiseGateThreshold: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setPostGain(self, postGain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setPreGain(self, preGain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setRatio(self, ratio: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setReleaseTime(self, releaseTime: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setThreshold(self, threshold: float | java.jfloat | java.lang.Float, /) -> None: ...
        def toString(self) -> str: ...

    class Mbc(DynamicsProcessing.BandStage):
        @typing.overload
        def __init__(self, cfg: DynamicsProcessing.Mbc, /) -> None: ...
        @typing.overload
        def __init__(self, inUse: bool | java.jboolean | java.lang.Boolean, enabled: bool | java.jboolean | java.lang.Boolean, bandCount: int | java.jint | java.lang.Integer, /) -> None: ...
        def getBand(self, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.MbcBand: ...
        def setBand(self, band: int | java.jint | java.lang.Integer, bandCfg: DynamicsProcessing.MbcBand, /) -> None: ...
        def toString(self) -> str: ...

    class Limiter(DynamicsProcessing.Stage):
        @typing.overload
        def __init__(self, cfg: DynamicsProcessing.Limiter, /) -> None: ...
        @typing.overload
        def __init__(self, inUse: bool | java.jboolean | java.lang.Boolean, enabled: bool | java.jboolean | java.lang.Boolean, linkGroup: int | java.jint | java.lang.Integer, attackTime: float | java.jfloat | java.lang.Float, releaseTime: float | java.jfloat | java.lang.Float, ratio: float | java.jfloat | java.lang.Float, threshold: float | java.jfloat | java.lang.Float, postGain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def getAttackTime(self) -> float: ...
        def getLinkGroup(self) -> int: ...
        def getPostGain(self) -> float: ...
        def getRatio(self) -> float: ...
        def getReleaseTime(self) -> float: ...
        def getThreshold(self) -> float: ...
        def setAttackTime(self, attackTime: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setLinkGroup(self, linkGroup: int | java.jint | java.lang.Integer, /) -> None: ...
        def setPostGain(self, postGain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setRatio(self, ratio: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setReleaseTime(self, releaseTime: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setThreshold(self, threshold: float | java.jfloat | java.lang.Float, /) -> None: ...
        def toString(self) -> str: ...

    class EqBand(DynamicsProcessing.BandBase):
        @typing.overload
        def __init__(self, cfg: DynamicsProcessing.EqBand, /) -> None: ...
        @typing.overload
        def __init__(self, enabled: bool | java.jboolean | java.lang.Boolean, cutoffFrequency: float | java.jfloat | java.lang.Float, gain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def getGain(self) -> float: ...
        def setGain(self, gain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def toString(self) -> str: ...

    class Eq(DynamicsProcessing.BandStage):
        @typing.overload
        def __init__(self, cfg: DynamicsProcessing.Eq, /) -> None: ...
        @typing.overload
        def __init__(self, inUse: bool | java.jboolean | java.lang.Boolean, enabled: bool | java.jboolean | java.lang.Boolean, bandCount: int | java.jint | java.lang.Integer, /) -> None: ...
        def getBand(self, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.EqBand: ...
        def setBand(self, band: int | java.jint | java.lang.Integer, bandCfg: DynamicsProcessing.EqBand, /) -> None: ...
        def toString(self) -> str: ...

    class Config(java.lang.Object):
        def getChannelByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Channel: ...
        def getInputGainByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> float: ...
        def getLimiterByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Limiter: ...
        def getMbcBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.MbcBand: ...
        def getMbcBandCount(self) -> int: ...
        def getMbcByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Mbc: ...
        def getPostEqBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.EqBand: ...
        def getPostEqBandCount(self) -> int: ...
        def getPostEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Eq: ...
        def getPreEqBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.EqBand: ...
        def getPreEqBandCount(self) -> int: ...
        def getPreEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.Eq: ...
        def getPreferredFrameDuration(self) -> float: ...
        def getVariant(self) -> int: ...
        def isLimiterInUse(self) -> bool: ...
        def isMbcInUse(self) -> bool: ...
        def isPostEqInUse(self) -> bool: ...
        def isPreEqInUse(self) -> bool: ...
        def setAllChannelsTo(self, channel: DynamicsProcessing.Channel, /) -> None: ...
        def setChannelTo(self, channelIndex: int | java.jint | java.lang.Integer, channel: DynamicsProcessing.Channel, /) -> None: ...
        def setInputGainAllChannelsTo(self, inputGain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setInputGainByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, inputGain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setLimiterAllChannelsTo(self, limiter: DynamicsProcessing.Limiter, /) -> None: ...
        def setLimiterByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, limiter: DynamicsProcessing.Limiter, /) -> None: ...
        def setMbcAllChannelsTo(self, mbc: DynamicsProcessing.Mbc, /) -> None: ...
        def setMbcBandAllChannelsTo(self, band: int | java.jint | java.lang.Integer, mbcBand: DynamicsProcessing.MbcBand, /) -> None: ...
        def setMbcBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, mbcBand: DynamicsProcessing.MbcBand, /) -> None: ...
        def setMbcByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, mbc: DynamicsProcessing.Mbc, /) -> None: ...
        def setPostEqAllChannelsTo(self, postEq: DynamicsProcessing.Eq, /) -> None: ...
        def setPostEqBandAllChannelsTo(self, band: int | java.jint | java.lang.Integer, postEqBand: DynamicsProcessing.EqBand, /) -> None: ...
        def setPostEqBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, postEqBand: DynamicsProcessing.EqBand, /) -> None: ...
        def setPostEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, postEq: DynamicsProcessing.Eq, /) -> None: ...
        def setPreEqAllChannelsTo(self, preEq: DynamicsProcessing.Eq, /) -> None: ...
        def setPreEqBandAllChannelsTo(self, band: int | java.jint | java.lang.Integer, preEqBand: DynamicsProcessing.EqBand, /) -> None: ...
        def setPreEqBandByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, band: int | java.jint | java.lang.Integer, preEqBand: DynamicsProcessing.EqBand, /) -> None: ...
        def setPreEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, preEq: DynamicsProcessing.Eq, /) -> None: ...
        def toString(self) -> str: ...

        class Builder(java.lang.Object):
            def __init__(self, variant: int | java.jint | java.lang.Integer, channelCount: int | java.jint | java.lang.Integer, preEqInUse: bool | java.jboolean | java.lang.Boolean, preEqBandCount: int | java.jint | java.lang.Integer, mbcInUse: bool | java.jboolean | java.lang.Boolean, mbcBandCount: int | java.jint | java.lang.Integer, postEqInUse: bool | java.jboolean | java.lang.Boolean, postEqBandCount: int | java.jint | java.lang.Integer, limiterInUse: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
            def build(self) -> DynamicsProcessing.Config: ...
            def setAllChannelsTo(self, channel: DynamicsProcessing.Channel, /) -> DynamicsProcessing.Config.Builder: ...
            def setChannelTo(self, channelIndex: int | java.jint | java.lang.Integer, channel: DynamicsProcessing.Channel, /) -> DynamicsProcessing.Config.Builder: ...
            def setInputGainAllChannelsTo(self, inputGain: float | java.jfloat | java.lang.Float, /) -> DynamicsProcessing.Config.Builder: ...
            def setInputGainByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, inputGain: float | java.jfloat | java.lang.Float, /) -> DynamicsProcessing.Config.Builder: ...
            def setLimiterAllChannelsTo(self, limiter: DynamicsProcessing.Limiter, /) -> DynamicsProcessing.Config.Builder: ...
            def setLimiterByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, limiter: DynamicsProcessing.Limiter, /) -> DynamicsProcessing.Config.Builder: ...
            def setMbcAllChannelsTo(self, mbc: DynamicsProcessing.Mbc, /) -> DynamicsProcessing.Config.Builder: ...
            def setMbcByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, mbc: DynamicsProcessing.Mbc, /) -> DynamicsProcessing.Config.Builder: ...
            def setPostEqAllChannelsTo(self, postEq: DynamicsProcessing.Eq, /) -> DynamicsProcessing.Config.Builder: ...
            def setPostEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, postEq: DynamicsProcessing.Eq, /) -> DynamicsProcessing.Config.Builder: ...
            def setPreEqAllChannelsTo(self, preEq: DynamicsProcessing.Eq, /) -> DynamicsProcessing.Config.Builder: ...
            def setPreEqByChannelIndex(self, channelIndex: int | java.jint | java.lang.Integer, preEq: DynamicsProcessing.Eq, /) -> DynamicsProcessing.Config.Builder: ...
            def setPreferredFrameDuration(self, frameDuration: float | java.jfloat | java.lang.Float, /) -> DynamicsProcessing.Config.Builder: ...

    class Channel(java.lang.Object):
        @typing.overload
        def __init__(self, cfg: DynamicsProcessing.Channel, /) -> None: ...
        @typing.overload
        def __init__(self, inputGain: float | java.jfloat | java.lang.Float, preEqInUse: bool | java.jboolean | java.lang.Boolean, preEqBandCount: int | java.jint | java.lang.Integer, mbcInUse: bool | java.jboolean | java.lang.Boolean, mbcBandCount: int | java.jint | java.lang.Integer, postEqInUse: bool | java.jboolean | java.lang.Boolean, postEqBandCount: int | java.jint | java.lang.Integer, limiterInUse: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def getInputGain(self) -> float: ...
        def getLimiter(self) -> DynamicsProcessing.Limiter: ...
        def getMbc(self) -> DynamicsProcessing.Mbc: ...
        def getMbcBand(self, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.MbcBand: ...
        def getPostEq(self) -> DynamicsProcessing.Eq: ...
        def getPostEqBand(self, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.EqBand: ...
        def getPreEq(self) -> DynamicsProcessing.Eq: ...
        def getPreEqBand(self, band: int | java.jint | java.lang.Integer, /) -> DynamicsProcessing.EqBand: ...
        def setInputGain(self, inputGain: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setLimiter(self, limiter: DynamicsProcessing.Limiter, /) -> None: ...
        def setMbc(self, mbc: DynamicsProcessing.Mbc, /) -> None: ...
        def setMbcBand(self, band: int | java.jint | java.lang.Integer, mbcBand: DynamicsProcessing.MbcBand, /) -> None: ...
        def setPostEq(self, postEq: DynamicsProcessing.Eq, /) -> None: ...
        def setPostEqBand(self, band: int | java.jint | java.lang.Integer, postEqBand: DynamicsProcessing.EqBand, /) -> None: ...
        def setPreEq(self, preEq: DynamicsProcessing.Eq, /) -> None: ...
        def setPreEqBand(self, band: int | java.jint | java.lang.Integer, preEqBand: DynamicsProcessing.EqBand, /) -> None: ...
        def toString(self) -> str: ...

    class BandStage(DynamicsProcessing.Stage):
        def __init__(self, inUse: bool | java.jboolean | java.lang.Boolean, enabled: bool | java.jboolean | java.lang.Boolean, bandCount: int | java.jint | java.lang.Integer, /) -> None: ...
        def getBandCount(self) -> int: ...
        def toString(self) -> str: ...

    class BandBase(java.lang.Object):
        def __init__(self, enabled: bool | java.jboolean | java.lang.Boolean, cutoffFrequency: float | java.jfloat | java.lang.Float, /) -> None: ...
        def getCutoffFrequency(self) -> float: ...
        def isEnabled(self) -> bool: ...
        def setCutoffFrequency(self, frequency: float | java.jfloat | java.lang.Float, /) -> None: ...
        def setEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def toString(self) -> str: ...

class EnvironmentalReverb(AudioEffect):
    PARAM_DECAY_HF_RATIO: typing.ClassVar[int] = ...
    PARAM_DECAY_TIME: typing.ClassVar[int] = ...
    PARAM_DENSITY: typing.ClassVar[int] = ...
    PARAM_DIFFUSION: typing.ClassVar[int] = ...
    PARAM_REFLECTIONS_DELAY: typing.ClassVar[int] = ...
    PARAM_REFLECTIONS_LEVEL: typing.ClassVar[int] = ...
    PARAM_REVERB_DELAY: typing.ClassVar[int] = ...
    PARAM_REVERB_LEVEL: typing.ClassVar[int] = ...
    PARAM_ROOM_HF_LEVEL: typing.ClassVar[int] = ...
    PARAM_ROOM_LEVEL: typing.ClassVar[int] = ...
    def __init__(self, priority: int | java.jint | java.lang.Integer, audioSession: int | java.jint | java.lang.Integer, /) -> None: ...
    def getDecayHFRatio(self) -> int: ...
    def getDecayTime(self) -> int: ...
    def getDensity(self) -> int: ...
    def getDiffusion(self) -> int: ...
    def getProperties(self) -> EnvironmentalReverb.Settings: ...
    def getReflectionsDelay(self) -> int: ...
    def getReflectionsLevel(self) -> int: ...
    def getReverbDelay(self) -> int: ...
    def getReverbLevel(self) -> int: ...
    def getRoomHFLevel(self) -> int: ...
    def getRoomLevel(self) -> int: ...
    def setDecayHFRatio(self, decayHFRatio: int | java.jshort | java.lang.Short, /) -> None: ...
    def setDecayTime(self, decayTime: int | java.jint | java.lang.Integer, /) -> None: ...
    def setDensity(self, density: int | java.jshort | java.lang.Short, /) -> None: ...
    def setDiffusion(self, diffusion: int | java.jshort | java.lang.Short, /) -> None: ...
    def setParameterListener(self, listener: EnvironmentalReverb.OnParameterChangeListener, /) -> None: ...
    def setProperties(self, settings: EnvironmentalReverb.Settings, /) -> None: ...
    def setReflectionsDelay(self, reflectionsDelay: int | java.jint | java.lang.Integer, /) -> None: ...
    def setReflectionsLevel(self, reflectionsLevel: int | java.jshort | java.lang.Short, /) -> None: ...
    def setReverbDelay(self, reverbDelay: int | java.jint | java.lang.Integer, /) -> None: ...
    def setReverbLevel(self, reverbLevel: int | java.jshort | java.lang.Short, /) -> None: ...
    def setRoomHFLevel(self, roomHF: int | java.jshort | java.lang.Short, /) -> None: ...
    def setRoomLevel(self, room: int | java.jshort | java.lang.Short, /) -> None: ...

    class Settings(java.lang.Object):
        decayHFRatio: int = ...
        decayTime: int = ...
        density: int = ...
        diffusion: int = ...
        reflectionsDelay: int = ...
        reflectionsLevel: int = ...
        reverbDelay: int = ...
        reverbLevel: int = ...
        roomHFLevel: int = ...
        roomLevel: int = ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, settings: str | java.lang.String, /) -> None: ...
        def toString(self) -> str: ...

    class OnParameterChangeListener(java.lang.Object):
        def onParameterChange(self, arg1: EnvironmentalReverb, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> None: ...

class Equalizer(AudioEffect):
    PARAM_BAND_FREQ_RANGE: typing.ClassVar[int] = ...
    PARAM_BAND_LEVEL: typing.ClassVar[int] = ...
    PARAM_CENTER_FREQ: typing.ClassVar[int] = ...
    PARAM_CURRENT_PRESET: typing.ClassVar[int] = ...
    PARAM_GET_BAND: typing.ClassVar[int] = ...
    PARAM_GET_NUM_OF_PRESETS: typing.ClassVar[int] = ...
    PARAM_GET_PRESET_NAME: typing.ClassVar[int] = ...
    PARAM_LEVEL_RANGE: typing.ClassVar[int] = ...
    PARAM_NUM_BANDS: typing.ClassVar[int] = ...
    PARAM_STRING_SIZE_MAX: typing.ClassVar[int] = ...
    def __init__(self, priority: int | java.jint | java.lang.Integer, audioSession: int | java.jint | java.lang.Integer, /) -> None: ...
    def getBand(self, frequency: int | java.jint | java.lang.Integer, /) -> int: ...
    def getBandFreqRange(self, band: int | java.jshort | java.lang.Short, /) -> java.chaquopy.JavaArrayJInt: ...
    def getBandLevel(self, band: int | java.jshort | java.lang.Short, /) -> int: ...
    def getBandLevelRange(self) -> java.chaquopy.JavaArrayJShort: ...
    def getCenterFreq(self, band: int | java.jshort | java.lang.Short, /) -> int: ...
    def getCurrentPreset(self) -> int: ...
    def getNumberOfBands(self) -> int: ...
    def getNumberOfPresets(self) -> int: ...
    def getPresetName(self, preset: int | java.jshort | java.lang.Short, /) -> str: ...
    def getProperties(self) -> Equalizer.Settings: ...
    def setBandLevel(self, band: int | java.jshort | java.lang.Short, level: int | java.jshort | java.lang.Short, /) -> None: ...
    def setParameterListener(self, listener: Equalizer.OnParameterChangeListener, /) -> None: ...
    def setProperties(self, settings: Equalizer.Settings, /) -> None: ...
    def usePreset(self, preset: int | java.jshort | java.lang.Short, /) -> None: ...

    class Settings(java.lang.Object):
        bandLevels: java.chaquopy.JavaArrayJShort = ...
        curPreset: int = ...
        numBands: int = ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, settings: str | java.lang.String, /) -> None: ...
        def toString(self) -> str: ...

    class OnParameterChangeListener(java.lang.Object):
        def onParameterChange(self, arg1: Equalizer, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, arg5: int | java.jint | java.lang.Integer, /) -> None: ...

class HapticGenerator(AudioEffect, java.lang.AutoCloseable):
    def close(self) -> None: ...
    @staticmethod
    def create(audioSession: int | java.jint | java.lang.Integer, /) -> HapticGenerator | None: ...
    @staticmethod
    def isAvailable() -> bool: ...
    def release(self) -> None: ...
    def setEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> int: ...

class LoudnessEnhancer(AudioEffect):
    PARAM_TARGET_GAIN_MB: typing.ClassVar[int] = ...
    def __init__(self, audioSession: int | java.jint | java.lang.Integer, /) -> None: ...
    def getTargetGain(self) -> float: ...
    def setTargetGain(self, gainmB: int | java.jint | java.lang.Integer, /) -> None: ...

class NoiseSuppressor(AudioEffect):
    @staticmethod
    def create(audioSession: int | java.jint | java.lang.Integer, /) -> NoiseSuppressor | None: ...
    @staticmethod
    def isAvailable() -> bool: ...

class PresetReverb(AudioEffect):
    PARAM_PRESET: typing.ClassVar[int] = ...
    PRESET_LARGEHALL: typing.ClassVar[int] = ...
    PRESET_LARGEROOM: typing.ClassVar[int] = ...
    PRESET_MEDIUMHALL: typing.ClassVar[int] = ...
    PRESET_MEDIUMROOM: typing.ClassVar[int] = ...
    PRESET_NONE: typing.ClassVar[int] = ...
    PRESET_PLATE: typing.ClassVar[int] = ...
    PRESET_SMALLROOM: typing.ClassVar[int] = ...
    def __init__(self, priority: int | java.jint | java.lang.Integer, audioSession: int | java.jint | java.lang.Integer, /) -> None: ...
    def getPreset(self) -> int: ...
    def getProperties(self) -> PresetReverb.Settings: ...
    def setParameterListener(self, listener: PresetReverb.OnParameterChangeListener, /) -> None: ...
    def setPreset(self, preset: int | java.jshort | java.lang.Short, /) -> None: ...
    def setProperties(self, settings: PresetReverb.Settings, /) -> None: ...

    class Settings(java.lang.Object):
        preset: int = ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, settings: str | java.lang.String, /) -> None: ...
        def toString(self) -> str: ...

    class OnParameterChangeListener(java.lang.Object):
        def onParameterChange(self, arg1: PresetReverb, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jshort | java.lang.Short, /) -> None: ...

class Virtualizer(AudioEffect):
    PARAM_STRENGTH: typing.ClassVar[int] = ...
    PARAM_STRENGTH_SUPPORTED: typing.ClassVar[int] = ...
    VIRTUALIZATION_MODE_AUTO: typing.ClassVar[int] = ...
    VIRTUALIZATION_MODE_BINAURAL: typing.ClassVar[int] = ...
    VIRTUALIZATION_MODE_OFF: typing.ClassVar[int] = ...
    VIRTUALIZATION_MODE_TRANSAURAL: typing.ClassVar[int] = ...
    def __init__(self, priority: int | java.jint | java.lang.Integer, audioSession: int | java.jint | java.lang.Integer, /) -> None: ...
    def canVirtualize(self, inputChannelMask: int | java.jint | java.lang.Integer, virtualizationMode: int | java.jint | java.lang.Integer, /) -> bool: ...
    def forceVirtualizationMode(self, virtualizationMode: int | java.jint | java.lang.Integer, /) -> bool: ...
    def getProperties(self) -> Virtualizer.Settings: ...
    def getRoundedStrength(self) -> int: ...
    def getSpeakerAngles(self, inputChannelMask: int | java.jint | java.lang.Integer, virtualizationMode: int | java.jint | java.lang.Integer, angles: java.chaquopy.JavaArrayJInt, /) -> bool: ...
    def getStrengthSupported(self) -> bool: ...
    def getVirtualizationMode(self) -> int: ...
    def setParameterListener(self, listener: Virtualizer.OnParameterChangeListener, /) -> None: ...
    def setProperties(self, settings: Virtualizer.Settings, /) -> None: ...
    def setStrength(self, strength: int | java.jshort | java.lang.Short, /) -> None: ...

    class Settings(java.lang.Object):
        strength: int = ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, settings: str | java.lang.String, /) -> None: ...
        def toString(self) -> str: ...

    class OnParameterChangeListener(java.lang.Object):
        def onParameterChange(self, arg1: Virtualizer, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jshort | java.lang.Short, /) -> None: ...

class Visualizer(java.lang.Object):
    ALREADY_EXISTS: typing.ClassVar[int] = ...
    ERROR: typing.ClassVar[int] = ...
    ERROR_BAD_VALUE: typing.ClassVar[int] = ...
    ERROR_DEAD_OBJECT: typing.ClassVar[int] = ...
    ERROR_INVALID_OPERATION: typing.ClassVar[int] = ...
    ERROR_NO_INIT: typing.ClassVar[int] = ...
    ERROR_NO_MEMORY: typing.ClassVar[int] = ...
    MEASUREMENT_MODE_NONE: typing.ClassVar[int] = ...
    MEASUREMENT_MODE_PEAK_RMS: typing.ClassVar[int] = ...
    SCALING_MODE_AS_PLAYED: typing.ClassVar[int] = ...
    SCALING_MODE_NORMALIZED: typing.ClassVar[int] = ...
    STATE_ENABLED: typing.ClassVar[int] = ...
    STATE_INITIALIZED: typing.ClassVar[int] = ...
    STATE_UNINITIALIZED: typing.ClassVar[int] = ...
    SUCCESS: typing.ClassVar[int] = ...
    def __init__(self, audioSession: int | java.jint | java.lang.Integer, /) -> None: ...
    def finalize(self) -> None: ...
    def getCaptureSize(self) -> int: ...
    @staticmethod
    def getCaptureSizeRange() -> java.chaquopy.JavaArrayJInt: ...
    def getEnabled(self) -> bool: ...
    def getFft(self, fft: java.chaquopy.JavaArrayJByte, /) -> int: ...
    @staticmethod
    def getMaxCaptureRate() -> int: ...
    def getMeasurementMode(self) -> int: ...
    def getMeasurementPeakRms(self, measurement: Visualizer.MeasurementPeakRms, /) -> int: ...
    def getSamplingRate(self) -> int: ...
    def getScalingMode(self) -> int: ...
    def getWaveForm(self, waveform: java.chaquopy.JavaArrayJByte, /) -> int: ...
    def release(self) -> None: ...
    def setCaptureSize(self, size: int | java.jint | java.lang.Integer, /) -> int: ...
    def setDataCaptureListener(self, listener: Visualizer.OnDataCaptureListener, rate: int | java.jint | java.lang.Integer, waveform: bool | java.jboolean | java.lang.Boolean, fft: bool | java.jboolean | java.lang.Boolean, /) -> int: ...
    def setEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> int: ...
    def setMeasurementMode(self, mode: int | java.jint | java.lang.Integer, /) -> int: ...
    def setScalingMode(self, mode: int | java.jint | java.lang.Integer, /) -> int: ...

    class OnDataCaptureListener(java.lang.Object):
        def onFftDataCapture(self, arg1: Visualizer, arg2: java.chaquopy.JavaArrayJByte, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
        def onWaveFormDataCapture(self, arg1: Visualizer, arg2: java.chaquopy.JavaArrayJByte, arg3: int | java.jint | java.lang.Integer, /) -> None: ...

    class MeasurementPeakRms(java.lang.Object):
        mPeak: int = ...
        mRms: int = ...
        def __init__(self) -> None: ...
