Blog homepage

The Interactive Music Systems of Divinuet: Part 2

Game Audio / Sound Design

Hi, it’s me again! I’m here to tell you more about the interactive music in my upcoming tarot music generating game, Divinuet. If you haven’t read part 1 yet, I’d recommend reading that first to get an idea of how the game works, and then coming back to this post. 

As I mentioned in part 1, the game has 2 main phases. Part 1 covered the reading phase, where you learn the definitions of the 3 cards you draw and hear each card’s individual theme. In this article, I’ll be covering the generative phase, which is where your specific combination and order of cards will create a unique musical and visual experience.

The Music

Your tarot reading will consist of 3 cards, the combination and order of which will determine the 4 layers that make up the music for the generative phase of Divinuet. For the sake of simplicity, I’ll be referring to these layers as bass (lowest), tenor (medium-low), alto (medium-high), and soprano (highest).

The bass layer is determined by which suit is most prevalent in the reading. There are 5 tarot suits: major arcana, swords, wands, cups, and pentacles. When you account for the possibility that each of the 3 cards could be a different suit, we end up with 6 different possible bass layers. Each suit has its own vibe, so I tried to reflect that in the bass. I’ve posted a few snippets below: Pentacles (earthy, simple), Swords (intelligence, action), and no majority (which I tried to keep as neutral as I could).

For the other layers, I separated the 78 cards into 26 different groups of 3 cards based on their meanings. Each group then has a tenor, alto, and soprano part. For example, I made the first card in your reading determines the tenor layer, then second determines the alto, and the third determines the soprano. Here is the very, very professional spreadsheet I’m using to keep track of the different groups.


Let’s take group 2, for example. These are all cards about feeling anguish of some kind. So I decided to go with dramatic, mournful strings for this group. The tenor part is a cello, alto is a viola, and soprano is violin. Here’s the three layers together (without a bass layer), although keep in mind that the only way you’d hear these layers together in game is if you happened to have a reading with all 3 cards from this group! It’s much more likely that you’d hear one of these layers combined with layers from other groups.

And now for another example, here’s the 3 layers of group 5, which is about resting and waiting.

If you’re a musician, you might be thinking something like, “but wait, Megan! Those are in different keys! How the heck are you going to combine them?!”  Well, I’m glad you asked!

The Rules

Since there are multiple layers that need to be able to fit together in more combinations than I’d ever be able to listen to, I made strict rules for myself about how to compose each one. The first and probably most obvious rule is that every layer has to be the same tempo and time signature. I chose 80bpm and 4/4.

So that solves the problem of things being in time, but what about the notes/chords? Since the cards cover such a vast multitude of emotions and meanings, I didn’t want to just choose one chord progression for them all to follow. 

The solution I landed on was dividing the piece into 4 measure phrases. The bass layer can only play one specific note during each phrase (it can be any rhythm, though). Whatever layer is taking the melody can play whatever notes I want as long as they don’t clash with the bass (unless I’m purposely going for dissonance, which is the case with a few of the groups). If the other layers are playing accompaniment, they’re only allowed to play the same note as the bass, but in their respective octaves. The result is that we never end up with clashing notes.

The rhythms of the accompaniments vary a lot. Some are doing very rhythmic things, some are small decorative flourishes, and others are drones. It depends on the vibe of whatever card group they’re in. 

Anyways, here’s another spreadsheet showing what layers are allowed to play what notes!




You may also have noticed that I split phrases 5 and 9, and allow the layers to play both F and C during 5b and 9b. That’s because I wanted to end on just an open 5th chord so the piece isn’t leaning too heavily into any one mood.

I also noticed it was sometimes pretty jarring when a new layer would come in for the first time right on a downbeat, so I’ve often been adding pickup notes right before a new layer comes in. Of course, it still has to follow the rules. So for example, if I want the soprano to have a pickup to the melody in phrase 4, it’d technically happen during phrase 3, so the pickup note has to be a Bb.

This will all make much more sense when you get to listen to this happening, so let’s do that now! Here’s a demo of what the music would sound like if you got the following reading (with card art by Sarah Seekins):


Card 1 is the 4 of Swords, card 2 is the 5 of Cups, and card 3 is Queen of Swords. So we have the swords bass, group 5 (restful) tenor, group 2 (mournful) alto, and group 25 (ambitious) soprano.  

Now let’s switch things around a bit!


For this one, I’ve kept card 1 the same. Card 2 is now the Ace of Pentacles, which is from group 26, the earthy/practical group. And I’ve moved the 5 of Cups to card 3 this time. So you’ll hear the bass for when there’s no suit majority, the same tenor layer as last time, the alto layer from a completely new group, and a mournful violin in the soprano layer instead of a mournful viola in the alto layer.

Hopefully that’s a good demonstration of how the music for readings that seem very similar can actually end up pretty different! And that’s just 2 examples-- the actual game will end up having thousands of possible combinations.

The Implementation

The implementation for this part is actually a lot more straightforward than the reading section. I just made a music segment containing four tracks that play at the same time, one track for each layer.


The layers are then set up with switch subtracks that are tied to states, which will be set by the game once it knows what your cards are. I only have the bass set up so far, but here’s what that looks like.


I actually set this up on a Twitch stream I did with Damian from Audiokinetic - you can watch it here if you’re interested!

This is the point where I would show what everything would look like in the context of the game, except I don’t have any of the artwork that’ll come up during the generative part yet, and also I don’t have the tenor, alto, or soprano layers programmed in. So you’d just be looking at a blank screen listening to a lone bass part, which would maybe not be the most exciting thing to watch. But once it’s done, each reading will look and sound very unique. 

If you’re interested in following the progress of Divinuet, you can follow @divinuetgame on Twitter. I also do Twitch streams where I work on Divinuet’s music and programming. And if you’re interested in pre-ordering the game and maybe getting some extra perks as well, you can do so here.

Thanks for reading!


Megan Carnes

Composer & Game Developer

Megan Carnes

Composer & Game Developer

Megan Carnes is a Los Angeles based composer and game developer. She has a special interest in interactive and generative music and is the creator of the music based games "inter-view" and "Divinuet." She will also be scoring the upcoming indie 2D platformer "A Crooked Heart." She is a co-organizer of Game Audio LA.



Leave a Reply

Your email address will not be published.

More articles

Connecting Wwise and REAPER: Part 1 - WAAPI Transfer

WAAPI Transfer is not new, but I feel like there is not enough talk about it. It is an open source...

19.2.2019 - By Nikola Lukić


The music of FINAL FANTASY VII is beloved by many and has been revisited over the years for new...

23.10.2020 - By SQUARE ENIX

Music for Games Should be More than Just Music: Part 2

What is video game music? What is interactive music? The answers to these questions are not as...

20.11.2020 - By Olivier Derivière

SpectralMultiEffect by zerocrossing

SpectralMultiEffect is a plug-in for Wwise. It was created with the intent of enhancing...

4.6.2021 - By Javier Arciniegas

Wwise Licensing and Pricing Philosophy

-Just how does all this stuff work??-It’s been whispered, in the dark recesses of studios around the...

13.4.2023 - By Mike Drummelsmith

Accelerate Your Strata Workflows | Part 2 - “Open Associated REAPER Project”

As a sound designer using REAPER and Wwise, you often come across instances where you want to...

24.7.2023 - By Audiokinetic

More articles

Connecting Wwise and REAPER: Part 1 - WAAPI Transfer

WAAPI Transfer is not new, but I feel like there is not enough talk about it. It is an open source...


The music of FINAL FANTASY VII is beloved by many and has been revisited over the years for new...

Music for Games Should be More than Just Music: Part 2

What is video game music? What is interactive music? The answers to these questions are not as...