{"id":13780014,"url":"https://github.com/D10X1D0/OSC_D10","last_synced_at":"2025-05-11T13:31:19.150Z","repository":{"id":65516756,"uuid":"499269699","full_name":"D10X1D0/OSC_D10","owner":"D10X1D0","description":"python OSC bridge to other apps","archived":false,"fork":false,"pushed_at":"2023-09-07T10:52:40.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-08-03T18:14:39.228Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/D10X1D0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-06-02T19:48:45.000Z","updated_at":"2022-06-02T19:57:21.000Z","dependencies_parsed_at":"2024-01-15T22:42:24.811Z","dependency_job_id":"62abd55c-1ece-44be-a24d-574fe0e44ffd","html_url":"https://github.com/D10X1D0/OSC_D10","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D10X1D0%2FOSC_D10","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D10X1D0%2FOSC_D10/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D10X1D0%2FOSC_D10/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D10X1D0%2FOSC_D10/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/D10X1D0","download_url":"https://codeload.github.com/D10X1D0/OSC_D10/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225056757,"owners_count":17414202,"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":[],"created_at":"2024-08-03T18:01:11.453Z","updated_at":"2024-11-17T15:30:49.422Z","avatar_url":"https://github.com/D10X1D0.png","language":"Python","funding_links":[],"categories":["Virtual Worlds"],"sub_categories":["VRChat"],"readme":"# OSC_D10\nPython OSC bridge to other apps and send OSC messages back.\nCurrently able to talk with [Buttplug.io](https://buttplug.io/) , tested with [Intiface](https://intiface.com/)\n\n# How to run\nHave a python interpreter and/or IDE installed (Tested in Python 3.11 using pycharm).\nClone this repo inside a python project.\nInstall the python module dependencies listed inside requirements.txt.\nRun main.py\n\nI used color codes to print to console, they look like this \"'\\033[95m'\"\n\n## OSCBridge:\nOSC server that can listen and communicate with other apps.\nSends a OSC message to the address \"/OSCBridge\" when it starts up with a value of \"1\" and a \"0\" when it stops running.\nSends a 1 to the \"/OSCBridge\" OSCSendIp when its running and a 0 when it shuts down.\n\nConfigured in Mainconfig.json to enable/disable loading different modules (true=enabled, false=disabled).\n        \n    Enables/disables the OSC server that's listening and sending the incoming data to be processed to other modules.\n      \"OSCBridge\": false/true\n      \n    Debug console print that enables printing all recieved OSC commands.\n        \"OSCBridgeDEBUG\": true/false\n       \n    IP/port to listen OSC commands from.\n        \"OSCBListenIP\": \"127.0.0.1\", \"OSCBListenPort\": 9001\n\n    Recieves and re-transmits OSC data\n        \"OSCPass\": false/true \n\n    Ip and port to send the OSC messages.\n        \"OSCSendIP\": \"127.0.0.1\",\"OSCSendPort\": 9000\n\n    Listens for configured OSC adresses and controlls toys sending request [Intirface](https://intiface.com/)\n        \"OSCtoButtplug\": false/true\n\n    Groups multiple simple processes. (Pulse, Respond)\n        \"OSCProcess\": false/true\n    \n\n## OSCtoButplug :\nRequires [Intiface](https://intiface.com/) to be running and with websockets active to control supported sex toys.\n\nListens to commands coming from the configured OSC addresses to control devices.\n\nAvailable commands: Stop, Vibrate, Rotate.\n\nThe configuration file maps OSC address, device name to control and the command [OSC adrres, device name, command]\n\nThe first time you connect a device a new file \"devicename\".json\nwill be created with the device name and its available commands.\n\n### Commands:\n#### Stop : \nStops all movement from a device if it receives any value on the configured address.\n\n  Stops the device named \"XBox (XInput) Compatible Gamepad 1\" when the OSC address/test/s sends any value.\n  \n    [\"/test/s\", \"XBox (XInput) Compatible Gamepad 1\", [\"Stop\"]]\n#### Vibrate : \nVibrates configured motor/s to the OSC address value (float from 0.0 to 1.0). All or individual motors can be set.\n\n    [OSC address, device name, [\"Vibrate\", motors]] \n\nwhere motors can be set to \"all\", or a list of motor indexes [0,1,2, ...]\n\n   Vibrate: (tested with lovense edge and xbox controller)\n                      \nSets all motors to vibrate at the OSC value from /test/va for the first xbox controller.\n\n    [\"/test/va\", \"XBox (XInput) Compatible Gamepad 1\", [\"Vibrate\", \"all\"]]\n                          \nSets the first motor to vibrate at the OSC value from /test/vb.\n\n    [\"/test/vb\", \"XBox (XInput) Compatible Gamepad 1\", [\"Vibrate\", [0]]]\n                          \nSets the first and second motors to vibrate at the OSC value from /test/vc.\n\n    [\"/test/vc\", \"XBox (XInput) Compatible Gamepad 1\", [\"Vibrate\", [0,1]]]\n\n#### Rotate : \nRotates configured motor/s to the OSC address value (float from 0.0 to 1.0) and a set direction (true/false). \nAll or individual motors can be set, and it's direction. \n\n[OSC address, device name, [\"Rotate\", motors]] \n\nwhere motors can be set to \"allcw\" (all clockwise),\"allccw\" (all counterclockwise, \nor a list of motor indexes and direction to rotate them where True = clockwise False = Counterclockwise. \n\n    [[0,True],[1,False],[2,True], ...]\n\nRotate: ( not tested jet with real toys).\n\nRotate all motors clockwise for the device \"fake rotating device\" at the OSC value from /rotatea.\n\n    [\"/rotatea\", \"fake rotating device\", [\"Rotate\", \"allcw\"]]\n                          \nRotate all motors counterclockwise for the device \"fake rotating device\" at the OSC value from /rotateb.\n                      \n    [\"/rotateb\", \"fake rotating device\", [\"Rotate\", \"allccw\"]]\n                          \nRotate second motor counterclockwise for the device \"fake rotating device\" at the OSC value from /rotatec.\n\n    [\"/avatar/parameters/rotatec\", \"fake rotating device\", [\"Rotate\", [[1, False]]]]\n                          \nRotate first motor counterclockwise, and the second motor clockwise for the device \"fake rotating device\" at the OSC value from /rotated.\n\n    [\"/avatar/parameters/rotated\", \"fake rotating device\", [\"Rotate\", [[0, False], [1, True]]]]\n\n\n## Process :\nGroup of independent processes\nConfiguration file \"OSCProcessMapping\"\n\n    [\"OSC address\", \"Command Name\", [Command data]]\n\n#### Pulse :\nSenda a message to an OSC adress every X seconds forever.\n\n    [\"OSC address\", \"pulse\", [interval in seconds, Data do send]]\n\nSends a message to \"/avatar/parameters/Test\" every 10 seconds with the value \"testing\"\n\n    [\"/avatar/parameters/Test\", \"pulse\", [10, \"testing\"]]\n\n#### Respond:\nSends a message with a preconfigured value when any message is recieved at the OSC address.\n \n    [\"OSC adress to listen at\",\"respond\",[data to send,\"OSC adress to reply to\"]]\n\nListen on any message from \"/avatar/parameters/Testd\" and sends a 1 to \"/avatar/parameters/Testda\"\n\n    [\"/avatar/parameters/Testd\",\"respond\",[1,\"/avatar/parameters/Testda\"]]\n\nAll Process commands are saved in the sale .json file.\n\n        [\n            \"/avatar/parameters/Testa\",\n            \"pulse\",\n            [\n                30,\n                1\n            ],\n            \"/avatar/parameters/Testa\",\n            \"pulse\",\n            [\n                15,\n                0\n            ],\n            \"/avatar/parameters/Testc\",\n            \"pulse\",\n            [\n                10,\n                false\n            ],\n            \"/avatar/parameters/Testc\",\n            \"pulse\",\n            [\n                15,\n                true\n            ],\n            \"/avatar/parameters/Testd\",\n            \"respond\",\n            [\n                1,\n                \"/avatar/parameters/Testda\"\n            ]\n        ]","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FD10X1D0%2FOSC_D10","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FD10X1D0%2FOSC_D10","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FD10X1D0%2FOSC_D10/lists"}