MAIDR + AnyChart Gantt Chart

Click on the chart and use the up and down arrow keys to move between lanes, and the left and right arrow keys to move between the intervals booked on one. Pitch carries how long an interval runs and the stereo position carries when it starts — mapped along the whole timeline rather than by column — so two tasks that overlap sound like they overlap. Press B for braille, T for text descriptions, and S to toggle sonification.

The dates are restated in whole days and announced with the unit named, because the tree holds milliseconds since the epoch and a nine-digit figure carries nothing by ear. A schedule shorter than two days is read in hours instead. Each end is still announced as a date: the x axis carries a formatter that turns a position back into one.

anychart.ganttResource() is read the same way. Its rows carry a periods array rather than one pair of dates, so a lane holds several intervals — which is what the nested shape is for. anychart.timeline() is a different chart and is not read here: its moment series are instants rather than intervals, and reading one as a schedule would announce work the chart never drew.