Autoformat guitar hero controller script
This commit is contained in:
parent
70671f6d54
commit
d7ed085686
@ -3,10 +3,12 @@ import math
|
|||||||
import pygame
|
import pygame
|
||||||
import serial
|
import serial
|
||||||
|
|
||||||
|
|
||||||
def clamp(x, ab):
|
def clamp(x, ab):
|
||||||
(a, b) = ab
|
(a, b) = ab
|
||||||
return max(a, min(b, x))
|
return max(a, min(b, x))
|
||||||
|
|
||||||
|
|
||||||
def rescale(x, from_limits, to_limits):
|
def rescale(x, from_limits, to_limits):
|
||||||
(a, b) = from_limits
|
(a, b) = from_limits
|
||||||
x_0_1 = (x - a) / (b - a)
|
x_0_1 = (x - a) / (b - a)
|
||||||
@ -14,6 +16,7 @@ def rescale(x, from_limits, to_limits):
|
|||||||
(c, d) = to_limits
|
(c, d) = to_limits
|
||||||
return c + (d - c) * x_0_1
|
return c + (d - c) * x_0_1
|
||||||
|
|
||||||
|
|
||||||
class MovingHead:
|
class MovingHead:
|
||||||
def __init__(self, start_addr):
|
def __init__(self, start_addr):
|
||||||
self.start_addr = start_addr
|
self.start_addr = start_addr
|
||||||
@ -25,7 +28,12 @@ class MovingHead:
|
|||||||
self.rgbw = (0, 0, 0, 0)
|
self.rgbw = (0, 0, 0, 0)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"MovingHead({self.start_addr}): pan={self.pan!r}, tilt={self.tilt!r}, speed={self.speed!r}, dimmer={self.dimmer!r}, rgbw={self.rgbw!r}"
|
|
||||||
|
return (
|
||||||
|
f"MovingHead({self.start_addr}): pan={self.pan!r}, "
|
||||||
|
f"tilt={self.tilt!r}, speed={self.speed!r}, "
|
||||||
|
f"dimmer={self.dimmer!r}, rgbw={self.rgbw!r}"
|
||||||
|
)
|
||||||
|
|
||||||
def render(self, dst):
|
def render(self, dst):
|
||||||
|
|
||||||
@ -62,6 +70,7 @@ class MovingHead:
|
|||||||
|
|
||||||
dst[offset : offset + len(channels)] = channels
|
dst[offset : offset + len(channels)] = channels
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
movingheads = [
|
movingheads = [
|
||||||
@ -83,7 +92,7 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# pygame initialization
|
# pygame initialization
|
||||||
|
|
||||||
pygame.init()
|
pygame.init() # pylint: disable=no-member; wtf?
|
||||||
|
|
||||||
screen = pygame.display.set_mode((420, 69))
|
screen = pygame.display.set_mode((420, 69))
|
||||||
pygame.display.set_caption("meh")
|
pygame.display.set_caption("meh")
|
||||||
@ -96,7 +105,7 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# main loop
|
# main loop
|
||||||
|
|
||||||
running = True
|
running = True # this is clearly not constant, see 17 lines below???
|
||||||
|
|
||||||
with serial.Serial("/dev/ttyUSB0", 500_000) as ser:
|
with serial.Serial("/dev/ttyUSB0", 500_000) as ser:
|
||||||
|
|
||||||
@ -107,13 +116,12 @@ if __name__ == "__main__":
|
|||||||
if b.strip() == b"Sync.":
|
if b.strip() == b"Sync.":
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
sync()
|
sync()
|
||||||
|
|
||||||
while running:
|
while running:
|
||||||
|
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT: # pylint: disable=no-member;
|
||||||
running = False
|
running = False
|
||||||
|
|
||||||
# axes:
|
# axes:
|
||||||
@ -135,7 +143,12 @@ if __name__ == "__main__":
|
|||||||
# strumm bar
|
# strumm bar
|
||||||
(_, bar) = gamepad.get_hat(0)
|
(_, bar) = gamepad.get_hat(0)
|
||||||
|
|
||||||
print(f"pitch: {pitch:+0.2f}, whammy: {whammy:+0.2f}, buttons: {button_state}, bar: {bar: 1}")
|
print(
|
||||||
|
f"pitch: {pitch:+0.2f}, "
|
||||||
|
f"whammy: {whammy:+0.2f}, "
|
||||||
|
f"buttons: {button_state}, "
|
||||||
|
f"bar: {bar: 1}"
|
||||||
|
)
|
||||||
|
|
||||||
# render
|
# render
|
||||||
|
|
||||||
@ -147,16 +160,22 @@ if __name__ == "__main__":
|
|||||||
for head in movingheads:
|
for head in movingheads:
|
||||||
head.tilt = tilt
|
head.tilt = tilt
|
||||||
|
|
||||||
whammy_0_1 = (whammy + 1) / 2
|
|
||||||
|
|
||||||
ANGLE_HOME = -0.5 * math.pi
|
ANGLE_HOME = -0.5 * math.pi
|
||||||
ANGLE_OUTER = 0.5235988
|
ANGLE_OUTER = 0.5235988
|
||||||
ANGLE_INNER = 0.2617994
|
ANGLE_INNER = 0.2617994
|
||||||
|
|
||||||
movingheads[0].pan = rescale(whammy_0_1, (0, 1), (ANGLE_HOME, ANGLE_HOME + ANGLE_OUTER))
|
movingheads[0].pan = rescale(
|
||||||
movingheads[1].pan = rescale(whammy_0_1, (0, 1), (ANGLE_HOME, ANGLE_HOME + ANGLE_INNER))
|
whammy, (-1, 1), (ANGLE_HOME, ANGLE_HOME + ANGLE_OUTER)
|
||||||
movingheads[2].pan = rescale(whammy_0_1, (0, 1), (ANGLE_HOME, ANGLE_HOME - ANGLE_INNER))
|
)
|
||||||
movingheads[3].pan = rescale(whammy_0_1, (0, 1), (ANGLE_HOME, ANGLE_HOME - ANGLE_OUTER))
|
movingheads[1].pan = rescale(
|
||||||
|
whammy, (-1, 1), (ANGLE_HOME, ANGLE_HOME + ANGLE_INNER)
|
||||||
|
)
|
||||||
|
movingheads[2].pan = rescale(
|
||||||
|
whammy, (-1, 1), (ANGLE_HOME, ANGLE_HOME - ANGLE_INNER)
|
||||||
|
)
|
||||||
|
movingheads[3].pan = rescale(
|
||||||
|
whammy, (-1, 1), (ANGLE_HOME, ANGLE_HOME - ANGLE_OUTER)
|
||||||
|
)
|
||||||
|
|
||||||
for head in movingheads:
|
for head in movingheads:
|
||||||
# print(head)
|
# print(head)
|
||||||
@ -174,4 +193,4 @@ if __name__ == "__main__":
|
|||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
running = False
|
running = False
|
||||||
|
|
||||||
pygame.quit()
|
pygame.quit() # pylint: disable=no-member;
|
||||||
|
Loading…
Reference in New Issue
Block a user