Semi-Procedural Music for your Game

  • 15 favourites


2,431 visits, 3,265 views



This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

When I talk about Semi-Procedural Music, I mean arrangements that are composed by a person, manually, not by a computer, but played randomly. For instance: You could have a set of variations with layers of instruments and program Construct 2 to play variations randomly. You achieve a refreshing, nice to listen result.

The purpose of this Tutorial is to show you that it's possible to achieve this in Construct 2, let me show you:

Things you need for this tutorial:

- A computer. :)

- Construct 2 :)

- A DAW (Music Composition Software)

- Attitude!


Now that you have all what you need, let's begin:

First off, create a base for your song, a track that has the main melody you want for your song. Then create variations of this melody. After this you will put another instrument and on each of the variations create a harmony based on the base, which means use a compatible chord for the arrangements so everything sounds nice.

Secondly, export your variations in different files. For instance let's say we have 3 variations. Base1, Base2, Base3 and Lead1, Lead2, Lead3.

Open Construct 2 and start a new empty project. Import your sounds and load the audio plugin.

Now do the following, go to your eventsheet and...:

-Set a condition so at the beginning of the frame the playsound action is executed, use "Choose("Base1", "Base2", "Base3")" and add another playsound action: "Choose("Lead1", "Lead2", "Lead3")".

-Set another condition in a different event saying that when your base sound has ended construct 2 must play any of the variations from the Bases and from the Leads. Here: playsound action is executed, use "Choose("Base1", "Base2", "Base3")" and add another playsound action: "Choose("Lead1", "Lead2", "Lead3")" again.

That's basically it.

Now you'll be wondering, why play everything when 1 VARIATION ends, and not set an event for each of the 2 variations? Well that's because sometimes there's a bug that makes construct 2 play sounds arhytmically and out of "phase". So you make sure everything plays in sync when you "lock" all to 1 variation root.

If you have any questions feel free to send me a PM or an e-mail to

Thank you and I hope you've enjoyed this Tutorial.


  • Order by
Want to leave a comment? Login or Register an account!