Version 1
This commit is contained in:
Binary file not shown.
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user