Skip to content

Instantly share code, notes, and snippets.

@keijiro
Last active July 22, 2017 13:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keijiro/b50bb22778eccee03c67425542f894a2 to your computer and use it in GitHub Desktop.
Save keijiro/b50bb22778eccee03c67425542f894a2 to your computer and use it in GitHub Desktop.

KlakLASP

KlakLASP is an extension for Klak to create audio reactive behaviors with using the Klak Wiring system.

Screenshot

KlakLASP integrates the LASP plugin to analyze audio signals. Thanks to the low-latency nature of LASP, it doesn't introduce noticeable delays between audio input and actions.

GIF Demo

System Requirements

  • Unity 2017.1 or later

At the moment, KlakLASP only supports Windows (64 bit) and macOS (64 bit).

Installation

Before installing KlakLASP to a project, all its dependent plugins (Klak and LASP) should be installed to the project. Follow the installation instructions in each page.

Then, download one of the unitypackage files from the Releases page and import it to the project.

How It Works

The Audio Input node has a VU meter in the inspector, and it shows how the node analyzes input audio signals and determines output.

GIF

The node tracks the recent peak amplitude of the input audio signals, and determine the output based on the difference between the current amplitude and the peak amplitude.

When the current amplitude is equal or larger than the peak amplitude, it outputs a value of 1. The VU meter indicates over-peak input with a red band (see the image below).

Meter

When the current amplitude is smaller than the peak amplitude and larger than the value of (peak amplitude - dynamic range), it outputs a value between 0 and 1 that varies based on the position in the dynamic range. This range is indicated with a gray band in the VU meter (see the image below).

Meter

When the current amplitude is equal or smaller than the value of (peak amplitude - dynamic range), it outputs a value of 0.

Meter

The peak amplitude value slowly decreases by time to adapt itself to the recent amplitude level. The GIF above shows this behavior that the peak amplitude and the dynamic range are slightly slid to the left while the input doesn't hit the peak.

Note that the peak amplitude doesn't exactly match with the actual peak of the input signals -- there is a small margin between them, so that it increases the chance of hitting the peak.

Audio Input Properties

Filter Type

Four types of filters are available -- Bypass, Low-Pass, Band-Pass and High-Pass. These filter are useful to detect rhythmic accents. For instance, the Low-Pass filter can be used to make a behavior that reacts to kick drums or a bassline.

Dynamic Range (dB)

Specifies the difference between the lowest amplitude and the highest amplitude in decibel.

Auto Gain Control

When enabled, it automatically adjust the amount of the gain based on recent peak of amplitude (as explained in the How It Works section). When disabled, the peak amplitude is fixed to 0dB, and the amount of the gain is manually controlled by the Gain property.

Hold And Fall Down

Enables the "peak-hold and fall down" behavior that is commonly used in VU meters. This is useful to make animation smoother. The GIF below shows the difference between with/without this option.

GIF

TIPS

Dynamic Range = Clickiness of Behavior

Although having a wide dynamic range is important for expressiveness, it tends to make behavior slower and unclear. It's recommended reducing the dynamic range when "clicky" behavior is preferred.

GIF

Current Limitations

  • LASP always tries to use the system default device for recording. There is no way to use a device that is not assigned as default.
  • LASP only supports monophonic input. Only the first channel (the left channel in case of stereo input) will be enabled when using a multi-channel audio device.

License

MIT

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment