Step Sixteen | Making a Step Sequencer App With Unity & Wwise

게임 오디오

Introduction

Hi there, I’m Matt, a sound designer at Rogue Waves. We typically work on sound effects libraries for game audio and post production. Recently, however, we branched out and released Step Sixteen, a step sequencer app made with Unity and Wwise. 

Over the years, I’ve made many step sequencer prototypes. Some of these were hardware sequencers made with Arduino, while others were made in Pulp, Processing and Unity. Step Sixteen is the culmination of those prototypes and combines all the things I learned along the way. It was also a great opportunity to improve my C#, Unity and Wwise skills.

Step Sixteen

Step Sixteen is a 16-step sequencer music-making app inspired by classic hardware drum machines like the TR-909 and the Machinedrum. 

In Step Sixteen, the user can create their own beats like with a drum machine, but we added synths that run alongside it to play bass lines, arpeggios, chords or melodies. Having everything in one app makes it very easy to get something going quickly, without having to go too deep into learning to use a full DAW. Users can shape individual drum and synth sounds using the channel sliders or use several global performance-based controls to shape the whole mix.

Step Sixteen_img1

Wwise

In order to achieve all the features we wanted to include in Step Sixteen, we required a versatile audio engine and Wwise was the perfect choice. 

Wwise provided us with a great audio backbone for making an instrument-based app. The ability to add RTPCs, Modulator Envelopes, Switch Containers and built-in effects were all integral to making the sequencer we wanted. 

Switch_Containers

Clock

Early on in the project, one of the main issues that needed to be solved was achieving a solid clock to drive the sequencer. I tried using various methods of timing in Unity but these proved unstable; Ultimately, I came to the conclusion that it would work better to use Wwise for timing using an Interactive Music system.

In Wwise, I created a Music Playlist Container (with grid divisions set to 16ths and tempo at 100 BPM) which also contained an empty dummy Music Segment. The Music Playlist Container allowed us to infinitely loop the dummy Music Segment.

With Music Playlist Containers in Wwise, you unfortunately can’t add an RTPC to the BPM value. However, you can work around this by controlling Playback Speed with an RTPC. To start, we set the actual BPM of the Music Playlist Container to 100. The range of Playback Speed in Wwise is between 0.25 and 4, so a playback speed of 0.5 would be equivalent to 50 BPM.

In Unity, we were able to create a bpmPercentageTime variable which equaled the app’s BPM slider’s value divided by 100. So, for example, a BPM of 120 displayed in-app would then set Playback Speed in Wwise to 1.2.

bpmPercentageTime = bpmSlider.value / 100.0f;
AkSoundEngine.SetRTPCValue("Playback_BPM", bpmPercentageTime);

Infinite_Loop

Callbacks

Because we were making a 16-step sequencer, we needed to create a callback that would occur every 16th note. To solve this, we used the MusicSyncGrid callback type and our Music Playlist Container had its grid frequency set to 16. Now we could tell Unity to do something every 16th interval of our Music Playlist Container.

In our callback function in Unity, we created a counter which would reset after each bar. This allowed us to keep track of each step of the sequence and when sounds should play.

Initially, we tried posting our sounds immediately in our callback function; However, timing issues would arise, so we instead chose to trigger stingers set to Next Grid. This meant our sounds were scheduled in advance and would playback correctly.

Trigger_Stingers

RTPCs

Step Sixteen needed to give the user a lot of control over the various sliders for shaping sounds, so I ended up having to create a lot of RTPCs. The 16 channels alone required 19 RTPCs each, which was 304 RTPCs total.

On top of that, we had additional RTPCs for delay time, the global sliders, playback BPM and tape stop.

Synth_RTPCs

Effects

The built-in effects in Wwise offered a lot of versatility in shaping individual sounds and the whole mix. We made use of delays, reverb, flanger, distortion, parametric EQs and pitch shifters.

I’ve always really enjoyed the tape stop effect button on Teenage Engineering's OP-1, so I wanted to create a similar effect button for Step Sixteen. I was able to achieve this by using the Wwise Pitch Shifter plug-in on the Master Audio Bus. This was achieved by ramping down the Pitch Shift value via an RTPC and a timer in Unity.

The second effect button in Step Sixteen is the LFO button. With this, I wanted to create a sort of random drunken pitch. This was achieved by using a random LFO assigned to pitch and a random LFO modulating the frequency / rate of the first LFO.

Parametric EQs

In order to achieve more musical filtering, we made use of parametric EQs. By using two bands (one band set to low-pass/high-pass and the other band set to peaking) we could change the values in tandem and were able to create low- and high-pass filters with resonant boosts at the cutoff point. This is something you’ll often hear in electronic music and provides a better solution than the built-in low -and high-pass filters for shaping sounds. We used this method on the low- and high-pass filters for the drums for shaping sounds and on the global low- and high-pass filters for performing filter sweeps.

Delay Time Workaround

One limitation with Wwise is the delay plug-in not being able to assign an RTPC to delay time. There are ways around this by modifying the plug-ins xml file, but this leads to pops and clicks when changing delay time, so that method was out. If we had more time to spend, it is possible to create your own fractional delay plug-in that doesn’t produce artifacts when changing delay time, but this was outside the scope for this project. 

We opted instead to let the user choose between delay times by fading between 4 separate delays with different fixed delay times. This wasn’t the ideal solution, but it did enable us to have a degree of variable delay time in Step Sixteen without pops and clicks.

Conclusion

Step Sixteen was a challenge but a lot of fun to work on. Wwise allowed us to achieve the solid clock we needed through callbacks, stingers and the interactive music system. The built-in effects, RTPCs and modulation envelopes made it possible to give the user full control over shaping sounds. We love making music with it and are excited to hear what you’ll make with Step Sixteen.

Step Sixteen is now available on Steam: https://store.steampowered.com/app/2407480/Step_Sixteen/ 

Matt Sweeney

Creative Director & Sound Designer

Rogue Waves

Matt Sweeney

Creative Director & Sound Designer

Rogue Waves

Matt Sweeney is Creative Director and Sound Designer at Rogue Waves and is based in Dublin, Ireland. In his career he has worked in various roles across TV, Film, Animation and Game audio.

Since 2021 he has created SFX libraries and software at Rogue Waves providing powerful, useful, high quality content for post production houses, game development studios and freelance sound designers and editors.

Instagram

Website

 @RogueWavesSFX

댓글

댓글 달기

이메일 주소는 공개되지 않습니다.

다른 글

머더러스 퍼수츠(Murderous Pursuits)의 대사와 대화 설계 - 제 1부

안녕하세요 여러분. 저는 Blazing Griffin(블레이징 그리핀)의 게임 팀의 오디오 디자이너인 제이미 크로스(Jaime Cross)입니다. 저희는 몇 달 전에 머더러스...

5.5.2020 - 작성자: 제이미 크로스(JAIME CROSS)

Wwise 미디 기본 지식: 뉴 슈퍼 럭키스 테일(New Super Lucky Tale)의 폭스베리 타이머 음악적 미디 마법!

안녕하세요 멋진 Wwise 사용자분들 :) 게임 오디오 업계에서 살아남기 위한 필수적인 스킬은 바로 문제를 해결하는 능력입니다. 사용하는 도구의 크고 작은 모든 면을 아는 것은...

8.2.2021 - 작성자: 애론 브라운(AARON BROWN)

텔 미 와이(Tell Me Why) | 오디오 다이어리 제 1부: 환경음과 보이스오버

'텔 미 와이(Tell Me Why)'는 DONTNOD(돈노드)가 개발하고 Xbox Games Studios(엑스박스 게임 스튜디오)가 출판한 싱글 플레이어 서사적 어드벤처...

4.5.2022 - 작성자: 루이 마르탱 (Louis Martin)

'Suspects: Mystery Mansion'의 GME 음성 채팅 시스템

소개 이 블로그 글은 Wildlife Studios의 'Suspects: Mystery Mansion' 게임의 음성 채팅 시스템에 관한 것입니다. 안녕하세요. 저희는 Leo...

24.8.2022 - 작성자: 펠리페 로페스 (Felippe Lopes)

인디 개발자를 위한 무료 Wwise - 사운드 제한이 없는 전체 플랫폼 사용 권한. 이 라이선스를 내놓은 이유와 사용 방법.

안녕하세요!지난 4월 공유된 영상에 대해 더 자세한 정보를 전해드리기 위해 온 라이선스 담당자입니다. 예상치 못했던 깜짝 소식이었지만, 2022년 4월 1일에 저희는 에셋 제한이...

12.12.2022 - 작성자: 마이크 드러멜스미스 (Mike Drummelsmith)

Wwise 라이선스 및 가격 책정에 대해

"도대체 어떤 방식으로 책정되는거죠??"전 세계 스튜디오의 어두운 구석 어딘가에서 Wwise의 가격 모델이 조금... 복잡하다는 속삭임들이 있어 왔습니다. 완전히 틀린 말은 아닐...

13.4.2023 - 작성자: 마이크 드러멜스미스 (Mike Drummelsmith)

다른 글

머더러스 퍼수츠(Murderous Pursuits)의 대사와 대화 설계 - 제 1부

안녕하세요 여러분. 저는 Blazing Griffin(블레이징 그리핀)의 게임 팀의 오디오 디자이너인 제이미 크로스(Jaime Cross)입니다. 저희는 몇 달 전에 머더러스...

Wwise 미디 기본 지식: 뉴 슈퍼 럭키스 테일(New Super Lucky Tale)의 폭스베리 타이머 음악적 미디 마법!

안녕하세요 멋진 Wwise 사용자분들 :) 게임 오디오 업계에서 살아남기 위한 필수적인 스킬은 바로 문제를 해결하는 능력입니다. 사용하는 도구의 크고 작은 모든 면을 아는 것은...

텔 미 와이(Tell Me Why) | 오디오 다이어리 제 1부: 환경음과 보이스오버

'텔 미 와이(Tell Me Why)'는 DONTNOD(돈노드)가 개발하고 Xbox Games Studios(엑스박스 게임 스튜디오)가 출판한 싱글 플레이어 서사적 어드벤처...