아침에 Juice, 오디오 개발에 Juce!
아침에 Juice, 오디오 개발에 Juce! 🍊
오디오 어플리케이션 개발을 도와주는 Juce Framework
(2021-10-08)
안녕하세요, 가우디오랩 Application 팀의 Software Engineer, Alan 입니다.
저는 올해 초부터 So Hot! Spatial Audio 맛보기 한 스푼 🥄에서 소개드렸던 Spatial Audio 컨텐츠 제작 툴을 만드는 프로젝트에 참여하고 있습니다. 제가 속한 Application 팀은 이 프로젝트를 기점으로 가우디오랩의 핵심 기술들을 실 사용자에게 서비스할 수 있는 제품 개발에 초점을 맞추어 움직이고 있습니다.
사용자에게 소프트웨어가 전달되는 과정에는 다양한 기술들이 사용되게 마련인데요. 오늘은 그 중에서도 Audio에 특화된 기능들을 빠르게 구현할 수 있도록 도와주는 Juce Framework를 소개하고, 가우디오랩에서는 이 프로그램을 어떻게 활용하고 있는지 소개해 드리려고 합니다. Juce의 세부적인 이야기는 다른 이슈들과 함께 다음 기회에 빌어 다뤄보려고 해요.
Juce? 처음 들어보신다구요?
Juce는 Trakition이라는 DAW를 개발하면서 시작되었고, 2004년에 처음으로 공개되었습니다. 지금도 Juce Github에는 초기에 코드 빌드업을 하면서 고민한 흔적들을 찾아볼 수 있습니다. 후에 2014년 영화 라라랜드에도 등장한 바 있는 Seaboard를 출시한 Roli가 Juce를 자사로 인수하여 운영했었고, 지금은 Audio Software를 중심으로 라이센싱 서비스를 제공하고 있는 Pace가 인수하여 운영을 하고 있습니다. Juce의 시작을 리드하고 오랜 기간동안 운영했던 Julien Storer는 Roli에 남아 여전히 Juce에 공헌을 하고 있죠.
<Roli사의 seaboard 모습>
Audio 관련 기능의 집합체, Juce
Juce는 C++언어 기반의 Audio 관련 기능이 특화된 프레임 워크입니다. GUI, 네트워크, 자료구조 등의 기본적인 기능부터 오디오 플러그인 포맷, 오디오 파일 입출력에 이르기까지 Audio와 관련된 기능을 총 망라해서 제공하고 있다는 점이 큰 특징이죠. 크게 Open-Source와 Commercial 라이센스로 제공되고, 모든 라이브러리가 코드 기반으로 제공되기 때문에 개인이 첫 걸음을 떼기에도 어려움이 없습니다. 최근에는 Mobile 플랫폼도 지원되어 Mac, Windows 등 데스크톱 환경을 벗어나 모바일 플랫폼에서의 간단한 Application 제작도 가능해졌습니다.
그런데 왜 Juce는 C++ 언어 기반일까요?
많은 Audio Application의 기본 언어가 C/C++의 Native 언어로 제공되는 이유는 왜 일까요?
바로 퍼포먼스 이슈 때문입니다. 영상 등 시각 정보의 경우, 디스플레이의 Frame Rate가 낮아지면 부드러운 재생에 영향을 줄지언정 고객이 내용을 인지하는 과정에서 심각한 불편함을 주지는 않습니다. 하지만, 소리의 경우 뒤이어 재생되어야 하는 소리가 멈춘다면 어떨까요? 우리의 귀와 뇌는 본능적으로 이 공백을 듣고 인지하게 됩니다. Glitch 라고도 하는데요. 청자에게 노이즈 등으로 인지되기 때문에 심각한 불편함으로 이어지죠.
<청자에게 심각한 노이즈로 인식되는 Glitch issue>
요즘처럼 Managed 언어와 모던 프레임워크들로 서비스를 빠르게 개발할 수 있게 도와주는 세상에…이게 웬 맷돌 돌아가는 소리 일까요?
다행히도 C++도 C++11을 기점으로 언어 차원에서의 도약을 하고 있고 동시에 Juce도 이러한 언어의 도약을 병렬적으로 지원하고 있어 현재 C++17 컴파일러까지 사용 가능합니다. 뿐만아니라, Web이나 Mobile 세계의 매우 발전된 Front-End 프레임워크를 같이 사용할 수 있는 프로젝트들을 진행하는 Audio Application 개발자들의 고민을 커뮤니티에서 많이 접해볼 수 있기도 합니다.
다양한 Audio 플러그인을 손 쉽게
Juce는 다양한 Audio 플러그인을 손쉽게 만들 수 있도록 도와준다는 또 다른 장점이 있습니다. 특히 요즘은 거의 모든 미디어 작업이 컴퓨터를 기반으로 이루어지고 있는데요. 녹음, 믹싱, 마스터링 등 일련의 음원 작업은 대부분 DAW(Digital Audio Workstation)라 불리는 소프트웨어에 의해 진행됩니다. 애플 사용자라면 익숙한 Garage Band, Logic 부터 전문 스튜디오에서 많이 쓰이는 Pro Tools 등이 모두 이에 해당하죠. 이와 더불어 비디오 편집 툴인 Premiere나 Final Cut Pro 등에서도 간단한 오디오 편집 및 음향 효과 등이 사용 가능합니다. 이 툴들에도 기본적으로는 Audio 관련 기능들이 내부에 구현이 되어 있죠.
<가시밭 길 같아 보이지만 이게 바로 DAW입니다>
DAW 프로그램 내부에는 다양한 음향 효과를 적용하기 위한 필터들이 존재합니다. 이 필터들을 플러그인 형태로 제공하는 회사들이 굉장히 많고 각 플러그인 들은 DAW에서 운용하기 위해 기본적인 약속들을 제공하고 있습니다. 대표적인 플러그인의 형식으로는 AAX, VST, AU가 있고, ARA 등 점유율은 높지 않지만 기타 플러그인 포맷들도 있어요.
오디오 알고리즘을 개발하고 이를 다양한 프로그램에서 사용할 수 있도록 하려면, 각각의 포맷의 약속에 맞는 코드를 만들어야 하는데요. Juce는 각 플러그인 포맷의 사양을 하나로 통합한 WrapperClass를 제공하여 하나의 코드만으로 많은 사용자에게 소리 효과를 전달해 줄 수 있도록 프로그램 내부에서 지원하고 있어요.
가우디오랩의 경우, 초기 VR 컨텐츠 제작을 위한 플러그인 툴인 Works(request link: 현재 추가 Support는 하지 않습니다)를 만들 때 이 기능을 적극 활용하기도 했습니다. Works를 제작할 당시에는 Pro Tools의 제작 경험을 중심으로 진행했기 때문에 형식은 AAX만 존재합니다만, 입출력이 비교적 기본적인 형태의 필터라면 여러 포맷으로 쉽게 만들어 낼 수 있는 장점을 가진 툴입니다. 가우디오랩의 공개 제품은 아니지만 개발중인 필터들의 일부는 소리 효과 등을 동작해보기 위해 내부적으로 VST, AAX의 플러그인으로 포팅하여 사용하고 있기도 합니다.
<Juce로 만들 수 있는 여러 플러그인. 얘네도 다 짝꿍이 있다>
최근 Application팀은 BTRS 프로젝트에서 플러그인 포맷에서 제한되는 사용자 경험을 확대하기 위해, 이를 Standalone Audio App 형태로 확장하는 작업을 했습니다. Juce가 제공해주는 여러 이점들을 활용해 App 형태를 새롭게 포팅하고 신규 기능을 가진 MVP를 약 3개월 정도의 기간 내에 만들어낼 수 있었어요. 지금은 기능 고도화를 위해 설계를 가다듬고 신규 기술 접목을 위한 리서치 기간을 가지고 있습니다.
<더 나은 소리경험을 위해 앞다퉈 한마디씩 하는 PM, 개발자, 디자이너, 사운드 엔지니어…그리고 그걸 지켜보는 나,, 그건 아마도 전쟁일거야…🎤>
사실 Juce가 일반 개발자 분들에게 익숙하지는 않을겁니다. 개발 지원 도구가 비교적 빈약한 것도 사실이에요.
때문에 가우디오랩에서는 Juce의 가장 큰 장점인 Audio 기능만 취하고, UI 영역은 Juce가 아닌 더욱 훌륭한 프레임워크로 변경하려는 계획을 가지고 있답니다. 더 많은 사람들이 더 훌륭한 소리경험을 할 수 있도록, 최신의 Front-End 기술을 접목하여 개발할 수 있는 방향으로 고민하며 실험해 보고 있답니다! (으쌰💪🏼)
<보다 풍부한 사용자 경험 개발을 위한 UI 프레임워크 리서치>
Spatial Audio Application, 같이 만들어요!
그래서… 이 계획의 일원이 되어 저와 함께 Application 팀을 발전시켜나갈 분! (두리번 두리번) Application 팀원 모두가 고개를 쭉 내밀고 동료 가우딘을 기다리고 있답니다!
Juce 프레임 워크가 더 궁금하신 분, 라이브 스트리밍 서비스에서 요즘 대세 중의 대세인 Spatial Audio 기술을 활용한 오디오 편집 어플리케이션은 어떻게 구현되는지 궁금하신 분이라면 저와 가벼운 커피챗, 얼마든지 환영이에요!
직접 설계한 소프트웨어를 통해 소리를 생성해내고, 그 청각적 효과가 설계 의도와 부합하는지 확인하며 더 좋은 소프트웨어를 만드는 과정! 그리고 팀에서 개발한 기술이 국내외 유수의 서비스에 탑재되어 수 많은 이용자에게 가닿는 기쁨과 희열! 언제나 상호 존중하며 최상의 결과물을 만들어내는 가우디오랩에서 함께 만들어요! (찡긋😉)
2021.10.08