UnityAbletonLink is an Ableton Link plugin for Unity.
After checked out the UnityAbletonLink repository, then check out all dependencies.
cd UnityAbletonLink
git submodule update --init --recursive
Open UnityAbletonLink.xcodeproj
with Xcode, then build it.
Open UnityAbletonLink.sln
with Visual Studio (ver. >= 2017), then build it.
- Windows: Run the
build_android_plugin.bat
. - Mac or Linux: Run the
build_android_plugin.sh
..so
will be generated in thelibs
folder.
Run the following on a terminal.
mkdir build
cd build
cmake ..
make
Then libUnityAbletonLink.so
is generated in build
directory.
Create a new Unity project.
Create Plugins
folder under Assets
folder in the project.
Copy UnityAbletonLink.bundle
and CSharp/AbletonLink.cs
into Plugins
folder.
Copy CSharp/AbletonLink.cs
into Plugins
folder.
Create x86_64
folder under Plugins
folder.
Copy UnityAbletonLink.dll
into Plugins/x86_64
folder.
Copy CSharp/AbletonLink.cs
into Plugins
folder.
Create Android
folder under Plugins
folder.
Copy libs
folder into Plugins/Android
folder.
Copy UnityAbletonLink.so
and CSharp/AbletonLink.cs
into Plugins
folder.
AbletonLink.cs
is a wrapper script for UnityAbletonLink
plugin.
AbletonLink
class is the singleton. So you can access it by using AbletonLink.Instance
.
Write some script to use this plugin. For example,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Example : MonoBehaviour
{
private AbletonLink link;
void Update ()
{
double beat, phase, tempo, time;
int numPeers;
// We can get the latest beat, phase and tempo as follows.
AbletonLink.Instance.update(out beat, out phase, out tempo, out time, out numPeers);
Debug.Log ("beat: " + beat + " phase:" + phase + " tempo:" + tempo);
}
}
Attach the script to a GameObject (e.g. Main Camera or something).
Play the scene and play the other Ableton Link supported application such as Ableton Live, then you can see log messages like the following.
...
beat: 43.151854 phase:3.151854
UnityEngine.Debug:Log(Object)
beat: 43.265132 phase:3.265132
UnityEngine.Debug:Log(Object)
...
These codes are licensed under CC0.