diff options
Diffstat (limited to 'solo-tool-project/src/solo_tool')
-rw-r--r-- | solo-tool-project/src/solo_tool/session_manager.py | 9 | ||||
-rw-r--r-- | solo-tool-project/src/solo_tool/solo_tool.py | 10 |
2 files changed, 13 insertions, 6 deletions
diff --git a/solo-tool-project/src/solo_tool/session_manager.py b/solo-tool-project/src/solo_tool/session_manager.py index 1575060..8624207 100644 --- a/solo-tool-project/src/solo_tool/session_manager.py +++ b/solo-tool-project/src/solo_tool/session_manager.py @@ -30,10 +30,10 @@ class SessionManager(): st = SoloTool(player=player) for i, entry in enumerate(session): songPath = entry["path"] - keyPoints = entry["key_points"] + keyPoints = entry.get("key_points", []) + volume = entry.get("vol", 1.0) - st.addSong(songPath) - st._keyPoints[i] = keyPoints + st.addSong(songPath, keyPoints=keyPoints, volume=volume) return st @@ -43,7 +43,8 @@ class SessionManager(): for i, song in enumerate(soloTool.songs): entry = { "path": song, - "key_points" : soloTool._keyPoints[i] + "key_points" : soloTool._keyPoints[i], + "vol" : soloTool._volumes[i] } session.append(entry) diff --git a/solo-tool-project/src/solo_tool/solo_tool.py b/solo-tool-project/src/solo_tool/solo_tool.py index 63fb7f9..e8474e6 100644 --- a/solo-tool-project/src/solo_tool/solo_tool.py +++ b/solo-tool-project/src/solo_tool/solo_tool.py @@ -11,6 +11,7 @@ class SoloTool: self._song = None self._keyPoints = [] self._keyPoint = None + self._volumes = [] def __del__(self): del self._player @@ -30,6 +31,8 @@ class SoloTool: if previousSong is None or self._keyPoints[previousSong] != self._keyPoints[index]: self._notifier.notify(Notifier.KEY_POINT_LIST_EVENT, self.keyPoints) + self.volume = self._volumes[index] + @staticmethod def _keyPointValid(kp: float) -> bool: return kp is not None and kp >= 0.0 and kp < 1.0 @@ -38,11 +41,12 @@ class SoloTool: def songs(self) -> list[str]: return self._songs.copy() - def addSong(self, path: str) -> None: + def addSong(self, path: str, keyPoints: list[float]=[], volume: float=1.0) -> None: if path in self._songs: return self._songs.append(path) - self._keyPoints.append([]) + self._keyPoints.append(keyPoints) + self._volumes.append(volume) self._notifier.notify(Notifier.SONG_LIST_EVENT, self.songs) if self.song is None: self.song = 0 @@ -112,6 +116,8 @@ class SoloTool: @volume.setter def volume(self, new: float) -> None: if new is not None and new >= 0.0 and new != self._player.getPlaybackVolume(): + if self._song is not None: + self._volumes[self._song] = new self._player.setPlaybackVolume(new) self._notifier.notify(Notifier.PLAYBACK_VOLUME_EVENT, new) |