README.md |
JoyDance
Demo
Features
- Play Just Dance 2017 and later on Xbox/Stadia/PS/NSW with Joy-Cons.
- Playing with a Joy-Con (+ its strap) is safer and more comfortable than holding a phone.
- No latency.
- Better score than using a phone (hopefully).
- No random disconnection.
- Support up to 6 players.
- Support all platforms (in theory):
- Xbox Series X/S
- Nintendo Switch
- Xbox One (not tested)
- Stadia (not tested)
- PlayStation 4/5 (not tested)
How does it work?
It pretends to be the Just Dance Controller app, sends movements of the Joy-Con to your game console.
Tested on
- JD 2022 on Xbox Series X and JD 2020 on Nintendo Switch.
- MacOS Catalina 10.15 with TP-Link Bluetooth 4.0 Nano USB Adapter UB400.
- Raspberry Pi Zero 2 W with MPOW BH519A Bluetooth 5.1 USB Adapter.
Tested on Zero 2 W with 2 Joy-Cons and it worked just fine.
Requirements
- PC/Mac/Linux with bluetooth support.
- Python 3.7+ and pip installed.
- 1 to 6 Joy-Cons.
- It's RECOMMENDED to:
- Use a Bluetooth dongle, because built-in Bluetooth sucks (or you will get disconnected constantly while playing). Make sure you buy a dongle with game controllers support, not just for audio devices. Not all dongles support Mac/Linux, so remember to check compatibility before buying.
- Use a Nintendo Switch to update Joy-Con to the latest firmware & calibate its motion sensors. Ask your friends or bring it to the game shop if you don't have one.
Installation
- Download the latest version and extract it into a folder.
- Open that folder in Terminal/Command Prompt, then run this command:
pip3 install -r requirements.txt
Extra steps for Linux users
- Linux users may need to use
hid
instead ofhidapi
(not sure whyhidapi
couldn't find Joy-Cons on Linux).
pip3 uninstall hidapi
sudo apt install libhidapi-dev
pip3 install hid
- Create a new udev rule file at
/etc/udev/rules.d/50-nintendo-switch.rules
(Source)
# Switch Joy-con (L) (Bluetooth only)
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", KERNELS=="0005:057E:2006.*", MODE="0666"
# Switch Joy-con (R) (Bluetooth only)
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", KERNELS=="0005:057E:2007.*", MODE="0666"
# Switch Pro controller (USB and Bluetooth)
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2009", MODE="0666"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", KERNELS=="0005:057E:2009.*", MODE="0666"
# Switch Joy-con charging grip (USB only)
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="200e", MODE="0666"
Reload udev rules:
sudo udevadm control --reload-rules
sudo udevadm trigger
- Install
dkms-hid-nintendo
(Joy-Con driver) if you're running Linux kernel older than 5.16.
Usage
-
Open the phone pairing screen on Just Dance.
-
Connect your PC/Mac/Linux to the same Wi-Fi network as your game console.
-
Run this command:
python3 dance.py
-
Open http://localhost:32623 in a web browser (32623 = DANCE).
-
Turn on Bluetooth and pair with Joy-Con by holding down the SYNC button until the light move up and down. Press the "Refresh" button until your Joy-Con shows up.
-
Fill the form.
-
Pairing Method:
- Fast:
- Only for Xbox One, PlayStation 4/5 and Nintendo Switch.
- Connect instantly.
- Doesn't require pairing code.
- Requires console's private IP address.
- Default
- Slower, but supports all platforms (including Xbox Series and Stadia).
- Requires pairing code.
- Requires host's private IP address.
- Fast:
-
Host's Private IP Address:
- The private IP address of your PC/Mac/Linux. Find this in the Wi-Fi settings.
- Starts with
192.168
.
-
Console's Private IP Address:
- The private IP address of your console. Find this in the Wi-Fi settings on console.
- Starts with
192.168
.
-
Pairing Code: get this from the game.
-
-
Press the "Connect" button next to Joy-Con to start the pairing process.
-
💃🕺
FAQ
-
What is the correct way to hold a Joy-Con?
Hold the Joy-Con (L)/(R) in your right hand, with your palm touching the back of Joy-Con. -
How to control with Joy-Con (L)?
- Up = X
- Right = A
- Down = B
- Left = Y
- L = R
- ZL = ZR
- Minus = Plus
-
How to exit JoyDance?
PressCtrl + C
two times or close the Terminal window. -
Is it possible to port JoyDance to wearable devices like smart watches (Wear OS, watchOS...)?
Yes. I tested on a tiny M5StickC Plus and it worked! But remember, some movements require you to move only the palm of your hand won't be recognized correctly.