Releases: jshea2/OSC-for-OBS
OSC for OBS v3.1.3
Setup and OSC Commands
v3.1.3 Bug Fix
- TouchOSC Feedback and OBS OSC Out have been fixed
v3.1.2 Bug Fix
- Source Visibility is now fixed and no longer enables last source on trigger
v3.1.1 Bug Fix
- /transition command without duration issue is now resolved.
v3.1 Bug Fixes / New Features:
- Fixed position, scale, and rotation command
- Added "OSC Tester" (File > OSC Tester)
- This allows you to test osc commands by looping back into the app. This helps for not needing an external OSC app
v3.0 New Features:
Now compatible with OBS(v28) and obs-websocket(v5)
- Note: OSC for OBS v3.0 will not work with obs-websocket v4.9 and below.
All previous OSC commands syntax should work the same.
Trigger Hotkey
-/[modifier]/[key]/hotkey
- This triggers a hotkey from your settings. Not keyboard shortcuts.
modifier
can beshift
control
and/oralt
(order doesn't matter).key
can be lowercase or uppercase.- ex.
/controlshift/f/hotkey
Get Source Settings
/getSourceSettings
- Logs source properties and settings
- Mainly used for development and debugging
Media Cursor
/[source_name]/mediaCursor [int]
- Sets the cursor position of specified "Media Source"
OSC for OBS v2.7.1
Setup and OSC Commands
v2.7.2 Bug Fix:
- (Mac Only) Fixes Error
"Cannot find 'node-key-sender' module"
when opening application
v2.7.1 New Features:
Open Applications, Files, and/or Websites with file or url path via OSC
/openExternal [string]
- ex.
/openExternal "https://google.com"
- opens google in default browser
- ex. Mac
/openExternal "file:/System/Applications/Stocks.app"
- ex. PC
/openExternal "file://c:/windows/system32/calc.exe"
- opens 'Calculator' app
- ex. Mac
/openExternal "file:/Users/joeshea/Documents/texttest1.png"
- opens 'texttest1.png' in default viewer (like Preview)
- ex.
Simulate Keypress on Front/Active Window via OSC
Java Run Time is required for this feature
/keypress [string]
- this command simulates a keypress on front window. Use this syntax for keys
- ex.
/keypress "space"
- this simulates a space keypress on the active window
- ex. `/keypress "h,i"
- this simulates a
h
and then ani
key press to active window - ex.
keypress "control,s"
- ex. this simulates a keycombo of
Control + S
to active window
- Note: This feature can send multiple keypresses by using a comma
,
, but using combinations of shift, control, and alt have been buggy. Please refer to this repository for issues
v2.7 New Features:
OSC for OBS now automatically reconnects if OBS closes and reopens!
- New colored indicator UI when connected and disconnected from OBS
VirtualCam
/startVirtualCam
/stopVirtualCam
/toggleVirtualCam
/setVirtualCam [0 or 1]
Streaming
/setStreaming [0 or 1]
Recording
/setRecording [0 or 1
]
Studio Mode
/setStudioMode [0 or 1]
Set Recording File Name
/recFileName [string]
Set Active Scene Item Visibility by Index
/[index(int)]/activeSceneItemVisibility [0 or 1]
Set Specific Scene Item Visibility by Index
/[scene name]/[index]/activeSceneItemVisibility [0 or 1]
Get Source Text FreeType2 String Repeatedly
/[text source]/getTextFreetype [1]
- Returns to OSC client:
/[text source]text [string]
- Returns to OSC client:
Get Source Text GDI String Repeatedly
/[text source]/getTextGDI [1]
- Returns to OSC client:
-/[text source]text [string]
- Returns to OSC client:
- NOTE: Disabling the loop is not yet implemented. Quit and reopen app to stop
- The loop is every 500ms (half second)
NDI and Other Outputs
List Outputs Names
/listOutputs
- Logs a list of all outputs
Start Output
/startOutput [name]
- Ex.
/startOutput “NDI Main Output”
- This will enable this output
- Ex.
Stop Output
/stopOutput [name]
- Ex.
/stopOutput “NDI Main Output”
- This will disable this output
- Ex.
Take Screenshot
/takeScreenshot
- This saves a .png of your current active scene and saves it to your Documents folder
Other Changes
- Stream status for recording an OSC message is now:
- /recording [ 0 or 1]
Support The Project ❤️
If OSC for OBS helped you, consider helping the project by making a one-time donation via PayPal
Join the Discord Community
OSC for OBS v2.6.2
Setup and OSC Commands
v2.6.2 Bug Fix/New Feature
- Fixed bundled error if "undefinded"
- Added
/activeScene [scene-name]
- This OSC response is sent when the transition is initiated
- Added `/activeSceneCompleted [scene-name]
- This OSC response is sent when the transition is completed
v2.6.1 Update:
-
Bundled OSC is now Supported! Thanks to MylesBorins from node-osc!
-
Updated TouchOSC and QLab files
-
Added
/sendCC
command- Send the text as embedded CEA-608 caption data
-
TouchOSC Feedback OSC:
- When Streaming
- Returns
/streaming 1
when stream starts and/streaming 0
when ends
- Returns
- When Transition is Triggered
- Returns
/transitionType [type]
and/transitionDuration [int]
- Returns
- Source Visibility Feedback
- Returns
/[scene_name]/[source_name]/visible 1
when on and/[scene_name]/[source_name]/visible 0
when off
- Returns
- Media Feedback
- When a media is Played in OBS the following OSC is sent /[source]/mediaPlay 1, /[source]/mediaPause 0, and /[source]/mediaStop 0
- When a media is Paused in OBS the following OSC is sent /[source]/mediaPause 1, /[source]/mediaPlay 0, and /[source]/mediaStop 0
- When a media is Stopped in OBS the following OSC is sent /[source]/mediaStop 1, /[source]/mediaPause 0, and /[source]/mediaPlay 0
- When Streaming
Support The Project ❤️
If OSC for OBS helped you, consider helping the project by making a one-time donation via PayPal
Join the Discord Community
OSC for OBS v2.5.1
Setup and OSC Commands
v2.5.1 Bug Fix:
- Fixed /scene feedback sometimes highlighting the wrong button when pressing before transition ends for TouchOSC.
v2.5 Update:
-
Updated TouchOSC and QLab File
-
Added
/rename
command- Allows you to rename a Scene or Source
-
TouchOSC Feedback OSC:
- When Streaming/Recording:
/fps
- Returns frames per second
[int] fps
- Returns frames per second
/streaming
- Returns “•LIVE” if stream is active
/recording
- Returns “•REC” when recording
/streamTime
- Returns elapsed stream time
HH:MM:SS
- Returns elapsed stream time
/cpuUsage
- Returns cpu usage
[int] cpu usage
- Returns cpu usage
/freeDiskSpace
- Returns free disk space
[int] free disk space
- Returns free disk space
/averageFrameRate
- Returns average frame rate
[int] avg frame rate
- Returns average frame rate
/memoryUsage
- Returns memory usage
[int] memory usage
- Returns memory usage
/kbpsEncoder
- Returns encoder data
[int] kbps
- Returns encoder data
- Dynamic Fader Volume
- For
/[source]/volume
command
- For
- Dynamic Muting and UnMuting Toggle
- For
/[source]/audioToggle
command
- For
- When Streaming/Recording:
Support The Project ❤️
If OSC for OBS helped you, consider helping the project by making a one-time donation via PayPal
Join the Discord Community
OSC for OBS v2.4
Setup and OSC Commands
v2.4 Update:
- TouchOSC Feedback
- This allows active OBS scene to send OSC feedback to TouchOSC for highlighting buttons depending on the scene
- Trigger Scenes easier with TouchOSC
- using
/scene/[scene_name]
and value0
to1
will now work
- using
- Toggle Audio for muting and unmuting
- using
/[source_name]/audioToggle [0 or 1]
will toggle muting
- using
Support The Project ❤️
If OSC for OBS helped you, consider helping the project by making a one-time donation via PayPal
Join the Discord Community
OSC for OBS v2.3
Setup and OSC Commands
v2.3 Update:
- Set Scene Collection
- Set Profile
- TouchOSC
- Rotate Selected Scene Item
- Fit to Screen for Selected Scene Item
- Duplicate Current Scene of Active Scene
- Updated TouchOSC File
Support The Project ❤️
If OSC for OBS helped you, consider helping the project by making a one-time donation via PayPal
Join the Discord Community
OSC for OBS v2.2
Setup and OSC Commands
2.2 Update:
- Rebranded to "OSC for OBS"
2.1 Update:
- Application reopens with last used configuration inputs
- Added "File > Automatically Connect on Startup" if checked on next startup will connect when opening
- Added "File > Revert to Original Config" to reset all inputs to original
- Added new Text commands
- Content
- Font
- Size
- Added new commands for boolean arguments (0, "0", "off", "false")
- Added Set Preview Scene
- Added Trigger Transition to Program
Bug Fixes:
- Fixed OSC output that adds "_" to OBS Scene names
- Fixes issue where color correction values (gamma, contrast, brightness, saturation, and hue shift) were only outputting integers instead of float values.
Support The Project ❤️
If OSC for OBS helped you, consider helping the project by making a one-time donation via PayPal
Join the Discord Community
OBSosc 2.1
New features since 2.1:
- Application reopens with last used configuration inputs
- Added "File > Automatically Connect on Startup" if checked on next startup will connect when opening
- Added "File > Revert to Original Config" to reset all inputs to original
- Added new Text commands
- Content
- Font
- Size
- Added new commands for boolean arguments (0, "0", "off", "false")
- Added Set Preview Scene
- Added Trigger Transition to Program
Bug Fixes:
- Fixed OSC output that adds "_" to OBS Scene names
2.1.1 Hot Fix
- Fixes issue where color correction values (gamma, contrast, brightness, saturation, and hue shift) were only outputting integers instead of float values.
Setup and OSC Commands
Support The Project ❤️
If OBSosc helped you, consider helping the project by making a one time donation via PayPal
Join the Discord Community
OBSosc 2.0
Setup and OSC Commands
Support The Project ❤️
If OBSosc helped you, consider helping the project by making a one time donation via PayPal
Join the Discord Community
Node-OBSosc App
Using Node-OBSosc
Requires: obs-websocket
- Configure the input fields
- Successfully "Connect"
- The window will open a "DevTools" window
- Make sure it's on the "Console" tab, not "Elements"
- In the "Console" tab it will log IP and Port info, the number of available scenes, and a list of all scenes with numbers (This is what you can use as an argument in your /scene OSC message)
Application OSC -> OBS
This can be used for any application that transmits and/or receives OSC.
(This was designed with Qlab in mind, so the examples show file of all the OSC commands is available below: "Qlab OSC Examples.qlab4" Note: Sending OSC Commands requires a paid version of Qlab)
OSC Command List:
- Triggering Scenes: -
/scene [index number]
this message will activate a scene with the index associated from the logged list.
(Ex. "/scene 1" will activate the first scene in OBS, also floats will be rounded down (Ex. /scene 1.9 === /scene 1))
/scene/[scene_name]
this message allows you to activate a scene by name in the OSC string. (Ex. "/scene/Wide" will activate a scene named "Wide" in OBS. NOTE: If a scene name contains a SPACE, replace with "_", so if OBS has a scene "Webcam 1" make OSC message "/scene/Webcam_1")
/scene [scene name]
this message allows you to activate a scene by name in the OSC argument. (Ex. "/scene Wide" will activate a scene named "Wide" in OBS.) NOTE: SPACES will work ok for this format, so "/scene Webcam 1" is valid syntax
/go
this message will go to the next scene in the list, if this is triggered on the last scene it will go to the first scene
/back
this message will go to the previous scene in the list, if this is triggered on the first scene it will go to the last scene
- Change Transition Type and Duration: -
/transition [name] [duration]
this message sets the desired transition and duration(in milliseconds).
(Ex. "/transition Cut" will change the current Scene Transition to "Cut". "/transition Fade 500" will set the current Scene Transition to "Fade" with a "500" millisecond duration. If you do not set a duration in the 2nd argument it will keep the current duration and log it in node.
- Change Source Visibility On/Off: -
/[scene_name]/[source_name]/visible [0 or 1]
this message will turn on or off the source's visibility. (Ex. "/Webcam_1/Audio_Input_Capture/visible 0" will turn OFF "Audio Input Capture" source in OBS from scene "Webcam 1". Where as "/Webcam_1/Text_1/visible 1" will turn it ON). NOTE: If a scene name or source name contains a SPACE, replace with "_", so if OBS has a scene "Webcam 1" and a source name of "Text 1" make OSC message the example from above.)
- Change Filter Visibility On/Off: -
/[scene_name]/[source_name]/filterVisibility [0 or 1]
this message will turn on or off the source's filter visibility. (Ex. "/Video_Input/Color_Correction/filterVisibiltity 0" will turn OFF "Color Correction" filter in OBS from source "Video Input". Where as "/Video_Input/Color_Correction/filterVisibility 1" will turn it ON). NOTE: If a filter name or source name contains a SPACE, replace with "_", so if OBS has a filter "Color Correction" and a source name of "Video Input" make OSC message the example from above.)
- Change Opacity: -
/[source_name]/[color_correction_filter_name]/opacity [0 thru 1]
this message allows you to adjust the Opacity of a source via the "Color Correction" filter in OBS of the current scene. (Ex. "/Text_1/Color_Correction 0.5" will make "Text 1" half transparent. NOTE: If a source name or filter name contains a SPACE, replace with "_", so if OBS has a source "Text 1" and filter "Color Correction" make OSC message the example from above)
- Translate Source's Position: -
/[scene_name]/[source_name]/position [x] [y]
this allows you to change the sources position by x and y values. This also changes the alignment to center the bounding box to the x and y values. (Ex. "/Webcam_1/Text_1/position 0 0" this changes the source to center of the screen. See "Qlab OSC Examples" file for how to automate positions. NOTE: This is only tested for a "Canvas Size" of 1920x1080 in OBS. Also, If a scene name or source name contains a SPACE, replace with "_", so if OBS has a scene "Webcam 1" and a source name of "Text 1" make OSC message the example from above.)
- Translate Source's Scale: -
/[scene_name]/[source_name]/scale [float]
this allows you to change the source's scale. "0" is nothing, "1" is original full size. Negative numbers will invert the source. Numbers larger than "1" will be larger than original size. (Ex. /Webcam_1/Text_1/scale 2 this will make the size of the "Text 1" source twice as large. See "Qlab OSC Examples" file for how to automate scale. Also, If a scene name or source name contains a SPACE, replace with "_", so if OBS has a scene "Webcam 1" and a source name of "Text 1" make OSC message the example from above.)
- Translate Source's Rotation: -
/[scene_name]/[source_name]/rotate [float]
this allows you to change the source's scale. "0" is nothing, "360" is full 360 rotation clockwise. Negative numbers will rotate counterclockwise. Numbers larger than "360" will be more roations. (Ex. /Webcam_1/Text_1/rotate 90 this will make the rotation of the "Text 1" source 90º clockwise. See "Qlab OSC Examples" file for how to automate rotation. Also, If a scene name or source name contains a SPACE, replace with "_", so if OBS has a scene "Webcam 1" and a source name of "Text 1" make OSC message the example from above.)
- Streaming and Recording: -
/startRecording
this message will start recording in OBS
/stopRecording
this message will stop recording in OBS
/toggleRecording
this message will toggle the start/stop recording button in OBS
/startStreaming
this message will start streaming in OBS
/stopStreaming
this message will stop streaming in OBS
/toggleStreaming
this message will toggle the start/stop streaming button in OBS
/pauseRecording
this message will pause the recording in OBS
/resumeRecording
this message will resume recording in OBS
- Studio Mode: -
/enableStudioMode
this message enables Studio Mode in OBS (WARNING: This Command Has Caused Some Computers to Crash OBS)
/disableStudioMode
this message disables Studio Mode in OBS
/toggleStudioMode
this message toggles Studio Mode on/off in OBS (WARNING: This Command Has Caused Some Computers to Crash OBS)
OBS -> Application:
This allows OBS to send OSC to other applications when a scene is activated.
To use/enable this function, change the toggle button to ON
Configure the prefix and suffix for how you want your OSC application to receive an OSC string from OBS
(Ex. In OBS when "Wide" scene is activated, Qlab recieves an OSC message "/cue/Wide/start")
Support The Project
If Node-OBSosc helped you, consider helping the project by making a donation via PayPal