{"id":16274636,"url":"https://github.com/ojacques/powerpointtoosc","last_synced_at":"2025-03-20T01:30:26.491Z","repository":{"id":43952343,"uuid":"427968809","full_name":"ojacques/PowerPointToOSC","owner":"ojacques","description":"A Windows .NET core application to send OSC commands based on the content of PowerPoint's slides speaker notes.","archived":false,"fork":false,"pushed_at":"2022-02-13T09:43:03.000Z","size":4205,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-05-02T04:38:03.304Z","etag":null,"topics":["automation","dmx","osc","powerpoint","pptx","slides"],"latest_commit_sha":null,"homepage":"","language":"C#","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/ojacques.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["ojacques"]}},"created_at":"2021-11-14T15:40:54.000Z","updated_at":"2024-02-21T14:25:27.000Z","dependencies_parsed_at":"2022-09-11T01:13:02.560Z","dependency_job_id":null,"html_url":"https://github.com/ojacques/PowerPointToOSC","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojacques%2FPowerPointToOSC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojacques%2FPowerPointToOSC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojacques%2FPowerPointToOSC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojacques%2FPowerPointToOSC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ojacques","download_url":"https://codeload.github.com/ojacques/PowerPointToOSC/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219865992,"owners_count":16555917,"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":["automation","dmx","osc","powerpoint","pptx","slides"],"created_at":"2024-10-10T18:29:29.826Z","updated_at":"2024-10-10T18:29:31.183Z","avatar_url":"https://github.com/ojacques.png","language":"C#","funding_links":["https://github.com/sponsors/ojacques"],"categories":[],"sub_categories":[],"readme":"# PowerPointToOSC\n\nA lightweight .NET core application to send [OSC commands](http://cnmat.org/OpenSoundControl/OSC-spec.html) based on the content of PowerPoint's slides speaker notes.\n\nI use it to control a lighting rig, itself controlled by DMX, while I present my slides.\nThe USB to DMX interface I use is [DMXIS](https://www.dmxis.com/) from ENTTEC. Either DMXIS or ShowBuddyActive can be controlled by OSC.\n\n📺 demo 👇 (click to see a 3 min YouTube video)\n\n[![Screenshot](powerpointtoosc.gif)](https://youtu.be/dcWbzDV5M2E)\n\n## Use cases\n\nI use PowerPointToOSC to control my lighting rig (or the rig of the venue) while presenting during conferences. \n\nBecause OSC is implemented in different solutions, you can use PowerPointToOSC to:\n\n- Control lights, including spots, moving heads, lasers with DMXIS, ShowBuddyActive, GrandMa, ONYX and other compatible light controllers\n- Control OBS: change scenes when changing PowerPoint slides (for example from full screen camera to camera with your screen, to full screen desktop)\n- Control video effects / VJ from Resolume\n- Control Ableton to trigger audio sequences, microphone effects (volume change, echo, robot voice)\n- Mix all of the above: control light, sound, video, live streams through PowerPoint!\n\n## Usage\n\n* Download the latest version from [GitHub](https://github.com/ojacques/PowerPointToOSC/releases)\n* Extract the zip file in a folder of your choice\n* Start `PowerPointToOSC.exe`\n* In the speaker notes of the first slide, configure the OSC host to send OSC commands with the `OSCHOST` verb, in the form of \"`IP port`\":\n\n```\nOSCHOST:127.0.0.1 5678\n```\n\nBy default, `OSCHOST` is set to `127.0.0.1 8000`.\n\n* In the speaker notes of any slide, send OSC commands:\n\nExample:\n```\u003clanguage\u003e\nOSC: /dmxis/preset/1\nOSC: /test1 i 123.45\nOSC: /test2 f 123.45\nOSC: /test3 s teststring\nOSC: /test4 b true\n```\n\nFor DMXIS, refer to [this manual](https://dol2kh495zr52.cloudfront.net/pdf/manuals/200405_DMXIS_v1.70_UM.pdf) for OSC commands. For ShowBuddyActive, refer to [this manual](https://www.dmxis.com/release/SBA/Show%20Buddy%20Active.pdf).\n\nPowerPointToOSC relies on [sendosc](https://github.com/yoggy/sendosc) command line. The same syntax applies.\n\n## TODO\n\n- Support per click OSC commands (see App_SlideShowNextClick) within the same slide\n- Remove sendosc.exe dependency and send direct OSC packets leveraging UDP. [Spec](http://cnmat.org/OpenSoundControl/OSC-spec.html). Boiler plate code:\n```csharp\n        static void SendUdp(int srcPort, string dstIp, int dstPort, byte[] data)\n        {\n            using (UdpClient c = new UdpClient(srcPort))\n                c.Send(data, data.Length, dstIp, dstPort);\n        }\n\n        public static void PadNull(List\u003cbyte\u003e data)\n        {\n            byte zero = 0;\n            int pad = 4 - (data.Count % 4);\n            for (int i = 0; i \u003c pad; i++)\n            {\n                data.Add(zero);\n            }\n        }\n        \n        SendUdp(8000, \"127.0.0.1\", 8000, Encoding.ASCII.GetBytes(oscString));\n```\n\n## Credits\n\nPowerPointToOSC is based on [PowerPointToOBSSceneSwitcher](https://github.com/shanselman/PowerPointToOBSSceneSwitcher) which allows to select OBS scenes based on the content of slides speaker notes. With OSC support, PowerPointToOSC is more generic. OBS can be controlled too using the [OSC-for-OBS](https://github.com/jshea2/OSC-for-OBS) plugin by [@jshea2](https://github.com/jshea2). \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fojacques%2Fpowerpointtoosc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fojacques%2Fpowerpointtoosc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fojacques%2Fpowerpointtoosc/lists"}