https://github.com/one-click-studio/gabin
Automate camera switching with OBS, Bitfocus Companion and any audio api.
https://github.com/one-click-studio/gabin
asio atem blackmagic camera-switcher companion obs
Last synced: about 1 year ago
JSON representation
Automate camera switching with OBS, Bitfocus Companion and any audio api.
- Host: GitHub
- URL: https://github.com/one-click-studio/gabin
- Owner: one-click-studio
- License: mit
- Created: 2023-01-09T15:29:44.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-31T10:50:21.000Z (about 1 year ago)
- Last Synced: 2025-03-31T11:32:03.355Z (about 1 year ago)
- Topics: asio, atem, blackmagic, camera-switcher, companion, obs
- Language: Vue
- Homepage: https://oneclickstudio.fr
- Size: 229 MB
- Stars: 517
- Watchers: 5
- Forks: 32
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Gabin
Automate camera switching with OBS, Bitfocus Companion and any audio api.
## Download
You can download the latest version of Gabin [here](https://github.com/one-click-studio/gabin/releases).
## Features
- ⚡️ [Vue 3](https://vuejs.org), [pnpm](https://pnpm.io) - born with fastness
- 🖌️ [unocss](https://github.com/unocss/unocss) for ultra-fast tailwind-compatible styling
- 💬 [socketIo](https://socket.io/) for main/renderer communication
- 🚀 GitHub Actions to build & release app
## Usage
### Development
```sh
pnpm i
```
```sh
pnpm dev
```
### Build
```sh
pnpm build
```
## Known issues
- ASIO is not working with XR32 audio mixer
## Documentation
### CLI
Gabin can be called in command line with several options :
- ```-h```, ```--help``` : Display this message
- ```-d```, ```--debug``` : Enable debug mode
- ```-v```, ```--version``` : Display version
- ```--no-auto-open``` : Disable auto open in browser
### Environment variables
You can add environment variables :
- ```GABIN_HOST``` : Hostname to use (default: ```localhost```)
- ```GABIN_HTTP_PORT``` : Port to use (default: ```1510```)
- ```GABIN_OSC_PORT``` : Port to use (default: ```32123```)
- ```GABIN_BASE_URL``` : Base url to use (default: ```/```)
- ```GABIN_LOGS_FOLDER``` : Folder to store logs (default: ```$appdata/gabin/gabin.log```)
- ```GABIN_CONFIG_FOLDER``` : Folder to store config (default: ```$appdata/gabin/database.json```)
### Video mixers options
- OBS : Gabin communicates directly with OBS via websocket to trigger shots and listen to scene change (needs OBS v28+)
- VMIX : Gabin communicates directly with VMIX via TCP socket to trigger shots and listen to scene change
- OSC : Gabin will triggers the paths you indicate for each shot and listen to scene change on his OSC port (more details below)
### OSC API/module
By default, Gabin listen OSC on ```localhost:32123```
#### API
Even if you don't choose OSC as video mixer, you can control Gabin through OSC
Command :
| path | params | description |
| ---- | ------ | ----------- |
| ```/gabin/on``` | none | power Gabin on |
| ```/gabin/off``` | none | power Gabin off |
| ```/gabin/config``` | config: string | add or edit this config |
| ```/gabin/profile``` | profileName: string | set this profile as active |
| ```/scene/$NAME_OF_YOUR_SCENE``` | none | tell Gabin what the current scene is |
| ```/source/$NAME_OF_YOUR_SOURCE``` | none | trigger a specific shot |
| ```/mic/$NAME_OF_YOUR_MIC``` | availabe: 1,0 | toggle mic availability
| ```/autocam``` | autocam: 1,0 | toggle autocam
Request :
| path | params | description |
| ---- | ------ | ----------- |
| ```/gabin/is-ready``` | host: string, port: number, path: string | get TRUE if Gabin is connected |
| ```/gabin/profiles``` | host: string, port: number, path: string | get all profiles |
| ```/gabin/devices``` | host: string, port: number, path: string | get all audio devices |
Register :
| path | params | description |
| ---- | ------ | ----------- |
| ```/register/shot``` | host: string, port: number, path: string | get updated on each triggered shot |
| ```/register/autocam``` | host: string, port: number, path: string | get updated when play/pause Gabin |
| ```/register/defaultProfile``` | host: string, port: number, path: string | get updated when new default profile is set |
### Other options
- allow shot to be in scene but prevent from showing automatically
In the json database, go under ```profiles > settings > autocam > containers > mics > cams > source > options```.
There you can add a ```noIllu``` options, a boolean (```true``` or ```false```)
- allow/forbid some shots depending on which mics are availables
In the json database, go under ```profiles > settings > autocam > containers > mics > cams > source > options```.
There you can add a ```matching``` options, the value must be a array of strings.
You have to specify for each mics either :
- the mic number : it has to be available
- ```-``` : it has to be not available
- ```*``` : the availability does not matter
E.g.:
```
profiles > settings > autocam > containers > mics > cams > source > options
[...]
{
"source": {
"name": "large shot 1",
"options": {
"matching": ["1234"]
}
},
"weight": 5
},
{
"source": {
"name": "large shot 2",
"options": {
"matching": ["1*3-"]
}
},
"weight": 10
},
[...]
```
The "large shot 1" may be shot if all the 4 mics are availables.
Here, the "large shot 2" may be shot if :
- the 1st and the 3rd mics are availables
- the 4th mic is not available
---
Made in 🇫🇷 by [OneClickStudio](https://oneclickstudio.fr/).