IC Python API:Audio Driven
- Main article: Python of the Month.
Demo Video
Description
This script lets the user pick an audio file in wave format and apply an interpretation of it in movement to a selection of props.
Course Prerequisites
Make sure to install Numpy and Scipy Python modules by following the instructions here.
You should familiarize yourself with the following fundamental articles before you proceed:
Learn How to
- Deal with audio files and data.
- Drive complex prop animations.
- Create complex and responsive user interface elements.
Required Files
- iClone scene with one or more props.
- An audio file in wave (*.wav) format.
- Audio Driven Python script.
- Audio Driven Extensions Python script.
You can download this plugin from the Reallusion Marketplace. To acquire and view the source code, please visit Reallusion GitHub.
Usage Instructions
- Clone or download the Reallusion/iClone GitHub.
- Copy AudioDriven folder into the iClone install directory > ...\Bin64\OpenPlugin.
- Load the script into the project from the menu: Plugins > Python Samples > Audio Driven.
- Load an audio file in .wav format.
- Select a prop in the scene.
- Adjust the animation parameters and click the Apply button when finished.
Code Flow
Given an audio file, the script will create an audio spectrum data with the help of the scipy module. Then a collection of clones will be made according to the parameters inside the user interface such as Clones, Spacing, Alignment, Transition Color, Ramp & Fade, and various transformational elements. The clones will then be animated according to the audio spectrum multiplied by the transform strength.
APIs Used
You can research the following references for the APIs deployed in this code.
main.py
- RLPy.REventCallback.__init__()
- RLPy.RDialogCallback.__init__()
- RLPy.REventHandler.UnregisterCallback()
- RLPy.REventHandler.RegisterCallback()
- RLPy.RUi.CreateRDialog()
- RLPy.RAudio.CreateAudioObject()
- RLPy.RGlobal.GetFps()
- RLPy.RScene.FindObject()
- RLPy.RScene.RemoveObject()
- RLPy.RTransformKey()
- RLPy.RGlobal.GetTime()
- RLPy.RTime.GetFrameIndex()
- RLPy.RTransform()
- RLPy.RTime()
- RLPy.RTime.IndexedFrameTime()
- RLPy.RAudio.LoadAudioToObject()
- RLPy.RGlobal.Play()
- RLPy.RGlobal.GetStartTime()
- RLPy.RRgb()
- RLPy.RKey()
- RLPy.RUi.GetMainWindow()
- RLPy.RUi.AddMenu()