Compare commits

..

No commits in common. "master" and "v0.1.0" have entirely different histories.

31 changed files with 100 additions and 945 deletions

3
.gitignore vendored
View File

@ -1,3 +0,0 @@
/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,15 +1,53 @@
# Mayhem Party Venue # Hosting a Mayhem Party
# Clients # Clients
Send link to `http://localhost:17072` ## Distribute `rusty-pipe`
```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
## Code ## TTS
`bash ./server.sh` `cd ./git.d/tts.d/larynx.d; bash run.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

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

View File

@ -1,14 +1,11 @@
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
cp ./config.d/mayhem-party.d/v01{"",-live}.yaml export V01_CONFIG=./config.d/mayhem-party.d/v01.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=${OUTPUT_KEYBOARD:-false} export 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

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

View File

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

View File

@ -1,173 +0,0 @@
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

@ -1,173 +0,0 @@
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

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

View File

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

View File

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

View File

@ -1,64 +0,0 @@
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,64 +1,24 @@
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": "1" # a "1": "5"
"2": "2" # b "2": "6"
"3": "3" # x "3": "7"
"4": "4" # y "4": "8"
"5": "5" # start a: f
w: "6" # stickUp d: h
a: "7" # stickLeft e: "y"
s: "8" # stickDown q: r
d: "9" # stickRight s: g
e: "0" # r w: t
q: "-" # l quiet: true
- 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,11 +6,10 @@ streams:
gui: gui:
user: bel user: bel
feedback: feedback:
url_read: http://mayhem-party.home.blapointe.com:17071?user=bel url: http://mayhem-party.home.blapointe.com:17071?user=bel
url_say: http://mayhem-party.home.blapointe.com:17071?user=bel&say= press: {prefix: "", suffix: ""}
url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=bel&payload= release: {prefix: "", suffix: ""}
release_prefix: "" format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -22,7 +21,6 @@ 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,11 +6,10 @@ streams:
gui: gui:
user: zach user: zach
feedback: feedback:
url_read: http://mayhem-party.home.blapointe.com:17071?user=zach url: http://mayhem-party.home.blapointe.com:17071?user=zach
url_say: http://mayhem-party.home.blapointe.com:17071?user=zach&say= press: {prefix: "", suffix: ""}
url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=zach&payload= release: {prefix: "", suffix: ""}
release_prefix: "" format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -22,7 +21,6 @@ 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,11 +6,10 @@ streams:
gui: gui:
user: chase user: chase
feedback: feedback:
url_read: http://mayhem-party.home.blapointe.com:17071?user=chase url: http://mayhem-party.home.blapointe.com:17071?user=chase
url_say: http://mayhem-party.home.blapointe.com:17071?user=chase&say= press: {prefix: "", suffix: ""}
url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=chase&payload= release: {prefix: "", suffix: ""}
release_prefix: "" format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -22,7 +21,6 @@ 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,11 +6,10 @@ streams:
gui: gui:
user: mason user: mason
feedback: feedback:
url_read: http://mayhem-party.home.blapointe.com:17071?user=mason url: http://mayhem-party.home.blapointe.com:17071?user=mason
url_say: http://mayhem-party.home.blapointe.com:17071?user=mason&say= press: {prefix: "", suffix: ""}
url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=mason&payload= release: {prefix: "", suffix: ""}
release_prefix: "" format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -22,7 +21,6 @@ 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,11 +6,10 @@ streams:
gui: gui:
user: nat user: nat
feedback: feedback:
url_read: http://mayhem-party.home.blapointe.com:17071?user=nat url: http://mayhem-party.home.blapointe.com:17071?user=nat
url_say: http://mayhem-party.home.blapointe.com:17071?user=nat&say= press: {prefix: "", suffix: ""}
url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=nat&payload= release: {prefix: "", suffix: ""}
release_prefix: "" format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -22,7 +21,6 @@ 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,11 +6,10 @@ streams:
gui: gui:
user: roxy user: roxy
feedback: feedback:
url_read: http://mayhem-party.home.blapointe.com:17071?user=roxy url: http://mayhem-party.home.blapointe.com:17071?user=roxy
url_say: http://mayhem-party.home.blapointe.com:17071?user=roxy&say= press: {prefix: "", suffix: ""}
url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=roxy&payload= release: {prefix: "", suffix: ""}
release_prefix: "" format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -22,7 +21,6 @@ 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,11 +6,10 @@ streams:
gui: gui:
user: bill user: bill
feedback: feedback:
url_read: http://mayhem-party.home.blapointe.com:17071?user=bill url: http://mayhem-party.home.blapointe.com:17071?user=bill
url_say: http://mayhem-party.home.blapointe.com:17071?user=bill&say= press: {prefix: "", suffix: ""}
url_send: http://mayhem-party.home.blapointe.com:17071/gm/rpc/vote?user=bill&payload= release: {prefix: "", suffix: ""}
release_prefix: "" format: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
format_keys: '{"T":{{ms}},"U":"{{user}}","Y":"{{pressed}}","N":"{{released}}"}'
buttons: buttons:
up: 'w' up: 'w'
down: 's' down: 's'
@ -22,7 +21,6 @@ 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

@ -1,16 +0,0 @@
#! /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

@ -1,20 +0,0 @@
#! /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

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

View File

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

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

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

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

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

144
server.sh
View File

@ -1,144 +0,0 @@
# /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
View File

@ -1,193 +0,0 @@
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