code: def update(self):
      stime = time.time()
      for i, line in enumerate(self.y):
          y = np.array([line] * self.points)
  
          amp = 10 / (i + 1)
          phase = self.phase * (i + 1) - 10
          freq = self.x * (i + 1) / 10
  
          sine = amp * np.sin(freq - phase)
          pts = np.vstack([self.x, y, sine]).transpose()
  
          self.set_plotdata(
              name=i,
              points=pts,
              color=pg.glColor((i, self.lines * 1.3)),
              width=3,
          )
          self.phase -= 0.0002
  
      print("{:.0f} FPS".format(1 / (time.time() - stime)))
  
file_path: audio-spectrum-analyzer/pygraphGL_multsine.py
imports: from pyqtgraph.Qt import QtCore, QtGui
  import pyqtgraph.opengl
  import pyqtgraph
  import numpy
  import sys
  import time
label_desc: Use image node_id 4 for calling the Visualizer obj's underlying member method code with example usage: obj.update() without return types