def add_interval_annotations(self, temp_idx, durations, labels, values=None, colourName='Purple', colour='#c832ff', name='', view=None, presentationName = None):
        """
        add a labelled interval annotation layer

        Args:
          temp_idx (float iterable): The temporal indices of invervals
          durations (float iterable): intervals durations
          labels (string iterable): interval labels
          values (int iterable): interval numeric values, if set to None, values are set to 0

        Kwargs:
          view (<DOM Element: view>): environment view used to display the spectrogram, if set to None, a new view is created

        """

        model = self.data.appendChild(self.doc.createElement('model'))
        imodel = self.nbdata
        for atname, atval in [('id', imodel + 1),
                              ('dataset', imodel),
                              ('name', name),
                              ('sampleRate', self.samplerate),
                              ('type', 'sparse'),
                              ('dimensions', '3'),
                              ('subtype', 'region'),
                              ('resolution', '1'),
                              ('notifyOnAdd', 'true'),
                              ('units', ''),
                              ('valueQuantization', '0')
                              ]:
            model.setAttribute(atname, str(atval))

        dataset = self.data.appendChild(SVDataset3D(self.doc, str(imodel), self.samplerate))
        if values is None:
            values = ([0] * len(temp_idx))
        dataset.set_data_from_iterable(map(int, np.array(temp_idx) * self.samplerate), values, map(int, np.array(durations) * self.samplerate), labels)
        

        # dataset = self.data.appendChild(self.doc.createElement('dataset'))
        # dataset.setAttribute('id', str(imodel))
        # dataset.setAttribute('dimensions', '3')
        self.nbdata+= 2
        
        valruler = self.__add_time_ruler()
        vallayer = self.__add_region_layer(imodel + 1, name)
        vallayer.setAttribute('colourName', colourName)
        vallayer.setAttribute('colour', colour)
        if presentationName:
            vallayer.setAttribute('presentationName', presentationName)        

        if view is None:
            view = self.__add_view()
        self.__add_layer_reference(view, valruler)
        self.__add_layer_reference(view, vallayer)

        # if values is None:
        #     values = ([0] * len(temp_idx))
        # for t, d, l, v in zip(temp_idx, durations, labels, values):
        #     point = dataset.appendChild(self.doc.createElement('point'))
        #     point.setAttribute('label', l)
        #     point.setAttribute('frame', str(int(t * self.samplerate)))
        #     point.setAttribute('duration', str(int(d * self.samplerate)))
        #     point.setAttribute('value', str(v))
        return view
add a labelled interval annotation layer

        Args:
          temp_idx (float iterable): The temporal indices of invervals
          durations (float iterable): intervals durations
          labels (string iterable): interval labels
          values (int iterable): interval numeric values, if set to None, values are set to 0

        Kwargs:
          view (<DOM Element: view>): environment view used to display the spectrogram, if set to None, a new view is created