code: def analSineModelStreaming(params, signal):
      # out = numpy.array(0)
      pool = essentia.Pool()
      fcut = es.FrameCutter(
          frameSize=params["frameSize"],
          hopSize=params["hopSize"],
          startFromZero=False,
      )
      w = es.Windowing(type="hann")
      fft = es.FFT(size=params["frameSize"])
      smanal = es.SineModelAnal(
          sampleRate=params["sampleRate"],
          maxnSines=params["maxnSines"],
          magnitudeThreshold=params["magnitudeThreshold"],
          freqDevOffset=params["freqDevOffset"],
          freqDevSlope=params["freqDevSlope"],
      )
  
      # add half window of zeros to input signal to reach same ooutput length
      signal = numpy.append(signal, zeros(params["frameSize"] // 2))
      insignal = VectorInput(signal)
      insignal.data >> fcut.signal
      fcut.frame >> w.frame
      w.frame >> fft.frame
      fft.fft >> smanal.fft
      smanal.magnitudes >> (pool, "magnitudes")
      smanal.frequencies >> (pool, "frequencies")
      smanal.phases >> (pool, "phases")
  
      essentia.run(insignal)
  
      # remove first half window frames
      mags = pool["magnitudes"]
      freqs = pool["frequencies"]
      phases = pool["phases"]
  
      # remove short tracks
      minFrames = int(
          params["minSineDur"]
          * params["sampleRate"]
          / params["hopSize"]
      )
      freqsClean = cleaningSineTracks(freqs, minFrames)
      pool["frequencies"].data = freqsClean
  
      return mags, freqsClean, phases
  
file_path: essentia/test/src/unittests/synthesis/test_sinemodel_streaming.py
imports: from essentia_test import *
  import math
  import essentia
  import essentia.streaming
  import essentia.standard
label_desc: Use image node_id 3 for calling a global function with example usage: analSineModelStreaming(params, signal) and returns: mags,  freqsClean,  phases