code: def __init__(self):
      super(SfxExtractor, self).__init__()
  
      envelope = Envelope()
      decrease = Decrease()
      accu = RealAccumulator()
      cm = CentralMoments()
      ds = DistributionShape()
      centroid = Centroid()
      duration = EffectiveDuration()
      log = LogAttackTime()
      decay = StrongDecay()
      flatness = FlatnessSFX()
      max = MaxToTotal()
      tc = TCToTotal()
      der = DerivativeSFX()
  
      accu.array >> cm.array
      cm.centralMoments >> ds.centralMoments
      envelope.signal >> accu.data
      accu.array >> decrease.array
      accu.array >> centroid.array
      accu.array >> duration.signal
      accu.array >> log.signal
      accu.array >> flatness.envelope
      accu.array >> der.envelope
      envelope.signal >> decay.signal
      envelope.signal >> max.envelope
      envelope.signal >> tc.envelope
  
      # define inputs:
      self.inputs["signal"] = envelope.signal
  
      # define outputs:
      self.outputs["temporal_decrease"] = decrease.decrease
      self.outputs["temporal_kurtosis"] = ds.kurtosis
      self.outputs["temporal_spread"] = ds.spread
      self.outputs["temporal_skewness"] = ds.skewness
      self.outputs["temporal_centroid"] = centroid.centroid
      self.outputs["effective_duration"] = duration.effectiveDuration
      self.outputs["logattacktime"] = log.logAttackTime
      self.outputs["strongdecay"] = decay.strongDecay
      self.outputs["flatness"] = flatness.flatness
      self.outputs["max_to_total"] = max.maxToTotal
      self.outputs["tc_to_total"] = tc.TCToTotal
      self.outputs["der_av_after_max"] = der.derAvAfterMax
      self.outputs["max_der_before_max"] = der.maxDerBeforeMax
  
imports: import sys, os
  import essentia, essentia.standard, essentia.streaming
  from essentia.streaming import *
label_desc: Use image node_id 1 to create a new SfxExtractor object from inherited base classes: essentia.streaming with example: obj = SfxExtractor()