2014년 8월 20일 수요일

Lokomotiv를 소개합니다






Lokomotiv는 이전 포스팅에서 말씀드렸던 것 같이 제가 Archetype Instruments와 (혹은 그 일원으로써) 작업해온 소프트웨어 신디사이저입니다. 소프트웨어 신디사이저라는 말을 쉽게 풀어보면 '소리를 내는 소프트웨어' 정도가 될 것 같습니다. 소프트웨어 신디사이저는 이미 십수년 전 부터 작곡에 폭넓게 활용되어 왔고, 지금은 EDM을 비롯해 여러 장르의 음악에 필수적인 존재입니다.

작곡 프로그램의 플러그인 형태이기 때문에 혼자서는 구동되지 않고 Cubase나 Logic 같은 작곡 프로그램에서 불러와서 사용해야 합니다.



(Lokomotiv만을 사용해 만들어진 데모송)



Lokomotiv는 처음부터 KVRDC 2014 라는 소프트웨어 악기 개발 대회 출품을 목표로 만들어졌기 때문에 한정된 시간 안에 개발할 수 있도록 단순화된 스펙을 가지고 있습니다. 오실레이터 모듈도 하나 (그 안에 여러개의 오실레이터가 합쳐져 있지만), LFO도 하나, 엔벨롭도 하나입니다. 하지만 강력한 사운드를 만들 수 있는 고성능 알고리즘이 탑재되어 있고, 요리조리 만지다 보면 나름 숨겨져 있는 기능을 통해 재미있는 사운드 디자인을 할 수도 있습니다. 쉬우면서도 다재다능한 이전작 Arc 5와도 철학이 일맥상통합니다.

저는 이 프로젝트를 통해 몇 년 전부터 가졌던 '소프트웨어 악기는 대체 어떻게 만들어지는 걸까?' 라는 궁금증을 상당 부분 해소할 수 있었고, 프로그래밍으로 작지만 결코 간단하지 않은 시스템을 설계해보는 소중한 경험을 했습니다. 이전 글에서 말한 것처럼 어릴 적 가진 프로그래밍에 대한 동경을 어느 정도 실현해봤다는 점에서도 매우 벅찹니다.

EXE확장자를 가진 파일이 생겨서, 실행하면 여러가지 일을 하는 버튼과 창들이 나오고, 물음표를 누르면 개발자 정보와 연락처가 나오는, 사실 정말 중요한 프로그램의 core와는 별 상관없는 것이, 내가 동경하던 것이었다. "여러분! 제가 프로그램을 만들었어요!"
(정말로 이렇게 되었네요. 이건 EXE가 아니라 DLL이 생기기는 하지만)

신디사이저 설계, DSP 알고리즘이나 세부적인 동작, 계산량 최적화 등 핵심이 대부분 신디사이저 전문가이신 최재원 대표님의 손에 의해 이뤄졌습니다. 저는 C++ 라이브러리를 사용하여 프로그래밍으로 이를 실현시키는 것이 주된 역할이었는데, 대표님은 정식으로 프로그래밍을 배운 적이 없음에도 프로젝트 막바지에 제가 짜놓은 C++ 코드를 이해하고 자료구조를 수정하거나 버그를 수정하는 신기를 보여주어 저를 놀라게 했습니다. (Learning by doing의 무서움..) 저도 기회가 되면 신디사이저와 DSP를 더 공부해 저만의 재미있는 악기를 만들어 보고 싶네요.

로코모티프(혹은 로코모티브)는 아래 링크에서 무료로 받아보실 수 있습니다. KVRDC 2014 순위 집계는 8월 24일까지입니다. 사용해보고 유용하다고 느끼시면 Rating도 부탁드립니다. 1등하면 9월에 보스턴에서 열리는 컨퍼런스에 보내준다고 하니 렌트카 빌려가지고 피츠버그에서 열심히 운전해 다녀오겠습니다.

http://www.kvraudio.com/product/lokomotiv-by-archetype-instruments


2014년 8월 2일 토요일

출국을 하루 앞두고



출국을 하루 앞두고 있다. (무엇을 할 것인가 2: 미국에 갑니다)
KVR Developer's Challenge 2014에 출품하기 위해 개발하던 가상악기는 제출일 당일인 어제 새벽에 개발을 마쳤다. 그리고 지금도 짐을 싸고 있다. 내가 개발한 악기가 드디어 나왔다는 사실이 흥분되지만, 최소 2년간 한국을 떠나는데 제대로  작별을 하지 못 하고 가는것 같아 마음 한켠이 조금 무겁다.

그리고 두렵다. 기회비용을 포함해서 내가 소비할 비용이 만만치 않다는걸 잘 알고 있다. 미국 게임산업은 계속 성장하고 있지만 고용시장은 앞길을 알 수 없어 보인다. Entertainment Technology라는 역사가 짧은 전공으로 내가 어떤 기회를 잡을 수 있을까 의문도 든다. 운이 좋아 실리콘 밸리에서 일자리를 가진다 해도 살인적인 세금과 물가를 제하고 나면 수입은 한국에서 대기업 다니는 것 보다 못하다. 한국에 돌아왔을 때 취업시장에서 내 포지션이 어떻게 될지는 더욱 불명확하다.

아마 살면서 이정도의 리스크를 감수하는 결정이 처음일 것이다. 이런 베팅을 할 수 있음이 얼마나 감사한 것인지를 최근에 정말 많이 느꼈다. 나는 욕심이 많다. 남은 것은 욕심을 버리는 법을 배우느냐, 원하는 것을 가지느냐이다.





Far,
멀리,
We've been traveling far
우리는 먼 길을 왔네
Without a home
집은 없지만
But not without a star
가슴속엔 별이 있네

Free,
자유,
Only want to be free
오로지 자유롭기 위해
We huddle close
우린 서로 부둥켜안고
Hang on to a dream
꿈을 향해 나아가네

On the boats and on the planes
배와 비행기를 타고
They're coming to America
그들이 미국으로 온다네
Never looking back again,
절대 뒤돌아보지 않으며
They're coming to America
그들이 미국으로 온다네

Home
고향,
Don't it seem so far away
너무나 멀어 보이는 그곳
Oh, we're traveling light today
오, 우린 가진 것 없이 여행하네
In the eye of the storm
태풍의 눈 속에서
In the eye of the storm
태풍의 눈 속에서

Home
집,
To a new and a shiny place
새롭고 빛나는 그곳으로
Make our bed and we'll say our grace
보금자리를 만들고 감사 기도를 드리네
Freedom's light burning warm
자유의 빛이 따뜻하게 타오르네
Freedom's light burning warm
자유의 빛이 따뜻하게 타오르네

Everywhere around the world
온 세상에서
They're coming to America
그들이 미국으로 온다네
Ev'ry time that flag's unfurled
깃발이 펄럭일 때마다
They're coming to America
그들이 미국에 온다네

Got a dream to take them there
펼칠 꿈을 안고서
They're coming to America
그들이 미국으로 온다네
Got a dream they've come to share
공유할 꿈을 가지고서
They're coming to America
그들이 미국으로 온다네

They're coming to America
그들이 미국에 온다네
They're coming to America
그들이 미국에 온다네
They're coming to America
그들이 미국에 온다네
They're coming to America
그들이 미국에 온다네
Today, Today,
오늘, 오늘,
Today, Today, Today
오늘, 오늘, 오늘

My country 'tis of thee (today)
나의 조국은 그대들의 것 (오늘)
Sweet land of liberty (today)
달콤한 자유의 땅 (오늘)
Of thee I sing (today)
그대를 위해 노래하네 (오늘)
Of thee I sing
그대를 위해 노래해
Today, Today, Today
오늘, 오늘, 오늘
Today, today, today......
오늘, 오늘, 오늘......


2014년 7월 23일 수요일

가상악기를 하나 개발중입니다.


코스트코에서 사온 호두 파이를 좀 먹으니 살 것 같다. 사면서 너무 달고 칼로리도 높아 고민했는데 지금처럼 머리를 혹사시킨 후에는 이만한 게 없는 것 같다. 당분이 혈관을 타고 뇌로 공급되는 것이 느껴진다.

이전 회사 대표님과 가상악기를 하나 개발중이다. 재직 중에 개발하던 가상악기 프로젝트를 계속 붙잡고 있어보겠다곤 했지만 내 성격상 설렁설렁 하게 될 줄 알았는데, 두달 쯤 전 대표님이 가져온 KVR 오디오 가상악기 개발 대회 떡밥을 물면서 드라이브가 걸렸다. 제출 날짜가 일주일 남짓 남았고, 내 출국은 11일 남았다. 재미있지만 빡세고 빡세지만 재미있다. 많이 놀지를 못해 나 자신에게 서운하긴 하다. 그래도 내가 개발한 가상악기로 곡 쓰는 게 작은 소망 중 하나였는데, 곧 실현할 수 있을 것 같아 좋다.

2014년 7월 5일 토요일

무엇을 하고 살 것인가 2: 미국에 갑니다



작년 7월에 진로를 고민하며 다음과 같은 글을 쓴 적이 있다.

무엇을 하고 살 것인가

요약하자면 나는 어려서부터 게임도 좋고 음악도 좋고 설상가상으로 프로그래밍도 재미있어져서 뭘 할지 고민인데 신생 가상악기 회사에서 같이 일하자는 제의를 받고 고민중이다 라는 내용이다. 글 마지막에 이런 문장이 있다. 


대학원 원서도 넣어보고, 입사지원도 하고 하다가 '되는 쪽' 으로 가려고 한다. 이렇게라도 결정하지 않으면 도대체 시작을 못하겠다.

재미있는 것은 실제로 대학원 유학 원서도 넣고 게임회사 지원도 하고 다 했다는 것이다. 이 중 신생 가상악기 회사가 일도 재미있을 것 같고 사람도 좋고 무엇보다 많이 성장할 수 있을 것 같아 11월부터 일을 시작했다. 솔직히 스타트업치고는 매우 괜찮은 조건에 계약을 해 준 것도 컸다.

사실 먼저 회사에 컨택한 사람은 나였다. 소프트웨어 악기(가상악기) 는 대체 어떻게 만들어지는 걸까 궁금증이 커져만 갈 때 국내에서 개발한 소프트웨어 악기가 출시되었다는  소식을 들었다. 국산 가상악기는 Purity와 Ravity 이후로 명맥이 끊긴 줄만 알았는데 신생 회사에서 악기가 나왔다는 소식을 듣고 흥분하여 홈페이지를 이리저리 뒤져봤다. 회사 이름도 멋있고 홈페이지도 깔끔하니 멋있고 무엇보다 제품 때깔이 괜찮았다. 홈페이지에 나와있는 info 메일로 무작정 메일을 보냈다. 가상악기 만드는 게 너무 궁금하니 인턴이든 알바든 뭐든 시켜만 달라고. 

그리고 회사 대표님으로부터 생각지도 못한 장문의 답장을 받았다. A4용지 한장 반 정도는 될 것 같은 분량이었다. 당장 사람이 필요하지는 않지만, 원한다면 메일을 통해 가상악기 개발을 어드바이스해줄 수 있다는 내용이었다. 몇 번 메일을 주고 받다가 저녁 약속을 가지고 입사를 제의받았다. 나는 세 번째 멤버였고 회사는 아직 사무실도 없던 상태라 사무실 알아보는 것 부터 입주하는 날 청소까지 함께 하게 되었다.

책상과 의자를 엉성하게 들여놓고 일을 시작했는데, 일이 너무 재미있었다. 처음엔 유일한 프로그래머다 보니 책무가 막중해 긴장도 되었지만 내가 주도적으로 일을 계획하고 만들어나가는 경험은 정말 소중한 것이었다. 모르는 것이 있으면 공부해서 개발에 도입을 했다. 무엇보다 하는 일이 악기 제작이다 보니 잡담을 하건 공부를 하건 회의를 하건 모두 내가 좋아하는 음악 이야기라는 점이 너무나 좋았다. 하루에도 몇 번씩 여기저기 자랑하고 싶은 걸 참느라 혼났다. 

즐거웠지만 시간이 지나자 회사생활을 유지하기가 어려워졌다. 이유는 복잡하기도 하고 단순하기도 하다. 확실한 건 그간 정말 많이 배웠다는 것이다. 또 좋아하는 일을 하며 먹고 살아야겠다는 결심을 했다. 그것은 이상향이고, 나는 그것을 잠깐 맛 본 것이다 - 라고 생각했다.

그리고 작년에 지원했던 대학원 결과가 나왔다. 마지막 강의로 유명한 랜디 포시 교수가 설립한 카네기 멜론 대학교의 Entertainment Technology Center (ETC)와, Princeton Review에서 2013년 최고의 게임 디자인 스쿨로 선정된 유타대학교의 Entertainment Arts & Engineering 두 곳에서 합격 통지를 받았다. 유타대학교의 게임 엔진을 설계하고 구현하는 게임 엔지니어링 커리큘럼이 너무 좋아 지원할 때 부터 욕심이 났지만, 여러모로 고민하다 카네기멜론으로 가게 되었다. 무엇보다 한국콘텐츠진흥원에서 ETC 합격자 대상으로 선발하는 장학생에 선정된 것이 컸다.






Entertainment Technology Center는 Masters of Entertainment Technology라는 2년짜리 석사과정을 제공하는데, 첫 학기 빼고는 딱히 정해진 커리큘럼이 없다. 나머지 세 학기는 Learning by Doing 이라는 모토 아래 죽어라 팀 프로젝트를 수행하게 된다. (사실 Learning & Earning by Doing 이 더 좋긴 한데.)



작년 첫 학기에 진행된 Building Virtual Worlds 수업의 발표&전시회 영상. 
BVW는 ETC의 성격을 규정하는 중요한 수업이다.


정해진 커리큘럼도 없는 주제에 카네기멜론답게 학비는 엄청 비싼데, 다행히 한 학기에 한 두개의 선택 과목을 자유롭게 들을 수 있다. 당연한 얘기지만 나는 아마 컴퓨터공학과 수업을 주로 듣게 될 것 같다. 컴퓨터공학 전공자가 카네기멜론에서 컴퓨터공학 수업을 안 들으면 손해 아니겠는가.

그리고 학과 아웃풋이 좋다. 지금처럼 신선한 비주얼과 참신한 게임플레이의 캐주얼게임이 많지 않을 때 월드 오브 구 World of Goo 로 대박을 치신 분들이 ETC 출신이다. 이외에도 2013년 올해의 게임을 휩쓴 라스트 오브 어스 Last of Us의 총 감독 Neil Druckmann이 ETC 출신이며, 올해 Museum of Simulation Technology로 인디게임페스티벌 학생부문 본선에 오른 친구들은 현재 ETC 학생이다. 한국인 졸업생으로는 게임회사 로드컴플릿의 배정현 대표와 배수정 이사가 있다.


ETC 초기의 졸업생들이 만든 게임 월드 오브 구

말이 필요없는 명작 라스트 오브 어스의 크리에이티브 디렉터가 ETC 출신이다


현 ETC 학생들의 프로젝트 Museum of Simulation Technology.
아이디어와 그것을 구현해낸 능력 모두가 예술이다.
(2014년 인디게임페스티벌에서 학생부문 파이널리스트에 올랐는데,
공교롭게도 내가 합격한 다른 학교인  University of Utah EAE 학생들의 게임도 
나란히 파이널리스트에 올랐다)



그래서 아마 큰 이변이 없는 한 8월 3일 출국을 하여 공부를 시작하게 될 것이다. 그 다음은? 나도 잘 모르겠다. 애초의 목적은 북미나 캐나다의 메이저급 게임 제작사에 취직하는 것이었다. 그런데 목표를 너무 확실하게 설정해 놓으니 압박감에 숨이 가빠오고 머리가 아프더라. 그래서 모든 가능성을 열어두기로 했다. 아무튼 무엇을 하던 최종 목표는 하고 싶은 걸 하며 사는 것이다. 필요할 땐 돌아서 가더라도.

----

2014년 4월 8일 화요일

2014년 4월 4일 금요일

오디오 프로세싱 스크랩


일하면서 참고한 자료들을 잃어버리지 않기 위해 스크랩하는 포스트.

  1. Aalto University에서 디지털 신서사이저의 오실레이터 구현에 관해 정리를 잘 해놓은 자료.
    http://www.acoustics.hut.fi/~jpekonen/teaching/gl/S-89.3580-2010-Pekonen.pdf
    Aalto University의 자료는 북유럽 대학이라 그런지 디자인이 정말 깔끔하다. 다들 좀 배웠으면 좋겠다.
  2. Lagrange 보간법, Newton 보간법, Cubic spline 을 C언어로 작성해 놓은 블로그.
    신호를 다루다보니 보간 알고리즘에 익숙해 지는 게 필수인 것 같다.
    http://rucifer.tistory.com/entry/Report7-Lagrange-%EB%B3%B4%EA%B0%84%EB%B2%95-Newton-%EB%B3%B4%EA%B0%84%EB%B2%95-Cubic-spline
  3. Alias-Free Wavetable Oscillator 구현을 놀랍도록 잘 정리한 블로그.
    http://www.earlevel.com/main/2012/05/04/a-wavetable-oscillator%E2%80%94part-1/
  4. 같은 블로그에서 Wavetable LUT (Look-Up Table)을 어떻게 구현하는지 좀 더 상세하게 기술한 포스트.
    http://www.earlevel.com/main/2013/03/03/replicating-wavetables/
  5. Integrated Wavetable을 사용한 신서시스에 관한 논문. BLIT, BLEP등의 알고리즘에 대해 소개
    http://mtg.upf.edu/files/publications/c96213-DAFX06-ggeiger.pdf
  6. HIGHER-ORDER INTEGRATED WAVETABLE SYNTHESIS. 5번에서 더 나아간 논문 같은데, Higher-Order가 무엇인지 잘 모르겠다.
    http://dafx12.york.ac.uk/papers/dafx12_submission_69.pdf
  7. Hard Sync Without Aliasing
    Aliasing없는 Hard-Sync 알고리즘 구현에 대한 CMU 논문. BLIT과 minBLEP 방식의 요약이 있음.
    http://www.cs.cmu.edu/~eli/papers/icmc01-hardsync.pdf
  8. Alias-Free Digital Synthesis of Classic Analog Waveforms (Stilson & Smith)
    BLIT(Band Limited Impulse Train) 신서시스를 소개하는 스탠포드 CCRMA의 논문.
    https://ccrma.stanford.edu/files/papers/stanm99.pdf#page=48
  9. DC Blocker 수식이 나와있는 CCRMA의 홈페이지.
    https://ccrma.stanford.edu/~jos/filters/DC_Blocker.html
  10. The Synthesis Toolkit in C++ (1995-2012 Perry R. Cook and Gary P. Scavone.)
    https://ccrma.stanford.edu/software/stk/