def collect_sound_streams(self):
        """
        Return a list of sound streams in this timeline and its children.
        The streams are returned in order with respect to the timeline.

        A stream is returned as a list: the first element is the tag
        which introduced that stream; other elements are the tags
        which made up the stream body (if any).
        """
        rc = []
        current_stream = None
        # looking in all containers for frames
        for tag in self.all_tags_of_type((TagSoundStreamHead, TagSoundStreamBlock)):
            if isinstance(tag, TagSoundStreamHead):
                # we have a new stream
                current_stream = [ tag ]
                rc.append(current_stream)
            if isinstance(tag, TagSoundStreamBlock):
                # we have a frame for the current stream
                current_stream.append(tag)
        return rc
Return a list of sound streams in this timeline and its children.
        The streams are returned in order with respect to the timeline.

        A stream is returned as a list: the first element is the tag
        which introduced that stream; other elements are the tags
        which made up the stream body (if any).