Version 1

This commit is contained in:
2026-04-10 23:59:23 +02:00
parent 9d7adf42c1
commit d55859c593
17 changed files with 743 additions and 490 deletions

View File

@@ -11,6 +11,7 @@ Sender signals til GUI:
from PyQt6.QtCore import QObject, pyqtSignal, QTimer
import random
import math
try:
import vlc
@@ -33,6 +34,7 @@ class Player(QObject):
self._duration: int = 0
self._demo_mode = False
self._demo_stop_sec = 10
self._demo_fade_sec = 5
self._demo_fading = False
self._volume = 78
@@ -78,10 +80,15 @@ class Player(QObject):
self._poll_timer.start()
self.state_changed.emit("playing")
def play_demo(self, stop_at_sec: int = 10):
"""Afspil fra start og stop automatisk ved stop_at_sec med 2 sek fade-out."""
def play_demo(self, stop_at_sec: int = 10, fade_sec: int = 5):
"""
Afspil fra start, fade ud over fade_sec sekunder og stop.
Total afspilningstid = stop_at_sec + fade_sec.
fade_sec=0 giver ingen fade.
"""
self._demo_mode = True
self._demo_stop_sec = stop_at_sec
self._demo_stop_sec = stop_at_sec + fade_sec # total tid inkl. fade
self._demo_fade_sec = fade_sec
self._demo_fading = False
if VLC_AVAILABLE and self._media_player:
self._media_player.set_time(0)
@@ -156,18 +163,16 @@ class Player(QObject):
self.state_changed.emit("demo_ended")
return
# Demo fade-out — de sidste 2 sekunder
FADE_SEC = 2.0
if self._demo_mode and VLC_AVAILABLE and self._media_player:
# Demo fade-out — de sidste _demo_fade_sec sekunder (0 = ingen fade)
if self._demo_mode and VLC_AVAILABLE and self._media_player and self._demo_fade_sec > 0:
secs_left = self._demo_stop_sec - cur
if secs_left <= FADE_SEC and secs_left > 0:
# Fade fra fuld volumen til 0 over FADE_SEC sekunder
fade_fraction = secs_left / FADE_SEC # 1.0 → 0.0
faded_vol = int(self._volume * fade_fraction)
if secs_left <= self._demo_fade_sec and secs_left > 0:
fade_fraction = secs_left / self._demo_fade_sec # 1.0 → 0.0
log_fraction = math.log10(1 + fade_fraction * 9) / math.log10(10)
faded_vol = int(self._volume * log_fraction)
self._media_player.audio_set_volume(max(0, faded_vol))
self._demo_fading = True
elif not self._demo_fading:
# Ikke i fade-zone endnu — sørg for fuld volumen
self._media_player.audio_set_volume(self._volume)
# VU-meter: brug VLC's audio-amplitude hvis tilgængelig, ellers simulér