music streaming experiment

This commit is contained in:
Anthony Samms
2025-09-13 02:28:55 -04:00
parent 513d6ffa39
commit 647ccbc642
3 changed files with 10 additions and 10 deletions

View File

@@ -857,7 +857,7 @@ class AudioEngine:
if sound in self.sounds:
self.sounds[sound].pan = max(0.0, min(1.0, pan))
def load_music_stream(self, fileName: Path, preview: float=0, normalize: Optional[float] = None) -> str:
def load_music_stream(self, fileName: Path, preview: Optional[float] = None, normalize: Optional[float] = None) -> str:
music = Music(file_path=fileName, target_sample_rate=self.target_sample_rate, preview=preview, normalize=normalize)
music_id = f"music_{len(self.music_streams)}"
self.music_streams[music_id] = music

View File

@@ -23,7 +23,7 @@ class BaseChibi:
self.hori_move.start()
self.vert_move = Animation.create_move(60000 / self.bpm / 2, total_distance=50, reverse_delay=0)
self.vert_move.start()
self.index = random.randint(0, len(tex.textures[self.name])-1)
self.index = random.randint(0, len([item for item in tex.textures[self.name] if item[0].isdigit()])-1)
tex_list = tex.textures[self.name][str(self.index)].texture
keyframe_len = tex_list if isinstance(tex_list, list) else [0]
self.keyframes = [i for i in range(len(keyframe_len))]

View File

@@ -73,9 +73,9 @@ class GameScreen:
else:
self.movie = None
session_data.song_title = self.tja.metadata.title.get(global_data.config['general']['language'].lower(), self.tja.metadata.title['en'])
if self.tja.metadata.wave.exists() and self.tja.metadata.wave.is_file():
self.song_music = audio.load_sound(self.tja.metadata.wave)
audio.normalize_sound(self.song_music, 0.1935)
if self.tja.metadata.wave.exists() and self.tja.metadata.wave.is_file() and self.song_music is None:
self.song_music = audio.load_music_stream(self.tja.metadata.wave)
audio.normalize_music_stream(self.song_music, 0.1935)
self.player_1 = Player(self, global_data.player_num, difficulty)
if self.tja is not None:
@@ -109,7 +109,7 @@ class GameScreen:
self.screen_init = False
tex.unload_textures()
if self.song_music is not None:
audio.unload_sound(self.song_music)
audio.unload_music_stream(self.song_music)
self.song_started = False
self.end_ms = 0
self.movie = None
@@ -152,8 +152,8 @@ class GameScreen:
if self.tja is not None:
if (self.current_ms >= self.tja.metadata.offset*1000 + self.start_delay - global_data.config["general"]["judge_offset"]) and not self.song_started:
if self.song_music is not None:
if not audio.is_sound_playing(self.song_music):
audio.play_sound(self.song_music)
if not audio.is_music_stream_playing(self.song_music):
audio.play_music_stream(self.song_music)
print(f"Song started at {self.current_ms}")
if self.movie is not None:
self.movie.start(get_current_ms())
@@ -184,14 +184,14 @@ class GameScreen:
if ray.is_key_pressed(ray.KeyboardKey.KEY_F1):
if self.song_music is not None:
audio.stop_sound(self.song_music)
audio.stop_music_stream(self.song_music)
self.init_tja(global_data.selected_song, session_data.selected_difficulty)
audio.play_sound(self.sound_restart)
self.song_started = False
if ray.is_key_pressed(ray.KeyboardKey.KEY_ESCAPE):
if self.song_music is not None:
audio.stop_sound(self.song_music)
audio.stop_music_stream(self.song_music)
return self.on_screen_end('SONG_SELECT')
def draw(self):