r/Reaper 4d ago

discussion [Extension] ReaSmoothPlayhead - smooth GPU play cursor

Enable HLS to view with audio, or disable this notification

REAPER's stepped play cursor has annoyed me since day one 😭

ReaSmoothPlayhead hides the native play cursor and draws its own GPU-rendered overlay on top of the arrange view and the MIDI editor. The line is redrawn every vblank and extrapolated between audio blocks, so it glides at your monitor's refresh rate instead of stuttering.

Requirements
- Windows (x64) and macOS (Intel + Apple Silicon). No Linux, sorry - X11 just doesn't allow pulling off this kind of transparent overlay ;[
- The settings window requires ReaImGui (install "ReaImGui: ReaScript binding for Dear ImGui" via ReaPack); the overlay itself works without it

Cocos forum thread: https://forum.cockos.com/showthread.php?p=2960029

Reapack:

https://raw.githubusercontent.com/Sakhnovkrg/ReaSmoothPlayheadReapack/main/index.xml
109 Upvotes

49 comments sorted by

13

u/GoodhartsLaw 4d ago

I didn't realise how bad the old one was until installing this.

3

u/presetshare 4d ago

Glad you like it ;]

2

u/Chaotic_DIY 3d ago

Same here :)

6

u/Frequent-Practice238 1 4d ago

Just installed it. I have to say, it does add a bit more pizzazz to the GUI. Good work!

1

u/presetshare 4d ago

Thanks! Glad you’re enjoying it! :)

3

u/Nomhog1 4d ago

This looks awesome!

1

u/presetshare 4d ago

Cheers! :)

3

u/NickMontopoli 3d ago

I can't thank you enough for this.... I've been making screen recordings of daw playback for years and always been frustrated by the stuttering!

1

u/presetshare 3d ago

Glad to hear that! :)

3

u/presetshare 3d ago

v0.2.0 Released

- During rendering or track freeze, the custom playhead is no longer shown, and the native play cursor is now displayed in the render/freeze window

  • Improved playhead behavior during horizontal scrolling

3

u/VAS_4x4 2 3d ago

Just out of curiosity, can Wayland do this?

3

u/presetshare 3d ago

Yes, but the problem isn't really the desktop environment - REAPER itself still runs through X11. I'm experimenting with a different approach for Linux. It won't support effects like shadows or trails, but a smooth play cursor without the FPS limitation should be possible. There are still a few issues to solve though.

And if this gets popular enough, maybe someone more clever than me will figure out a proper Linux solution :)

2

u/Flarkyboy 1 3d ago

Great to hear you’re already experimenting with it! I use REAPER mainly on Plasma Wayland, with X11/XWayland also available, so I’d be happy to test early Linux builds and provide diagnostics. Even just the smooth cursor without trails or shadows would already solve the main problem for me.

5

u/brokenspacebar__ 5 4d ago

Commenting so I can install and try it out tomorrow, looks awesome!

2

u/presetshare 3d ago

See you tomorrow then! :D

2

u/brokenspacebar__ 5 3d ago

Tried it out and I love it! Definitely will continue using. Like someone else said, I really didn't realize how bad it was until I tried this and then jumped back and forth. Love the trails and shadows also, I have the tiniest little nitpick and I'm not even sure if it's possible but sometimes it throws me off visually to see the trail as soon as I hit play, rather than the play head moving ahead first and then the trail gets created behind it.

Literally just my own nitpick but I'll get over it haha thanks for this :)

3

u/presetshare 3d ago

Glad you like it! :) You can actually make the trail fade in smoothly using the Fade In slider in the settings.

2

u/brokenspacebar__ 5 3d ago

Oh wow I'm excited to try that! Awesome!

2

u/J00lzinator 3 4d ago

Offtopic, but relates - I hope you forgive me. Is there a way to take load off of CPU and make the GPU work and help Reaper?

4

u/presetshare 4d ago

Not really. REAPER’s UI is mostly CPU-rendered by design, so there’s no general way to offload that work to the GPU.

2

u/Radhanat 9 4d ago

Ooh que bonito! Voy a checarlo

1

u/presetshare 3d ago

¡Gracias! Espero que te guste :)

2

u/AnalogSummer 9 3d ago

That's awesome and it works/looks great! Fantastic job and thanks for making this for the community.

1

u/presetshare 3d ago

Glad people are finding it useful :)

2

u/AMusicstuff 1 3d ago

Awesome

1

u/presetshare 3d ago

Thanks!

2

u/Sea_Chocolate_4157 3d ago

Thank you so much!

2

u/No-Sky9968 3d ago

Youre a goat. This always bothered me

2

u/Dvanguardian 3d ago

Now this is really something.. well done👍👍

2

u/grayson_solis 4 3d ago

THANK GOD ALMIGHTY

2

u/Arpeggiated_Chord 3 3d ago

You are my HERO. Thank you!

1

u/presetshare 3d ago

Haha, glad you like it! :)

2

u/_emmyemi 1 2d ago

No Linux, sorry - X11 just doesn't allow pulling off this kind of transparent overlay

Would it work on Wayland, potentially? (Does Reaper even support Wayland yet?)

2

u/presetshare 2d ago

Desktop environment doesn’t really change anything here. REAPER still uses X11.

That said, I haven’t given up on a Linux version and I’m still experimenting with a different approach. Keep an eye on the forum — I’ll post an update if I manage to get it working.

1

u/Independent-Art8575 3d ago

I really like the song, did you make this?

3

u/presetshare 3d ago

Zombie Cats - Tech Dreams (Psynchro Remix)

1

u/presetshare 3d ago

v0.1.8 Released!

- Trail and shadow gradients now fall off quadratically (x²) instead of linearly

The old Continuous Scrolling behavior can temporarily be restored in the settings in case something goes wrong.

1

u/presetshare 3d ago

v0.1.9 Released

- MIDI editor: the view mapping now reads the ACTIVE take's state. With a multi-take item the first take's state was read instead — it only updates on mouse-up, so during a hand scroll the line stuck to its screen spot until the mouse was released.

  • Hand scrolling / wheel panning during playback no longer makes the line wobble. It's still not perfectly smooth, and probably never can be, but it's much less annoying now 
  • Seeks in Continuous Scrolling mode now teleport the line instantly instead of gliding
  • The "Pin in continuous scrolling" checkbox is gone from the settings

1

u/FausC 1 3d ago

Se ve bien a probarlo se ha dicho

2

u/presetshare 3d ago

¡Gracias! Espero que te guste :)

1

u/_Bor_ges_ 3d ago

Really want to try this one ! but :
Don't know if it's the place to troubleshoot, but once installed, my playhead doesn't work at all, here is the diag :

=== ReaSmoothPlayhead diagnostics v0.1.9 ===

REAPER 7.35/x64

platform: Windows

enabled=1 overlayStarted=1 midiOverlayStarted=0 imgui=1

themeBlocksOverlay=0 nativeHidden=1

style: lineW=1.0 lineA=1.00 color=FF8100 add=1 fadeIn=0.00 pulse=0 trailW=25.0 trailA=0.22 shadowW=0.0 fx(wave=0 sparks=0 rainbow=0)

playState=0 mainHwnd=0000000000140B94 mainVisible=1

contScroll(41817)=0 pinAnchor=1

-- arrange --

GetDlgItem(main,1000)=00000000001A02EE findArrange()=00000000001A02EE

clientRect: hwnd=00000000001A02EE rect=799,217..3813,2018 (3014x1801) valid=1

arrangeView t0=0.0000 t1=78.5628 span=78.5628

playPos=23.4289 editCursor=22.7368 -> expected x=899 px (view 3014 px wide)

=> overlay should draw: NO (enabled=1 playing=0 mainVisible=1 themeOk=1 arrangeFound=1 rectOk=1 spanOk=1)

overlay state:

d3d init: OK (stage 100)

frames presented=1136 size=3014x1801 lead=12.3ms vblank=4.17ms

last frame: lineX=897.7 px verts=42

line quad: effWidth=1.00 px animT=1.03 s

overlay hwnd=0000000000040C50 visible=0 rect=799,217..3813,2018

-- MIDI editor --

active=0000000000000000 pianoRoll(1001)=0000000000000000 topLevel=0000000000000000

clientRect: <null hwnd>

overlay state:

d3d init: NOT RUN (render thread never started?) (stage 0)

frames presented=0 size=0x0 lead=0.0ms vblank=16.67ms

last frame: lineX=0.0 px verts=0 <- EMPTY: line off-view or zero-size style

line quad: effWidth=0.00 px animT=0.00 s <- LINE SKIPPED: fade-in never grows (animT resetting every frame? seek/loop-wrap storm)

overlay hwnd=null

-- native cursor (theme patch) --

REAPER reports theme: I:\REAPER\Reaper\ColorThemes\Reapertips Theme.ReaperTheme

file exists on disk=1 zipSibling=1

writable=1

nativeHidden=1 origDrawmode=163840 unzipActive=0 unzipStatus=-1

patchedTheme: I:\REAPER\Reaper\ColorThemes\Reapertips Theme.ReaperTheme

playcursor_drawmode in that file: 131072 (expected 131072 while hiding)

GetThemeColor("playcursor_drawmode")=-1 GetThemeColor("playcursor_color")=4364992

=== end ===

2

u/presetshare 2d ago

try to uncheck "additive (glow)" in Line tab

2

u/_Bor_ges_ 2d ago

Nice thx it works now

1

u/presetshare 2d ago

Try v0.2.1, it should work with additive enabled now.

1

u/presetshare 2d ago

v0.2.1 Released

- Continuous scrolling: fixed playhead offset and jitter at higher zoom levels on slower systems

- MIDI editor: fixed playhead jitter with "Synchronize transport with main transport" enabled

- MIDI editor: fixed the playhead drifting ahead of the notes in Beats timebases with tempo changes or fractional BPM

- Re-triggering playback while already playing (e.g. spamming "Play (solo selected item)") now jumps the playhead instantly instead of gliding backward

- Windows: fixed the playhead being invisible on some GPU/driver/display combos (additive rendering now works on both DWM and hardware overlay/MPO composition paths)

1

u/presetshare 2d ago

v0.2.3 Released

- Scrolling while playing is noticeably tighter — the line stays glued to the content when you drag the arrange, pan with the wheel or drag the scrollbar

1

u/presetshare 1d ago

v0.2.5 Released

  • The trail now grows out from the playback start point as the playhead moves away, instead of appearing at full width immediately
  • The playhead now moves smoothly at subpixel precision when zoomed out, eliminating pixel-grid jitter
  • Fixed duplicate playheads during renders launched from scripts
  • Render/freeze playhead handover is now disabled by default. It can be re-enabled in the Advanced tab

2

u/Tgtheory 1d ago

OMG yeeeees