Compare commits

..

118 Commits

Author SHA1 Message Date
bel 936f1eed41 git pull 2023-04-19 18:49:52 -06:00
bel 83106a7bbc get hotwords.txt from mario party wiki 2023-04-19 18:47:39 -06:00
bel f318f276a3 git pull 2023-04-19 18:42:38 -06:00
bel e2e34c48b5 set star,coin buttons 2023-04-19 18:30:34 -06:00
bel bd1c3bebdc move star,coin to v01.yaml for mp 2023-04-19 18:25:27 -06:00
bel 57f801ba09 stt gets both aliases and gm.hotwords.keys 2023-04-19 18:24:53 -06:00
bel 8729883255 git pull 2023-04-10 18:40:59 -06:00
bel 468929384e qt tried it too 2023-04-10 16:55:07 -06:00
bel 9cf57e2a71 90ms consistent from lan and limited keydowns but eh it works 2023-04-09 12:25:45 -06:00
Bel LaPointe 290225b7f1 readme from rusty-pipe 2023-04-09 12:02:13 -06:00
Bel LaPointe 1a0b9143be mayhem-party to websockets and http over rusty-pipe 2023-04-09 12:01:40 -06:00
Bel LaPointe ac55a08796 mayhem-party config to http ui 2023-04-09 11:55:42 -06:00
Bel LaPointe 3653f286f8 wip 2023-04-06 17:25:51 -06:00
bel 5a9dcac684 git pull 2023-04-05 22:46:55 -06:00
Bel LaPointe 86bd0d851d scripts 2023-04-05 22:46:22 -06:00
bel 55aae5a55f hotwords file and more mayhem-info.sh 2023-04-05 22:30:45 -06:00
bel d559f5244f mayhem-party.sh things 2023-04-05 22:24:49 -06:00
bel df2c5cb0ad ALMOST 2023-04-05 22:09:43 -06:00
bel 53cab7e43c rename configs 2023-04-05 21:06:11 -06:00
bel 5062abdfc7 update v01.yaml for 4 players 2023-04-05 21:02:11 -06:00
bel d80b73a052 FRIENDSHIP 2023-04-05 20:49:45 -06:00
bel 5d70ac0002 upgrade 2023-04-05 20:48:39 -06:00
bel c2d2cda761 readme 2023-04-02 12:55:00 -06:00
bel 6eb6cdbd49 autostart discord with custom HOME and dont unset secret_sinks unless $PACTL_RESET=true 2023-04-02 12:54:24 -06:00
bel 70ca9d645a todo 2023-04-02 12:36:52 -06:00
bel 5fff9525e0 OK WE PASSING ISH 2023-04-02 12:35:54 -06:00
bel fd31ede89e todo 2023-04-02 11:50:43 -06:00
bel 3b9437fc9c ok so i dont need to share screen BUT i need to get audio from TTS to stream so maybe obs indeed 2023-04-02 11:49:06 -06:00
bel 78b00ac62a less sudo and 2 virtual devices 2023-04-02 11:40:10 -06:00
bel 42212e3d10 manual run reveals sharing fullscreen does NOT capture audio so i gotta be more verbose with user messages i guess 2023-04-02 10:50:56 -06:00
bel b2742b3631 git pull 2023-04-02 09:49:12 -06:00
bel cc3e3f87fc retain a static v01.yaml 2023-04-02 09:48:55 -06:00
bel 3ce34e20bb add comments and start to v01 2023-04-02 09:48:12 -06:00
bel 495861c261 oops need start button oof 2023-04-02 09:41:58 -06:00
bel 33eec70077 reset config 2023-04-01 11:44:38 -06:00
bel b991d3057b manual testing 2023-04-01 11:44:16 -06:00
bel d7a9face2f upgrade mayhem-party to v0.1.10 for dedicated broadcast 2023-04-01 11:32:27 -06:00
bel 05403b047a ok i think i could play 2p if i need 2023-04-01 11:19:51 -06:00
bel b75ec0240a at least stt works with gui 2023-04-01 11:18:17 -06:00
bel 8e6f23f49b gui dependent yeah sure whatever 2023-04-01 11:17:08 -06:00
bel d908a91014 retry hotwords because segfaulting 2023-04-01 10:39:18 -06:00
bel f034d21598 this isnt working boo 2023-04-01 00:25:29 -06:00
bel 1927458538 todo 2023-03-31 22:46:01 -06:00
bel 5005e86722 yas queen 2023-03-31 22:44:40 -06:00
bel 09aa57cbe3 hotwords rel 2023-03-31 22:35:07 -06:00
bel 03615af983 server loads hotwords models 2023-03-31 22:31:08 -06:00
bel 3f033a595f rm dockerfile 2023-03-31 22:15:11 -06:00
bel b9f0cec2e8 readme to server.sh 2023-03-31 22:15:06 -06:00
bel d7e7a07f6e server.sh to run all 2023-03-31 22:12:57 -06:00
bel c4864a380d mature 2023-03-31 21:46:28 -06:00
bel 463314ef2e almost 2023-03-31 21:23:07 -06:00
bel 84b7962acc okey 2023-03-31 21:02:13 -06:00
bel 87e12f8f52 gr 2023-03-31 21:01:58 -06:00
bel 661a8c85f0 oof 2023-03-31 20:54:57 -06:00
bel fcfc2be0b8 todo 2023-03-31 16:47:22 -06:00
bel 85378b1858 todo 2023-03-31 16:46:50 -06:00
bel 46707dcf30 todo 2023-03-31 16:46:11 -06:00
bel 0c4885e434 submodule pull 2023-03-31 16:43:23 -06:00
bel 563eec7ced rust install to vm 2023-03-31 16:43:13 -06:00
bel d46e07351a stt works ok in vm 2023-03-31 16:42:52 -06:00
bel 464b227959 todo 2023-03-31 15:36:48 -06:00
Bel LaPointe f67c41acc5 todo 2023-03-31 11:05:31 -06:00
Bel LaPointe f683c5abf1 git pull and stt needs love 2023-03-31 11:05:05 -06:00
bel 078e697386 todo 2023-03-29 21:41:29 -06:00
bel 1871c1a547 tood 2023-03-29 19:57:22 -06:00
bel 2162547522 gogo 2023-03-29 19:49:36 -06:00
bel 23e28a23b6 gogo 2023-03-29 19:47:22 -06:00
bel 522acfdf03 gogo 2023-03-29 19:45:27 -06:00
bel 2bb016751a gogo 2023-03-29 19:42:36 -06:00
bel 31fd6e8ef1 gogo 2023-03-29 19:40:41 -06:00
bel 56f649ebd0 gogo 2023-03-29 19:40:17 -06:00
bel a464ff285c gogo 2023-03-29 19:39:28 -06:00
bel f36c1b48de gogo 2023-03-29 19:37:21 -06:00
bel 51edba8640 gogo 2023-03-29 19:33:13 -06:00
bel 19abf63f21 gogo 2023-03-29 19:25:11 -06:00
bel 972ad8c25f gogo 2023-03-29 19:24:27 -06:00
bel 4d2f50c8a6 gogo 2023-03-29 19:21:03 -06:00
bel d3ca9c66e1 gogo 2023-03-29 19:18:43 -06:00
bel 42e5e2c13a gogo 2023-03-29 19:18:20 -06:00
bel e813e3e46a gogo 2023-03-29 19:15:30 -06:00
bel 24dc4daeb9 gogo 2023-03-29 18:58:40 -06:00
bel 8631625b0e lgo 2023-03-29 18:57:54 -06:00
bel c7f8016a92 dol 2023-03-29 18:57:14 -06:00
bel da4dc9e87d no u 2023-03-29 18:56:52 -06:00
bel 485f49c7da no snap run if running 2023-03-29 18:56:04 -06:00
bel 78595b969e start 2023-03-29 18:52:41 -06:00
bel dc29160296 gr split 2023-03-29 18:30:55 -06:00
bel 4a098912df git pull 2023-03-29 18:27:52 -06:00
bel 548b2c6aec docker install 2023-03-29 18:27:30 -06:00
bel 42f3a50f4e no snap docker 2023-03-28 23:40:49 -06:00
bel 15ccdee0b4 readme 2023-03-28 23:31:38 -06:00
bel bbc53f4eb6 Merge branch 'master' of https://gogs.inhome.blapointe.com/bel/mayhem-party-venue 2023-03-28 22:20:36 -06:00
bel 7a8e38fb74 pip no cache dir 2023-03-28 22:20:17 -06:00
bel efb0836686 more instructions for vm 2023-03-28 21:59:03 -06:00
bel 277bfac641 up mp 2023-03-28 21:46:41 -06:00
bel 7d4846b5dc wipping 2023-03-28 21:44:33 -06:00
bel 5d8f3e9c0e pttodo 2023-03-28 20:34:05 -06:00
bel f689423ade dockerfile for initializing and listening to stdout 2023-03-28 20:32:47 -06:00
bel dfcbd14a63 dockerfile 2023-03-28 20:22:25 -06:00
bel 5445b859c9 fetch submod 2023-03-28 20:18:25 -06:00
bel 81cfea221e no need for dockerfile contents in readme 2023-03-28 20:16:49 -06:00
bel 843fa29e1f shorter dockerfile 2023-03-28 20:13:46 -06:00
bel 41d61c6061 confirmed rusty-pipe hooks up out of the box with just 1 docker change 2023-03-28 20:13:08 -06:00
bel 3a36333ef6 DOCKERFILE A GOGO 2023-03-28 20:05:14 -06:00
bel b2654a10b2 IT RUNS DOCKER but stt accepts emptystrings and doesnt mount and those are bad 2023-03-28 19:57:45 -06:00
bel 2a3b013353 add signing exe 2023-03-28 19:31:00 -06:00
Bel LaPointe 3c9a01d3d9 dockerfile todo 2023-03-28 15:43:08 -06:00
Bel LaPointe 8ab758a5cc dockerfile at least can run stt though not sure how to pipe audio into it 2023-03-28 15:41:22 -06:00
Bel LaPointe c3130e7a00 dockerfile comment 2023-03-28 11:27:11 -06:00
Bel LaPointe febed803e9 stt up 2023-03-28 11:26:06 -06:00
Bel LaPointe 0b55e46bc1 dockerfile continues 2023-03-28 11:21:25 -06:00
Bel LaPointe af8f75bc7c stub dockerfile and cmd is nicer than entrypoint til 2023-03-28 07:49:32 -06:00
Bel LaPointe 4652ed623b readme on how2 submodules and pull 2023-03-28 07:27:03 -06:00
bel 7d9bf4133d whoops one more 2023-03-27 21:42:41 -06:00
bel 5e21ca40fc upgrade to mvp i think 2023-03-27 21:41:40 -06:00
bel ac3342790c git pull origin master for each subm 2023-03-27 20:19:27 -06:00
bel 3804232cf1 update how to run hotwords to halt the game and stop hotwording 2023-03-26 21:37:14 -06:00
bel d342023b79 rename 2023-03-26 16:18:49 -06:00
31 changed files with 945 additions and 100 deletions

3
.gitignore vendored
View File

@ -0,0 +1,3 @@
/mnt.d
**/*.sw*
**/__pycache__

6
.gitmodules vendored
View File

@ -4,9 +4,9 @@
[submodule "git.d/rusty-pipe.d"] [submodule "git.d/rusty-pipe.d"]
path = git.d/rusty-pipe.d path = git.d/rusty-pipe.d
url = https://gogs.inhome.blapointe.com/bel/rusty-pipe.git url = https://gogs.inhome.blapointe.com/bel/rusty-pipe.git
[submodule "git.d/stt.d"]
path = git.d/stt.d
url = https://gogs.inhome.blapointe.com/bel/stt.git
[submodule "git.d/tts.d"] [submodule "git.d/tts.d"]
path = git.d/tts.d path = git.d/tts.d
url = https://gogs.inhome.blapointe.com/bel/tts.git url = https://gogs.inhome.blapointe.com/bel/tts.git
[submodule "git.d/stt.d"]
path = git.d/stt.d
url = https://gogs.inhome.blapointe.com/bel/stt

View File

@ -1,53 +1,15 @@
# Hosting a Mayhem Party # Mayhem Party Venue
# Clients # Clients
## Distribute `rusty-pipe` Send link to `http://localhost:17072`
```bash
# https://www.reddit.com/r/rust/comments/5k8uab/crosscompiling_from_ubuntu_to_windows_with_rustup/
(
echo '[target.x86_64-pc-windows-gnu]'
echo 'linker = "x86_64-w64-mingw32-gcc"'
echo 'ar = "x86_64-w64-mingw32-gcc-ar"'
) >> $HOME/.cargo/config
sudo apt install mingw-w64
rustup target add x86_64-pc-windows-gnu
echo windows
cargo build --release --target x86_64-pc-windows-gnu && ls target/x86_64-pc-windows-gnu/release/rusty-pipe.exe
echo local
cargo install --path ./
```
Each client needs 1 executable and 1 config file with a unique user "name".
The server cannot be a client because sending, listening, and typing keyboard is bad. Maybe a VM on the client as a server would work tho.
See `./config.d/rusty-pipe.d`
# Server # Server
## TTS ## Code
`cd ./git.d/tts.d/larynx.d; bash run.sh` `bash ./server.sh`
## STT
`cd ./git.d/stt.d/whisper-2023; HOTWORDS=../../../config.d/stt.d/hotwords.txt MIC_TIMEOUT=2 URL=http://localhost:17071/config HEADERS=say='Eye herd {{hotword}}' BODY='[{"op":"replace", "path":"/Quiet", "value":true}]' python3 ./hotwords.py'
## `mayhem-party`
### Configs
`cd ./config.d/mayhem-party.d/remap.d; bash ./rotate.sh`
> rotate anytime via stdin or `pkill -SIGUSR1 -f rotate.sh`
### Binary
`bash -c 'true; source ./config.d/mayhem-party.d/env.env; mayhem-party'`
## Game Playing ## Game Playing
Foreground Foreground

View File

@ -0,0 +1,3 @@
#! /bin/bash
curl -sS http://mp.home.blapointe.com:17071/gm/rpc/elect

View File

@ -1,11 +1,14 @@
export DEBUG=true export DEBUG=true
export MAIN_INTERVAL_DURATION=5ms export MAIN_INTERVAL_DURATION=5ms
export RAW_UDP=17070
export PARSE_V01=true export PARSE_V01=true
export V01_CONFIG=./config.d/mayhem-party.d/v01.yaml cp ./config.d/mayhem-party.d/v01{"",-live}.yaml
export V01_CONFIG=./config.d/mayhem-party.d/v01-live.yaml
export WRAP_REFRESH_ON_SIGUSR1=true export WRAP_REFRESH_ON_SIGUSR1=true
export OUTPUT_KEYBOARD=false export OUTPUT_KEYBOARD=${OUTPUT_KEYBOARD:-false}
#export RAW_UDP=17070
export RAW_WS_PROXY_URL=http://localhost$(cat config.d/mayhem-party.d/v01-live.yaml | grep -A 10 feedback | grep addr: | awk '{print $NF}')
export RAW_WS=17072

View File

@ -0,0 +1,7 @@
#! /bin/bash
curl \
-X POST \
-i -sS \
http://mp.home.blapointe.com:17071/gm/rpc/fillNonPlayerAliases \
-d "[$(cat ./hotwords.txt | tr '\n' ' ')]"

View File

@ -0,0 +1,16 @@
mario
luigi
peach
daisy
wario
waluigi
bowser
junior
koopa
shyguy
boo
toad
toadette
minigame
win
lose

View File

@ -0,0 +1,173 @@
advance
aliasing
amiibo
analoguestick
animalcrossing
artstyle
battleroyal
bigbrainacademy
birdo
bitgenerations
bluetoad
board
boardgame
boo
boss
bowser
brainage
capcom
cardboardcutout
cardgame
category
chainchomp
characters
charlesmartinet
cpus
customrobo
destructoid
diddykong
die
donkeykong
ds
editlinks
educationalgames
eurogamer
famicomdetectiveclub
fawful
firebreath
fireemblem
fossilfighters
gamebooks
gameboyadvance
gamecube
gamemodes
gamepro
gamerevolution
gamespot
gametrailers
goldensun
goomba
gr
hammerbro
healthpoints
hepburn
homeconsole
hudsonsoft
ign
intellectuallydisabled
isbn
islandtour
items
japanese
joystiq
kamek
kidicarus
kirby
kojikondo
koopatroopa
kotaku
lcdgames
leaderboards
legosupermario
listofvideogamesfeaturingmario
luigi
mahitoyokota
mario
marioartist
marioclash
mariokart
mariopaint
marioparty
mariopartyadvance
mariopartyds
mariopartylegacy
mariopartysuperstars
mariopowertennis
mattcasamassina
mc
metroid
mii
minigame
minigames
minusworld
mother
motioncontrol
mushroomkingdom
ndcube
nintendo
nintendocomicssystem
nintendods
nintendolife
nintendoswitch
nintendowire
onlinemultiplayer
othermedia
pal
papermario
party
partyvideogame
pauline
peaches
pikmin
pilotwings
piranhaplant
pokémon
polygon
princessdaisy
princesspeach
professorelvingadd
puzzlegames
puzzleleague
racinggames
rainbowroad
raymanravingrabbids
replayvalue
ringmaster
rosalina
rumblepak
ryandavis
satoruiwata
shigerumiyamoto
shyguy
siliconera
spinyshell
splatoon
sportsgames
starfox
starrush
storycampaign
super
supermario
supermarioadventures
supermarioparty
supermariosunshine
supermarioworld
superprincesspeach
superstars
takashitezuka
techradar
thelegendarystarfy
thelegendofzelda
theverge
toad
toadette
toadsworth
touchscreen
trustedreviews
unofficialmedia
variety
videogamesportal
vivian
waluigi
wario
wars
wii
wiiparty
wiiremote
wiiu
wiiugamepad
yasuhisayamamura
yearofluigi
yōichikotabe
yoshi
yoshiakikoizumi

View File

@ -0,0 +1,173 @@
advance
aliasing
amiibo
analoguestick
animalcrossing
artstyle
battleroyal
bigbrainacademy
birdo
bitgenerations
bluetoad
board
boardgame
boo
boss
bowser
brainage
capcom
cardboardcutout
cardgame
category
chainchomp
characters
charlesmartinet
cpus
customrobo
destructoid
diddykong
die
donkeykong
ds
editlinks
educationalgames
eurogamer
famicomdetectiveclub
fawful
firebreath
fireemblem
fossilfighters
gamebooks
gameboyadvance
gamecube
gamemodes
gamepro
gamerevolution
gamespot
gametrailers
goldensun
goomba
gr
hammerbro
healthpoints
hepburn
homeconsole
hudsonsoft
ign
intellectuallydisabled
isbn
islandtour
items
japanese
joystiq
kamek
kidicarus
kirby
kojikondo
koopatroopa
kotaku
lcdgames
leaderboards
legosupermario
listofvideogamesfeaturingmario
luigi
mahitoyokota
mario
marioartist
marioclash
mariokart
mariopaint
marioparty
mariopartyadvance
mariopartyds
mariopartylegacy
mariopartysuperstars
mariopowertennis
mattcasamassina
mc
metroid
mii
minigame
minigames
minusworld
mother
motioncontrol
mushroomkingdom
ndcube
nintendo
nintendocomicssystem
nintendods
nintendolife
nintendoswitch
nintendowire
onlinemultiplayer
othermedia
pal
papermario
party
partyvideogame
pauline
peaches
pikmin
pilotwings
piranhaplant
pokémon
polygon
princessdaisy
princesspeach
professorelvingadd
puzzlegames
puzzleleague
racinggames
rainbowroad
raymanravingrabbids
replayvalue
ringmaster
rosalina
rumblepak
ryandavis
satoruiwata
shigerumiyamoto
shyguy
siliconera
spinyshell
splatoon
sportsgames
starfox
starrush
storycampaign
super
supermario
supermarioadventures
supermarioparty
supermariosunshine
supermarioworld
superprincesspeach
superstars
takashitezuka
techradar
thelegendarystarfy
thelegendofzelda
theverge
toad
toadette
toadsworth
touchscreen
trustedreviews
unofficialmedia
variety
videogamesportal
vivian
waluigi
wario
wars
wii
wiiparty
wiiremote
wiiu
wiiugamepad
yasuhisayamamura
yearofluigi
yōichikotabe
yoshi
yoshiakikoizumi

View File

@ -0,0 +1,7 @@
#! /bin/bash
set -e
bash ./shuffle.sh
bash ./fill.sh
bash ./players.sh

View File

@ -0,0 +1,2 @@
#! /bin/bash
curl -sS -i http://mp.home.blapointe.com:17071/

View File

@ -0,0 +1,3 @@
#! /bin/bash
curl -sS -i http://mp.home.blapointe.com:17071/gm/rpc/shuffle
bash ./players.sh

View File

@ -0,0 +1,64 @@
feedback:
addr: :17071
ttsurl: http://localhost:15002
users: {}
players:
- transformation:
"1": "1" # a
"2": "2" # b
"3": "3" # x
"4": "4" # y
"5": "5" # start
w: "6" # stickUp
a: "7" # stickLeft
s: "8" # stickDown
d: "9" # stickRight
e: "0" # r
q: "-" # l
- transformation:
"1": "q" # a
"2": "w" # b
"3": "e" # x
"4": "r" # y
"5": " " # "t" # start
w: "y" # stickUp
a: "u" # stickLeft
s: "i" # stickDown
d: "o" # stickRight
e: "p" # r
q: "=" # l
- transformation:
"1": "a" # a
"2": "s" # b
"3": "d" # x
"4": "f" # y
"5": " " # "g" # start
w: "h" # stickUp
a: "j" # stickLeft
s: "k" # stickDown
d: "l" # stickRight
e: ";" # r
q: "g" # l
- transformation:
"1": "z" # a
"2": "x" # b
"3": "c" # x
"4": "v" # y
"5": " " # "b" # start
w: "n" # stickUp
a: "m" # stickLeft
s: "," # stickDown
d: "." # stickRight
e: "/" # r
q: "b" # l
quiet: false
broadcast:
message: "#early access"
gm:
hotwords:
star:
call: tap
args: ['<']
coin:
call: tap
args: ['>']

View File

@ -1,24 +1,64 @@
feedback: feedback:
addr: :17071 addr: :17071
ttsurl: http://localhost:15002 ttsurl: http://localhost:15002
users: users: {}
bel:
player: 2
message: its bel
broadcast:
player: 0
message: "8"
players: players:
- transformation: {}
- transformation: - transformation:
"1": "5" "1": "1" # a
"2": "6" "2": "2" # b
"3": "7" "3": "3" # x
"4": "8" "4": "4" # y
a: f "5": "5" # start
d: h w: "6" # stickUp
e: "y" a: "7" # stickLeft
q: r s: "8" # stickDown
s: g d: "9" # stickRight
w: t e: "0" # r
quiet: true q: "-" # l
- transformation:
"1": "q" # a
"2": "w" # b
"3": "e" # x
"4": "r" # y
"5": " " # "t" # start
w: "y" # stickUp
a: "u" # stickLeft
s: "i" # stickDown
d: "o" # stickRight
e: "p" # r
q: "=" # l
- transformation:
"1": "a" # a
"2": "s" # b
"3": "d" # x
"4": "f" # y
"5": " " # "g" # start
w: "h" # stickUp
a: "j" # stickLeft
s: "k" # stickDown
d: "l" # stickRight
e: ";" # r
q: "g" # l
- transformation:
"1": "z" # a
"2": "x" # b
"3": "c" # x
"4": "v" # y
"5": " " # "b" # start
w: "n" # stickUp
a: "m" # stickLeft
s: "," # stickDown
d: "." # stickRight
e: "/" # r
q: "b" # l
quiet: false
broadcast:
message: "#early access"
gm:
hotwords:
star:
call: tap
args: ['<']
coin:
call: tap
args: ['>']

View File

@ -6,10 +6,11 @@ streams:
gui: gui:
user: bel user: bel
feedback: feedback:
url: http://mayhem-party.home.blapointe.com:17071?user=bel url_read: http://mayhem-party.home.blapointe.com:17071?user=bel
press: {prefix: "", suffix: ""} url_say: http://mayhem-party.home.blapointe.com:17071?user=bel&say=
release: {prefix: "", suffix: ""} url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=bel&payload=
format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}' release_prefix: ""
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -21,6 +22,7 @@ streams:
b: '2' b: '2'
x: '3' x: '3'
y: '4' y: '4'
start: '5'
output: output:
debug: false debug: false
engine: engine:

View File

@ -6,10 +6,11 @@ streams:
gui: gui:
user: bill user: bill
feedback: feedback:
url: http://mayhem-party.home.blapointe.com:17071?user=bill url_read: http://mayhem-party.home.blapointe.com:17071?user=bill
press: {prefix: "", suffix: ""} url_say: http://mayhem-party.home.blapointe.com:17071?user=bill&say=
release: {prefix: "", suffix: ""} url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=bill&payload=
format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}' release_prefix: ""
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -21,6 +22,7 @@ streams:
b: '2' b: '2'
x: '3' x: '3'
y: '4' y: '4'
start: '5'
output: output:
debug: false debug: false
engine: engine:

View File

@ -6,10 +6,11 @@ streams:
gui: gui:
user: chase user: chase
feedback: feedback:
url: http://mayhem-party.home.blapointe.com:17071?user=chase url_read: http://mayhem-party.home.blapointe.com:17071?user=chase
press: {prefix: "", suffix: ""} url_say: http://mayhem-party.home.blapointe.com:17071?user=chase&say=
release: {prefix: "", suffix: ""} url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=chase&payload=
format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}' release_prefix: ""
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -21,6 +22,7 @@ streams:
b: '2' b: '2'
x: '3' x: '3'
y: '4' y: '4'
start: '5'
output: output:
debug: false debug: false
engine: engine:

View File

@ -6,10 +6,11 @@ streams:
gui: gui:
user: mason user: mason
feedback: feedback:
url: http://mayhem-party.home.blapointe.com:17071?user=mason url_read: http://mayhem-party.home.blapointe.com:17071?user=mason
press: {prefix: "", suffix: ""} url_say: http://mayhem-party.home.blapointe.com:17071?user=mason&say=
release: {prefix: "", suffix: ""} url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=mason&payload=
format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}' release_prefix: ""
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -21,6 +22,7 @@ streams:
b: '2' b: '2'
x: '3' x: '3'
y: '4' y: '4'
start: '5'
output: output:
debug: false debug: false
engine: engine:

View File

@ -6,10 +6,11 @@ streams:
gui: gui:
user: nat user: nat
feedback: feedback:
url: http://mayhem-party.home.blapointe.com:17071?user=nat url_read: http://mayhem-party.home.blapointe.com:17071?user=nat
press: {prefix: "", suffix: ""} url_say: http://mayhem-party.home.blapointe.com:17071?user=nat&say=
release: {prefix: "", suffix: ""} url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=nat&payload=
format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}' release_prefix: ""
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -21,6 +22,7 @@ streams:
b: '2' b: '2'
x: '3' x: '3'
y: '4' y: '4'
start: '5'
output: output:
debug: false debug: false
engine: engine:

View File

@ -0,0 +1,16 @@
#! /bin/bash
echo source ./package.sh
set -e
cd ${based%/*}
tar_f=${based##*/}.tar
rm -f "$tar_f"
tar -cf "$tar_f" ${based##*/}
cleanup() { rm "$tar_f"; }
trap cleanup EXIT
scp_scratch.sh "$tar_f" squeaky2x3@192.168.0.86:/volume1/video/FTP/
ssh_scratch.sh ls /volume1/video/FTP/"$tar_f"

View File

@ -0,0 +1,20 @@
#! /bin/bash
test -f ./rusty-pipe-signed.exe || exit 1
based=$(mktemp -d)
for f in ./*.yaml; do
d="$based/${f%.yaml}.d"
mkdir -p "$d"
cp "$f" "$d"/rusty-pipe.yaml
cp "$(realpath ./rusty-pipe-signed.exe)" "$d"/rusty-pipe-windows.exe
cp "$(realpath ./rusty-pipe-notwindows.bin)" "$d"/rusty-pipe-notwindows.bin
done
pushd "$based"
for d in ./*/; do
zip -r -7 ${d%/}.zip $d
rm -rf "$d"
done
popd
echo "$based"
du -sh "$based"/*

View File

@ -6,10 +6,11 @@ streams:
gui: gui:
user: roxy user: roxy
feedback: feedback:
url: http://mayhem-party.home.blapointe.com:17071?user=roxy url_read: http://mayhem-party.home.blapointe.com:17071?user=roxy
press: {prefix: "", suffix: ""} url_say: http://mayhem-party.home.blapointe.com:17071?user=roxy&say=
release: {prefix: "", suffix: ""} url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=roxy&payload=
format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}' release_prefix: ""
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -21,6 +22,7 @@ streams:
b: '2' b: '2'
x: '3' x: '3'
y: '4' y: '4'
start: '5'
output: output:
debug: false debug: false
engine: engine:

View File

@ -0,0 +1 @@
../../../rusty-pipe.d/target/release/rusty-pipe

View File

@ -0,0 +1 @@
../../../rusty-pipe.d/target/x86_64-pc-windows-gnu/release/rusty-pipe-signed.exe

View File

@ -6,10 +6,11 @@ streams:
gui: gui:
user: zach user: zach
feedback: feedback:
url: http://mayhem-party.home.blapointe.com:17071?user=zach url_read: http://mayhem-party.home.blapointe.com:17071?user=zach
press: {prefix: "", suffix: ""} url_say: http://mayhem-party.home.blapointe.com:17071?user=zach&say=
release: {prefix: "", suffix: ""} url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=zach&payload=
format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}' release_prefix: ""
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -21,6 +22,7 @@ streams:
b: '2' b: '2'
x: '3' x: '3'
y: '4' y: '4'
start: '5'
output: output:
debug: false debug: false
engine: engine:

@ -1 +1 @@
Subproject commit fbf4849517f74436063f29603a32252128d9c40d Subproject commit b89ed62036e8c40575f9aa996f3aad4729ca9f80

@ -1 +1 @@
Subproject commit 25e99fbf931637b4f4aabcfdc019c4a9d8924f24 Subproject commit 31bdb6d92e40103c4be000f46ebcf5d2e2ff5920

@ -1 +1 @@
Subproject commit bde26ff2e5927c60fdf775df19279277a55086b3 Subproject commit b4d3e5a27cbdecfd70f6601d7b51ab9a07a045f7

@ -1 +1 @@
Subproject commit ad91c4547fdc40c9b1a5b71c80e11460c5ca5268 Subproject commit ce354d17885feb509dd3ecee68843e1c6e2c2957

144
server.sh Normal file
View File

@ -0,0 +1,144 @@
# /bin/bash
main() {
set -eo pipefail
tty && read -p "git refresh? [yN] " a && test "$a" == "y" && (
git config --global credential.helper store
git submodule init
git pull --recurse-submodules --jobs=10
git submodule foreach git pull origin master
)
_tts
_mayhem_party
_discord
_stt
_dolphin
while read; do
pkill -SIGUSR1 -f mayhem-party
done
}
_cleanup() {
pkill -f larynx
pkill -f hotwords.py
pkill -f rust-whisper
pkill -f mayhem-party
}
cleanup() {
pkill -f server.sh
_cleanup
}
_cleanup
trap cleanup EXIT
log() {
echo "$(date) > $*" >&2
}
_discord() {
(
export HOME="$PWD/mnt.d/discord.d"
if ! snap list discord; then
sudo snap install discord
fi
(
exec snap run discord
) &> /tmp/mayhem-party.discord.log &
disown
)
}
_dolphin() {
echo
read -p "pls start dolphin"
echo
}
_mayhem_party() {
log mayhem-party
pushd ./git.d/mayhem-party.d
go build
popd
log launching mayhem-party
(
source ./config.d/mayhem-party.d/env.env
./git.d/mayhem-party.d/mayhem-party
) &
}
_tts() {
log launching tts
pushd ./git.d/tts.d/larynx.d/
chmod -R 777 ./mnt.d || true
bash ./run.sh
popd
}
_stt() {
log stt
(
export HOME="$PWD/mnt.d/stt.d"
mkdir -p "$HOME"
cd "$HOME"
bash ../../git.d/stt.d/rust-whisper.d/download_models.sh
if [ -n "$PIP" ]; then
pip3 install -r ../../git.d/stt.d/rust-whisper.d/requirements.txt
fi
local device=$(
pactl list \
| grep Monitor.Source \
| grep -v hdmi \
| awk "{print \$NF}" \
| head -n 1
)
if ! test -f /etc/asound.conf || ! grep "$device" /etc/asound.conf; then
(
echo "pcm.pulse_monitor {"
echo " type pulse"
echo " device $device"
echo "}"
echo "ctl.pulse_monitor {"
echo " type pulse"
echo " device $device"
echo "}"
) | sudo tee /etc/asound.conf
fi
if [ -n "$PACTL_RESET" ]; then
for i in $(pactl list short modules | grep secret | cut -f1); do
pactl unload-module $i
done
fi
name='my_secret_sink'
for i in 1 2; do
if ! pactl list | grep -q $name$i; then
pactl load-module module-null-sink sink_name=$name$i channels=1
pactl load-module module-remap-source master=$name$i.monitor source_name=shared-$name$i source_properties="device.description=shared-$name$i"
mic_name="$(pactl list | grep -A 100 Name:.$name$i.monitor | grep device.description.=. | head -n 1 | sed 's/.* = //' | tr -d '"') Monitor"
fi
done
echo
read -p "pavucontrol to change input to $name, ok? "
echo
log launching stt
(
export HOTWORDS=../../config.d/mayhem-party.d/v01-live.yaml@.users[].state.gm.alias,.gm.hotwords.KEYS
export MIC_TIMEOUT=2
export URL=http://localhost:17071/gm/rpc/broadcastSomeoneSaidAlias?message={{hotword}}
export HEADERS=say="Eye herd {{hotword}}"
export MIC_NAME="${MIC_NAME:-pulse_monitor}"
export MODEL=tiny.en
export P=2
while ! python3 ../../git.d/stt.d/rust-whisper.d/hotwords.py; do
sleep 5
done
) &
)
}
if [ "$0" == "$BASH_SOURCE" ]; then
main "$@"
fi

193
todo.yaml Executable file
View File

@ -0,0 +1,193 @@
todo:
- instructions how to spin up with pulseaudio GUI
- rpc fill aliases UI
- rpc elect UI
- display election results
- trigger dolphin pause via query param mapping to a button that is a pause hotkey
scheduled: []
done:
- todo: sticky keyboard input mode for enable/disable explicitly
ts: Thu Mar 23 20:55:52 MDT 2023
- todo: case-sensitive
ts: Fri Mar 24 13:39:26 MDT 2023
- todo: rusty configs have "name" for each client so "if name == server_broadcasted_name
{ debug_print_in_gui(server_broadcasted_message) }
ts: Fri Mar 24 16:40:09 MDT 2023
- todo: change from 'a','b','c' from rust to just 10,11,12 so playerName is known
implicitly but then gotta translate back to char for keyboard things somewhere;
space delimited?
ts: Fri Mar 24 17:00:55 MDT 2023
- todo: '"Button" to interface or strings'
ts: Fri Mar 24 17:01:01 MDT 2023
- todo: input.UDP as a raw provider
ts: Fri Mar 24 19:58:59 MDT 2023
- todo: input.MayhemParty as a logical wrapper
ts: Fri Mar 24 19:58:59 MDT 2023
- todo: change from 'a','b','c' from rust to just 11,21,31,41 so playerName is known
implicitly from %10 but then gotta translate back to char for keyboard things
somewhere; space delimited?
ts: Fri Mar 24 19:58:59 MDT 2023
- todo: input."Button" to interface or strings
ts: Fri Mar 24 21:16:39 MDT 2023
- todo: input.MayhemParty as a logical wrapper from %10 but then gotta translate back
to char for keyboard things somewhere; space delimited?
ts: Fri Mar 24 21:16:39 MDT 2023
- todo: change from 'a','b','c' from rust to just 11,21,31,41 so playerName is known
implicitly
ts: Sat Mar 25 00:06:21 MDT 2023
- todo: lag via UDP formatted inputs as space-delimited TS PID buttonIdx buttonIdx
buttonIdx
ts: Sat Mar 25 00:13:19 MDT 2023
- todo: map keys triggered by user to player idx and their keys
ts: Sat Mar 25 00:44:19 MDT 2023
- todo: use button.V01Cfg; map keys triggered by user to player idx and their keys
ts: Sat Mar 25 09:12:43 MDT 2023
- todo: v01cfg includes messages to send per client and exposes tcp server for it
ts: Sat Mar 25 10:09:06 MDT 2023
- todo: v01cfg includes messages to send per client and exposes http server for it
ts: Sat Mar 25 11:28:29 MDT 2023
- todo: send clients messages to display
ts: Sat Mar 25 11:28:29 MDT 2023
- todo: input.MayhemParty as a logical wrapper from mod10 but then gotta translate
back to char for keyboard things somewhere; space delimited?
ts: Sat Mar 25 11:28:40 MDT 2023
- todo: rusty configs have "name" for each client
details: |
'if name == server_broadcasted_name { debug_print_in_gui(server_broadcasted_message) }'
ts: Sat Mar 25 11:28:40 MDT 2023
- todo: rotation triggers
subtasks:
- minigame end
- random word from cur wikipedia page
- each person has their own hotword
- only spectators have hotwords and must get a player to speak it
- tribunal to vote who said it
ts: Sat Mar 25 11:29:52 MDT 2023
- todo: we have 7 players oooooof
ts: Sat Mar 25 11:29:52 MDT 2023
- todo: endpoint for v01 to start read-only mode so when hotword spoken, players are
dcd without losing players
ts: Sat Mar 25 23:16:47 MDT 2023
- todo: tts for when someone said the word via larynx docker + http.get + https://pkg.go.dev/github.com/faiface/beep@v1.1.0/wav
ts: Sun Mar 26 09:57:02 MDT 2023
- todo: endpoint for v01 to start read-only mode so when hotword spoken, players are
dcd without losing players; press a hotkey that is bound to dolphin emulator pause
ts: Sun Mar 26 14:28:46 MDT 2023
- todo: game master to coordinate config change
ts: Mon Mar 27 11:01:10 MDT 2023
- todo: rotation triggers
subtasks:
- todo: stdin
subtasks:
- minigame end
- todo: voice recognition of hotwords to vote who dun it
subtasks:
- random word from cur wikipedia page
- each person has their own hotword
- only spectators have hotwords and must get a player to speak it
- tribunal to vote who said it
ts: Mon Mar 27 11:04:56 MDT 2023
- todo: clients can send STT via box
ts: Mon Mar 27 17:55:41 MDT 2023
- todo: -venue needs to update for new env variables for GUI
ts: Mon Mar 27 21:43:40 MDT 2023
- todo: -venue needs to udpate hits hotword path for new Users.[].State.GM.Alias
ts: Mon Mar 27 21:43:40 MDT 2023
- todo: clients can vote
ts: Mon Mar 27 21:43:40 MDT 2023
- todo: rotation triggers
subtasks:
- ui for election start, election votes, election end stuff
- todo: stdin
subtasks:
- minigame end
- todo: voice recognition of hotwords to vote who dun it
subtasks:
- random word from cur wikipedia page
- each person has their own hotword
- only spectators have hotwords and must get a player to speak it
- tribunal to vote who said it
ts: Mon Mar 27 21:43:40 MDT 2023
- todo: https via home.blapointe and rproxy
ts: Mon Mar 27 21:43:53 MDT 2023
- todo: single docker image to run all
ts: Tue Mar 28 20:34:03 MDT 2023
- todo: how to get audio from inside docker into discord?
ts: Wed Mar 29 19:57:18 MDT 2023
- todo: how to get audio from game into discord?
ts: Wed Mar 29 19:57:18 MDT 2023
- todo: stt in vm is nono hmmm
details: |
vm
dolphin
discord
tts
baremetal
discord+mic | MODEL=tiny.en stt
*
ts: Wed Mar 29 21:41:25 MDT 2023
- todo: stt in vm is nono hmmm
details: |
https://github.com/ggerganov/whisper.cpp
:sparkles: go bindings too
vm
dolphin
discord
tts
baremetal
discord+mic | MODEL=tiny.en stt
*
ts: Fri Mar 31 11:05:29 MDT 2023
- todo: challenge; what runs where?
details: |
native: stt, discord, dolphin
dolphin needs native
discord needs to be where dolphin is
stt needs to be with discord
ts: Fri Mar 31 16:46:09 MDT 2023
- todo: challenge; what runs where?
details: |
native: stt, discord, dolphin, mayhem-party
dolphin needs native
discord needs to be where dolphin is
stt needs to be with discord
mayhem-party must be with dolphin
vm: tts
ok so VM/docker are dead to me that is good to know
ts: Fri Mar 31 16:46:49 MDT 2023
- todo: can i send VM discord output to a pipe for stt?
ts: Fri Mar 31 16:47:21 MDT 2023
- todo: all must run native, so manual setup learning time
ts: Fri Mar 31 22:45:58 MDT 2023
- todo: stt to rust-whisper and new-age hotwords.py
ts: Fri Mar 31 22:45:58 MDT 2023
- todo: audio pipes; can i send discord output to a pipe for stt?
ts: Sat Apr 1 11:20:27 MDT 2023
- todo: public gui script
ts: Sun Apr 2 11:50:42 MDT 2023
- todo: trigger a vote
ts: Sun Apr 2 11:50:42 MDT 2023
- todo: display vote progress
ts: Sun Apr 2 11:50:42 MDT 2023
- todo: audio dolhpin+tts, video dolphin to OBS to discord share
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: server gui script
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: trigger an election
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: trigger a shuffle for init
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: assign aliases
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: rotation triggers
subtasks:
- ui for election start, election votes, election end stuff
- todo: stdin
subtasks:
- minigame end
- todo: voice recognition of hotwords to vote who dun it
subtasks:
- random word from cur wikipedia page
- only spectators have hotwords and must get a player to speak it
- tribunal to vote who said it
ts: Sun Apr 2 12:36:51 MDT 2023