/chunreal

ChucK in Unreal Engine

Primary LanguageC++MIT LicenseMIT

Chunreal

ChucK - Strongly-timed Music Programming Language - in Unreal Engine 5

Chunreal is a plugin for Unreal Engine 5 that allows users to compile ChucK code at runtime. Multiple ChuckMain nodes can be chained in a MetaSound graph using stereo input & output to perform modular synthesis style digital signal processing.

Developed by Eito Murakami and Ge Wang with the help of Max Jardetzky at CCRMA | Stanford University.

Wiki Tutorial!

The Wiki page contains a step-by-step tutorial that demonstrates how to set up the Chunreal plugin in your Unreal Engine project.

https://github.com/ccrma/chunreal/wiki

Template Project

This git repository hosts a template Unreal Engine 5.3 project that includes example scenes, Blueprints, MetaSound sources, and materials. Clone or fork the repository and generate Visual Studio project files. If this is your first time compiling a Unreal Engine project, set up your IDE by following these tutorials:

https://docs.unrealengine.com/5.3/en-US/setting-up-visual-studio-development-environment-for-cplusplus-projects-in-unreal-engine/

https://docs.unrealengine.com/5.3/en-US/how-to-generate-unreal-engine-project-files-for-your-ide/

Try Example Scenes!

Try opening the following example levels and playing in the editor viewport!

  • Chunreal_SetGlobals_ExampleLevel
  • Chunreal_ChainedDSP_ExampleLevel
  • Chunreal_1Source_ExampleLevel
  • Chunreal_ManySources_ExampleLevel
  • Chunreal_Physics_ExampleLevel
  • Chunreal_Mic_ExampleLevel
  • Chunreal_GlobalEvent_ExampleLevel
  • Chunreal_PitchChange_ExampleLevel

How To Use Chunreal

Setting Up ChuckMain Node

Chunreal_Simple_MetaSound asset contains an example of ChuckMain node implementation in a MetaSound source.

Input

  • Run Code: A trigger input for compiling ChucK code.
  • Code: A string input for ChucK code to be compiled.
  • ID: A string input for assigning a unique ID to a ChuckMain node. This is used to get and set global variables for a specific ChucK instance.
  • Audio Input Left: Audio input left channel. Can be accessed by adc.left inside a ChucK code.
  • Audio Input Right: Audio input right channel. Can be accessed by adc.right inside a ChucK code.
  • Volume Multiplier: A float input for applying a volume multiplier to both output channels.

Output

  • Audio Output Left: Audio output left channel. Can be accessed by dac.left inside a ChucK code.
  • Audio Output Right: Audio output right channel. Can be accessed by dac.right inside a ChucK code.
image

Set Parameters From A Blueprint Actor

Create a Blueprint actor, attach an audio component, and assign your MetaSound source that contains a ChuckMain node(s) as the sound parameter. Optionally, enable Allow Spatialization and apply Attenuation Settings. We prepared an example Binaural_SA sound attenuation asset.

Chunreal_Simple_BP asset provides a template.

image

A ChucK code can be written as a string and can be passed to the Audio Component that uses the MetaSound source as follows:

image

Alternatively, we prepared a ReadFile Blueprint function for loading a .ck file using an absolute path.

image

Getting & Setting ChucK Global Variables Using ID

A specific ChucK instance can be accessed using its assigned unique ID. Global event, int, float, and string variables can be accessed using the following Blueprint functions. To learn how to use each function, open each Blueprint Actor in ExampleBlueprints folder.

image

Connecting Multiple ChuckMain Nodes

Multiple ChuckMain nodes can be chained in a MetaSound source and can interact with other existing MetaSound nodes!

Chunreal_ChainedDSPExample_MetaSound and Chunreal_ChainedDSPExample_BP provide a template.

image

ChucK Community

Join us!! ChucK Community Discord | ChucK-users Mailing list