samples(n = 100, start?: number, end?: number) {
        if (start == undefined || end == undefined) {
            const bounds = this.timeBounds();
            start = start ?? bounds[0];
            end = end ?? bounds[1];