Commit 95542bc4 authored by santiago duque's avatar santiago duque

added second button and logic to stop events as a test

parent 3499c61b
from signal import pause import sys
import os
from os.path import isfile, join from os.path import isfile, join
import pygame
from gpiozero import Button from gpiozero import Button
from signal import pause
# import keyboard
from storage_media import USBDeviceHandler
# import time
# import signal
# import keyboard
pygame.init()
winW = pygame.display.Info().current_w * 0.2
winH = pygame.display.Info().current_h * 0.2
window = pygame.display.set_mode((winW, winH))
# Fullscreen = True
# window.fill((205,100,100))
# pygame.display.update()
clock = pygame.time.Clock()
def reset_sounds():
global sound_array
sound_array = []
setup_sounds()
def setup_sounds():
global sound_array
global contentlist
global sound_dir
print("inside setup")
print(contentlist)
for content in contentlist:
print(join(sound_dir, content))
if isfile(join(sound_dir, content)):
if (content.endswith(".mp3") or content.endswith(".wav")) and (
not content.startswith("._")
):
sound = pygame.mixer.Sound(join(sound_dir, content))
sound_array.append(sound)
print(content)
print("sound array")
print(sound_array)
sound_playing = False
def play_sound(index):
global sound_playing
global cut_current_sound
global current_sound_index
global channel
global sound_array
global btn_array
print("play func called")
sound_playing = True
if not cut_current_sound:
current_sound_index = index
channel = sound_array[current_sound_index].play()
while channel.get_busy():
pygame.time.wait(100) # ms
print("Playing...")
print(btn_array[current_sound_index].is_held)
print(btn_array[current_sound_index].is_pressed)
pygame.event.clear()
sound_playing = False
btn_array[current_sound_index].when_pressed = lambda: btn_pressed(index)
print("Finished. ")
""" todo
make sounds stop when new key pressed
else:
if current_sound_index == index:
current_sound_index = index
channel = sound_array[current_sound_index].play()
while channel.get_busy():
pygame.time.wait(100) # ms
print("Playing...pygame.init()")
print("Finished.")
else:
print("STOP.")
"""
def setup_paths(val):
global contentlist
global sound_dir
global sound_dir_local
global usb_handler
sound_dir = sound_dir_local
usbdisks = usb_handler.get_usb_devices()
if len(usbdisks) > 0:
sound_dir = usbdisks[0].mountpoint
contentlist = os.listdir(sound_dir)
contentlist = sorted(contentlist)
reset_sounds()
# prepare local paths in case no USB
sound_dir_local = os.getcwd() + "/sounds"
sound_dir = ""
# start USB handler with listener
usb_handler = USBDeviceHandler()
usb_handler.on("example_event", setup_paths)
# prepare sound variables
sound_array = []
cut_current_sound = False
channel = False
current_sound_index = -1
# run setup
setup_paths(False)
def btn_pressed(index): def btn_pressed(index):
global btn_array global btn_array
#btn_array[index].when_pressed = None global sound_playing
#btn_array[index].when_released = lambda: resetBtn(index) btn_array[index].when_pressed = None
print('keeps pressing') # btn_array[index].when_released = lambda: resetBtn(index)
print("keeps pressing")
if not sound_playing:
print("btn pressed")
play_sound(index)
""" """
def resetBtn(index): def resetBtn(index):
...@@ -25,17 +150,75 @@ def btn_pressed(index): ...@@ -25,17 +150,75 @@ def btn_pressed(index):
btn_array[index].when_released = None btn_array[index].when_released = None
btn_array[index].when_pressed = lambda: btn_pressed(index) """ btn_array[index].when_pressed = lambda: btn_pressed(index) """
btn1 = Button(21) btn1 = Button(21)
btn1.when_pressed = lambda: btn_pressed(0) #btn1.when_pressed = lambda: btn_pressed(0)
#btn1.when_held = None # btn1.when_held = None
btn1.when_released = lambda: print('was relasedasd') # btn1.when_released = lambda: resetBtn(0)
btn2 = Button(13) btn2 = Button(13)
btn2.when_pressed = lambda: btn_pressed(1) #btn2.when_pressed = lambda: btn_pressed(1)
#btn2.when_held = None # btn2.when_held = None
#btn2.when_released = lambda: resetBtn(1) # btn2.when_released = lambda: resetBtn(1)
btn_array = [btn1, btn2] btn_array = [btn1, btn2]
pause()
# pause()
run = True
while run:
clock.tick(25)
if btn1.is_pressed:
play_sound(0)
elif btn2.is_pressed:
play_sound(1)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
# keyboard module
"""
if keyboard.is_pressed("q"):
print("You Pressed A Key!")
play_sound(0)
elif keyboard.is_pressed("w"):
print("You Pressed A Key!")
play_sound(1)
elif keyboard.is_pressed("e"):
print("You Pressed A Key!")
play_sound(2)
elif keyboard.is_pressed("r"):
print("You Pressed A Key!")
play_sound(3)
"""
if event.type == pygame.KEYDOWN:
print("you pressed " + pygame.key.name(event.key))
if event.key == pygame.K_q:
play_sound(0)
elif event.key == pygame.K_w:
play_sound(1)
elif event.key == pygame.K_e:
play_sound(2)
elif event.key == pygame.K_r:
play_sound(3)
"""
elif event.key == pygame.K_f:
if Fullscreen:
window = pygame.display.set_mode((winW,winH))
Fullscreen = False
else:
window = pygame.display.set_mode((0,0), pygame.FULLSCREEN)
Fullscreen = True
"""
pygame.quit()
sys.exit()
exit()
# time.sleep(5.5)
# signal.pause()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment