{"id":13618244,"url":"https://github.com/one-click-studio/gabin","last_synced_at":"2025-04-14T10:31:20.352Z","repository":{"id":98175768,"uuid":"586937891","full_name":"one-click-studio/gabin","owner":"one-click-studio","description":"Automate camera switching with OBS, Bitfocus Companion and any audio api.","archived":false,"fork":false,"pushed_at":"2025-03-31T10:50:21.000Z","size":240206,"stargazers_count":517,"open_issues_count":11,"forks_count":32,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-31T11:32:03.355Z","etag":null,"topics":["asio","atem","blackmagic","camera-switcher","companion","obs"],"latest_commit_sha":null,"homepage":"https://oneclickstudio.fr","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/one-click-studio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-09T15:29:44.000Z","updated_at":"2025-03-16T19:14:45.000Z","dependencies_parsed_at":"2023-09-29T11:20:28.806Z","dependency_job_id":"9598c204-fd07-4ef6-9d14-05dfeb588181","html_url":"https://github.com/one-click-studio/gabin","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/one-click-studio%2Fgabin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/one-click-studio%2Fgabin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/one-click-studio%2Fgabin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/one-click-studio%2Fgabin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/one-click-studio","download_url":"https://codeload.github.com/one-click-studio/gabin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248862618,"owners_count":21173838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asio","atem","blackmagic","camera-switcher","companion","obs"],"created_at":"2024-08-01T20:01:56.927Z","updated_at":"2025-04-14T10:31:17.891Z","avatar_url":"https://github.com/one-click-studio.png","language":"Vue","funding_links":[],"categories":["Vue"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/one-click-studio/gabin/blob/main/src/resources/icons/icon.png?raw=true\" width=\"150px\" height=\"150px\"\u003e\n\u003c/p\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eGabin\u003c/h1\u003e\n\u003c/div\u003e\n\u003cp align=\"center\"\u003eAutomate camera switching with \u003cem\u003eOBS, Bitfocus Companion and any audio api\u003c/em\u003e.\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/one-click-studio/gabin/actions/workflows/release.yml/badge.svg\"\u003e\n\u003c/p\u003e\n\u003cimg width=\"1392\" alt=\"Screenshot 2023-01-18 at 10 08 19\" src=\"https://user-images.githubusercontent.com/26444186/213129682-a180d396-4142-4cee-8ef8-7116b22483e5.png\"\u003e\n\n## Download\nYou can download the latest version of Gabin [here](https://github.com/one-click-studio/gabin/releases).\n\n## Features\n- ⚡️  [Vue 3](https://vuejs.org), [pnpm](https://pnpm.io) - born with fastness\n- 🖌️ [unocss](https://github.com/unocss/unocss) for ultra-fast tailwind-compatible styling\n- 💬 [socketIo](https://socket.io/) for main/renderer communication\n- 🚀 GitHub Actions to build \u0026 release app\n\n## Usage\n\n### Development\n```sh\npnpm i\n```\n```sh\npnpm dev\n```\n\n### Build\n```sh\npnpm build\n```\n\n## Known issues\n- ASIO is not working with XR32 audio mixer\n\n## Documentation\n\n### CLI\nGabin can be called in command line with several options :\n- ```-h```, ```--help``` : Display this message\n- ```-d```, ```--debug``` : Enable debug mode\n- ```-v```, ```--version``` : Display version\n- ```--no-auto-open``` : Disable auto open in browser\n\n### Environment variables\nYou can add environment variables :\n- ```GABIN_HOST``` : Hostname to use (default: ```localhost```)\n- ```GABIN_HTTP_PORT``` : Port to use (default: ```1510```)\n- ```GABIN_OSC_PORT``` : Port to use (default: ```32123```)\n- ```GABIN_BASE_URL``` : Base url to use (default: ```/```)\n- ```GABIN_LOGS_FOLDER``` : Folder to store logs (default: ```$appdata/gabin/gabin.log```)\n- ```GABIN_CONFIG_FOLDER``` : Folder to store config (default: ```$appdata/gabin/database.json```)\n\n### Video mixers options\n- OBS : Gabin communicates directly with OBS via websocket to trigger shots and listen to scene change (needs OBS v28+)\n- VMIX : Gabin communicates directly with VMIX via TCP socket to trigger shots and listen to scene change\n- OSC : Gabin will triggers the paths you indicate for each shot and listen to scene change on his OSC port (more details below)\n\n### OSC API/module\nBy default, Gabin listen OSC on ```localhost:32123```\n\n#### API\nEven if you don't choose OSC as video mixer, you can control Gabin through OSC\n\nCommand :\n| path | params | description |\n| ---- | ------ | ----------- |\n| ```/gabin/on``` | none | power Gabin on |\n| ```/gabin/off``` | none | power Gabin off |\n| ```/gabin/config``` | config: string | add or edit this config |\n| ```/gabin/profile``` | profileName: string | set this profile as active |\n| ```/scene/$NAME_OF_YOUR_SCENE``` | none | tell Gabin what the current scene is |\n| ```/source/$NAME_OF_YOUR_SOURCE``` | none | trigger a specific shot |\n| ```/mic/$NAME_OF_YOUR_MIC``` | availabe: 1,0 | toggle mic availability\n| ```/autocam``` | autocam: 1,0 | toggle autocam\n\nRequest :\n| path | params | description |\n| ---- | ------ | ----------- |\n| ```/gabin/is-ready``` | host: string, port: number, path: string | get TRUE if Gabin is connected |\n| ```/gabin/profiles``` | host: string, port: number, path: string | get all profiles |\n| ```/gabin/devices``` | host: string, port: number, path: string | get all audio devices |\n\nRegister :\n| path | params | description |\n| ---- | ------ | ----------- |\n| ```/register/shot``` | host: string, port: number, path: string | get updated on each triggered shot |\n| ```/register/autocam``` | host: string, port: number, path: string | get updated when play/pause Gabin |\n| ```/register/defaultProfile``` | host: string, port: number, path: string | get updated when new default profile is set |\n\n### Other options\n- allow shot to be in scene but prevent from showing automatically\n\nIn the json database, go under ```profiles \u003e settings \u003e autocam \u003e containers \u003e mics \u003e cams \u003e source \u003e options```.\nThere you can add a ```noIllu``` options, a boolean (```true``` or ```false```)\n\n- allow/forbid some shots depending on which mics are availables\n\nIn the json database, go under ```profiles \u003e settings \u003e autocam \u003e containers \u003e mics \u003e cams \u003e source \u003e options```.\nThere you can add a ```matching``` options, the value must be a array of strings.\nYou have to specify for each mics either :\n - the mic number : it has to be available\n - ```-``` : it has to be not available\n - ```*``` : the availability does not matter \n\nE.g.:\n```\nprofiles \u003e settings \u003e autocam \u003e containers \u003e mics \u003e cams \u003e source \u003e options\n[...]\n{\n  \"source\": {\n    \"name\": \"large shot 1\",\n    \"options\": {\n      \"matching\": [\"1234\"]\n    }\n  },\n  \"weight\": 5\n},\n{\n  \"source\": {\n    \"name\": \"large shot 2\",\n    \"options\": {\n      \"matching\": [\"1*3-\"]\n    }\n  },\n  \"weight\": 10\n},\n[...]\n```\nThe \"large shot 1\" may be shot if all the 4 mics are availables.\nHere, the \"large shot 2\" may be shot if :\n - the 1st and the 3rd mics are availables\n - the 4th mic is not available\n\n\n---\nMade in 🇫🇷 by [OneClickStudio](https://oneclickstudio.fr/).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fone-click-studio%2Fgabin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fone-click-studio%2Fgabin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fone-click-studio%2Fgabin/lists"}