This is a rewrite/port of CHOSS, an automatic OBS scene switching tool for Clone Hero / YARG players. It works by detecting changes in the currentsong.txt file of the game, which lets the program determine when to switch to/from the specified scenes via OBS websockets.
Taken on Arch Linux with KDE Plasma running on a Steam Deck
- Windows or Linux (tested on Arch Linux with KDE Plasma, as well as Windows 11)
- OBS Studio v28 or newer, with at least two scenes set up (one for gameplay, and one for menus)
- Clone Hero or YARG
Download your platform's build of PyCHOSS from Releases to its own folder.
In order to use PyCHOSS, you need to configure your OBS websocket server.
- Click Tools > WebSocket Server Settings. Make sure Enable WebSocket Server is checked.
- It is strongly recommended to use a password for authentication, preferably one that is generated. To do this, check the Enable Authentication box, click Generate Password, and then click Apply. You only need to do this once.
- Click the Show Connect Info button, and copy the password that was generated. You'll need this to connect PyCHOSS to the websocket server.
- (optional) If connecting to a WebSocket on a different PC running OBS, you'll need the local IP address of that PC. Otherwise, leave the IP in PyCHOSS as
localhost,127.0.0.1, or0.0.0.0
Important
It really goes without saying, but do NOT give your PyCHOSS installation's config.ini to ANYONE!
This is because it contains your OBS websocket server password (if any) in plaintext.
- Paste the password for your OBS websocket in the password box by selecting it and pressing Ctrl+V (right-clicking will not work)
- Select which game you're playing via the tabs in the upper-left corner of the window. If the
currentsong.txtfile isn't found, you might need to browse for it manually. - Change the scene names according to the scene names you have in OBS. Note that the scene names are case-sensitive!
- Click Save configuration to save your settings
- Click the Connect button, and you should be all set!
Building (using PyInstaller)
First and foremost, download the source code for this repo via the green Code button towards the top of the page when viewing this repo.
- If you don't have Python and
pipset up, you'll need the latest version of both installed on your system (instructions vary by distro, so look it up, I guess)
I also recommend setting up a virtual environment in the directory of the source code to avoid certain issues.
- If you do this, you'll need to reactivate the venv every time you open the terminal
- Example of how to set up a venv:
python -m venv .venv(only run this once)source .venv/bin/activate(run this every time you open terminal)
You may also need to install some extra libraries in order to use pyinstaller. See this page for more info.
- Install the required libraries from
requirements.txt
pip install -r requirements.txt
- Install
pyinstallervia pip.
pip install -U pyinstaller
- Finally, to build the binary:
pyinstaller --onefile --noconsole --hidden-import PIL._tkinter_finder pychoss.py
The parameter --hidden-import PIL._tkinter_finder is required in order for the build to run, at least according to my testing.
Once complete, the Linux binary will be located in the dist directory.
If you already have 64-bit Python set up in Wine, skip to step 3.
- Install Wine. Note: If you're unable to install Wine the traditional way, you might end up resorting to installing Wine's Flatpak from Flathub. If you somehow are in this situation, replace
winein the commands below withflatpak run org.winehq.Wineetc. - Download the 64-bit Windows installer of Python 3.14.2, and run it within Wine:
wine ./python-3.14.2-amd64.exe
- IMPORTANT: Make sure you do these things when installing Python in Wine:
- Add Python to PATH
- Customize installation
- Install for all users as Administrator
- Set the Python install folder to
C:\Python3\
- To check that Python is installed correctly, run
wine C:/Python3/python.exe --version
- Update
pip, and then install the required libraries fromrequirements.txtas well aspyinstaller:
wine C:/Python3/python.exe -m pip install --upgrade pip
wine C:/Python3/python.exe -m pip install -r requirements.txt
wine C:/Python3/python.exe -m pip install pyinstaller
- Run the
build-windows.batBatch file:
wine build-windows.bat
- Note: You may see a bunch of warning/debug messages. This is probably normal, and it shouldn't be a huge deal as long as you end up with a working
pychoss.exefile in thedistfolder.
- Test the build to see if it launches properly, either via Wine or a Windows machine. If it shows the user interface, then you've successfully built it.
soon™?
Note: It is currently impossible to build a Linux binary from a Windows machine, as far as I'm aware. However, building a Windows executable from a Linux machine is possible using Wine (see above).
- obs-websocket-py : WebSocket API used for interfacing with OBS
- ttkbootstrap : Library used for enhancing the UI with theme support
- PyInstaller : Used for compiling single-file binaries for release
- Clone Hero : Clone of Guitar Hero games made in Unity Engine
- YARG : Clone of Rock Band games, also made in Unity Engine
- Countless Google searches leading me to various forums and blogs that helped me develop this script
- including this blog post which helped me build the Windows version without having to boot into Windows.
If you find this program useful for your Twitch streams, then thanks for using it. I hope you get good FCs, and rock on!


