docs: def modulate_data(self, buffer: np.ndarray) -> np.ndarray:
          """
          
          :param buffer: Buffer in which the modulated data shall be written, initialized with zeros
          :return: 
          """
          self.ui.prBarGeneration.show()
          self.ui.prBarGeneration.setValue(0)
          self.ui.prBarGeneration.setMaximum(self.table_model.row_count)
          self.modulation_msg_indices.clear()
  
          pos = 0
          for i in range(0, self.table_model.row_count):
              message = self.table_model.protocol.messages[i]
              modulator = self.__get_modulator_of_message(message)
              # We do not need to modulate the pause extra, as result is already initialized with zeros
              modulated = modulator.modulate(start=0, data=message.encoded_bits, pause=0)
              buffer[pos:pos + len(modulated)] = modulated
              pos += len(modulated) + message.pause
              self.modulation_msg_indices.append(pos)
              self.ui.prBarGeneration.setValue(i + 1)
              QApplication.instance().processEvents()
  
          self.ui.prBarGeneration.hide()
          return buffer