diff --git a/src/Lib/Ass/Line.cc b/src/Lib/Ass/Line.cc
index 046e313168aeaaf52a917bafc7e0a00d0f7ea718..71eafe81220b7297af8db8067a22496d6e7418c8 100644
--- a/src/Lib/Ass/Line.cc
+++ b/src/Lib/Ass/Line.cc
@@ -134,3 +134,21 @@ Line::getIsComment() const noexcept
 {
     return isComment;
 }
+
+quint64
+Line::getStart() const noexcept
+{
+    return start;
+}
+
+quint64
+Line::getEnd() const noexcept
+{
+    return end;
+}
+
+QString
+Line::getContentAsText() const noexcept
+{
+    return ___contentAsText;
+}
diff --git a/src/Lib/Ass/Line.hh b/src/Lib/Ass/Line.hh
index 11f91de64ed4c0c204b096080b16ec453f97eb63..f24b2e9e48005a850d7fe2c429a5bdc015ff4276 100644
--- a/src/Lib/Ass/Line.hh
+++ b/src/Lib/Ass/Line.hh
@@ -44,6 +44,10 @@ public:
     StyleWeakPtr getStyle() const noexcept;
     const QVector<Syl> &getContent() const noexcept;
 
+    quint64 getStart() const noexcept;
+    quint64 getEnd() const noexcept;
+    QString getContentAsText() const noexcept;
+
 private:
     void initSylFromString(const QString &) noexcept;
 };
diff --git a/src/UI/DocumentViews/TimingAxis.cc b/src/UI/DocumentViews/TimingAxis.cc
index f7bdb827cd322f72df84fab3f6c085fbf12620f2..7183b82614d46b08ad7fc57d9f16db4e2721df62 100644
--- a/src/UI/DocumentViews/TimingAxis.cc
+++ b/src/UI/DocumentViews/TimingAxis.cc
@@ -25,7 +25,7 @@ TimingAxis::TimingAxis(AudioContext::StreamPtr stream, int x0_, int x1_, int y_)
 QRectF
 TimingAxis::boundingRect() const
 {
-    return QRectF(x0, y - penWidth, x1, y + penWidth);
+    return QRectF(x0, 0, x1, y + ticksBase + penWidth*2);
 }
 
 /*
diff --git a/src/UI/DocumentViews/TimingScene.cc b/src/UI/DocumentViews/TimingScene.cc
index 9a87e6505501d4a3973b15b8641367cba73ff31d..af78ff7a2bb7699a0ae2936a48e47ab3b313d0e8 100644
--- a/src/UI/DocumentViews/TimingScene.cc
+++ b/src/UI/DocumentViews/TimingScene.cc
@@ -1,5 +1,8 @@
 #include "TimingScene.hh"
+
 #include "../../Lib/Utils.hh"
+#include "../../Lib/Ass/Ass.hh"
+#include "../../Lib/Document/VivyDocument.hh"
 
 #include <QGraphicsLineItem>
 #include <QGraphicsPixmapItem>
@@ -29,7 +32,33 @@ TimingScene::TimingScene(QImage img_, AudioContext::StreamPtr stream, QWidget *p
     backgroundImg = addPixmap(pixmap);
     ax = new TimingAxis(stream, 0, pixmap.width(), 10);
     addItem(ax);
+
     ax->refreshTicks();
+
+    if (auto assDocument = currentVivyDocument->getAssSubDocument()){
+        QVector<Ass::LinePtr> lines = assDocument->getLines();
+        for (int i = 0; i < lines.size(); ++i) {
+            if (auto line = lines.at(i).get()){
+                qreal xstart = posFromTime(line->getStart());
+                TimingBar* bar = new TimingBar(QLine(int(xstart), 30, int(xstart), int(height())), QColor(127,0,0));
+                bar->setZValue(10);
+                addItem(bar);
+                qreal xend = posFromTime(line->getEnd());
+                bar = new TimingBar(QLine(int(xend), 30, int(xend), int(height())), QColor(127,0,0));
+                bar->setZValue(10);
+                addItem(bar);
+                QGraphicsRectItem* rect = new QGraphicsRectItem(xstart, 30, xend-xstart, int(height())-30);
+                addItem(rect);
+                rect->setBrush(Qt::blue);
+                rect->setOpacity(0.1);
+                QGraphicsTextItem* text = new QGraphicsTextItem(line->getContentAsText());
+                addItem(text);
+                text->setZValue(5);
+                text->setTextWidth(xend-xstart-10);
+                text->setPos(xstart+5, 30+(height()-30)/2);
+            }
+        }
+    }
 }
 
 void
@@ -76,13 +105,13 @@ TimingScene::handleMousePressEventChar(QGraphicsSceneMouseEvent *, Ass::LinePtr)
 }
 
 quint64
-TimingScene::timeFromPos(qreal x) const
+TimingScene::timeFromPos(qreal x) const noexcept
 {
     return timeFromPos(quint64(x));
 }
 
 quint64
-TimingScene::timeFromPos(quint64 x) const
+TimingScene::timeFromPos(quint64 x) const noexcept
 {
     if (const quint64 w = quint64(width()); x <= 0 || w <= 0) {
         qCritical() << "Try avoid possible divide by zero in the time from position";
@@ -92,6 +121,17 @@ TimingScene::timeFromPos(quint64 x) const
     }
 }
 
+qreal
+TimingScene::posFromTime(quint64 t) const noexcept
+{
+    if (const quint64 w = quint64(width()); t <= 0 || w <= 0) {
+        qCritical() << "Try avoid possible divide by zero in the position from time";
+        return 0;
+    } else {
+        return 10 * t * w / audioStream->getLength();
+    }
+}
+
 QGraphicsPixmapItem *
 TimingScene::bg() noexcept
 {
diff --git a/src/UI/DocumentViews/TimingScene.hh b/src/UI/DocumentViews/TimingScene.hh
index 86b1be9bde029b5e7bf25a25f889a213c5afd97b..95d000b2fb8282340a47e50dc07e717f690398b1 100644
--- a/src/UI/DocumentViews/TimingScene.hh
+++ b/src/UI/DocumentViews/TimingScene.hh
@@ -37,8 +37,9 @@ public:
     TimingAxis *getAxis();
 
 private:
-    quint64 timeFromPos(qreal x) const;
-    quint64 timeFromPos(quint64 x) const;
+    quint64 timeFromPos(qreal x) const noexcept;
+    quint64 timeFromPos(quint64 x) const noexcept;
+    qreal posFromTime(quint64 t) const noexcept;
     void handleMousePressEventLine(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
     void handleMousePressEventSyl(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
     void handleMousePressEventChar(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;