Skip to content

Commit

Permalink
[orx-chataigne] Add Chataigne support (#130)
Browse files Browse the repository at this point in the history
  • Loading branch information
BoydRotgans authored and edwinRNDR committed Jul 3, 2020
1 parent 6fa78af commit 32965f8
Show file tree
Hide file tree
Showing 6 changed files with 151 additions and 1 deletion.
41 changes: 41 additions & 0 deletions orx-chataigne/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# orx-chataigne

With `orx-chataigne` you can share [Chataigne](http://benjamin.kuperberg.fr/chataigne/en) variables within a OPENRNDR project.

The current implementation makes use of the OSC protocol and supports `Double` and `ColorRGBa`.

## Usage

Defining the variables
```kotlin
class SceneVariables : ChataigneOSC(OSC(portIn = 9005, portOut = 12001)) {
val myRadius: Double by DoubleChannel("/myRadius")
val myOpacity: Double by DoubleChannel("/myOpacity")
val myColor: ColorRGBa by ColorChannel("/myColor")
}
```

Initiate

```kotlin
val animation = SceneVariables()
```

Update time

```kotlin
animation.update(seconds)
```

Use the variables

```kotlin
animation.myRadius
animation.myOpacity
animation.myColor
```

## Example project

Find the Chataigne example project in `/resources/timeline_example_chataigne.noisette` which works together with demo project `/src/demo/kotlin/ChataigneOSCDemo.kt`

25 changes: 25 additions & 0 deletions orx-chataigne/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
sourceSets {
demo {
java {
srcDirs = ["src/demo/kotlin"]
compileClasspath += main.getCompileClasspath()
runtimeClasspath += main.getRuntimeClasspath()
}
}
}
dependencies {
api project(":orx-osc")

implementation "com.google.code.gson:gson:$gsonVersion"
demoImplementation("org.openrndr:openrndr-core:$openrndrVersion")

demoRuntimeOnly("org.openrndr:openrndr-gl3:$openrndrVersion")
demoRuntimeOnly("org.openrndr:openrndr-gl3-natives-$openrndrOS:$openrndrVersion")
demoRuntimeOnly("org.openrndr:openrndr-extensions:$openrndrVersion")
demoImplementation("org.openrndr:openrndr-ffmpeg:$openrndrVersion")
demoRuntimeOnly("org.openrndr:openrndr-ffmpeg-natives-$openrndrOS:$openrndrVersion")
demoImplementation(project(":orx-fx"))
// demoImplementation(project(":orx-osc"))

demoImplementation(sourceSets.getByName("main").output)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"metaData": {"version": "1.7.2", "versionNumber": 67330}, "projectSettings": {"containers": {"dashboardSettings": {"parameters": [{"value": false, "controlAddress": "/enableDashboardServer"}, {"value": 9999, "hexMode": false, "controlAddress": "/serverPort"}]}}}, "layout": {"mainLayout": {"type": 1, "width": 1496, "height": 1371, "direction": 2, "shifters": [{"type": 1, "width": 1496, "height": 1371, "direction": 2, "shifters": [{"type": 1, "width": 1496, "height": 761, "direction": 1, "shifters": [{"type": 1, "width": 307, "height": 761, "direction": 2, "shifters": [{"type": 0, "width": 307, "height": 387, "currentContent": "Modules", "tabs": [{"name": "Modules"}]}, {"type": 0, "width": 307, "height": 367, "currentContent": "Custom Variables", "tabs": [{"name": "Custom Variables"}]}]}, {"type": 0, "width": 749, "height": 761, "currentContent": "State Machine", "tabs": [{"name": "State Machine"}, {"name": "Dashboard"}, {"name": "Module Router"}, {"name": "Morpher"}]}, {"type": 0, "width": 428, "height": 761, "currentContent": "Inspector", "tabs": [{"name": "Inspector"}]}]}, {"type": 1, "width": 1496, "height": 603, "direction": 1, "shifters": [{"type": 0, "width": 178, "height": 603, "currentContent": "Sequences", "tabs": [{"name": "Sequences"}]}, {"type": 0, "width": 867, "height": 603, "currentContent": "Sequence Editor", "tabs": [{"name": "Sequence Editor"}]}, {"type": 0, "width": 439, "height": 603, "currentContent": "Logger", "tabs": [{"name": "Help"}, {"name": "Logger"}, {"name": "Warnings"}]}]}]}]}, "windows": null}, "modules": {"items": [{"parameters": [{"value": true, "controlAddress": "/enabled"}, {"value": true, "controlAddress": "/logIncoming"}, {"value": true, "controlAddress": "/logOutgoing"}], "niceName": "OSC", "type": "OSC", "scripts": {}, "params": {"parameters": [{"value": false, "controlAddress": "/splitArguments"}, {"value": true, "controlAddress": "/autoFeedback"}], "containers": {"oscInput": {"parameters": [{"value": 12001, "hexMode": false, "controlAddress": "/localPort"}]}, "oscOutputs": {"editorIsCollapsed": true, "items": [{"parameters": [{"value": "127.0.0.1", "controlAddress": "/remoteHost"}, {"value": 9005, "hexMode": false, "controlAddress": "/remotePort"}], "niceName": "OSC Output", "type": "BaseItem"}]}, "pass_through": {}}}, "values": {"parameters": [{"value": [0.0, 0.501960813999176, 0.0, 1.0], "controlMode": 2, "reference": {"value": "/sequences/sequence/layers/color/colors/color", "controlAddress": "/reference"}, "controlAddress": "/_myColor", "type": "Color", "niceName": "/myColor", "customizable": true, "removable": true, "description": "", "hideInEditor": false, "feedbackOnly": false}, {"value": 0.8833333253860474, "controlMode": 2, "reference": {"value": "/sequences/sequence/layers/opacity/automation/value", "controlAddress": "/reference"}, "controlAddress": "/_myOpacity", "type": "Float", "niceName": "/myOpacity", "customizable": true, "removable": true, "description": "", "hideInEditor": false, "feedbackOnly": false}, {"value": 0.8666667342185974, "controlMode": 2, "reference": {"value": "/sequences/sequence/layers/radius/automation/value", "controlAddress": "/reference"}, "controlAddress": "/_myRadius", "type": "Float", "niceName": "/myRadius", "customizable": true, "removable": true, "description": "", "hideInEditor": false, "feedbackOnly": false}, {"value": 11.77089214324951, "controlAddress": "/_setTime", "type": "Float", "niceName": "/setTime", "customizable": true, "removable": true, "description": "", "hideInEditor": false, "feedbackOnly": false, "shortName": "_setTime"}]}}]}, "states": {"items": [{"parameters": [{"value": [-80.0, -142.0], "controlAddress": "/viewUIPosition"}, {"value": [287.0, 243.0], "controlAddress": "/viewUISize"}, {"value": true, "controlAddress": "/active"}], "niceName": "State", "type": "State", "processors": {"items": [{"niceName": "OSC Trigger", "editorIsCollapsed": true, "type": "Mapping", "im": {"items": [{"parameters": [{"value": "/modules/osc/values/_setTime", "controlAddress": "/inputValue"}], "niceName": "Input", "type": "BaseItem"}]}, "filters": {"items": [{"niceName": "Math", "type": "Math", "filterParams": {"parameters": [{"value": "Modulo", "controlAddress": "/operation"}, {"value": "Adjust", "controlAddress": "/rangeRemapMode"}]}, "operationValue": {"value": 10.0, "controlMode": 2, "reference": {"value": "/sequences/sequence/totalTime", "controlAddress": "/reference"}, "controlAddress": "/states/state/processors/oscTrigger/filters/math/filterParams/value"}}]}, "outputs": {"items": [{"niceName": "MappingOutput 1", "type": "BaseItem", "commandModule": "sequences", "commandPath": "Time", "commandType": "Set Current Time", "command": {"parameters": [{"value": "/sequences/sequence", "controlAddress": "/target"}, {"value": 1.770892143249512, "controlAddress": "/time"}, {"value": false, "controlAddress": "/play"}]}}]}}]}}]}, "sequences": {"items": [{"parameters": [{"value": 5.0, "controlAddress": "/listSize"}, {"value": 10.0, "controlAddress": "/totalTime"}, {"value": false, "controlAddress": "/loop"}, {"value": 10.0, "controlAddress": "/viewEndTime"}, {"value": ["", ""], "controlAddress": "/syncDevices"}], "niceName": "Sequence", "type": "Sequence", "layers": {"items": [{"parameters": [{"value": 87.0, "controlAddress": "/listSize"}, {"value": 120, "hexMode": false, "controlAddress": "/uiHeight"}, {"value": [0.2117647081613541, 0.2117647081613541, 0.2117647081613541, 1.0], "controlAddress": "/layerColor"}, {"value": 0.8666667342185974, "controlAddress": "/value"}], "niceName": "Radius", "containers": {"automation": {"parameters": [{"value": 10.0, "controlAddress": "/length"}, {"value": 0.0, "controlAddress": "/position"}, {"value": 0.8666667342185974, "controlAddress": "/value"}, {"value": [0.0, 1.0], "controlAddress": "/viewValueRange"}, {"value": [0.0, 1.0], "controlAddress": "/range", "enabled": true}], "items": [{"parameters": [{"value": 0.0, "controlAddress": "/position"}, {"value": 0.8666667342185974, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 18", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 1.089901447296143, "controlAddress": "/position"}, {"value": 0.3083333373069763, "controlAddress": "/value"}, {"value": "Bezier", "controlAddress": "/easingType"}], "niceName": "Key", "containers": {"easing": {"parameters": [{"value": [0.5597290992736816, 0.0], "controlAddress": "/anchor1"}, {"value": [-0.1908860206604004, -0.0166667103767395], "controlAddress": "/anchor2"}]}}, "type": "Key"}, {"parameters": [{"value": 1.896896004676819, "controlAddress": "/position"}, {"value": 0.4416666030883789, "controlAddress": "/value"}, {"value": "Bezier", "controlAddress": "/easingType"}], "niceName": "Key 1", "containers": {"easing": {"parameters": [{"value": [0.1908860206604004, 0.0166667103767395], "controlAddress": "/anchor1"}, {"value": [-0.1785714626312256, 0.008333325386047363], "controlAddress": "/anchor2"}]}}, "type": "Key"}, {"parameters": [{"value": 2.278325080871582, "controlAddress": "/position"}, {"value": 0.8500000238418579, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 2", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 3.004926204681396, "controlAddress": "/position"}, {"value": 0.8583332896232605, "controlAddress": "/value"}, {"value": "Sine", "controlAddress": "/easingType"}], "niceName": "Key 3", "containers": {"easing": {"parameters": [{"value": [1.0, 0.25], "controlAddress": "/frequencyAmplitude"}]}}, "type": "Key"}, {"parameters": [{"value": 4.051724433898926, "controlAddress": "/position"}, {"value": 0.449999988079071, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 4", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 4.753694534301758, "controlAddress": "/position"}, {"value": 0.4583333134651184, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 5", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 5.01231575012207, "controlAddress": "/position"}, {"value": 0.7083333134651184, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 6", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 5.123153209686279, "controlAddress": "/position"}, {"value": 0.8000000715255737, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 7", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 5.264778137207031, "controlAddress": "/position"}, {"value": 0.5916666388511658, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 8", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 5.671182155609131, "controlAddress": "/position"}, {"value": 0.2083332538604736, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 9", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 6.133005142211914, "controlAddress": "/position"}, {"value": 0.5083333253860474, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 10", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 6.280788421630859, "controlAddress": "/position"}, {"value": 0.6916666626930237, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 11", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 6.508620738983154, "controlAddress": "/position"}, {"value": 0.4166666269302368, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 12", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 7.068964958190918, "controlAddress": "/position"}, {"value": 0.4166666269302368, "controlAddress": "/value"}, {"value": "Hold", "controlAddress": "/easingType"}], "niceName": "Key 13", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 8.084975242614746, "controlAddress": "/position"}, {"value": 0.9166666865348816, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 14", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 8.392856597900391, "controlAddress": "/position"}, {"value": 0.4333332777023315, "controlAddress": "/value"}, {"value": "Bezier", "controlAddress": "/easingType"}], "niceName": "Key 15", "containers": {"easing": {"parameters": [{"value": [0.2050492316484451, 0.0], "controlAddress": "/anchor1"}, {"value": [-0.2050492316484451, 0.0], "controlAddress": "/anchor2"}]}}, "type": "Key"}, {"parameters": [{"value": 9.076354026794434, "controlAddress": "/position"}, {"value": 0.8750000596046448, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 16", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 9.636699676513672, "controlAddress": "/position"}, {"value": 0.449999988079071, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 17", "containers": {"easing": {}}, "type": "Key"}]}, "recorder": {"parameters": [{"value": false, "controlAddress": "/arm"}, {"value": false, "controlAddress": "/isRecording"}], "editorIsCollapsed": true}, "mapping": {"niceName": "Mapping", "type": "Mapping", "im": {"items": [{"parameters": [{"value": "", "controlAddress": "/inputValue"}], "niceName": "Input", "type": "BaseItem"}]}, "filters": {}, "outputs": {}}}, "type": "Mapping"}, {"parameters": [{"value": 87.0, "controlAddress": "/listSize"}, {"value": 120, "hexMode": false, "controlAddress": "/uiHeight"}, {"value": [0.2117647081613541, 0.2117647081613541, 0.2117647081613541, 1.0], "controlAddress": "/layerColor"}, {"value": 0.8833333253860474, "controlAddress": "/value"}], "niceName": "Opacity", "containers": {"automation": {"parameters": [{"value": 10.0, "controlAddress": "/length"}, {"value": 0.0, "controlAddress": "/position"}, {"value": 0.8833333253860474, "controlAddress": "/value"}, {"value": [0.0, 1.0], "controlAddress": "/viewValueRange"}, {"value": [0.0, 1.0], "controlAddress": "/range", "enabled": true}], "items": [{"parameters": [{"value": 0.0, "controlAddress": "/position"}, {"value": 0.8833333253860474, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 1.68719220161438, "controlAddress": "/position"}, {"value": 0.449999988079071, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 1", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 3.152709245681763, "controlAddress": "/position"}, {"value": 0.2749999761581421, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 2", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 4.193350315093994, "controlAddress": "/position"}, {"value": 0.9583333730697632, "controlAddress": "/value"}, {"value": "Bezier", "controlAddress": "/easingType"}], "niceName": "Key 3", "containers": {"easing": {"parameters": [{"value": [0.5110831260681152, 0.0], "controlAddress": "/anchor1"}, {"value": [-0.5110831260681152, 0.0], "controlAddress": "/anchor2"}]}}, "type": "Key"}, {"parameters": [{"value": 4.913793087005615, "controlAddress": "/position"}, {"value": 0.3833333849906921, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 4", "containers": {"easing": {}}, "type": "Key"}, {"parameters": [{"value": 6.293103694915771, "controlAddress": "/position"}, {"value": 0.3583333492279053, "controlAddress": "/value"}, {"value": "Sine", "controlAddress": "/easingType"}], "niceName": "Key 5", "containers": {"easing": {"parameters": [{"value": [0.04926061630249023, 0.6416666507720947], "controlAddress": "/frequencyAmplitude"}]}}, "type": "Key"}, {"parameters": [{"value": 7.173645496368408, "controlAddress": "/position"}, {"value": 0.3833333253860474, "controlAddress": "/value"}, {"value": "Linear", "controlAddress": "/easingType"}], "niceName": "Key 6", "containers": {"easing": {}}, "type": "Key"}]}, "recorder": {"parameters": [{"value": false, "controlAddress": "/isRecording"}], "editorIsCollapsed": true}, "mapping": {"niceName": "Mapping", "type": "Mapping", "im": {"items": [{"parameters": [{"value": "", "controlAddress": "/inputValue"}], "niceName": "Input", "type": "BaseItem"}]}, "filters": {}, "outputs": {}}}, "type": "Mapping"}, {"parameters": [{"value": 27.0, "controlAddress": "/listSize"}, {"value": 60, "hexMode": false, "controlAddress": "/uiHeight"}, {"value": [0.2117647081613541, 0.2117647081613541, 0.2117647081613541, 1.0], "controlAddress": "/layerColor"}, {"value": [0.0, 0.501960813999176, 0.0, 1.0], "controlAddress": "/color"}], "niceName": "Color", "containers": {"mapping": {"niceName": "Mapping", "type": "Mapping", "im": {"items": [{"parameters": [{"value": "", "controlAddress": "/inputValue"}], "niceName": "Input", "type": "BaseItem"}]}, "filters": {}, "outputs": {}}, "colors": {"editorIsCollapsed": true, "items": [{"parameters": [{"value": 2.0, "controlAddress": "/time"}, {"value": [0.0, 0.501960813999176, 0.0, 1.0], "controlAddress": "/color"}], "niceName": "Color 1", "type": "BaseItem"}, {"parameters": [{"value": 4.0, "controlAddress": "/time"}, {"value": [1.0, 1.0, 0.0, 1.0], "controlAddress": "/color"}], "niceName": "Color 2", "type": "BaseItem"}, {"parameters": [{"value": 6.0, "controlAddress": "/time"}, {"value": "None", "controlAddress": "/interpolation"}, {"value": [1.0, 0.0, 0.0, 1.0], "controlAddress": "/color"}], "niceName": "Color 3", "type": "BaseItem"}, {"parameters": [{"value": 8.0, "controlAddress": "/time"}, {"value": [0.0, 0.0, 1.0, 1.0], "controlAddress": "/color"}], "niceName": "Color 4", "type": "BaseItem"}]}}, "type": "Color"}]}, "cues": {}, "editing": true}]}}
29 changes: 29 additions & 0 deletions orx-chataigne/src/demo/kotlin/ChataigneOSCDemo.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.osc.OSC

fun main() = application {

configure {
width = 500
height = 500
}

/* Find the Chataigne example project in /resources */
class SceneVariables : ChataigneOSC(OSC(portIn = 9005, portOut = 12001)) {
val myRadius: Double by DoubleChannel("/myRadius")
val myOpacity: Double by DoubleChannel("/myOpacity")
val myColor: ColorRGBa by ColorChannel("/myColor")
}

program {
val animation = SceneVariables()

extend {
animation.update(seconds)

drawer.fill = animation.myColor.opacify(animation.myOpacity)
drawer.circle(width/2.0, height/2.0, animation.myRadius * 250)
}
}
}
Loading

0 comments on commit 32965f8

Please sign in to comment.