Commit c12f60e6 authored by santiago duque's avatar santiago duque

now safe to run on mac without GPIOs

parent d15848b5
import sys
import os
from os.path import isfile, join
import pygame
from gpiozero import Button
# 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):
global btn_array
global sound_playing
btn_array[index].when_pressed = None
#btn_array[index].when_released = lambda: resetBtn(index)
print('keeps pressing')
if(not sound_playing):
print('btn pressed')
play_sound(index)
"""
def resetBtn(index):
global btn_array
#if(sound_playing):
print('btn released')
btn_array[index].when_released = None
btn_array[index].when_pressed = lambda: btn_pressed(index) """
btn1 = Button(21)
btn1.when_pressed = lambda: btn_pressed(0)
#btn1.when_held = None
#btn1.when_released = lambda: resetBtn(0)
btn2 = Button(13)
btn2.when_pressed = lambda: btn_pressed(1)
#btn2.when_held = None
#btn2.when_released = lambda: resetBtn(1)
btn_array = [btn1, btn2]
run = True
while run:
#clock.tick(25)
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()
...@@ -3,28 +3,21 @@ import os ...@@ -3,28 +3,21 @@ import os
from os.path import isfile, join from os.path import isfile, join
import pygame import pygame
from gpiozero import Button from gpiozero import Button
from signal import pause
# import keyboard
from storage_media import USBDeviceHandler from storage_media import USBDeviceHandler
# import time
# import signal
# import keyboard
pygame.init() pygame.init()
winW = pygame.display.Info().current_w * 0.2 winW = pygame.display.Info().current_w * 0.2
winH = pygame.display.Info().current_h * 0.2 winH = pygame.display.Info().current_h * 0.2
window = pygame.display.set_mode((winW, winH)) window = pygame.display.set_mode((winW, winH))
clock = pygame.time.Clock()
# Fullscreen = True # Fullscreen = True
# window.fill((205,100,100)) # window.fill((205,100,100))
# pygame.display.update() # pygame.display.update()
clock = pygame.time.Clock()
def reset_sounds(): def reset_sounds():
global sound_array global sound_array
sound_array = [] sound_array = []
setup_sounds() setup_sounds()
...@@ -44,33 +37,24 @@ def setup_sounds(): ...@@ -44,33 +37,24 @@ def setup_sounds():
): ):
sound = pygame.mixer.Sound(join(sound_dir, content)) sound = pygame.mixer.Sound(join(sound_dir, content))
sound_array.append(sound) sound_array.append(sound)
print(sound_array)
sound_playing = False
def play_sound(index): def play_sound(index):
global sound_playing
global cut_current_sound global cut_current_sound
global current_sound_index global current_sound_index
global channel global channel
global sound_array global sound_array
global btn_array
print("play func called")
sound_playing = True
if not cut_current_sound: if not cut_current_sound:
current_sound_index = index current_sound_index = index
channel = sound_array[current_sound_index].play() channel = sound_array[current_sound_index].play()
while channel.get_busy(): while channel.get_busy():
pygame.time.wait(100) # ms pygame.time.wait(150) # ms
print("Playing...") print("Playing...")
pygame.event.clear() pygame.event.clear()
sound_playing = False print("Finished playing.")
#btn_array[current_sound_index].when_pressed = lambda: btn_pressed(index)
print("Finished. ")
""" todo """ todo
make sounds stop when new key pressed make sounds stop when new key pressed
...@@ -120,75 +104,48 @@ cut_current_sound = False ...@@ -120,75 +104,48 @@ cut_current_sound = False
channel = False channel = False
current_sound_index = -1 current_sound_index = -1
# run setup # run empty setup
setup_paths(False) setup_paths(False)
def btn_pressed(index): """
global btn_array DEFINE GPIO BUTTONS
global sound_playing """
btn_array[index].when_pressed = None btn1 = False
# btn_array[index].when_released = lambda: resetBtn(index) btn2 = False
print("keeps pressing") btn3 = False
if not sound_playing: btn4 = False
print("btn pressed")
play_sound(index)
"""
def resetBtn(index):
global btn_array
#if(sound_playing):
print('btn released')
btn_array[index].when_released = None
btn_array[index].when_pressed = lambda: btn_pressed(index) """
btn1 = Button(21)
#btn1.when_pressed = lambda: btn_pressed(0)
# btn1.when_held = None
# btn1.when_released = lambda: resetBtn(0)
btn2 = Button(13)
#btn2.when_pressed = lambda: btn_pressed(1)
# btn2.when_held = None
# btn2.when_released = lambda: resetBtn(1)
btn_array = [btn1, btn2] try:
btn1 = Button(21)
btn2 = Button(13)
btn3 = Button(5)
btn4 = Button(27)
except Exception as X:
print(X)
# pause()
run = True run = True
while run: while run:
clock.tick(25) clock.tick(25)
print(btn1.value) # check pins only if they exist
if btn1 and btn2 and btn3 and btn4:
if btn1.is_pressed: if btn1.is_pressed:
play_sound(0) play_sound(0)
elif btn2.is_pressed: elif btn2.is_pressed:
play_sound(1) play_sound(1)
elif btn3.is_pressed:
play_sound(2)
elif btn4.is_pressed:
play_sound(3)
# check pygame events
for event in pygame.event.get(): for event in pygame.event.get():
if event.type == pygame.QUIT: if event.type == pygame.QUIT:
run = False 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: if event.type == pygame.KEYDOWN:
print("you pressed " + pygame.key.name(event.key)) print("you pressed " + pygame.key.name(event.key))
if event.key == pygame.K_q: if event.key == pygame.K_q:
...@@ -200,19 +157,7 @@ while run: ...@@ -200,19 +157,7 @@ while run:
elif event.key == pygame.K_r: elif event.key == pygame.K_r:
play_sound(3) 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() pygame.quit()
sys.exit() sys.exit()
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