diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5d1b702ae1a2e10fdde1a1e2a62049508eb1d18f
--- /dev/null
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc
@@ -0,0 +1,24 @@
+#include "TimingLine.hh"
+
+#include <QPainter>
+#include <QGraphicsScene>
+
+#include "TimingUtils.hh"
+
+using namespace Vivy;
+
+TimingLine::TimingLine(QGraphicsItem *parent)
+    : QGraphicsItem(parent)
+{
+}
+
+QRectF
+TimingLine::boundingRect() const
+{
+    return QRectF();
+}
+
+void
+TimingLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+}
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh b/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh
new file mode 100644
index 0000000000000000000000000000000000000000..894a1431962ca97380ca56d5ed9844ef67092cc9
--- /dev/null
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <QGraphicsItem>
+
+namespace Vivy
+{
+class TimingLine final : public QGraphicsItem {
+public:
+    explicit TimingLine(QGraphicsItem *parent = nullptr);
+
+    QRectF boundingRect() const override;
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
+};
+
+}
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingSeparator.cc b/src/UI/DocumentViews/AudioVisualizer/TimingSeparator.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a06827c5a6ddf522d117ac9b542a43c372ea12a1
--- /dev/null
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingSeparator.cc
@@ -0,0 +1,24 @@
+#include "TimingSeparator.hh"
+
+#include <QPainter>
+#include <QGraphicsScene>
+
+#include "TimingUtils.hh"
+
+using namespace Vivy;
+
+TimingSeparator::TimingSeparator(QGraphicsItem *parent)
+    : QGraphicsItem(parent)
+{
+}
+
+QRectF
+TimingSeparator::boundingRect() const
+{
+    return QRectF();
+}
+
+void
+TimingSeparator::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+}
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingSeparator.hh b/src/UI/DocumentViews/AudioVisualizer/TimingSeparator.hh
new file mode 100644
index 0000000000000000000000000000000000000000..a86b8e934c12cefb6a65801bc94819d7530ecac6
--- /dev/null
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingSeparator.hh
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <QGraphicsItem>
+
+namespace Vivy
+{
+class TimingSeparator final : public QGraphicsItem {
+public:
+    explicit TimingSeparator(QGraphicsItem *parent = nullptr);
+
+    QRectF boundingRect() const override;
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
+};
+
+}
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingSyl.cc b/src/UI/DocumentViews/AudioVisualizer/TimingSyl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..93dcc959079f430c120777d3f0d4edcdb75e446a
--- /dev/null
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingSyl.cc
@@ -0,0 +1,24 @@
+#include "TimingSyl.hh"
+
+#include <QPainter>
+#include <QGraphicsScene>
+
+#include "TimingUtils.hh"
+
+using namespace Vivy;
+
+TimingSyl::TimingSyl(QGraphicsItem *parent)
+    : QGraphicsItem(parent)
+{
+}
+
+QRectF
+TimingSyl::boundingRect() const
+{
+    return QRectF();
+}
+
+void
+TimingSyl::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+}
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingSyl.hh b/src/UI/DocumentViews/AudioVisualizer/TimingSyl.hh
new file mode 100644
index 0000000000000000000000000000000000000000..768beb42b61ca051baecbfa7c730d35ce0b41505
--- /dev/null
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingSyl.hh
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <QGraphicsItem>
+
+namespace Vivy
+{
+class TimingSyl final : public QGraphicsItem {
+public:
+    explicit TimingSyl(QGraphicsItem *parent = nullptr);
+
+    QRectF boundingRect() const override;
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
+};
+
+}
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingUtils.hh b/src/UI/DocumentViews/AudioVisualizer/TimingUtils.hh
index 2f709ac59a42138a7e9cf6f6d186390f2bd0d9e6..78d271bf924cd75241f8c149dcd95ae507d65111 100644
--- a/src/UI/DocumentViews/AudioVisualizer/TimingUtils.hh
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingUtils.hh
@@ -7,6 +7,8 @@
 #include <QRectF>
 #include <QString>
 
+#define getTimingScene() static_cast<TimingScene *>(scene())
+
 namespace Vivy
 {
 class TimingUtils {
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingView.cc b/src/UI/DocumentViews/AudioVisualizer/TimingView.cc
index 49fc449af5ccf223cb11323eeec65d15c6338ec4..10948b75b5ef4f6921b02b0c00b6cdae2d30dc0e 100644
--- a/src/UI/DocumentViews/AudioVisualizer/TimingView.cc
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingView.cc
@@ -34,9 +34,3 @@ TimingView::moveScrollBarToBottom(int, int max) noexcept
 {
     verticalScrollBar()->setValue(max);
 }
-
-TimingScene *
-TimingView::getTimingScene() const
-{
-    return static_cast<TimingScene *>(scene());
-}
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingView.hh b/src/UI/DocumentViews/AudioVisualizer/TimingView.hh
index ee8a3a60aa7a7454db1b5ac1111f67648c5ddb6d..ecdb543c998546618cc09e58e0c21340244bb7b8 100644
--- a/src/UI/DocumentViews/AudioVisualizer/TimingView.hh
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingView.hh
@@ -25,7 +25,6 @@ public:
                         QWidget * = nullptr) noexcept;
     ~TimingView() noexcept override = default;
 
-    TimingScene *getTimingScene() const;
     void wheelEvent(QWheelEvent *) noexcept override;
 
 private: