diff --git a/assets/images/reference/processes/puara/roll-processor-example.png b/assets/images/reference/processes/puara/roll-processor-example.png new file mode 100644 index 00000000..5a169202 Binary files /dev/null and b/assets/images/reference/processes/puara/roll-processor-example.png differ diff --git a/assets/images/reference/processes/puara/score-to-osc-adddevice.png b/assets/images/reference/processes/puara/score-to-osc-adddevice.png new file mode 100644 index 00000000..9b040cca Binary files /dev/null and b/assets/images/reference/processes/puara/score-to-osc-adddevice.png differ diff --git a/assets/images/reference/processes/puara/score-to-osc-learn.png b/assets/images/reference/processes/puara/score-to-osc-learn.png new file mode 100644 index 00000000..d977fec9 Binary files /dev/null and b/assets/images/reference/processes/puara/score-to-osc-learn.png differ diff --git a/assets/images/reference/processes/puara/sensors-to-osc-main.jpeg b/assets/images/reference/processes/puara/sensors-to-osc-main.jpeg new file mode 100644 index 00000000..94427d1d Binary files /dev/null and b/assets/images/reference/processes/puara/sensors-to-osc-main.jpeg differ diff --git a/assets/images/reference/processes/puara/sensors-to-osc-settings.jpeg b/assets/images/reference/processes/puara/sensors-to-osc-settings.jpeg new file mode 100644 index 00000000..9fb6b345 Binary files /dev/null and b/assets/images/reference/processes/puara/sensors-to-osc-settings.jpeg differ diff --git a/assets/scores/reference/processes/RollExample.score b/assets/scores/reference/processes/RollExample.score new file mode 100644 index 00000000..795ef142 --- /dev/null +++ b/assets/scores/reference/processes/RollExample.score @@ -0,0 +1 @@ +{"Document":{"ObjectName":"Scenario::ScenarioDocumentModel","id":1,"BaseScenario":{"ObjectName":"Scenario::BaseScenario","id":0,"Constraint":{"ObjectName":"Scenario::IntervalModel","id":0,"Metadata":{"ScriptingName":"RollExample","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio in","Exposed":"audio in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"Processes":[{"uuid":"de035912-5b03-49a8-bc4d-b2cba68e21d9","ObjectName":"Scenario","id":1,"Metadata":{"ScriptingName":"Scenario.1","Comment":"","Color":"Transparent1","Label":"","Touched":false},"Duration":10584000000,"Height":1500.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[-236.0,-306.0],"Size":[734.0,792.0],"Loops":false,"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"In","Exposed":"in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Out","Exposed":"out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"StartTimeNodeId":0,"StartEventId":0,"StartStateId":0,"Exclusive":false,"TimeNodes":[{"ObjectName":"Scenario::TimeSyncModel","id":0,"Metadata":{"ScriptingName":"Sync.start","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":0,"Events":[0],"MusicalSync":-1.0,"AutoTrigger":false,"Start":true,"Active":false,"Expression":" { true == false } "},{"ObjectName":"Scenario::TimeSyncModel","id":1,"Metadata":{"ScriptingName":"Sync.chow47","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":0,"Events":[1],"MusicalSync":-1.0,"AutoTrigger":false,"Start":false,"Active":false,"Expression":" { true == false } "},{"ObjectName":"Scenario::TimeSyncModel","id":2,"Metadata":{"ScriptingName":"Sync.look98","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":11252108992,"Events":[2],"MusicalSync":-1.0,"AutoTrigger":false,"Start":false,"Active":false,"Expression":" { true == false } "},{"ObjectName":"Scenario::TimeSyncModel","id":3,"Metadata":{"ScriptingName":"Sync.this35","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":0,"Events":[3],"MusicalSync":-1.0,"AutoTrigger":false,"Start":false,"Active":false,"Expression":" { true == false } "},{"ObjectName":"Scenario::TimeSyncModel","id":4,"Metadata":{"ScriptingName":"Sync.ramp12","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":0,"Events":[4],"MusicalSync":-1.0,"AutoTrigger":false,"Start":false,"Active":false,"Expression":" { true == false } "},{"ObjectName":"Scenario::TimeSyncModel","id":5,"Metadata":{"ScriptingName":"Sync.vain18","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":10285994551,"Events":[5],"MusicalSync":-1.0,"AutoTrigger":false,"Start":false,"Active":false,"Expression":" { true == false } "}],"Events":[{"ObjectName":"Scenario::EventModel","id":0,"Metadata":{"ScriptingName":"Event.start","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":0,"States":[0,3,5,7],"Condition":"","Date":0,"Offset":0},{"ObjectName":"Scenario::EventModel","id":1,"Metadata":{"ScriptingName":"Event.dice95","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":1,"States":[1],"Condition":"","Date":0,"Offset":0},{"ObjectName":"Scenario::EventModel","id":2,"Metadata":{"ScriptingName":"Event.ramp26","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":2,"States":[2],"Condition":"","Date":11252108992,"Offset":0},{"ObjectName":"Scenario::EventModel","id":3,"Metadata":{"ScriptingName":"Event.bryn34","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":3,"States":[4,6],"Condition":"","Date":0,"Offset":0},{"ObjectName":"Scenario::EventModel","id":4,"Metadata":{"ScriptingName":"Event.fade5","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":4,"States":[8],"Condition":"","Date":0,"Offset":0},{"ObjectName":"Scenario::EventModel","id":5,"Metadata":{"ScriptingName":"Event.emit52","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":5,"States":[9],"Condition":"","Date":10285994551,"Offset":0}],"States":[{"ObjectName":"Scenario::StateModel","id":0,"Metadata":{"ScriptingName":"State.start","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":0,"PreviousConstraint":null,"NextConstraint":1,"HeightPercentage":0.004666666666666673,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},{"ObjectName":"Scenario::StateModel","id":1,"Metadata":{"ScriptingName":"State.eddy5","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":1,"PreviousConstraint":1,"NextConstraint":2,"HeightPercentage":0.004666666666666673,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},{"ObjectName":"Scenario::StateModel","id":2,"Metadata":{"ScriptingName":"State.tore7","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":2,"PreviousConstraint":2,"NextConstraint":null,"HeightPercentage":0.004666666666666673,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},{"ObjectName":"Scenario::StateModel","id":3,"Metadata":{"ScriptingName":"State.view41","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":0,"PreviousConstraint":null,"NextConstraint":3,"HeightPercentage":0.5500126262626263,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},{"ObjectName":"Scenario::StateModel","id":4,"Metadata":{"ScriptingName":"State.tier34","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":3,"PreviousConstraint":3,"NextConstraint":null,"HeightPercentage":0.5500126262626263,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},{"ObjectName":"Scenario::StateModel","id":5,"Metadata":{"ScriptingName":"State.boyd72","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":0,"PreviousConstraint":null,"NextConstraint":4,"HeightPercentage":0.5310732323232322,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},{"ObjectName":"Scenario::StateModel","id":6,"Metadata":{"ScriptingName":"State.jeep5","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":3,"PreviousConstraint":4,"NextConstraint":null,"HeightPercentage":0.5310732323232322,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},{"ObjectName":"Scenario::StateModel","id":7,"Metadata":{"ScriptingName":"State.hart14","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":0,"PreviousConstraint":null,"NextConstraint":5,"HeightPercentage":0.4338510101010101,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},{"ObjectName":"Scenario::StateModel","id":8,"Metadata":{"ScriptingName":"State.chum78","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":4,"PreviousConstraint":5,"NextConstraint":6,"HeightPercentage":0.4338510101010101,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},{"ObjectName":"Scenario::StateModel","id":9,"Metadata":{"ScriptingName":"State.whir30","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":5,"PreviousConstraint":6,"NextConstraint":null,"HeightPercentage":0.4338510101010101,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]}],"Constraints":[{"ObjectName":"Scenario::IntervalModel","id":1,"Metadata":{"ScriptingName":"Interval.bole13","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio in","Exposed":"audio in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"Processes":[],"SmallViewRack":[],"FullViewRack":[],"DefaultDuration":0,"MinDuration":0,"MaxDuration":0,"GuiDuration":667304497,"Speed":1.0,"Rigidity":true,"MinNull":false,"MaxInf":false,"Signatures":[],"StartState":0,"EndState":1,"StartDate":0,"HeightPercentage":0.004666666666666673,"NodalSlotHeight":100.0,"QuantizationRate":-1.0,"Zoom":-1.0,"Center":0,"ViewMode":0,"SmallViewShown":false,"HasSignature":false},{"ObjectName":"Scenario::IntervalModel","id":2,"Metadata":{"ScriptingName":"Roll","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio in","Exposed":"audio in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"Processes":[{"uuid":"c8060aec-462b-4e3c-bb43-fa8fd1d4cdec","ObjectName":"puara_roll","id":1,"Metadata":{"ScriptingName":"Roll","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11252108992,"Height":300.0,"StartOffset":0,"LoopDuration":7056000000,"Pos":[40.0,40.0],"Size":[75.0,22.0],"Loops":false,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Acceleration","Exposed":"acceleration","Address":"OSC:/accelerometer"},{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":1,"Hidden":false,"Custom":"Gyroscope","Exposed":"gyroscope","Address":"OSC:/gyroscope"},{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":2,"Hidden":false,"Custom":"Magnetometer","Exposed":"magnetometer","Address":"OSC:/magneticfield"},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Enable Unwrap","Exposed":"enable unwrap","Value":{"Bool":true},"Init":{"Bool":true},"Domain":{"Bool":null}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Enable Smooth","Exposed":"enable smooth","Value":{"Bool":true},"Init":{"Bool":true},"Domain":{"Bool":null}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"Enable Wrap","Exposed":"enable wrap","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Output","Exposed":"output"}]}],"SmallViewRack":[{"Processes":[1],"Process":null,"Height":200.0,"Nodal":true}],"FullViewRack":[{"Process":0,"Nodal":true}],"DefaultDuration":11252108992,"MinDuration":11252108992,"MaxDuration":11252108992,"GuiDuration":11520794551,"Speed":1.0,"Rigidity":true,"MinNull":false,"MaxInf":false,"Signatures":[],"StartState":1,"EndState":2,"StartDate":0,"HeightPercentage":0.004666666666666673,"NodalSlotHeight":100.0,"QuantizationRate":-1.0,"Zoom":-1.0,"Center":0,"NodalOffset":[-17.0,-1.0],"ViewMode":0,"SmallViewShown":true,"HasSignature":false},{"ObjectName":"Scenario::IntervalModel","id":3,"Metadata":{"ScriptingName":"Interval.dice39","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio in","Exposed":"audio in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"Processes":[],"SmallViewRack":[],"FullViewRack":[],"DefaultDuration":0,"MinDuration":0,"MaxDuration":0,"GuiDuration":6933096783,"Speed":1.0,"Rigidity":true,"MinNull":false,"MaxInf":false,"Signatures":[],"StartState":3,"EndState":4,"StartDate":0,"HeightPercentage":0.5500126262626263,"NodalSlotHeight":100.0,"QuantizationRate":-1.0,"Zoom":-1.0,"Center":0,"ViewMode":0,"SmallViewShown":false,"HasSignature":false},{"ObjectName":"Scenario::IntervalModel","id":4,"Metadata":{"ScriptingName":"Interval.tort55","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio in","Exposed":"audio in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"Processes":[],"SmallViewRack":[],"FullViewRack":[],"DefaultDuration":0,"MinDuration":0,"MaxDuration":0,"GuiDuration":2079453187,"Speed":1.0,"Rigidity":true,"MinNull":false,"MaxInf":false,"Signatures":[],"StartState":5,"EndState":6,"StartDate":0,"HeightPercentage":0.5310732323232322,"NodalSlotHeight":100.0,"QuantizationRate":-1.0,"Zoom":-1.0,"Center":0,"ViewMode":0,"SmallViewShown":false,"HasSignature":false},{"ObjectName":"Scenario::IntervalModel","id":5,"Metadata":{"ScriptingName":"Interval.fact39","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio in","Exposed":"audio in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"Processes":[],"SmallViewRack":[],"FullViewRack":[],"DefaultDuration":0,"MinDuration":0,"MaxDuration":0,"GuiDuration":2587023760,"Speed":1.0,"Rigidity":true,"MinNull":false,"MaxInf":false,"Signatures":[],"StartState":7,"EndState":8,"StartDate":0,"HeightPercentage":0.4338510101010101,"NodalSlotHeight":100.0,"QuantizationRate":-1.0,"Zoom":-1.0,"Center":0,"ViewMode":0,"SmallViewShown":false,"HasSignature":false},{"ObjectName":"Scenario::IntervalModel","id":6,"Metadata":{"ScriptingName":"Signal display","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio in","Exposed":"audio in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"Processes":[{"uuid":"9906e563-ddeb-4ecd-908c-952baee2a0a5","ObjectName":"SignalDisplay","id":1,"Metadata":{"ScriptingName":"Signal display","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10285994551,"Height":300.0,"StartOffset":0,"LoopDuration":7056000000,"Pos":[40.0,40.0],"Size":[200.0,100.0],"Loops":true,"Inlets":[{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in","Value":{},"Init":{},"Domain":{}}],"Outlets":[{"uuid":"3620ea94-5991-41cf-89b3-11f842cc39d0","ObjectName":"Outlet","id":0,"Hidden":true,"Custom":"out","Exposed":"out","Value":{"Tuple":[{"Float":0.6731763482093811},{"Float":0.40609022974967957}]},"Domain":{}}]}],"SmallViewRack":[{"Processes":[1],"Process":1,"Height":200.0,"Nodal":false}],"FullViewRack":[{"Process":1,"Nodal":false}],"DefaultDuration":10285994551,"MinDuration":10285994551,"MaxDuration":10285994551,"GuiDuration":10521514986,"Speed":1.0,"Rigidity":true,"MinNull":false,"MaxInf":false,"Signatures":[],"StartState":8,"EndState":9,"StartDate":0,"HeightPercentage":0.4338510101010101,"NodalSlotHeight":100.0,"QuantizationRate":-1.0,"Zoom":-1.0,"Center":0,"ViewMode":0,"SmallViewShown":true,"HasSignature":false}],"Comments":[]}],"SmallViewRack":[],"FullViewRack":[{"Process":1,"Nodal":false}],"DefaultDuration":10584000000,"MinDuration":10584000000,"MaxDuration":11113200000,"GuiDuration":11642400000,"Speed":1.0,"Rigidity":false,"MinNull":false,"MaxInf":true,"Signatures":[[0,[4,4]]],"StartState":0,"EndState":1,"StartDate":0,"HeightPercentage":0.0,"NodalSlotHeight":100.0,"QuantizationRate":-1.0,"Zoom":15120000.0,"Center":0,"ViewMode":1,"SmallViewShown":false,"HasSignature":true},"StartTimeNode":{"ObjectName":"Scenario::TimeSyncModel","id":0,"Metadata":{"ScriptingName":"Sync.start","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":0,"Events":[0],"MusicalSync":-1.0,"AutoTrigger":false,"Start":true,"Active":false,"Expression":" { true == false } "},"EndTimeNode":{"ObjectName":"Scenario::TimeSyncModel","id":1,"Metadata":{"ScriptingName":"Sync.end","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":10584000000,"Events":[1],"MusicalSync":-1.0,"AutoTrigger":false,"Start":false,"Active":true,"Expression":" { true == false } "},"StartEvent":{"ObjectName":"Scenario::EventModel","id":0,"Metadata":{"ScriptingName":"Event.start","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":0,"States":[0],"Condition":"","Date":0,"Offset":0},"EndEvent":{"ObjectName":"Scenario::EventModel","id":1,"Metadata":{"ScriptingName":"Event.end","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":1,"States":[1],"Condition":"","Date":10584000000,"Offset":0},"StartState":{"ObjectName":"Scenario::StateModel","id":0,"Metadata":{"ScriptingName":"State.start","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":0,"PreviousConstraint":null,"NextConstraint":0,"HeightPercentage":0.0,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},"EndState":{"ObjectName":"Scenario::StateModel","id":1,"Metadata":{"ScriptingName":"State.end","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":1,"PreviousConstraint":0,"NextConstraint":null,"HeightPercentage":0.0,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]}},"Speed":1.0,"Cables":[{"ObjectName":"Process::Cable","id":1,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Scenario","ObjectId":1},{"ObjectName":"Scenario::IntervalModel","ObjectId":2},{"ObjectName":"puara_roll","ObjectId":1},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Scenario","ObjectId":1},{"ObjectName":"Scenario::IntervalModel","ObjectId":6},{"ObjectName":"SignalDisplay","ObjectId":1},{"ObjectName":"Inlet","ObjectId":0}]}],"BusIntervals":[]},"Plugins":[{"uuid":"1f923578-08c3-49be-9ba9-69c144ee2e32","Refresh":false,"Reconnect":false,"MidiRatio":1.0},{"uuid":"6e610e1f-9de2-4c36-90dd-0ef570002a21","RootNode":{},"Children":[{"Device":{"Name":"OSC","Protocol":"9a42de4b-f6eb-4bca-9564-01b975f601b9","Config":{"Mode":1,"Version":0,"Framing":1,"Bundle":0,"Transport":{"UDP":{"Local":{"Bind":"0.0.0.0","Port":9997},"Remote":{"Host":"127.0.0.1","Port":9996,"Broadcast":false}}}}},"Children":[{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec3f":[0.11971008777618408,0.23942017555236816,9.835380554199219]},"Domain":{},"Name":"accelerometer"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec3f":[29.219999313354492,27.18000030517578,-24.299999237060547]},"Domain":{},"Name":"magneticfield"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec3f":[0.0024434609804302454,0.0,-0.0012217304902151227]},"Domain":{},"Name":"gyroscope"}}]}]}],"Version":4,"Commit":"e7fcc31bb79d240c34f9a9d7bf1bc1a88a3eed89","Tag":"3.5.2"} \ No newline at end of file diff --git a/docs/common-practices/tutorial-roll-gestures.md b/docs/common-practices/tutorial-roll-gestures.md new file mode 100644 index 00000000..d6a018f7 --- /dev/null +++ b/docs/common-practices/tutorial-roll-gestures.md @@ -0,0 +1,47 @@ +--- +layout: default +title: 'Creating Roll Gestures' +parent: Common practices +nav_order: 26 +--- + +# Creating Roll Gestures + +The Puara **Roll** processor is a powerful tool for interpreting real-world motion as a rotational gesture. It intelligently combines data from multiple sensors to calculate a device's side-to-side tilt (its "roll" angle). + +This tutorial will guide you through a complete example. We will use a smartphone as a live sensor to provide data to the Roll processor and visualize its output, but the same principles apply to any hardware that provides accelerometer, gyroscope, and magnetometer data. + +### Part 1: Setting Up the Live Sensor Data + +To see the Roll processor in action, we first need a source of motion data. We'll use a smartphone app to stream sensor data over Wi-Fi. This tutorial uses **[Sensors2OSC](https://sensors2.org) (Android)**, but the setup is similar for iPhone apps like **[GyroOSC](https://www.bitshapesoftware.com/instruments/gyrosc/)**. + +1. **Configure the App:** In the Sensors2OSC settings, set the **Host** to your computer's IP address and the **Port** to `9997`. + Sensors2OSC Settings + +2. **Enable Required Sensors:** On the app's main screen, enable the toggles for **Accelerometer**, **Gyroscope**, and **Magnetic Field**. Then, enable the main **Send data** toggle at the top. + Sensors Enabled + +3. **Set up OSC in score:** In the Device Explorer, add a new OSC device. Set its **`score listening port`** to `9997`. + Add OSC Device + +4. **Learn OSC Addresses:** Right-click the new OSC device and select `Learn`. Move your phone around until you see `/accelerometer`, `/gyroscope`, and `/magneticfield` appear, then click OK. + OSC Learning + +### Part 2: Building the Roll Gesture Patch + +Now that score is receiving sensor data, we can use our processor. + +1. **Add Processes:** From the Process Library, add a `Gestures/Roll` processor and a `Monitoring/Signal display`. + +2. **Connect Inputs:** Drag the learned OSC addresses from the Device Explorer directly onto the corresponding inputs of the Roll processor in the Inspector. + * `/accelerometer` -> `Acceleration` input + * `/gyroscope` -> `Gyroscope` input + * `/magneticfield` -> `Magnetometer` input + +3. **Visualize the Output:** Connect the `Output` of the Roll processor to the `Signal display`. + +4. **Run and Test!** Run the scenario. As you tilt your phone side-to-side, you will see the signal display draw a curve representing the roll angle in radians. Experiment with the `Enable Smooth` and `Enable Unwrap` toggles to see how they provide a cleaner, more continuous gestural controller. + +Roll Processor Example + +You can download a complete example score here: [/assets/scores/reference/processes/RollExample.score](/assets/scores/reference/processes/RollExample.score) \ No newline at end of file diff --git a/docs/reference-manual/processes/library/puara-gestures.md b/docs/reference-manual/processes/library/puara-gestures.md new file mode 100644 index 00000000..17c4744a --- /dev/null +++ b/docs/reference-manual/processes/library/puara-gestures.md @@ -0,0 +1,56 @@ +--- +layout: default +title: Puara Gestures +parent: Processes +grand_parent: Reference + + +nav_order: 60 +--- + +# Puara Gestures + +This section describes the processes ported from the [Puara-gestures](https://github.com/Puara/puara-gestures/) library. This library provides a powerful toolkit for creating and managing high-level gestural descriptors from sensor data. + +--- + +## Leaky Integrator + +The **Leaky Integrator** process applies a smoothing algorithm to an input signal. It's particularly useful for reducing jitter from noisy sensors or creating smooth transitions in parameter values. The amount of smoothing can be controlled in real-time by adjusting the leak factor and the update frequency. + +### Parameters + +| Parameter | Description | +| :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | +| **Inputs** | | +| `Input` | The incoming signal to be smoothed. | +| `Leak Factor` | A `float` from 0.0 to 1.0 that controls the amount of smoothing. A value of `0.0` means the output immediately jumps to the new input (no smoothing), while a value of `1.0` means the output does not change (full smoothing). Default is `0.5`. | +| `Leak Frequency (Hz)` | A `float` from 0.0 to 200.0 Hz that sets the rate at which the integrator updates its value. The control uses a logarithmic mapping for more intuitive musical control. Default is `100.0`. | +| **Outputs** | | +| `Output` | The smoothed output signal. | + + +--- + +## Roll + +The **Roll** process calculates the side-to-side tilt (roll angle) of a device. It uses a combination of accelerometer, gyroscope, and magnetometer data for a stable and accurate orientation reading. This is ideal for gestural control where you want to map the rotation of a device (like a phone) to a parameter. + +The process includes built-in options for transforming the output: +- **Unwrap:** Prevents the angle from jumping when it crosses the -π to +π boundary, allowing for continuous rotation tracking. +- **Smooth:** Averages recent values to reduce jitter from noisy sensors. +- **Wrap:** Confines the final output to a specific range (e.g., 0 to 2π). + +### Parameters + +| Parameter | Description | +| :----------------- | :------------------------------------------------------------------------------------------------------ | +| **Inputs** | | +| `Acceleration` | Expects 3D coordinate data (`{x, y, z}`) from an accelerometer. | +| `Gyroscope` | Expects 3D coordinate data (`{x, y, z}`) from a gyroscope. | +| `Magnetometer` | Expects 3D coordinate data (`{x, y, z}`) from a magnetometer. | +| `Enable Unwrap` | A boolean toggle. When `true`, allows the output angle to increase or decrease indefinitely. Default is `true`. | +| `Enable Smooth` | A boolean toggle. When `true`, applies a smoothing filter to the output. Default is `true`. | +| `Enable Wrap` | A boolean toggle. When `true`, wraps the final output to a specific range (e.g., 0 to 2π). Default is `false`. | +| **Outputs** | | +| `Output` | The calculated roll angle in radians. | \ No newline at end of file