From 647ccbc642750f2cc3a3502869fdcf4f5c4b5e7f Mon Sep 17 00:00:00 2001 From: Anthony Samms Date: Sat, 13 Sep 2025 02:28:55 -0400 Subject: [PATCH] music streaming experiment --- libs/audio.py | 2 +- libs/bg_objects/chibi.py | 2 +- scenes/game.py | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libs/audio.py b/libs/audio.py index 1b7e7d4..5d503e0 100644 --- a/libs/audio.py +++ b/libs/audio.py @@ -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 diff --git a/libs/bg_objects/chibi.py b/libs/bg_objects/chibi.py index 658605c..2559289 100644 --- a/libs/bg_objects/chibi.py +++ b/libs/bg_objects/chibi.py @@ -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))] diff --git a/scenes/game.py b/scenes/game.py index efffda0..8a9bbe1 100644 --- a/scenes/game.py +++ b/scenes/game.py @@ -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):