package Ġl aval ink . server . player . filters Ċ Ċ import Ġl aval ink . server . player . filters . configs .* Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . sed mell uq . discord . lav ap layer . filter .* Ċ import Ġcom . sed mell uq . discord . lav ap layer . format . Audio Data Format Ċ import Ġcom . sed mell uq . discord . lav ap layer . track . Audio Track Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ class ĠFilter Chain Ġ: ĠP cm Filter Factory Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog : ĠLogger Ġ= ĠLoggerFactory . getLogger ( FilterChain :: class . java ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġfun Ġparse ( json : ĠString ) Ġ= Ġgson . fromJson ( json , ĠFilter Chain :: class . java ) !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġvolume : ĠFloat ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġequal izer : ĠList < Band >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġkar ao ke : ĠKar ao ke Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġtime scale : ĠTime scale Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġtre mo lo : ĠTre mo lo Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġvi br ato : ĠV ibr ato Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġdist or sion : ĠDist ortion Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġrotation : ĠRotation Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġlow pass : ĠLow pass Config ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġbuild List () Ġ= ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvolume ?. let Ġ{ ĠVolume Config ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġequal izer ?. let Ġ{ ĠEqual izer Config ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkar ao ke , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime scale , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtre mo lo , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ato , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdist or sion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlow pass ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġis Enabled Ġget () Ġ= Ġbuild List (). any Ġ{ Ġit . isEnabled Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Chain ( track : ĠAudio Track ?, Ġformat : ĠAudio Data Format , Ġoutput : ĠUniversal P cm Audio Filter ): ĠMutable List < Audio Filter > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenabled Filters Ġ= Ġbuild List (). take If Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġval Ġpipeline Ġ= Ġmutable ListOf < Float P cm Audio Filter >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( filter Ġin Ġenabled Filters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput To Ġ= Ġpipeline . last OrNull () Ġ?: Ġoutput ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline . add ( filter . build ( format , Ġoutput To )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpipeline . reversed (). to Mutable List () Ġ// ĠOutput Ġlast ĊĠĠĠ Ġ} Ċ Ċ }