티스토리 뷰

반응형

VST 개발을 위해 여러가지 프로그램과 도구들을 살펴보고 있다.

가장 많이 사용되는 JUCE 부터 iPlug 2, SOUL 까지 다 살펴보았지만 다 약간씩 마음에 들지는 않았다.

(그리고 C++ 익숙하지 않은 내 실력도 문제인듯하다)

 

JUCE는 기능이 풍부하나, 너무 복잡하게 얽혀있는 느낌에 디자인이 마음에 들지 않고,

iPlug 2 는 아직까지는 프로덕션 레벨에서 사용하는 것을 권장하지는 않고,

SOUL 은 너무 신생 언어라 학습 레벨이 너무 높았다.

 

그나마 JUCE가 낫겠지 싶어, JUCE를 열심히 보고 있었지만 뭔지 모르게 마음에 한구석에 찜찜함이 남아있었다.

단순히 VST Plugin 을 만드는 것은 JUCE를 통해서도 가능하지만,

나는 JUCE의 생태계를 벗어나 HTML Rendering 엔진을 UI로 사용하고 싶었기 때문에 그랬을지도 모르겠다.

 

꽤 많은 날을 고민하다가 내린 결론은 다음과 같다.

 

"VST Host 와 Plugin 을 직접 만들어서 Electron에 NAPI로 연결하면 되지 않을까?"

 

복잡할 수도 있겠지만, 어짜피 JUCE로 짜나 뭘로 짜나 Electron이나 Ultralight 를 이용해 UI를 만들 생각이었기에 이런 결론을 내리게 된 것 같다. (약간 뜨거운 지옥불을 피해서 더 활활타는 지옥불에 스스로 걸어들어가는 느낌이다)

 

나중이 어떻게 될지는 모르겠으나, 어쨌든 가장 첫번째 스텝으로는 VST SDK 를 분석하고 프로젝트를 만드는 것을 메인 테마로 잡았다.

VST SDK는 스테인버그에서 직접 툴도 배포하고, 나름 문서도 많으니 어찌되든 되겠지.


1. VST SDK 는 Steinberg 홈페이지에서 받으면 된다.

www.steinberg.net/en/company/developers.html

 

3rd Party Developer

Welcome to our third-party developer support site. We’re pleased to offer other manufacturers the chance to develop VST- and ASIO-based software and hardware for Mac OS and Windows by offering those technologies along with the appropriate license.

www.steinberg.net

중간 탭에 보면

"VST 3 Audio Plug-Ins SDK" ,

"VST Module Architecture SDK",

"ASIO SDK",

"GameAudioConnect SDK" 가 있는데

이중 VST3 Audio Plug-Ins SDK와 ASIO SDK를 받아서 폴더에 넣어주면 된다.

(굳이 GameAudioConnect SDK는 받을 필요 없어 보인다. 이는 Nuendo 시스템을 게임의 멀티 채널 오디오에 적용할때 사용하는 SDK로 보여진다)

 

2. VST 3 Generator를 실행한다

압축을 풀면 여러가지 폴더가 보이는데, 이 중에 VST3_Project_Generator 를 열어서 해당 플랫폼의 어플리케이션을 실행한다.

VST SDK를 압축 해제한 화면, 맨 위의 ASIOSDK_2.3.3은 같이 받았던 ASIO SDK 이다

VST3 Project Generator는 VST3 플러그인을 만들 때, 프로젝트안에 필요한 세팅들을 자동으로 만들어주는 도구이다.

(JUCE의 Prejucer 와도 비슷한 개념인듯하다. 이런 보일러 플레이트들은 초기 개발에서는 너무 편하나, 향후에 어느정도 익숙해지면 안사용되는 라이브러리들을 수동으로 제거하거나, 빌드를 직접 해주는 것이 더욱 이득이다.)

나는 macOS 이기 때문에 macOS용 Generator 를 실행했다. Windows도 딱히 다르진 않을것으로 보인다.

 

3. CMake를 설치한다

그냥 이렇게 프로젝트를 쉽게 만들면 좋겠으나, 프로젝트를 만들 때 CMake 를 통해 빌드를 한번 해주게 된다.

CMake는 해당 페이지에서 다운로드 받으면 된다. 개인적으로 Homebrew 같은 걸 설치하는 것을 안좋아해서 공식 홈페이지에서 dmg 패키지를 받아서 환경변수를 추가해주었다)

 

CMake 다운로드

cmake.org/download/

CMake를 받아서 설치한 다음에 상단 Tools -> How to Install For Command Line Use 를 참고해서 시스템 환경변수에 CMake를 추가해준다. (굳이 이럴 필요까지는 없지만, 나중에 수동으로 빌드해주기 위해서는 이게 필요할 듯하다)

Root에서 open .bash_profile을 통해 환경변수가 저장된 파일을 열어주고 여기에 CMake의 환경변수 경로를 저장해주면 끝

(만약 macOS가 카탈리나보다 윗버전일 경우 .bash_profile 대신 .zprofile 을 사용해주어야 한다. 해당 이슈에 대해서는 다음 경로의 대답을 참고하면 될듯, stackoverflow.com/questions/56784894/macos-catalina-10-15beta-why-is-bash-profile-not-sourced-by-my-shell)

 

4. Project Generator 에서 SDK Path를 설정해준다.

VST SDK 는 다운로드 받은 VST SDK 를 선택해서 위치해주고,

CMake 의 경우 /Application/CMake/Content/bin에 있는 cmake 를 선택해주면 된다.

(만약 안보일 경우 Project Generator를 종료했다가 다시 켜주면 보여진다.)

세팅이 완료되면 아무것도 뜨지 않는다. 제발 알림창이던 뭐던 제대로 설정되었다고 문구하나라도 표시해주길

5. 이제 샘플 프로젝트를 만들어보자.

Create Plug-in Project 탭을 통해서 프로젝트를 만들어보자.

각 항목들을 넣어주고 CMake Generator에서 원하는 IDE를 선택해주면 프로젝트가 생성된다.

6. 샘플 프로젝트 실행

자동으로 XCode가 실행된다. 폴더 구조를 이해해야겠지만 일단은 무조건 실행해본다.

먼저 XCode의 빌드항목에서 validator를 빌드해본다.

큰 문제가 없으면 아래 Debug Area 에 지금은 알수 없는 글자들이 뜨면서 

"Program ended with exit code: 1"이라고 나오게 된다.

이제 빌드항목을 validator 에서 HelloWorld로 변경한 뒤 다시 빌드해본다.

그러면 나의 경우 Bundle Identifier 에러가 나게 된다. 이는 XCode 의 Info.plist 와 CFBundleIndentifier(초기 프로젝트 세팅시 기입했던 번들 ID) 가 동일하지 않기 때문인데 Info.plist 의 Product Bundle Identifier 의 Debug 항목에 동일한 표기를 해주면 해결된다.

Identifier 를 넣어주면 비로소 vst3가 Products 폴더 아래 만들어지게 된다.

 

 

7. 실행해보자

어짜피 현재는 아무것도 없다. GUI도 없고 그 어떤 것도 없다. 그래도 실행은 해봐야한다.

Cubase 같이 기본적인 DAW가 있다면 거기서 실행하면 되지만, 나는 로직 유저인 관계로

VST SDK에서 제공하는 Host Tool을 설치해서 동작시켜 보았다.

(Host Tool 위치 : VST SDK 다운로드 위치 -> VST3_SDK/bin/{OS 버전}/VST3PluginTestHost.pkg(혹은 Installer 압축 파일)

실행은 VST Rack에서 Audio Effect 탭을 눌러서 방금 만든 HelloWorld를 클릭하면 된다.


항상 그렇듯 개발시에는 초기 세팅이 어려운 편이다. 그리고 세상에는 수천만개의 시스템이 있기 때문에 매뉴얼을 보면서 해도

문제가 많이 발생한다.

그나마 VST SDK 는 세팅하는데 큰 어려움은 없었지만...

이제 개발이 문제일 듯하다.


참고자료

 

 

1) JUCE : C++ Framework 로 초기에는 Tracktion의 개발에 사용하기 위해 만들어졌다고 한다. 

http://juce.com

 

JUCE | JUCE

Deliver music applications on all main platforms, with high performances and professional tools

juce.com

2) iPlug 2 : 예전에는 WDL-OL 이라는 C++ Framework 의 서브 프로젝트 중 하나였던것으로 보인다.

https://github.com/iPlug2/iPlug2

 

iPlug2/iPlug2

C++ Audio Plug-in Framework for desktop, mobile and web [PRE-RELEASE] - iPlug2/iPlug2

github.com

3) SOUL : 가장 최신 언어이며 런타임이다. JUCE 를 만든 Julian Storer 가 참여한 언어로 현재는 사용하기 애매하지만 향후 기대가 된다.

https://soul.dev/

 

SOUL - The Future of Audio Coding

Faster, more power efficient, lower latency, portable, and enjoyable to use.

soul.dev

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함