mirror of
https://github.com/Yonokid/PyTaiko.git
synced 2026-02-04 11:40:13 +01:00
music streaming experiment
This commit is contained in:
@@ -857,7 +857,7 @@ class AudioEngine:
|
|||||||
if sound in self.sounds:
|
if sound in self.sounds:
|
||||||
self.sounds[sound].pan = max(0.0, min(1.0, pan))
|
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 = Music(file_path=fileName, target_sample_rate=self.target_sample_rate, preview=preview, normalize=normalize)
|
||||||
music_id = f"music_{len(self.music_streams)}"
|
music_id = f"music_{len(self.music_streams)}"
|
||||||
self.music_streams[music_id] = music
|
self.music_streams[music_id] = music
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class BaseChibi:
|
|||||||
self.hori_move.start()
|
self.hori_move.start()
|
||||||
self.vert_move = Animation.create_move(60000 / self.bpm / 2, total_distance=50, reverse_delay=0)
|
self.vert_move = Animation.create_move(60000 / self.bpm / 2, total_distance=50, reverse_delay=0)
|
||||||
self.vert_move.start()
|
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
|
tex_list = tex.textures[self.name][str(self.index)].texture
|
||||||
keyframe_len = tex_list if isinstance(tex_list, list) else [0]
|
keyframe_len = tex_list if isinstance(tex_list, list) else [0]
|
||||||
self.keyframes = [i for i in range(len(keyframe_len))]
|
self.keyframes = [i for i in range(len(keyframe_len))]
|
||||||
|
|||||||
@@ -73,9 +73,9 @@ class GameScreen:
|
|||||||
else:
|
else:
|
||||||
self.movie = None
|
self.movie = None
|
||||||
session_data.song_title = self.tja.metadata.title.get(global_data.config['general']['language'].lower(), self.tja.metadata.title['en'])
|
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():
|
if self.tja.metadata.wave.exists() and self.tja.metadata.wave.is_file() and self.song_music is None:
|
||||||
self.song_music = audio.load_sound(self.tja.metadata.wave)
|
self.song_music = audio.load_music_stream(self.tja.metadata.wave)
|
||||||
audio.normalize_sound(self.song_music, 0.1935)
|
audio.normalize_music_stream(self.song_music, 0.1935)
|
||||||
|
|
||||||
self.player_1 = Player(self, global_data.player_num, difficulty)
|
self.player_1 = Player(self, global_data.player_num, difficulty)
|
||||||
if self.tja is not None:
|
if self.tja is not None:
|
||||||
@@ -109,7 +109,7 @@ class GameScreen:
|
|||||||
self.screen_init = False
|
self.screen_init = False
|
||||||
tex.unload_textures()
|
tex.unload_textures()
|
||||||
if self.song_music is not None:
|
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.song_started = False
|
||||||
self.end_ms = 0
|
self.end_ms = 0
|
||||||
self.movie = None
|
self.movie = None
|
||||||
@@ -152,8 +152,8 @@ class GameScreen:
|
|||||||
if self.tja is not None:
|
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.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 self.song_music is not None:
|
||||||
if not audio.is_sound_playing(self.song_music):
|
if not audio.is_music_stream_playing(self.song_music):
|
||||||
audio.play_sound(self.song_music)
|
audio.play_music_stream(self.song_music)
|
||||||
print(f"Song started at {self.current_ms}")
|
print(f"Song started at {self.current_ms}")
|
||||||
if self.movie is not None:
|
if self.movie is not None:
|
||||||
self.movie.start(get_current_ms())
|
self.movie.start(get_current_ms())
|
||||||
@@ -184,14 +184,14 @@ class GameScreen:
|
|||||||
|
|
||||||
if ray.is_key_pressed(ray.KeyboardKey.KEY_F1):
|
if ray.is_key_pressed(ray.KeyboardKey.KEY_F1):
|
||||||
if self.song_music is not None:
|
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)
|
self.init_tja(global_data.selected_song, session_data.selected_difficulty)
|
||||||
audio.play_sound(self.sound_restart)
|
audio.play_sound(self.sound_restart)
|
||||||
self.song_started = False
|
self.song_started = False
|
||||||
|
|
||||||
if ray.is_key_pressed(ray.KeyboardKey.KEY_ESCAPE):
|
if ray.is_key_pressed(ray.KeyboardKey.KEY_ESCAPE):
|
||||||
if self.song_music is not None:
|
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')
|
return self.on_screen_end('SONG_SELECT')
|
||||||
|
|
||||||
def draw(self):
|
def draw(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user