Project Harmony Quickstart Guide

Studio & Plugin versions 0.1.0-beta

0. Welcome

We are happy to have you here and we hope that you will have a great experience with the Project Harmony Studio. Before we get going it could be good to read through these paragraphs.

  • Please note that this is still in beta and a work in progress so you might find some inconsistencies in the software and plugin when it comes to the names “Elias” and “Project Harmony”, but throughout this documentation we will call it the Project Harmony Studio and Project Harmony Unreal Plugin, or just Harmony Studio and Harmony Plugin for short.
  • In the Harmony Unreal Plugin actors, blueprint nodes etc. are still called “Elias” and not “Harmony” so please keep that in mind.
  • If you also want to use the Elias 3 Unreal plugin in the same project where you use the Project Harmony Unreal plugin, you will need to download Elias 3.3 or later.. Any previous versions of the Elias 3 plugin for Unreal will not be compatible with the Project Harmony Plugin.
  • At this moment the studio is set to always play sounds in 48kHz, this is just temporary and the option to change this will be available in the future. Note that if you run remoting you can set the sample rate for the Project Harmony plugin in the Unreal project settings and you could then work in another sample rate with the plugin and with your files and get the correct playback of them in this case.

To download or read more about Project Harmony, please visit the main website:
http://www.eliassoftware.com/project-harmony




1. What’s in the Project Harmony Beta Release

1.1. Prerequisites

  • Windows 10
  • To test the Unreal plugin and the Unreal demo project you will need Unreal 4.26
  • Download Project Harmony installer and demo project from

1.2. Harmony Studio Installation Steps

  • Run the Project Harmony 0.1.0-beta.exe and follow the installation steps.
  • Since this is a BETA build of the studio you might get a warning from windows when opening the installer because it isn’t signed yet. But you can then click on “More info” and select “Run anyway” to start the installation.
  • You will have the option to to install the Harmony Studio for all users or only for your user. We suggest that you install only for your user. If you install for all users you may need to choose to run the studio in administrator mode every time you start the studio and could be a bit inconvenient.
  • You can select where on disc you want to install it and it is up to you where you want it to be located.
  • Notice that the Unreal and Unity plugins will also be installed at the same location as the Studio.
  • After the installation you should be able to start the Elias Studio from its installed location, desktop shortcut or from the windows list of applications.

1.3. Plugin installations

  • The Unreal plugin was made available for you when installing the studio so locate the directory where you installed the studio and you should find the Plugin folder in there.
  • If you don’t remember where you installed the studio you can always hit the Windows key to bring up the windows menu and type in “Harmony Studio” to see it’s shortcut, right click on it and select “open file location”. A folder will now be opened and you will see another shortcut to the Studio location, right click on this icon and select “Open file location” and you will now be in the Elias Studio directory. If you have a shortcut directly on the desktop you can right click on that one and select “open file location” right away.

1.3.1. Unreal Plugin installation Steps

  • In the Elias Studio directory you will find the “plugins” folder and then the “unreal-plugin” folder. In here you have the “ProjectHarmony_UE4” folder that contains the plugin. Copy this folder and locate your Unreal 4.26 plugins folder (default location: C:\Program Files\Epic Games\UE_4.26\Engine\Plugins).

NOTE! If you have Elias 3.2 or earlier versions of the Elias Plugin for Unreal Engine 4 they are not compatible and you will need to upgrade the Elias 3 Plugin for Unreal to version 3.3 or later for them both to work at the same time in the same Unreal project. If you were part of the internal BETA test group make sure to remove any older versions of the Project Harmony BETA plugins for Unreal, also note that this version might not be compatible with projects that used previous versions of the Project Harmony plugin. If you run into any problems you can double check so you don’t have a Plugins folder with any other Elias Plugins installed at the Unreal project location since they will override the plugins you have installed to the Unreal engine..

1.3.2. Unity Plugin installation Steps

  • The Unity plugin is currently not included in the Project Harmony installer so you will need to download it at www.eliassoftware.com.
  • WIth the unitypackage download you can run it and select a project to install it to, or load the unity project first and run the unitypackage while it is running.
  • Make sure to include everything in the package during the import to make sure that you have everything you need, and you should be good to go.

1.4. Get going with the demo Unreal 4 project: “The Theater”

Also available to download on our website is a demo project made in Unreal Engine 4.26.

This is our playground testing-environment for both Elias 3 and Project Harmony Beta features and functionality and we are glad to share this with all of you. Here both you and us can learn from each other and we hope you will explore this demo project and learn from it but also to come back to us with feedback and questions. This demo project will keep growing and we will keep fixing things and adding things to it and make new releases whenever we have something new to share.

  • “The Theater” is an Unreal project made for demonstration purposes. It was created by:
  • Pontus Karlsson, basic level design and modeling
  • David Skarin, gameplay, effects and additional modeling.
  • Robert Lundgren, audio design for the Jungle.
  • Erik Brattlöf and Måns Ortner, sound design for the docks/harbor level.
  • Martin Barreby, composer of the Jungle level and Theater level.
  • Kristofer Eng, composer of the Harbor level music. Arranger on "Soon May the Wellerman Come" (Trad. from 1860-1870)
  • Philip Bennefall, bard vocals and lyrics
  • Elias Team, harmonies on ("Soon May the Wellerman Come" Trad. from 1860-1870).
  • Thanks to Synty Studios for providing us with assets from“Polygon Pirates Pack”. Do not use or spread these assets outside of this Unreal project.
  • Make sure that you have Unreal 4.26 installed on your windows machine.
  • Locate the Project Harmony Unreal Plugin installed with the studio and place it where your Unreal installation looks for plugins.
  • Run the “The_Theater_Demo.uproject” to start it.
  • The harmony project used in this demo game is called “TheTheater_HarmonyProject.harmony” and is located inside the folder called “TheTheater_HarmonyProject” directly in the root directory of the unreal project.
  • The Elias 3 project used in this demo game is called “Elias_TheTheaterDemoSoundtrack.mepro” and is located in the folder called “Elias3Project” directly in the root directory of the unreal project.
  • If Unreal has “remoting” turned on for the Project Harmony Plugin, you will only need to start the studio and click “Start Remote Session” to open the same project Unreal uses right away. Remoting means that Unreal will host the project and the studio will use that same instance so all sounds from the Studio will then be played through Unreal and all updates you do to the harmony project will instantly reflect in Unreal. You can even update field values while Unreal is playing and hear the changes in real time.



2. Project Harmony Studio

2.1. Project creation

When starting the studio you are greeted to the start screen. Here you have three option:

“Start remote session”, “New Project” or “Browse” (Locate and load an already existing Harmony project).image31




2.2. Standalone Mode vs Connected Mode

With Project Harmony Studio you can either:

  • Open a project and work with it in Standalone Mode.
  • Connect to a project hosted by the Unreal Plugin and work with it in Connected Mode.

There are some important considerations to be aware of when running in the two modes.

Standalone Mode (shown as “local session” in the studio)

When working with the studio standalone, all audio processing is done within the software of the studio. Therefore the studio will use its own audio device connection for previewing of audio assets as well as patches.image22

The Studio is also directly accessing the project files on disk. It is important that only one process has direct access to the Harmony project files. Avoid opening the same project in several instances of the Studio or have your Unreal project open while working against the same Harmony project directory with the Studio when using the Studio in standalone mode. To work with the Studio and the Unreal plugin against the same Harmony project, you should use the connected mode of the Studio.

Connected Mode (shown as “remote session” in the studio)

Instead of opening a project and working with the studio in standalone mode, you can instead connect to a Harmony project hosted by the Harmony plugin of an Unreal project.image18

In this case, you first need to go to the Harmony Plugin settings in the unreal project, select path to the Harmony project and make sure the plugin runs with the server setting ON.

Once that is established, you can simply use the “Connect to remote” option from the start screen of the Studio to connect to the project hosted by the Unreal plugin.

When running in connected mode, the project files are only directly accessed by the Harmony Unreal Plugin and all audio output (including all kinds of preview) is sent through the audio output used for your Unreal project.

Turn on the connected mode in Unreal by going to Project Settings and scroll down the Plugins settings and click on Elias, In here you can “Start Remoting Server” to start it and the button will then change to “Stop Remoting Server” If you want to stop it. You can also check the box “Start Remoting Server at Editor Startup” if you want the Remoting Server to Start automatically when loading the Unreal project.

image2




2.3. Layout

image17

This is the layout of the Project Harmony Studio:

  1. The asset browser where you manage your assets and folders.
  2. Global Panel with one tab for you Global parameters and another for creating the Enums.
  3. Workspace - This is where your mixer, patches, configurations and reverbs will open.
  4. Details Panel with three tabs; patch parameters, patch parameter and details combo tab and the details tab. The node details tab will show you the fields and setting for the currently selected node.

2.3.1. Workspace

The workspace is the largest window in the middle of the studio and will show you the loaded Patch, Patch Configuration, Default Mixer or Reverb asset.

Notice that there is no save function in the studio, everything is constantly being saved.

2.3.2. The Command Palette - CTRL+Shift+P

In the workspace you can do the quick command “ctrl + shift + P” to bring up the command palette. Here you can control many things from one simple menu. You filter for the things you want to do and can for example Create, remove, rename a new asset inte browser or make a node connection. This is a first step towards giving the user better accessibility and to have fast access to any action at any time and it.

2.3.3. Asset browser

Right click on file names to bring up options for them. Right click on icons or below assets for fewer options not related to a specific asset or folder.

Navigation:

image50

2.3.4. Default Mixer

  • The default mixer is a unique asset that will be automatically created with the project and you will only have one mixer for the whole project.
  • You can rename it and even remove it but we suggest that you will keep it and not delete it. If you remove it a new mixer will be generated when you start the studio but it will be empty and your progress will have been lost.
  • In the mixer you will have one Master Out and is the master bus where all the sound goes through in the end. E.g. Here you can create Group Channels that you connect to the Master Out, to other Group Channels or a mixer channel. Don’t remove the Master Out node.
  • With the Default mixer selected you can right click in the workspace to add nodes. Patches will need to have a group channel to play though, so make sure to at least have one group channel created and connected to the Mater out node so the patchen can play though that group channel.

image33

Creating and connecting Group Channels in the Default Mixer.

2.3.5. Asset types

There are currently 5 different asset types in the browser as well as folders. From top to bottom in the image above you will see each type with the asset type Icon to the left and Asset name to the right of the icon:

image30

  1. Default Mixer
  2. Folder
  3. A Patch
  4. A Configuration of the patch “A Patch”
  5. A Reverb Asset
  6. A Sound Asset

2.3.6. Sound Asset

  • Add a sound asset to the studio by click and drag a wav file from the windows file system to the browser window in the studio.
  • When the wav file has been added to the Harmony project it will be ingested and a compressed Ogg file is automatically created along side it.
  • A sound asset in Project Harmony is not the actual sound file itself, but a reference to the ingested sound that contains the uncompressed Wav file, as well as the compressed ogg file. When a sound asset it played it is the ogg file playing.
  • The most common way to ingest files is probably just adding the files directly in the project structure on disk. E.g. if you are working in your DAW and want to do a batch export of several file, you can do this directly somewhere in the folder structure above the Harmony Project file. The Wav files will be directly ingested as soon as they are added and if the studio is running so it can ingest them, Notice that there is currently not a progressbar while importing the files so please just be patience if you add longer files or many files at the same time.

2.3.7. Patch

  • A patch is created by right clicking asset browser and selecting “Create new patch”.
  • Open a patch by double clicking on it and it will load into the workspace.
  • A newly created patch will not be empty, they will have a couple default nodes so you can fastly get going. You will have two parameter pulses called start and stop that is connected to a sound player that is connected to an output.
  • To try it out real fast, add a sound asset to the Sound Player, select a Group Channel on the output node and Click “run” on the Start pulse patch parameter and you should hear the patch play.
  • To make fields overwritable in a Patch configuration, hover the field you want to be able to overwritten and click the pen icon to the left of it to make it overwrite table.

image51

Make fields overwriteable for patch configuration childs of the patch.

2.3.8. Patch Configuration

E.g. if you created a footstep sound for the right foot and then want to make a left foot with the same behaviour but with other sounds. Instead of duplicating one foot and then needing to update both whenever you want to make a change for the footstep system, you create a configuration of one foot and keep all the logic but choose to only replace the sounds. This way you will only have to update the logic in one patch and let the change be inherited down to the configuration. Alternatively is to create one foot patch and then two configurations, one for left and one for right since thinking of one foot as the parent could be a bit confusing since you think of them being equal instead of parent and child.

Another example could be that you have a “Car” patch with all the basic functionality of a car like the engine, gears, tire sounds for turning or breaking etc. Then for each car model you create configurations of the car patch so you can replace the engine sound, the sounds the tires make when turning or breaking, change it to fewer or more gears, different pitch values etc.

  • A patch configuration is a child to a patch and can inherit fields from the patch that you can override in the Patch configuration.
  • To create a Patch Configuration, right click on a patch that you want to create a configuration of inside the Browser and select “Create new patch configuration”.
  • Double click a configuration in the browser to open it.
  • You can also create configurations from other configurations by right clicking on a configuration in the asset browser and select “Create new patch configuration”.
  • For the configuration names “_Config” will automatically be added after the patch name as name for the configuration but you can rename it as well if you like.
  • Configurations does not allow you to reroute nodes from its parent and is therefore not a node graph, instead it is a list of fields you have chosen to be able to overwrite from the parent patch or parent configuration.

image28

Fields in a patch configuration can also be set to being overwritable so there can be configurations of configurations.

Reverb Asset, the convolution reverb

The reverb in Project Harmony is a convolution reverb and you need to provide it with an impulse file. The impulse file is imported as any other sound asset but notice that they are specifically made for the use as impulse file. So even though you could add any sound asset as an impulse file it could sound really strange. This can however be used as a means to modify your sound in unusual ways and create some exciting results.

Reverb assets can be used while you preview your sound assets but not directly within the patches or default mixer at the moment. Reverb asset can however be used in the Harmony Unreal Plugin and selected on zones so they can add the reverb effect to sounds within the zone.

  • Create a Reverb asset by right clicking in the browser and select “Create new reverb asset”.
  • Open a reverb asset by double clicking on it in the browser.
  • A reverb has only to fields at the moment
  • Reverb time - To use the whole file as impulse leave reverb time to 1. E.g. If you want to shorten to play just 60% of the impulse file the give it a value of 0.6
  • Impulse audio asset - drag the sound asset you want to use for Impulse file from the browser to the grey area below the “Impulse audio asset” header.

image38

Reverb asset settings.

2.3.9. Nodes

Both the Default Mixer and patches have the ability to build up a network of nodes that will determine how the patch should sound and when. The available nodes differ a bit between the mixer and patches since the mixer is focusing on the routing of the sound while the patches handle the actual sound files that are playing and their behaviour.

We will not list all the nodes here but you will have a bunch of different categories of nodes such as math, logic, comparison, signal processing, parameters, generators etc. We encourage you to go through the nodes and test them out and design some really diverse and advanced patches.

Add nodes by right clicking in an empty area in the workspace and a context with all available nodes will pop up. Here you can scroll through the list of nodes or you can search and filter by starting typing on the header of the context menu. Click on the node that you want to add to your workspace.

image47

Add nodes by right clicking in the workspace.

Connect nodes by clicking and holding a socket and drag from it to another socket with a matching color. Remove connections by clicking the cord and hit “delete” key.

Node system sockets and cord color codes:

  • Signal = Darker Yellow
  • Pulses = Green
  • Integer (whole values) = Brighter Yellow
  • Double (decimal values) = Purple
  • Booleans (True or false) = Blue
  • Enums = Fire Orange

image16Example of creating a constant double node and connecting it to the pitch.

image1

Example of a simple patch that depending on the boolean state of the patch parameter “This is the Bool”, will select to play one of the two sound players.




2.3.10. Play sound node

The sound player is one of the more busy nodes so let’s run through what you can do with it. Looking at the Sound Player node you have the following sockets and fields from top to bottom:

  1. Play - Takes a trigger to start playing the patch
  2. Stop - If the patch is looping or longer you might want to send another pulse to stop the playback of the patch.
  3. Amplitude - Is a double value that increases or decreases the amplitude of the patch. E.g. 0.5 is half amplitude, 1 is unaltered, 2 is double amplitude.
  4. Pitch - Is a double value to change the pitch of the sound. E.g. 0.5 is half speed, 1 is unaltered, 2 is double speed.
  5. Offset - Set in milliseconds if how want the playback of the sound to start later in the file.
  6. Delay - Set in milliseconds if you need to delay the start of the patch.
  7. Containers - Drag and drop your sound asset here. Expand on the arrow to be able to see the sound list and set them to looping or see the name of the sound assets. Click the plus symbol to add another sound list.
  8. Polyphonic limit decides how many sounds can be heard at the same time. If set it to 1 for example and you trigger the sound player to play twice very close after each other the first sound will fade out and the other one will take over and not play at the same time.
  9. Fade time - Set in milliseconds how long the sound should fade out when it gets a pulse to the stop socket.

2.3.11. Sound Player in the Details panel

You will see all the fields on the node also listed in the details panel where you can set them as well. Notice that here you can also set them to be overwritable in a configuration child of this patch.

Below the fields you see the sound list and here you can click the “+” to add another sound list or click the three lines icon to open the progression list to select if the sounds in the sound list should be selected and played in sequential order or be shuffled.

If you click on the three lines below the last one you can there select if the sounds in the song list should loop or not. This is set for every sound list separately while the progression mode is set for the whole sound player.

image46

Changing the progression mode from shuffle to sequential and also turning on looping for the sounds in the sound list from the details panel with the sound player selected.

2.3.12. Details panel

If a patch is selected, you can create and manage your patch parameters and node values in the details panel to the right side of the studio. There are three different tabs to use. Tabs from left to right:

  1. Details tab - This tab is empty until you select a node with fields you can edit. Note that some nodes also have notes where you could add a description for the node. This is currently not visible on the node itself but you can read it in the details tab and if you this node is appearing in a configuration.
  2. Details tab and Patch parameter combination tab - This tab will both show the details tab and patch parameters at the same time for fast access between the two.
  3. Patch parameters tab - Create, remove and manage you patch parameters.



2.3.13. Parameters

There are currently five different types of parameters:

  1. Boolean - True/False
  2. Double - Decimal values
  3. Int (Integer) - Whole values
  4. Pulse - To trigger nodes
  5. Enum Parameter (Enumeration) - A list of items. (Note that you need to create an Enum from the enum tab below the browser before you can create a parameter)

2.3.13.1. Patch Parameters

Create Patch Parameters from the parameter tab in the details view, the

Patch parameters are created and used in the currently active/selected patch and can not be used in any other patches. If you need to get or set values that you need to access in two or more patches you will instead need to create a global patch.

Right click in the workspace graph with a patch selected and go into the Parameters category to select the patch parameter you want to use it in the node system.

image5




2.3.13.2. Global Parameters

Global parameters can be used in any patch in the studio and are great to use when you need to keep track of global values e.g. Player health. In Unreal each global parameter can be accessed as its own node that you can use in the Unreal Blueprints.

Below the browser you can create, remove and manage your global parameters.

Right click in the workspace graph with a patch selected and go into the Parameters category to select the global parameter you want to use it in the node system.

image23

2.3.14. Enumerations

Found as the “#” tab under the browser and next to the Global Parameters tab. Enumerations, or enums for short, are containers that you can fill with enum values. These values can be used to change the outcome of things depending on what enum value is chosen.

E.g. There could be an enumeration with different materials, and depending on what material is currently stepped on the corresponding sound effect would play. So for example, the player steps on wood then the patch registers this and will then select to play a sound player that plays footsteps on wood sounds.

2.3.15. Preview sounds

You can preview a sound in different parts of the studio but they will all bring up the sound previewer in the top of the studio.

  1. Browser - Right click on a sound asset to preview it by selecting “Preview” or “Preview Loop”, preview loop will keep repeating the sound until you click it away on the close preview button.
  2. Open up the sound list on a sound player by clicking the little white area next to the sound container list and you can see a play button to the left of the sound asset in the list. Click it to preview the sound. Note that this will still preview the sound outside the patch and will not take any alterations of the sound in the patch into consideration. image6
  3. In the details panel with a Sound PLayer selected you will see the sound list . Here you can also click the play button to preview the sound asset with the preview player. Also note here that this will still preview the sound outside the patch and will not take any alterations of the sound in the patch into consideration. image8

2.3.15.1. Preview player

image21

Whenever you preview a sound you see this preview player in the top. From left to right

  1. Play button to listen to the sound asset again.
  2. Name of the sound asset.
  3. Select if you want to listen to this sound asset though one of you Reverb Assets.
  4. Set the Dry/Wet signal, so at 0 you will still only hear the dry sound, 0.5 you will hear a 50/50 mix and at 1 only the wet sound.
  5. Close button to close the preview player and to stop playing looped sound assets.


3. Unreal Engine

More or less all of the fields in the Unreal plugin have tools tips for some instant information about what the field does.

If you run the studio in connected mode against Unreal, make sure that you have turned on “Allow Background Audio” in the Editor Preferences in Unreal, otherwise you won’t hear sounds previewed from the studio when Unreal isn’t the active window..

With the Harmony plugin installed Press Ctrl+Alt+E or go to the Windows menu and select “Project Harmony” to get some information about the number of patches and which patches are active at the moment.

3.1. Plugin settings

Access the plugin setting from the ‘Edit’ menu and under ‘Project Settings’ and then scroll down in the left panel to the ‘Plugins’ section and click ‘Project Harmony’.

  • Harmony Project - Click three dots next to the field to browse to the folder where your harmony project is located.
  • Harmony Audio Rendering
  • Num Channels - Select the number of channels you want to use (1=mono, 2=Stereo, 4=QUAD, 6=5.1 )
  • Sample Rate - Make sure to use the same sample rate as the files you use in the studio. At the moment when running the studio Standalone mode it will always play in 48000 Hz so you can use another sample rate here but note that the playback will not be correct when running the studio in Standalone..
  • Frames Per Buffer - Default value is 1024, but feel free to experiment with this if you need larger buffers.
  • Editor Settings
  • Enable Editor World Playback - Enable if you want to hear the sounds in your scene in the Unreal editor, even when not playing. If you make structural changes in the patches in the Studio the editor playback can stop, but then disable and enable again for it to come back.
  • Harmony Studio Connection
  • Toggle if you would like to start the remoting server automatically when you load the Unreal project.
  • Start/Stop Remoting Server - If you start the remoting server you can now start your studio and select “Start remote session” to open the same Harmony session that Unreal is already running. You can also stop the remote session and the studio will then unload the project since it is no longer connected to the Unreal session.
  • Zone visualization and Zone Editing - Here you can fine tune and adjust how you want the zones to be visually represented in the editor view. You can also choose if you want the Bleed Range and Occlusion Filter Range to be drawn to the screen as well.

3.2. Elias Components and actors

3.2.1. Elias Sound

image14

  • Search for Elias in the placement mode panel to find and add an Elias Sound Actor
  • In the details tab you can select the patch and whether you want it to automatically start to play with the level.
  • Set attenuation:
  • Falloff Start Distance: At what distance the patch should start to drop off in volume (Visually represented by the inner yellow sphere)
  • Falloff End Distance: How far the sound of the patch will reach. if you pass this point you will no longer be able to hear it. (Visually represented by the outer orange sphere)
  • Falloff End Amplitude: Is a value between 0 and 1 where 0 is no gain and 1 is 100% gain. This is if you want the sound to extend endlessly beyond the Falloff End Distance. E.g. If you set it to 1 there will be no drop off at all, if you set it to 0.5 it will be half the gain from the Falloff End Distance location and forever beyond and if you set it to 0 the patch will fade to no gain at all at the point where you reach the Falloff End Distance.
  • Zone behaviour will decide the behaviour of the patch if it’s placed inside a zone.
  • Default will have it follow the settings you set on the zone.
  • Ignore zones will have the patch behave like it’s not placed in a zone at all and live it’s life on its own.
  • No Bleed will force the patch to not bleed out of the zone even if the zone has bleed settings set on it.
  • Amplitude - If you want to increase or decrease the amplitude of the patch. 0 is no sound at all, 1 is unchanged, 2 is double the amount, etc.
  • Pitch - If you want to change the pitch of the patch. 0.5 is half pitch, 1 is unchanged, 2 is double pitch, etc.
  • Spatialization is how you want the panning of a multi channel sound to behave depending on distance and angle to the patch.
  • Source shape - Lets you change the shape of the patch from a sphere to cone to direct your sound in a particular direction. Like the attenuation you set the start and end positions where the drop off in volume should start and be silent by adjusting the Inner Cone Size (Start) and Outer Cone Size (End). You can also set the Outer Cone Amplitude to still have sounds playing outside the cone and contain in the sphere shape. E.g. if you set this to 1 it will behave just as a sphere sound, if you set it to 0.5 you would hear 50% of the amplitude outside the cone but still within that sphere shape, if you set it to 0 you will hear no sounds at all outside the cone shape.
  • Listener Cone - Here you can imagine that the cone is attached to the listener (most often the pawn character) and will react if an Elias Sound Actor is inside this Listener Cone. This is not visually represented in any way. Eg. If you have a sphere that is below 180 degrees and you turn your back to the sound you will no longer hear it since the sound is then outside of the listener cone.
  • Reverb - This will set how you want the patch to react to the reverb. Depending on the distance it will crossfade the Dry/Wet signals between the Reverb minimum and maximum values.
  • Distance Min - At what distance should you hear the patch playing through the Reverb with the Dry/Wet value set below in “Reverb Min”. The value is Unreal units.
  • Distance Max - At what distance should you hear the patch playing through the Reverb with the Dry/Wet value set below in “Reverb Max”. The value is Unreal units.
  • Reverb Min - The minimum Dry/Wet value of the reverb. (Value between 0 and 1)
  • Reverb Max - The maximum Dry/Wet value of the reverb. (Value between 0 and 1)

3.2.2. Elias Zone

Zones are used to draw up physical rooms in your scene to match the rooms in the game where you can set reverb and occlusion behaviour and how sounds should bleed in and out of the zone.

image11

  • Search for Elias in the Modes panel to easily find the Elias Ambient Zone.
  • Drag it to the scene to add it.
  • Select one of the vertx corners on the floor of the zone, and you can drag them to change the shape of the zone.
  • Hold the “Alt” key while dragging to add a new polygon to the zone. You can add as many as you like and create the shapes you need.
  • Notice that if a zone turns red it is because two walls have crossed and the shape has become invalid. You will need to correct that for the zone to work and become orange and valid again.

image3




  • Find all the settings for the zone in the details panel with the actor selected.
  • To the zone there is automatically a sound component there if you need to have a sound directly attached to the zone.
  • If you want an ambient sound to “fill” the whole zone without attenuation within it, set the “Falloff End Amplitude” to 1.
  • In the Sound Component section you will find the same settings as for the separate Elias Sound Actor mentioned above.
  • Zone
  • Enable Vertical Blending. You can toggle this on and off if you want it to take height into consideration and if you need to stack zones ontop of eachother.
  • Sound Bleed
  • Bleed Out Attenuation - Turn it on if you want sounds inside the zones to bleed out of it.
  • End Distance - How many units outside the zone should sounds inside the zone reach out. This means that even if you have a patch that reaches out longer than this or has a value set to the “Falloff End Amplitude” it will still fade out the sound after this End distance.
  • End Amplitude - If you want sounds to bleed out in infinity you can add here at what amplitude it should keep playing in. Leave at 0 if you don’t want this.
  • Bleed in Attenuation - Turn it on if you want sounds outside the zones to bleed into it.
  • End Distance - How many units from the wall and inwards the sounds outside the zone should reach.
  • End Amplitude - If you want sounds outside the zones to reach all the way into the zone and at what amplitude they should play at.
  • Occlusion Filter - Enable it to turn on the built in low pass filter to create occlusion effect on sounds within or outside the zone.
  • End distance - Decided at how many Unreal units from the zone border the occlusion should fade from no filter to End frequency value.
  • End Frequency - Set what the lo pass end frequency value should be. E.g. 300 is very muffled while 20000 is not muffled at all.
  • Occlusion is affecting both sounds outside and inside the zone. If a sound is inside the zone and you make sure that the sounds inside should bleed out, then the low pass filter will affect the sound inside the zone when you are outside of the zone and have passed the end distance. Occlusion will also have an effect on sounds outside the zone, so E.g. you have a rain storm outside a cabin and when you enter the building you want the sound outside the zone to be occluded, then make sure you have Bleed in attenuation on and that those sounds bleed into the zone add some value to end distance so the lo pass filter has some time to fade between and don’t kick in to sudden, and then set the End Frequency to a suitable value.
  • End Dry/Wet - Will decide how much of Dry and Wet should be mixed at the point of End Frequency and beyond. 0 is only Dry (will not be occluded at all), 0,5 is 50/50 mix while 1 is only the Wet sound.
  • Occlusion Distance Curve - At default the fade between Dry to Wet is linear as you move from the Zone wall to the End distance, but you could instead use a curve to make the jump slower or faster in the beginning of the transition.
  • Reverb - Add a reverb to the zone
  • Reverb Asset - Select a Reverb Asset that has been created in the Harmony Studio.
  • Dry/Wet - Set the Dry/Wet mix between the amount of dry and wet sound.



3.2.3. Elias Listener

To hear any sounds you will need to have a listener placed in the scene. The listener should be attached to the pawn/player and basically be where the camera is for a natural listener experience.

Find your player blueprint and add an Elias Listener component to the player. E.g. if you use the first person template from Unreal you can locate the “First Person Blueprint” and add an “Elias listener” as a component to the blueprint. You can then adjust the exact position of the listener in the viewport. No additional settings changes to the listener should be needed.

image7

3.3. Blueprints

With the Harmony Plugin installed you can now add several costum nodes into the Unreal blueprint

  • Spawn Elias Sounds - To spawn a sound in a blueprint use the Spawn Elias Sound node where you set the patch to play. For spawning sounds there is a virtualization function that will automatically remove the instance as soon as it goes quiet. SO if you want to spawn a sound that you know have parts of silence you will need to turn virtualization off.
  • Create Elias Listener - Spawn an Elias Listener in the blueprint and set it’s spawn location.

3.3.1. Patch Parameters

If you have a reference to an Elias Sound you can access these following nodes to access the Patch parameters:

  • Send Component Event - You will get a list of pulses from this patch so you can send a specific pulse at a specific moment,
  • Set Component Parameter (bool) - To set a Bool Patch Parameter.
  • Set Component Parameter (enum) - To set an Enum Patch Parameter.
  • Set Component Parameter (float) - To set a Double Patch Parameter.
  • Set Component Parameter (int) - To set an Int Patch Parameter.

3.3.2. Global Parameter

You will have access to all the global parameters from the loaded Harmony project, all in their own Blueprint node.

E.g. If you have created a Global Double in the studio called “Health” you are then able to add the node “Set ‘Health’(Elias Global)”. Once created you can change the variable if you want it to reference another Global Parameter of the same type in this node instead.




4. Unity

The Project Harmony studio for Unity is in an earlier stage than the Unreal Plugin and is an experimental API integration. So there are no ready to use tools in place at the moment . But the API can be accessed and users are free to build their own tools and experiment.

We will make more frequent updates to the Unity plugin so therefore it is not included in the installation of the Harmony Studio, so please go to www.eliassoftware.com to download it separately. This downlaod also includes more specific documentation about the Unity plugin so please make sure to check that out.




5. Hello World Studio

5.1. Harmony Studio

This could be a good starting point if you want to become more familiar with Project Harmony.

Before you start following these steps, open the included demo project “TheTheater_HarmonyProject.harmony” located in “The Theater” demo folder so you can access the audio files shown below. Make sure that you are also in Connected mode and have it turned on in Unreal and that you start a remote session at the Studio start screen.

Create a patch called MyNewPatch, open it by double clicking on it. (Only standard english letters are allowed in patch names):

image4

Add a patch parameter of type “Double” called MyPatchParam:

image20

Set MyPatchParam default value to 1:

image15

Add a global parameter of type “Double” called MyGlobParam:

image34




Set MyGlobParam default value to 1:

image19

Expose “Sounds” list and Pitch on the sound player. In the animation below you can see the Sound list exposed as an empty container, the dark grey field, since it has no sound assets added yet: image52

Locate the ingested sound from the browser and add sounds to sound list:

image29

Set sound to looping:

image44




Add a Gain DSP effect. Remove the connection by selecting the yellow line and hit Delete key:

image32

Connect MyPatchParam to Amplitude in Sound Player and MyGlobParam to Gain on the Gain node.

image13

Open up DefaultMixer and add MyGroupChannel:

image37

Select MyGroupChannel in the output node:

image48




Create New Patch configuration:

image41

Change sounds in configuration:

image9




5.2. Let’s move over to Unreal

Add an Elias Listener to the player Blueprint (Notice that a listener is already there at default in this scene, so you can remove it again afterwards, but just so you understand how to add a listener so you can hear the sounds play if you start a new project)

image24

Add an Elias Sound Actor to the world:

image25

Select the parent patch MyNewPatch:

image36

Open World Blueprint and add references to Patch by dragging it from the World outline and into the Blueprint graph:

image35

Add Send patch parameter, MyPatchParam and leave it at 0 (should be quiet)

image49

Pulse Start (Press key to send pulse)

image26




Send Global parameter and Set MyGlobParam - 1 (Should start hear it)

image43

Add Start Pulse

image42

If you now Start the level and press the “E” Key, you will still hear nothing since my MyPatchParam sets the gain to o. So let’s change it to 1 and try to play the scene and you should hear the “radio squetch”. (Try to change the values on both your global Parameter and patch parameter and play and list to the volume changes):

image12

Add another sound actor to world and select the Patch configuration we created and check the auto play component so it will start playing as we start playing the level:

image27




For the next step to work, make sure that the “Allow Background Audio” is turned on in the Editor Preferences inside Unreal.

image10

Play game and listen but don’t stop playing it yet:

image39




Tab over to the studio and open up your configuration and change the exposed field Pitch and hear the change in real-time:

image45




6. Change log

6.1. Version 0.1.0-beta

  • Fixed crash when using the variable “Elias Global Variable” in Unreal.
  • Project Harmony Unreal Plugin can now run alongside the Elias Plugin for Unreal Engine 4 version 3.3 or later.
  • The add node context menu when creating nodes is now searchable.
  • Many smaller stability and performance updates.
  • Smaller visual updates and new start screen.
  • Updated Unreal plugin to Unreal Version 4.26.
  • Added experimental and early version of the Project Harmony plugin for Unity where the Project Harmony API has been ported and accessible..

6.2. Closed beta version for insiders group

  • Compressor should now work as expected.
  • Default Values for Threshold and Makeup Gain are.
  • Compressor Threshold value can now be set to 0.01
  • Adjusting volume on group bus should no longer stop playback when running studio in remote from the host.
  • Updated Unreal plugin to Unreal Version 4.25.

Elias Software - Project Harmony Quickstart Guide | Studio & Plugin versions 0.1.0-beta