diff --git a/phat.py b/phat.py new file mode 100644 index 0000000..989811c --- /dev/null +++ b/phat.py @@ -0,0 +1,65 @@ +""" +surcouche phatbeat pour un player audio +""" + +import phatbeat, signal, colorsys +from folderplayer import FolderPlayer + +class phatHandler: + + def __init__(self, player, brightness=0.5): + self.player = player + self.brightness = brightness + self.set_volume(3) # 0-8 + self.player.play() + + def play_pause(self, pin): + self.player.play_pause() + + def next(self, pin): + self.player.next() + + def previous(self, pin): + self.player.previous() + + def set_volume(self, level=3): + if level >= 0 and level <= 8: + self.volume = level + self.player.set_volume(self.volume*12) # 0-96 + self.show_volume(level) + + def volume_up(self, pin): + self.set_volume(self.volume + 1) + + def volume_down(self, pin): + self.set_volume(self.volume - 1) + + def show_volume(self, level, saturation=1.0, value=0.2): + phatbeat.clear() + for i in range(0,8): + # definition de la teinte en fonction de la "hauteur" du pixel + # pour un effet "arc en ciel" + # on divise 360° par 8 "crans" (=45°) + # et on decale arbitrairement de 45° pour ne pas débuter sur rouge + hue = 315 - 45*i # definition de la teinte (8 crans = 45°) + if level > i: + r, g, b = [int(x * 255) for x in colorsys.hsv_to_rgb(hue / 360.0, saturation, value)] + phatbeat.set_pixel(7-i, r, g, b, 0.1, channel=0) + phatbeat.set_pixel(7-i, r, g, b, 0.2, channel=1) + phatbeat.show() + +try: + print("hell yeah rock'n'roll") + fp = FolderPlayer("/home/jducastel/music") + p = phatHandler(fp) + # attaching buttons events to methods + phatbeat.on(phatbeat.BTN_PLAYPAUSE, p.play_pause) + phatbeat.on(phatbeat.BTN_FASTFWD, p.next) + phatbeat.on(phatbeat.BTN_REWIND, p.previous) + phatbeat.on(phatbeat.BTN_VOLUP, p.volume_up) + phatbeat.on(phatbeat.BTN_VOLDN, p.volume_down) + # start waiting for button events + signal.pause() +except KeyboardInterrupt: + print("bye !") + exit() diff --git a/test.py b/test.py index 0db328c..e0ab6e8 100644 --- a/test.py +++ b/test.py @@ -1,11 +1,11 @@ -import phatbeat, signal +import phatbeat, signal, math from folderplayer import FolderPlayer player = FolderPlayer("/home/jducastel/music") def show_volume(volume): phatbeat.clear() - level = round(volume*8/100); print(f"level {level}") + level = math.floor(volume/8); print(f"level {level}") for i in range(0,8): # resetting if level > i: phatbeat.set_pixel(7-i, 128,128,128,channel=0)