Toolset for making musical applications with Unity, Max and Ableton.
Toolset for making musical applications with Unity, Max and Ableton.
OSC Address Router, Stepper, Slider, Dial, Position, Waves, Pads, Keys + more.
Ableton
Max
CNMAT-odot
Unity
SteamVR
OSC package
Optional: Envelop for Live
You should already have Ableton and Max installed. All other dependencies are free and open source.
Download o.dot from Github and place it in your Max packages directory. Typically found in Documents/Max 7/Packages
. To check, go to Options -> File Preferences in Max.
Download and install Unity.
Clone or download the zip of this project and open the folder TheConductor_Unity
in the Unity Editor.
Run the SteamVR scene from the scenes folder. If you have errors, they will be shown in the Unity console.
Open Ableton and add the folder TheConductor_Max
from this project to your Ableton places in the sidebar.
OSC defaults to running on port 8000 in Unity. You can change the ports and outgoing IP address on the [OSC]
component in Unity and in each M4L patch.
Select the prefab in the Unity scene hierarchy that you would like to use and activate it.
Follow the instructions below for setting up each specific component.
Unity Attach: empty GameObject
Envelop for Live is an open source audio production framework for spatial audio composition and performance. This component contains a spatial audio representation of the decoder for the their speaker installations. You can send positional values and audio levels from Max to Unity for 3d representations.
Unity Attach: empty GameObject
Unity script for interacting with any OSC event. When a packet is received with the corresponding name, the callback event is called with a List<object>
containing the OSC data.
Unity Attach: GameObject
Receive named midi events in Ableton from Unity collisions. The Midi Send Events script sends when the GameObject OnCollisionEnter
event is triggered.
Unity Attach: GameObject or empty GameObject
Send named midi events to Unity from Ableton. Attach any public
function to the Note on / off events in the inspector.
Unity Attach: VRGameController
Controller positions to XYZ live.dial
s. Map the controller positions to any value.
Unity Attach: GameObject with Transform
Attach to Unity GameObject and send its transform to XYZ live.dial
s. Useful for panning Envelop for Live sources.
Unity Attach: GameObject with UI Canvas child
Radial UI controller to live.dial
. This component does not take a name but could be easily modified to do so based on other patterns in these tools.
Unity Attach: GameObject(s)
Physics reactive cubes to Ableton drum rack.
Unity Attach: GameObject(s)
Interactive cube height transforms to multislider
. Grab or select cubes with laser pointer. Can select multiple. Scale by amount is mutliplied by the height value. Example of scaling values for other object interpretations.
Unity Attach: GameObject
Virtual piano model sends midi duration and pitch. Represented by kslider
.
Unity Attach: GameObject
Cube represenation of a stepper to live.step
. Laser pointer controls on / off and touchpad controls velocity.
Why deprecate? VRTK discontinued development and these packages were based heavily on controls available within that sdk. They could easily be revitalized with a little finesse.
Unity Attach: GameObject
Draw on 2D material to waveform~
.
Deprecation Reason: VRTK made it simple to snap the whiteboard pen to the controller.
Unity Attach: empty GameObject
New instrument example with a wave picker, controller position and velocity to custom M4L device.
Deprecation Reason: The dial menu was a VRTK feature. Could easily create new menu and new materials.
Unity Attach: GameObject with UI Canvas child
UI slider to to live.slider
.
Deprecation Reason: VRTK made it simple to select Unity UI Canvas in VR. Here are some links to similar implementations.
https://github.com/thestonefox/VRTK/commit/5fa29d7f159b00d9e719455f16d1d4f0bfc6b6b1
https://github.com/Sergey-Shamov/Unity-VR-InputModule/blob/master/VRControllerInputModule.cs
https://ritchielozada.com/2016/01/01/part-8-creating-a-gaze-based-input-module-for-unity/
https://forum.unity.com/threads/using-the-unity-event-system-for-vr.472259/
Many thanks to the work of others whose shoulders I stand on to build musical interfaces.