@Override
  public void doDisplayProcessing(
      final ThreadSpecificTemporaryEventStorage tempEventStorage,
      final MadTimingParameters timingParameters,
      final long currentGuiTick) {
    localQueueBridge.receiveQueuedEventsToUi(tempEventStorage, instance, this);

    super.doDisplayProcessing(tempEventStorage, timingParameters, currentGuiTick);

    if (peakAmpAccumulator.hasNewAmps()) {
      final float[][] computedAmps = peakAmpAccumulator.getComputedAmpsMarkTaken();
      specDataListener.processScopeData(computedAmps[0]);
    }
  }
  @Override
  public void receiveStartup(
      final HardwareIOChannelSettings ratesAndLatency,
      final MadTimingParameters timingParameters,
      final MadFrameTimeFactory frameTimeFactory) {
    super.receiveStartup(ratesAndLatency, timingParameters, frameTimeFactory);
    dataRate = ratesAndLatency.getAudioChannelSetting().getDataRate();
    initialiseBuffers();

    peakAmpAccumulator.reset();
  }