class Player(): VOCAL_TRACK = 1 GUITAR_TRACK = 2 BASS_TRACK = 3 PIANO_TRACK =4 DRUM_TRACK = 5 OTHER_TRACK = 6 def __init__(self): self.playing = False self.rate = 1.0 self.position = 0.0 self.volume = 1.0 self.currentSong = None self.playingStateChangedCallback = None self.playbackVolumeChangedCallback = None self.tSupported = False self.tracks = {i+1: True for i in range(6)} def play(self): previousState = self.playing self.playing = True if previousState != self.playing: self.playingStateChangedCallback() def pause(self): previousState = self.playing self.playing = False if previousState != self.playing: self.playingStateChangedCallback() def isPlaying(self): return self.playing def setPlaybackRate(self, rate): self.rate = rate def getPlaybackRate(self): return self.rate def setPlaybackPosition(self, position): print(f"{self} Setting playback position to {position}") self.position = position def getPlaybackPosition(self): print(f"{self} Getting playback position: {self.position}") return self.position def setPlaybackVolume(self, volume): changed = self.volume != volume self.volume = volume if changed: self.playbackVolumeChangedCallback() def getPlaybackVolume(self): return self.volume def setCurrentSong(self, path): self.currentSong = path def setPlayingStateChangedCallback(self, callback): self.playingStateChangedCallback = callback def simulatePlayingStateChanged(self): self.playingStateChangedCallback() def setPlaybackVolumeChangedCallback(self, callback): self.playbackVolumeChangedCallback = callback def simulatePlaybackVolumeChanged(self): self.playbackVolumeChangedCallback() def tracksSupported(self): return self.tSupported def trackEnabled(self, trackId): return self.tracks[trackId] def setTrackEnabled(self, trackId, enable): self.tracks[trackId] = enable