QYDocs

Spectrum 模块

音频频谱分析与 VU 表处理组件,支持单声道/双声道分离处理、音量增益补偿等功能。

依赖

implementation("io.github.qytech:spectrum:0.2.1")

功能特性


更新日志

v0.2.1(2026-07-28)


v0.2.0(2026-07-24)


v0.1.9(2026-07-09)


v0.1.8(2026-07-07)


v0.1.7(2026-06-16)

v0.1.6(2026-06-08)

SpectrumVuProcessor.getInstance(fftSize = 1024)
StereoSpectrumVuProcessor.getInstance(fftSize = 1024)

v0.1.4


v0.1.3

class StereoSpectrumVuProcessor(
    sampleRate: Int = 44100,
    fftSize: Int = 1024,
    windowType: WindowType = WindowType.HANNING,
    muteThreshold: Double = 5e-4,
    private val bandCount: Int = 128,
    private val minFreq: Double = 50.0,
    private val maxFreq: Double = 20000.0,
)

StereoSpectrumVuView(context).apply {
    setBarCount(128)
}

private var spectrumVuProcessor: StereoSpectrumVuProcessor? = null

fun startRecord() {
    spectrumVuProcessor = StereoSpectrumVuProcessor(bandCount = 128)
    spectrumVuProcessor?.setStereoSpectrumListener(object : StereoSpectrumVuUpdateListener {
        override fun onStereoSpectrumUpdated(
            leftDbList: DoubleArray,
            rightDbList: DoubleArray,
        ) {
            _dbLeftList.value = leftDbList
            _dbRightList.value = rightDbList
        }
        
        override fun onVuDataUpdated(vuData: VuData) {
            _vuData.value = vuData
        }
    })
    spectrumVuProcessor?.setCapturePriority(LoopbackPriority.PRIORITY_SOFTWARE_ONLY)
    spectrumVuProcessor?.start()
}

fun stopRecord() {
    spectrumVuProcessor?.removeStereoSpectrumListener()
    spectrumVuProcessor?.stop()
    spectrumVuProcessor?.release()
}

v0.1.2

enum class LoopbackPriority {
    PRIORITY_AUTO,
    PRIORITY_SOFTWARE_FIRST,
    PRIORITY_HARDWARE_FIRST,
    PRIORITY_SOFTWARE_ONLY,
    PRIORITY_HARDWARE_ONLY
}

class SpectrumVuProcessor {
    fun setCapturePriority(priority: LoopbackPriority)
}

v0.0.9

v0.0.7

v0.0.6