Skip to content

Instantly share code, notes, and snippets.

@snakecase
Forked from upgradeQ/beep.lua
Last active November 8, 2024 06:30
Show Gist options
  • Save snakecase/e816384a071cec31efbb4b9e429c108d to your computer and use it in GitHub Desktop.
Save snakecase/e816384a071cec31efbb4b9e429c108d to your computer and use it in GitHub Desktop.
OBS Lua: Sound notification on replay buffer save [Windows]

A simple Lua script which plays a .wav sound whenever replay buffer is saved.

Installation

  1. Download Half-Life 2 City Scanner NPC's camera shutter sound: https://github.com/sourcesounds/hl2/blob/master/sound/npc/scanner/scanner_photo1.wav

    • Or use any .wav sound but make sure to match its name either in "Beep on replay buffer save.lua" (edit with any text editor) or rename your .wav file to "sound_npc_scanner_scanner_photo1.wav".
  2. Put it in the same location with "Beep on replay buffer save.lua"

    • A good way is to create a separate "scripts" folder in %AppData%\obs-studio\ and keep all your scripts there in case you need to backup your OBS Settings.
  3. OBS → Tools → Scripts → +

This Lua script was downloaded from https://gist.github.com/snakecase/e816384a071cec31efbb4b9e429c108d

Credits:

Thank you guys!

local obs = obslua
local ffi = require("ffi")
local winmm = ffi.load("Winmm")
-- Put a sound of your choosing next to "Beep on replay save.lua" and don't forget to match its name either in code below or rename your file.
PROP_AUDIO_FILEPATH = script_path() .. "sound_npc_scanner_scanner_photo1.wav"
ffi.cdef[[
bool PlaySound(const char *pszSound, void *hmod, uint32_t fdwSound);
]]
function playsound(filepath)
winmm.PlaySound(filepath, nil, 0x00020000)
end
function on_event(event)
if event == obs.OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED
then playsound(PROP_AUDIO_FILEPATH)
end
end
function script_load(settings)
obs.obs_frontend_add_event_callback(on_event)
end
-- This Lua script was downloaded from https://gist.github.com/snakecase/e816384a071cec31efbb4b9e429c108d
-- Credits: upgradeQ (https://gist.github.com/upgradeQ/b2412242d76790d7618d6b0996c4562f), gima (https://gitlab.com/gima/obsnotification)
-- Thank you guys!
@geenaxion
Copy link

Thanks for this.
It works as intended.

Got a question though.
How can I mute the sound notifcation on the recording itself? Like it will activate the sound notifcation but on the recording it wont capture the sound?

@ccyannc
Copy link

ccyannc commented Jul 4, 2024

For those getting the default windows background sound, make sure your WAV file is uncompressed.

Windows seems to have issue playing compressed WAV files. Spent too much time googling before I stumbled upon this.

@erasene
Copy link

erasene commented Aug 9, 2024

Just getting the default windows background sound as well

@S4adam
Copy link

S4adam commented Oct 2, 2024

How can I mute the sound notifcation on the recording itself? Like it will activate the sound notifcation but on the recording it wont capture the sound?

you found a workaround yet?

@snakecase
Copy link
Author

Sorry for the late reply. To stop this sound from showing up in recordings you either have to:
A. Reroute playback of this sound to some other device/software channel (not sure it's possible) via code which I have no clue how to implement
B. Record audio only from applications of your preference which can be done via OBS → Sources → Add → Application Audio Capture (BETA). This should work but will require setup each time you change applications (e.g. playing different games)

Regarding issues with playback, I have now tested this script in Win 11 Pro, and it works just fine, as well as in Win 10.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment