[Request] Make a (configurable) sound when done

Everything related to MakeMKV
Post Reply
wildweasel
Posts: 1
Joined: Sat Jan 31, 2026 9:12 pm

[Request] Make a (configurable) sound when done

Post by wildweasel »

I have been using MakeMKV for the better part of a year by now, in the process of backing up my family's DVD library (over 800 titles so far). It's been going well outside of a few stubborn titles.

What I would like, more than anything, is an option in MakeMKV to play a sound effect when an operation is complete. At roughly 20 minutes per disc (depending on protection), my attention is not constantly on the program, and it would be nice to at least hear a ping (or whatever sound I choose) when the current disc is done.
solrac21
Posts: 2
Joined: Wed Feb 04, 2026 10:51 pm

Re: [Request] Make a (configurable) sound when done

Post by solrac21 »

Hello, here is a python script that i run that plays a sound when the makemkv beta popup comes up. it will wait for you to click ok and then be ready for the next popup.

rename file to .py and I run it with the command prompt. you should be able to change the sound by modifying the SOUND_ALIAS = "SystemAsterisk" line.

Hope this helps.
dcoke22
Posts: 4426
Joined: Wed Jul 22, 2020 11:25 pm

Re: [Request] Make a (configurable) sound when done

Post by dcoke22 »

solrac21 wrote:
Wed Feb 04, 2026 10:59 pm
Hello, here is a python script that i run that plays a sound when the makemkv beta popup comes up. it will wait for you to click ok and then be ready for the next popup.

rename file to .py and I run it with the command prompt. you should be able to change the sound by modifying the SOUND_ALIAS = "SystemAsterisk" line.

Hope this helps.
If you tried to have an attachment, it didn't attach.
solrac21
Posts: 2
Joined: Wed Feb 04, 2026 10:51 pm

Re: [Request] Make a (configurable) sound when done

Post by solrac21 »

paste this into a notepad and change the extension to .py

import time
import sys
import platform
import os
import psutil

# Imports for Windows-specific functionality
import win32gui # Used for checking active windows (requires 'pip install pywin32')
import winsound # Used for reliable sound playback (built-in)

# --- CONFIGURATION ---

# 1. The exact window title of the popup that appears when ripping is complete.
MAKEMKV_POPUP_TITLE = "MakeMKV BETA popup"

# 2. How often (in seconds) to check for the popup window and the MakeMKV process.
CHECK_INTERVAL_SECONDS = 10

# 3. Sound setting: Use a reliable Windows System Alias (e.g., 'SystemAsterisk').
SOUND_ALIAS = "SystemAsterisk"

# --- HELPER FUNCTIONS ---

def find_makemkv_popup(title):
"""Checks for the existence of a window with the exact given title."""
return win32gui.FindWindow(None, title) != 0

def is_makemkv_running():
"""Checks if the main MakeMKV GUI process is running."""
for proc in psutil.process_iter(['name']):
if proc.info['name'].lower() == "makemkv.exe":
return True
return False

def play_notification_sound(alias):
"""Plays a Windows system sound alias for guaranteed audio feedback."""
try:
# SND_ALIAS plays a registered system sound
winsound.PlaySound(alias, winsound.SND_ALIAS)
except Exception as e:
print(f"\nError playing system sound: {e}")

def check_for_completion():
"""Monitors for the MakeMKV completion popup window continuously."""

print(f"--- MakeMKV Continuous Completion Monitor ---")
print(f"Monitoring for: '{MAKEMKV_POPUP_TITLE}'")
print(f"Press Ctrl+C to stop the script.")
print("-" * 45)

makemkv_was_running = False
completion_count = 0

while True:
try:
is_running = is_makemkv_running()
is_popup_visible = find_makemkv_popup(MAKEMKV_POPUP_TITLE)

if is_running:
makemkv_was_running = True

if is_popup_visible:
completion_count += 1
print(f"\n[{time.strftime('%H:%M:%S')}] *** Notification #{completion_count} Triggered! ***")
print(f"Playing system notification sound: {SOUND_ALIAS}")

play_notification_sound(SOUND_ALIAS)

# CRITICAL: Wait for user to close the popup window before resuming.
# Otherwise, it will keep playing the sound every 10 seconds.
print("Waiting for you to click OK on the MakeMKV popup...")
while find_makemkv_popup(MAKEMKV_POPUP_TITLE):
time.sleep(2)

print(f"[{time.strftime('%H:%M:%S')}] Popup closed. Resuming monitor...")

# --- Update Status Message ---
if is_running:
status_message = f"MakeMKV is active. Monitoring... (Total: {completion_count})"
elif makemkv_was_running:
status_message = f"MakeMKV not detected. Waiting for restart... (Total: {completion_count})"
else:
status_message = "Waiting for MakeMKV.exe to start for the first time..."

# Dynamic console update
sys.stdout.write(f"\r[{time.strftime('%H:%M:%S')}] {status_message}")
sys.stdout.flush()

time.sleep(CHECK_INTERVAL_SECONDS)

except KeyboardInterrupt:
print("\n\nMonitor stopped manually by user.")
print(f"Total completions detected this session: {completion_count}")
sys.exit(0)
except Exception as e:
print(f"\nAn unexpected error occurred: {e}")
time.sleep(5)

if __name__ == "__main__":
check_for_completion()
Post Reply