diff --git a/CLAUDE.md b/CLAUDE.md index ad09d70..2bda7ca 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -64,7 +64,7 @@ This is a Next.js web application (branded as "Live Stream Manager") that contro - Glass morphism effects with proper backdrop blur - Distinctive active navigation states for clear wayfinding -5. **Screen Position Management**: Seven distinct screen positions (large, left, right, topLeft, topRight, bottomLeft, bottomRight) with individual source control +5. **Screen Position Management**: Seven distinct screen positions (large, left, right, top_left, top_right, bottom_left, bottom_right) with individual source control 6. **Real-time Status Monitoring**: Footer component polls OBS status every 30 seconds showing connection, streaming, and recording status @@ -74,6 +74,8 @@ This is a Next.js web application (branded as "Live Stream Manager") that contro 9. **Stream Deletion with Confirmation**: Safe deletion workflow that removes streams from both OBS and database with user confirmation prompts +10. **OBS Scene Control**: Direct scene switching controls with dynamic state tracking and real-time synchronization between UI and OBS + ### Environment Configuration - `FILE_DIRECTORY`: Directory for database and text files (default: ./files) - `OBS_WEBSOCKET_HOST`: OBS WebSocket host (default: 127.0.0.1) @@ -112,6 +114,10 @@ This is a Next.js web application (branded as "Live Stream Manager") that contro - `POST /api/syncGroups` - Synchronize all teams with OBS groups - `GET /api/verifyGroups` - Verify database groups exist in OBS with UUID tracking +#### OBS Scene Control +- `POST /api/setScene` - Switch OBS to specified scene layout (1-Screen, 2-Screen, 4-Screen) +- `GET /api/getCurrentScene` - Get currently active OBS scene for state synchronization + #### System Status - `GET /api/obsStatus` - Real-time OBS connection and streaming status @@ -222,6 +228,16 @@ See [OBS Setup Guide](./docs/OBS_SETUP.md) for detailed configuration instructio - ⚠️ "Not found in OBS" - Group in database but missing from OBS - **System Scene Protection**: Infrastructure scenes (1-Screen, 2-Screen, 4-Screen, Starting, Ending, Audio, Movies, Resources) excluded from orphaned cleanup +### OBS Scene Control +- **Dynamic Scene Switching**: Direct control of OBS scene layouts (1-Screen, 2-Screen, 4-Screen) from the main interface +- **Real-time State Tracking**: Buttons dynamically show active/inactive states based on current OBS scene +- **Visual State Indicators**: + - Active buttons: Green/yellow gradient with "Active: X-Screen" text + - Inactive buttons: Blue/cyan gradient with "Switch to X-Screen" text +- **Optimistic UI Updates**: Immediate visual feedback when switching scenes +- **Glass Morphism Integration**: Scene buttons styled consistently with existing design system +- **Toast Feedback**: Success/error notifications for scene switching operations + ### User Experience Improvements - **Toast Notifications**: Real-time feedback for all operations (success/error/info) - **Form Validation**: Client-side validation with immediate error feedback diff --git a/README.md b/README.md index f375aa9..d44ace2 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,11 @@ A professional [Next.js](https://nextjs.org) web application for managing live streams and controlling multiple OBS [Source Switchers](https://github.com/exeldro/obs-source-switcher) with real-time WebSocket integration and modern glass morphism UI. -![alt text](image.png) +![Live Stream Manager Interface](docs/new_home.png) ## Features +- **OBS Scene Control**: Switch between OBS layouts (1-Screen, 2-Screen, 4-Screen) with dynamic button states - **Multi-Screen Source Control**: Manage 7 different screen positions (large, left, right, and 4 corners) - **Real-time OBS Integration**: WebSocket connection with live status monitoring - **Enhanced Stream Management**: Create, edit, and delete streams with comprehensive OBS cleanup @@ -145,6 +146,10 @@ npm run type-check # TypeScript validation - Identifies name mismatches - Shows sync status for all teams +### OBS Scene Control +- `POST /api/setScene` - Switch OBS to specified scene (1-Screen, 2-Screen, 4-Screen) +- `GET /api/getCurrentScene` - Get currently active OBS scene + ### System Status - `GET /api/obsStatus` - Real-time OBS connection, streaming, and recording status diff --git a/docs/new_home.png b/docs/new_home.png new file mode 100644 index 0000000..c574cc1 Binary files /dev/null and b/docs/new_home.png differ diff --git a/files/SaT.json b/files/SaT.json index 48782c8..4528790 100644 --- a/files/SaT.json +++ b/files/SaT.json @@ -17,6 +17,18 @@ { "name": "Ending" }, + { + "name": "jellyfish_jazzy_stream" + }, + { + "name": "jellyfish_ladyeverdream_stream" + }, + { + "name": "jellyfish_dellgate_stream" + }, + { + "name": "jellyfish_palpatine_stream" + }, { "name": "Audio" }, @@ -24,7 +36,10 @@ "name": "Movies" }, { - "name": "Scene" + "name": "Resources" + }, + { + "name": "Jellyfish" } ], "name": "SaT", @@ -437,12 +452,12 @@ "id": 1, "group_item_backup": false, "pos": { - "x": 960.0, - "y": 250.0 + "x": 0.0, + "y": 279.0 }, "pos_rel": { - "x": 0.0, - "y": -0.5370370149612427 + "x": -1.7777777910232544, + "y": -0.4833333492279053 }, "scale": { "x": 0.5, @@ -492,12 +507,12 @@ "id": 2, "group_item_backup": false, "pos": { - "x": 0.0, - "y": 250.0 + "x": 960.0, + "y": 279.0 }, "pos_rel": { - "x": -1.7777777910232544, - "y": -0.5370370149612427 + "x": 0.0, + "y": -0.4833333492279053 }, "scale": { "x": 0.5, @@ -735,7 +750,7 @@ "name": "ss_top_right", "source_uuid": "b38b1134-7040-44b4-a397-1a1385911403", "visible": true, - "locked": false, + "locked": true, "rot": 0.0, "scale_ref": { "x": 1920.0, @@ -790,7 +805,7 @@ "name": "ss_top_left", "source_uuid": "cd24ff7b-7e4b-4aef-a224-6af032de6247", "visible": true, - "locked": false, + "locked": true, "rot": 0.0, "scale_ref": { "x": 1920.0, @@ -1935,6 +1950,1413 @@ "monitoring_type": 0, "private_settings": {} }, + { + "prev_ver": 520159233, + "name": "Jellyfish", + "uuid": "264884c2-46ef-4369-b626-d0f77a408a69", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 15, + "custom_size": false, + "items": [ + { + "name": "jellyfish_text_bg", + "source_uuid": "7f783f05-26db-45c1-9b11-4e98e7ca15fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_text", + "source_uuid": "388d636a-41de-46b3-ba8a-97bf9bb040fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 2, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_palpatine_stream", + "source_uuid": "b819737f-8494-450b-93fe-1ab73f8d4942", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 2, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 11, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 1600.0, + "y": 900.0 + }, + "bounds_rel": { + "x": 2.9629628658294678, + "y": 1.6666666269302368 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_dellgate_stream", + "source_uuid": "ff2ed6d6-d781-4069-a7ce-a2b73f15201a", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 2, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 13, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 1600.0, + "y": 900.0 + }, + "bounds_rel": { + "x": 2.9629628658294678, + "y": 1.6666666269302368 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_ladyeverdream_stream", + "source_uuid": "964c2c47-bf63-439f-ac5a-c335f7a541fb", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 2, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 14, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 1600.0, + "y": 900.0 + }, + "bounds_rel": { + "x": 2.9629628658294678, + "y": 1.6666666269302368 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_jazzy_stream", + "source_uuid": "dcf958f4-3f73-452f-80f0-11a580c06e70", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 2, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 15, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 1600.0, + "y": 900.0 + }, + "bounds_rel": { + "x": 2.9629628658294678, + "y": 1.6666666269302368 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [], + "libobs.show_scene_item.2": [], + "libobs.hide_scene_item.2": [], + "libobs.show_scene_item.11": [], + "libobs.hide_scene_item.11": [], + "libobs.show_scene_item.13": [], + "libobs.hide_scene_item.13": [], + "libobs.show_scene_item.14": [], + "libobs.hide_scene_item.14": [], + "libobs.show_scene_item.15": [], + "libobs.hide_scene_item.15": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e", + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_dellgate", + "uuid": "955217c0-53c7-4bdb-99d8-2f27d7699dc2", + "id": "browser_source", + "versioned_id": "browser_source", + "settings": { + "audio_monitoring_type": 0, + "control_audio": true, + "url": "https://www.twitch.tv/dellgate", + "width": 1920, + "height": 1080, + "shutdown": false, + "restart_when_active": false, + "reroute_audio": true + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": true, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "ObsBrowser.Refresh": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_dellgate_stream", + "uuid": "ff2ed6d6-d781-4069-a7ce-a2b73f15201a", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 3, + "custom_size": false, + "items": [ + { + "name": "jellyfish_dellgate", + "source_uuid": "955217c0-53c7-4bdb-99d8-2f27d7699dc2", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_text_bg", + "source_uuid": "7f783f05-26db-45c1-9b11-4e98e7ca15fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 0, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 2, + "group_item_backup": false, + "pos": { + "x": 960.0, + "y": 50.0 + }, + "pos_rel": { + "x": 0.0, + "y": -0.9074074029922485 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_text", + "source_uuid": "388d636a-41de-46b3-ba8a-97bf9bb040fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 0, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 3, + "group_item_backup": false, + "pos": { + "x": 960.0, + "y": 50.0 + }, + "pos_rel": { + "x": 0.0, + "y": -0.9074074029922485 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [], + "libobs.show_scene_item.2": [], + "libobs.hide_scene_item.2": [], + "libobs.show_scene_item.3": [], + "libobs.hide_scene_item.3": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e", + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_jazzy", + "uuid": "b6710db4-c458-41b2-bc4b-4904fed872f8", + "id": "browser_source", + "versioned_id": "browser_source", + "settings": { + "audio_monitoring_type": 0, + "control_audio": true, + "url": "https://www.twitch.tv/jazzytwo", + "width": 1920, + "height": 1080, + "shutdown": false, + "restart_when_active": false, + "reroute_audio": true + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": true, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "ObsBrowser.Refresh": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_jazzy_stream", + "uuid": "dcf958f4-3f73-452f-80f0-11a580c06e70", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 3, + "custom_size": false, + "items": [ + { + "name": "jellyfish_jazzy", + "source_uuid": "b6710db4-c458-41b2-bc4b-4904fed872f8", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_text_bg", + "source_uuid": "7f783f05-26db-45c1-9b11-4e98e7ca15fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 0, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 2, + "group_item_backup": false, + "pos": { + "x": 960.0, + "y": 50.0 + }, + "pos_rel": { + "x": 0.0, + "y": -0.9074074029922485 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_text", + "source_uuid": "388d636a-41de-46b3-ba8a-97bf9bb040fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 0, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 3, + "group_item_backup": false, + "pos": { + "x": 960.0, + "y": 50.0 + }, + "pos_rel": { + "x": 0.0, + "y": -0.9074074029922485 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [], + "libobs.show_scene_item.2": [], + "libobs.hide_scene_item.2": [], + "libobs.show_scene_item.3": [], + "libobs.hide_scene_item.3": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e", + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_ladyeverdream", + "uuid": "2a56fbe4-b5c9-4cf2-b727-5ff2d88a59e4", + "id": "browser_source", + "versioned_id": "browser_source", + "settings": { + "audio_monitoring_type": 0, + "control_audio": true, + "url": "https://www.twitch.tv/ladyeverdream", + "width": 1920, + "height": 1080, + "shutdown": false, + "restart_when_active": false, + "reroute_audio": true + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": true, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "ObsBrowser.Refresh": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_ladyeverdream_stream", + "uuid": "964c2c47-bf63-439f-ac5a-c335f7a541fb", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 3, + "custom_size": false, + "items": [ + { + "name": "jellyfish_ladyeverdream", + "source_uuid": "2a56fbe4-b5c9-4cf2-b727-5ff2d88a59e4", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_text_bg", + "source_uuid": "7f783f05-26db-45c1-9b11-4e98e7ca15fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 0, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 2, + "group_item_backup": false, + "pos": { + "x": 960.0, + "y": 50.0 + }, + "pos_rel": { + "x": 0.0, + "y": -0.9074074029922485 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_text", + "source_uuid": "388d636a-41de-46b3-ba8a-97bf9bb040fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 0, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 3, + "group_item_backup": false, + "pos": { + "x": 960.0, + "y": 50.0 + }, + "pos_rel": { + "x": 0.0, + "y": -0.9074074029922485 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [], + "libobs.show_scene_item.2": [], + "libobs.hide_scene_item.2": [], + "libobs.show_scene_item.3": [], + "libobs.hide_scene_item.3": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e", + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_palpatine", + "uuid": "7d13d6c9-b283-4d68-b840-2ac62ff631af", + "id": "browser_source", + "versioned_id": "browser_source", + "settings": { + "audio_monitoring_type": 0, + "control_audio": true, + "url": "https://www.twitch.tv/palpatinexd", + "width": 1920, + "height": 1080, + "shutdown": false, + "restart_when_active": false, + "reroute_audio": true + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": true, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "ObsBrowser.Refresh": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_palpatine_stream", + "uuid": "b819737f-8494-450b-93fe-1ab73f8d4942", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 3, + "custom_size": false, + "items": [ + { + "name": "jellyfish_palpatine", + "source_uuid": "7d13d6c9-b283-4d68-b840-2ac62ff631af", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_text_bg", + "source_uuid": "7f783f05-26db-45c1-9b11-4e98e7ca15fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 0, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 2, + "group_item_backup": false, + "pos": { + "x": 960.0, + "y": 50.0 + }, + "pos_rel": { + "x": 0.0, + "y": -0.9074074029922485 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "jellyfish_text", + "source_uuid": "388d636a-41de-46b3-ba8a-97bf9bb040fa", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 0, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 3, + "group_item_backup": false, + "pos": { + "x": 960.0, + "y": 50.0 + }, + "pos_rel": { + "x": 0.0, + "y": -0.9074074029922485 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [], + "libobs.show_scene_item.2": [], + "libobs.hide_scene_item.2": [], + "libobs.show_scene_item.3": [], + "libobs.hide_scene_item.3": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e", + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_text", + "uuid": "388d636a-41de-46b3-ba8a-97bf9bb040fa", + "id": "text_ft2_source", + "versioned_id": "text_ft2_source_v2", + "settings": { + "color": 4294967295, + "outline_color": 4278190080, + "outline_size": 4, + "text": "Jellyfish", + "font": { + "face": "Arial", + "size": 96, + "style": "Bold" + }, + "outline": true, + "bk_color": 4283116288, + "bk_opacity": 255 + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": {}, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + { + "prev_ver": 520159233, + "name": "jellyfish_text_bg", + "uuid": "7f783f05-26db-45c1-9b11-4e98e7ca15fa", + "id": "color_source", + "versioned_id": "color_source_v3", + "settings": { + "color": 4283116288, + "width": 384, + "height": 90 + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": {}, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, { "prev_ver": 520159233, "name": "MAW_International_REV.png", @@ -2090,7 +3512,7 @@ }, { "prev_ver": 520159233, - "name": "Scene", + "name": "Resources", "uuid": "9a7e85d1-30bd-4e1a-8836-2d20b385820c", "id": "scene", "versioned_id": "scene", @@ -2552,8 +3974,32 @@ "id": "source_switcher", "versioned_id": "source_switcher", "settings": { - "current_index": -1, - "sources": [] + "current_index": 1, + "sources": [ + { + "hidden": false, + "selected": false, + "value": "jellyfish_palpatine_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_dellgate_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_ladyeverdream_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_jazzy_stream" + } + ], + "current_source_file": true, + "current_source_file_path": "C:/OBS/source-switching/bottom_left.txt", + "current_source_file_interval": 1000 }, "mixers": 0, "sync": 0, @@ -2573,7 +4019,11 @@ "random": [], "shuffle": [], "first": [], - "last": [] + "last": [], + "jellyfish_palpatine_stream": [], + "jellyfish_dellgate_stream": [], + "jellyfish_ladyeverdream_stream": [], + "jellyfish_jazzy_stream": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, @@ -2587,8 +4037,32 @@ "id": "source_switcher", "versioned_id": "source_switcher", "settings": { - "current_index": -1, - "sources": [] + "current_index": 3, + "sources": [ + { + "hidden": false, + "selected": false, + "value": "jellyfish_palpatine_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_dellgate_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_ladyeverdream_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_jazzy_stream" + } + ], + "current_source_file": true, + "current_source_file_interval": 1000, + "current_source_file_path": "C:/OBS/source-switching/bottom_right.txt" }, "mixers": 0, "sync": 0, @@ -2608,7 +4082,11 @@ "random": [], "shuffle": [], "first": [], - "last": [] + "last": [], + "jellyfish_palpatine_stream": [], + "jellyfish_dellgate_stream": [], + "jellyfish_ladyeverdream_stream": [], + "jellyfish_jazzy_stream": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, @@ -2622,11 +4100,32 @@ "id": "source_switcher", "versioned_id": "source_switcher", "settings": { - "current_index": -1, + "current_index": 1, "current_source_file": true, "current_source_file_interval": 1000, "current_source_file_path": "C:/OBS/source-switching/large.txt", - "sources": [], + "sources": [ + { + "hidden": false, + "selected": false, + "value": "jellyfish_palpatine_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_dellgate_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_ladyeverdream_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_jazzy_stream" + } + ], "canvas_height": 900, "canvas_width": 1600, "scale_to_inner_bounds": true @@ -2649,7 +4148,11 @@ "random": [], "shuffle": [], "first": [], - "last": [] + "last": [], + "jellyfish_palpatine_stream": [], + "jellyfish_dellgate_stream": [], + "jellyfish_ladyeverdream_stream": [], + "jellyfish_jazzy_stream": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, @@ -2663,8 +4166,32 @@ "id": "source_switcher", "versioned_id": "source_switcher", "settings": { - "current_index": -1, - "sources": [] + "current_index": 3, + "sources": [ + { + "hidden": false, + "selected": false, + "value": "jellyfish_palpatine_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_dellgate_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_ladyeverdream_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_jazzy_stream" + } + ], + "current_source_file": true, + "current_source_file_path": "C:/OBS/source-switching/left.txt", + "current_source_file_interval": 1000 }, "mixers": 0, "sync": 0, @@ -2684,7 +4211,11 @@ "random": [], "shuffle": [], "first": [], - "last": [] + "last": [], + "jellyfish_palpatine_stream": [], + "jellyfish_dellgate_stream": [], + "jellyfish_ladyeverdream_stream": [], + "jellyfish_jazzy_stream": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, @@ -2698,8 +4229,32 @@ "id": "source_switcher", "versioned_id": "source_switcher", "settings": { - "current_index": -1, - "sources": [] + "current_index": 1, + "sources": [ + { + "hidden": false, + "selected": false, + "value": "jellyfish_palpatine_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_dellgate_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_ladyeverdream_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_jazzy_stream" + } + ], + "current_source_file": true, + "current_source_file_interval": 1000, + "current_source_file_path": "C:/OBS/source-switching/right.txt" }, "mixers": 0, "sync": 0, @@ -2719,7 +4274,11 @@ "random": [], "shuffle": [], "first": [], - "last": [] + "last": [], + "jellyfish_palpatine_stream": [], + "jellyfish_dellgate_stream": [], + "jellyfish_ladyeverdream_stream": [], + "jellyfish_jazzy_stream": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, @@ -2733,8 +4292,29 @@ "id": "source_switcher", "versioned_id": "source_switcher", "settings": { - "current_index": -1, - "sources": [], + "current_index": 0, + "sources": [ + { + "hidden": false, + "selected": false, + "value": "jellyfish_palpatine_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_dellgate_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_ladyeverdream_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_jazzy_stream" + } + ], "current_source_file": true, "current_source_file_path": "C:/OBS/source-switching/top_left.txt" }, @@ -2756,7 +4336,11 @@ "random": [], "shuffle": [], "first": [], - "last": [] + "last": [], + "jellyfish_palpatine_stream": [], + "jellyfish_dellgate_stream": [], + "jellyfish_ladyeverdream_stream": [], + "jellyfish_jazzy_stream": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, @@ -2770,8 +4354,32 @@ "id": "source_switcher", "versioned_id": "source_switcher", "settings": { - "current_index": -1, - "sources": [] + "current_index": 0, + "sources": [ + { + "hidden": false, + "selected": false, + "value": "jellyfish_palpatine_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_dellgate_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_ladyeverdream_stream" + }, + { + "hidden": false, + "selected": false, + "value": "jellyfish_jazzy_stream" + } + ], + "current_source_file": true, + "current_source_file_path": "C:/OBS/source-switching/top_right.txt", + "current_source_file_interval": 1000 }, "mixers": 0, "sync": 0, @@ -2791,7 +4399,11 @@ "random": [], "shuffle": [], "first": [], - "last": [] + "last": [], + "jellyfish_palpatine_stream": [], + "jellyfish_dellgate_stream": [], + "jellyfish_ladyeverdream_stream": [], + "jellyfish_jazzy_stream": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0,