Quickly create local folders matching the content of a Wwise Switch Group
30 May 2023 | 8:38 am

While working on a test project based on a video series by Cujo Sounds called ‘Setting up a AAA Wwise project’, I envisioned a method to speed up the process.

Provided that a certain knowledge of Wwise is required, these didactic videos by Bjørn Jacobsen are brilliant and I highly recommend them. The entire brief course is built around the idea of “making a game in a fictional Wwise environment to eventually have a project that will fully work without a game”. The chapter I’m focusing on is called Part 5: Complex footstep switching with simple RTPCs.

The Wwise project

In a quest to teach how to think ahead, he creates a project that will allow the player to have proper footsteps sounds based on different surface materials, in different wetness conditions.

The Switch Group called GroundMaterialSwitch, under Game Syncs, contains 23 switches. They’re interconnected with another switch related to the wetness of the ground itself, GroundWetnessSwitch, and driven by an RTPC called RTPC_GroundWetness, under Game Parameters.

The Switch Container in Project Explorer, called PLYR_Footsteps_MaterialSwitch, reflects the same structure, so it contains 23 Switch Containers following the naming convention {material}_WetnessSwitch. Therefore, for the material switch Dirt inside my Switch Group, I’ll have a Switch Container named Dirt_WetnessSwitch, and so on.

My Wwise project, showing the switch container (left), and the switch group (right)
My Wwise project, showing the switch container (left), and the switch group (right)

Adding sounds

Bjørn gives an insight on how to manage audio assets in the filesystem: it’s a good idea to have a root folder called Originals containing subfolders based on a structure consistent with the Wwise project:

📂 Originals
└─ 📂 SFX
   ├─ 📂 Locomotion
   ├──── 📂 Dirt
   ├──── 📂 Forest
   ├──── 📂 [etc]
   └─ 📂 TestFiles

I suppose this shouldn’t be new to anyone who has worked with Audiokinetic’s middleware tool, especially if they’ve integrated REAPER with Wwise.

The issue

What I want to improve is the process of creating local folders that mirror the same structure of the Wwise project. In my current example with 23 Switch Containers, each one needs a local folder where to put sound assets that will be imported in Wwise. Instead of manually copy the switch names and use them to create 23 new folders in my filesystem, I devised a more efficient method.

Note — The following solution is based on macOS (10.14), using GNU bash version 5.2.15. I’m not sure whether it’s possible to replicate the same steps on Windows, maybe using WLS.

  • In Finder, go to the folder Switches under the Wwise project directory.
  • With a code editor, open the Work Unit where the Switch Group is, in my case: Default Work Unit.wwu.
  • Find the Switch Group, in my case: <SwitchGroup Name="GroundMaterialSwitch" ID="{CE340E43-285B-4633-92EB-BA5E6B004F9D}">.
  • The content of the <ChildrenList> item is copy-pasted in a new empty file called switches saved on the Desktop.
  • After pruning tabs and spaces at the beginning of each line, this is the resulting content:
    <Switch Name="Dirt" ID="{3840C5F2-2A61-446D-A0B3-DD17F244B85D}"/>
    <Switch Name="Gravel" ID="{53E3F231-E68C-4289-A68D-1A67EB3051F8}"/>
    <Switch Name="Sand" ID="{1338FA64-99D1-4A81-9AE8-3C07D6F99F02}"/>
    <Switch Name="Forest" ID="{BF071261-27D6-4AE4-9746-3EA172654089}"/>
    <Switch Name="Grass" ID="{C22E57E2-99C6-407A-871A-0785DF5D63B0}"/>
    <Switch Name="Flowers" ID="{BB16ECA2-6508-4E8D-BB19-9D38C6F59226}"/>
    <Switch Name="ForestPine" ID="{57E00A82-4C39-411E-9407-E2EDFAA593CC}"/>
    <Switch Name="Ice" ID="{F54DD30B-78BB-4CCD-8847-62743F907974}"/>
    <Switch Name="Leaves" ID="{E6E0F142-22A6-4E1F-8C66-7DF5E06B455C}"/>
    <Switch Name="Marsh" ID="{C81CD7A9-9818-4A69-A1F0-7C5865907963}"/>
    <Switch Name="PuddleDirt" ID="{C0304BF8-4E9E-45D7-B23A-249CE4A7429E}"/>
    <Switch Name="PuddleGrass" ID="{018C0AB2-9433-461F-86E5-5AD41E403CDE}"/>
    <Switch Name="Rock" ID="{9780F7CA-E4C3-48E4-A756-3D790CDD039A}"/>
    <Switch Name="Snow" ID="{BA8C2AEC-2FAA-4610-A661-ADCCEC20A42E}"/>
    <Switch Name="Stone" ID="{A85AE1E2-FA8E-46C9-97DF-D4BA3C74A8D1}"/>
    <Switch Name="StoneFloor" ID="{3B3ABCDF-C621-4F43-A709-9E24C0C8DE78}"/>
    <Switch Name="Swamp" ID="{36EA176C-9DCC-4CF3-B03B-FAE077C6006C}"/>
    <Switch Name="Tiles" ID="{CED50554-A79C-4EEB-9F81-1AAE0B93EA08}"/>
    <Switch Name="Water" ID="{4CEB20B8-827F-4A69-A4B2-C552BEA825C5}"/>
    <Switch Name="WaterPuddle" ID="{928F79CB-5030-4A3B-97B1-BF78FFB536F4}"/>
    <Switch Name="Wood" ID="{4C74D828-835C-421B-9D54-794B6A38196B}"/>
    <Switch Name="WoodFloor" ID="{302E8991-2E81-4960-B744-9D5269BE0081}"/>
  • Proceed to extract the single switch names using the command awk in a Terminal session:
    $ awk -F '"' '{print $2}' ~/Desktop/switches > ~/Desktop/switches_names.txt

The resulting switches_names.txt content:

Text file containing my switch names

At this point, it is quick to create the folders based on the above list: open the root folder of the video game project in a Terminal window and type the following command, which will create a directory for each switch name:

$ xargs -tI % mkdir % < ~/Desktop/switches_names.txt


The Finder window that will contain the switches folders:

The Finder window that will contain my switches folders


The Finder window after it’s been populated by the xargs script:

The Finder window after it's been populated by the xargs script


The above process might look laborious, depending on the level of familiarity with a shell window, however:

  • there won’t be mistakes in the folder names, since it’s all being directly copied from Wwise’s XML source;
  • if the folders to be created are numerous, the manual process would be way slower and quite tedious;
  • it’s easy enough to create bash aliases so that the input is reduced to the bare minimum.

Of course, the same procedure can be adopted for similar tasks, including for the aforementioned REAPER integration.

Reply via email

Notes on the historical concept album
22 May 2023 | 10:03 pm

Matthew Graybosch reviewed my album ‘After 1989’. I’m honoured and flattered by such a genuine and magnificent analysis.

I strongly suggest to check his blog out, as it’s a goldmine of deep, authentic and interesting reflections. Matthew is yet another person that I’ve found through the decentralised web — which is how the internet was originally built.

When the algorithm is off, the lights come in.

The first track in particular reminds me of Pink Floyd’s The Wall, though in this album we are not asked to empathize with a self-isolating rock musician who uses drugs to cope with unresolved childhood trauma. Simone Silvestroni plays a mean bass, and unlike many albums his bass and piano don’t get buried in the mix.

Even if this wasn’t excellent music, I would still recommend it. As the horrors of the Second World War, the Holocaust, and the all-pervading existential terror of the Cold War fade from living memory, it falls to artists to keep that history alive for future generations lest it be repeated. Matthew Graybosch

Read the full review →

Reply via email

19 May 2023 | 10:32 pm

Andy Rourke has always been my favourite bass player. His untimely death today is a hard kick in the guts. Among many memories connected to his music, here’s an old one.

17 January 1991 was a Thursday, pretty close to my twentieth birthday. Young people in my hometown decided unanimously to give up the school day, and gather in the city square to loudly protest the beginning of Operation Desert Storm, better known then as the Gulf War.

Lots of slogans were making the rounds, we were understandably outraged and scared: in the prime of our lives, that day represented the fateful moment where a real war unfurled in front of our eyes. Live on TV, no less. Despite sharing the feelings with the crowd, part of me was sceptical about how effective a group of screaming teenagers from a small town in a western province could be.

Around noon, a couple of classmates and I decided to leave, heading for the close seaside town of Rimini. We drove quietly for half an hour, greeted by a bright sun and a gentle breeze. While walking to a near bar, I was attracted by a record store on the opposite side. Apparently, that was all it took back then to turn my distraught teenager worries around: a captivating melody in the air, the smell of vinyl and a dusty carpet.

My two friends waited patiently on a bench outsde, while I turned my attention to a specific section. Still mourning their relatively recent split, I knew I would flick through The Smiths’ repertoire, indulging while reading through the sleeve credits. Of course everything was already familiar — how could I expect to find anything new from a band that didn’t exist anymore? Morrissey’s Viva Hate didn’t really placate my craving for their music: sorry, Stephen Street. I barely knew about his recent collection Bona Drag.

I waved at Luca through the shop window, signalling that I was about to join them, when I caught the grey cover of a 45 RPM single by Morrissey. I immediately picked it up and had a thorough look. It was titled Yes, I’m Blind — typical Morrissey! I’d never heard of that, so I asked the clerk. After his unsatisfactory explanation, I’d decided to buy it on a whim. Because yes, with certain things, I’m blind.

Couldn’t wait to go back home and listen to the song. I still remember how I immediately loved that single. The chord sequence, the minimalistic arrangement, the clean and thoughtful performance that framed perfectly Morrissey’s lovely whining. Of course I was stunned when I read the full credits: written by Andy Rourke.

Requiescat in pace, Andy. Forever and ever my favourite bass player.

Reply via email

More News from this Feed See Full Web Site