Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ojacques/powerpointtoosc

A Windows .NET core application to send OSC commands based on the content of PowerPoint's slides speaker notes.
https://github.com/ojacques/powerpointtoosc

automation dmx osc powerpoint pptx slides

Last synced: 24 days ago
JSON representation

A Windows .NET core application to send OSC commands based on the content of PowerPoint's slides speaker notes.

Awesome Lists containing this project

README

        

# PowerPointToOSC

A 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.

I use it to control a lighting rig, itself controlled by DMX, while I present my slides.
The USB to DMX interface I use is [DMXIS](https://www.dmxis.com/) from ENTTEC. Either DMXIS or ShowBuddyActive can be controlled by OSC.

📺 demo 👇 (click to see a 3 min YouTube video)

[![Screenshot](powerpointtoosc.gif)](https://youtu.be/dcWbzDV5M2E)

## Use cases

I use PowerPointToOSC to control my lighting rig (or the rig of the venue) while presenting during conferences.

Because OSC is implemented in different solutions, you can use PowerPointToOSC to:

- Control lights, including spots, moving heads, lasers with DMXIS, ShowBuddyActive, GrandMa, ONYX and other compatible light controllers
- Control OBS: change scenes when changing PowerPoint slides (for example from full screen camera to camera with your screen, to full screen desktop)
- Control video effects / VJ from Resolume
- Control Ableton to trigger audio sequences, microphone effects (volume change, echo, robot voice)
- Mix all of the above: control light, sound, video, live streams through PowerPoint!

## Usage

* Download the latest version from [GitHub](https://github.com/ojacques/PowerPointToOSC/releases)
* Extract the zip file in a folder of your choice
* Start `PowerPointToOSC.exe`
* 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`":

```
OSCHOST:127.0.0.1 5678
```

By default, `OSCHOST` is set to `127.0.0.1 8000`.

* In the speaker notes of any slide, send OSC commands:

Example:
```
OSC: /dmxis/preset/1
OSC: /test1 i 123.45
OSC: /test2 f 123.45
OSC: /test3 s teststring
OSC: /test4 b true
```

For 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).

PowerPointToOSC relies on [sendosc](https://github.com/yoggy/sendosc) command line. The same syntax applies.

## TODO

- Support per click OSC commands (see App_SlideShowNextClick) within the same slide
- Remove sendosc.exe dependency and send direct OSC packets leveraging UDP. [Spec](http://cnmat.org/OpenSoundControl/OSC-spec.html). Boiler plate code:
```csharp
static void SendUdp(int srcPort, string dstIp, int dstPort, byte[] data)
{
using (UdpClient c = new UdpClient(srcPort))
c.Send(data, data.Length, dstIp, dstPort);
}

public static void PadNull(List data)
{
byte zero = 0;
int pad = 4 - (data.Count % 4);
for (int i = 0; i < pad; i++)
{
data.Add(zero);
}
}

SendUdp(8000, "127.0.0.1", 8000, Encoding.ASCII.GetBytes(oscString));
```

## Credits

PowerPointToOSC 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).