AI에게 말로 설명해서 만든 나만의 음악 프로그램, Chord Explorer

프로그램을 모르는 사람도 프로그램을 만들 수 있는 시대

얼마 전까지만 해도 프로그램을 만든다는 것은 프로그래밍 언어를 배우고, 코드를 직접 작성하고, 오류를 찾아 수정할 수 있는 사람들의 영역이라고 생각했다.

나 역시 프로그램 개발자가 아니다. 오랫동안 다른 일을 해왔고, 음악도 전문적인 작곡가나 연주자로 활동한 것이 아니라 오래전부터 좋아해서 계속 건반을 연주해 온 정도다.

그런데 AI를 사용하면서 생각이 조금 달라졌다.

요즘의 AI 코딩 도구는 단순히 코드를 대신 작성해 주는 수준을 넘어섰다. 내가 원하는 기능을 말로 설명하면 프로그램의 구조를 만들고, 실제로 실행해 보고, 문제가 생기면 그 증상을 다시 설명해서 수정할 수 있다.

물론 AI가 있다고 해서 아무 생각 없이 프로그램이 완성되는 것은 아니다. 오히려 중요한 것은 “나는 무엇이 필요한가?”를 정확히 아는 것이었다.

그 필요를 가장 잘 아는 사람은 개발자가 아니라 실제 사용자일 수도 있다.

Chord Explorer는 바로 그런 생각에서 시작한 프로그램이다.


피아노를 치면서 내가 불편했던 것

나는 주로 피아노나 신디사이저를 연주하면서 코드를 사용한다.

C, Dm, Em, F, G, Am 같은 익숙한 코드에서 시작해 7th, 9th, sus, diminished 같은 코드를 조금씩 추가하다 보면 한 가지 문제가 생긴다.

“지금 이 코드 다음에는 무엇을 치면 좋을까?”

코드의 구성음을 알려주는 프로그램은 많다. 인터넷을 검색하면 코드표도 얼마든지 나온다. DAW에도 코드와 관련된 기능들이 있다.

하지만 내가 원했던 것은 단순한 코드 사전이 아니었다.

내가 지금 건반에서 치고 있는 코드를 프로그램이 알아듣고,

현재 코드가 무엇인지 보여주고 → 다음에 연결해 볼 만한 코드를 보여주고 → 직접 눌러보면서 소리를 비교하고 → 마음에 들면 진행으로 저장하는 것.

나는 이런 방식이 필요했다.

음악이론 책을 처음부터 공부하는 방식보다 실제 건반을 치면서

“아, C 다음에 Am으로 가면 이런 느낌이구나.”

“여기서 F를 Fm으로 바꾸니까 분위기가 완전히 달라지네.”

“7을 넣으니까 다음 코드로 넘어가고 싶어지는 느낌이 생기네.”

이런 것을 귀와 손으로 먼저 경험하는 프로그램을 만들고 싶었다.

그래서 만든 것이 Chord Explorer다

Chord Explorer의 중심에는 현재 연주하고 있는 코드가 있다.

건반에서 코드를 연주하면 프로그램이 그 코드를 분석하고 화면 중앙에 크게 표시한다.

예를 들어 G6를 연주했다면 화면에는

G6

그리고 구성음인

G B D E

가 표시된다.

여기에 그 코드가 어떤 성격을 가지고 있는지 간단한 설명도 붙는다.

내가 원했던 것은 복잡한 화성학 설명을 화면 가득 보여주는 것이 아니었다. 연주하다가 잠깐 화면을 보더라도 바로 이해할 수 있어야 했다.

그래서 프로그램의 중심은 항상 **“지금 내가 무슨 코드를 치고 있는가”**다.

다음 코드를 추천해 준다

Chord Explorer에서 내가 특히 원했던 기능은 NEXT CHORD다.

현재 코드를 기준으로 다음에 연결해 볼 수 있는 코드들을 몇 개 보여준다.

예를 들어 화면에

F Dm G C

처럼 후보가 나타난다.

중요한 것은 이것을 “정답”이라고 생각하지 않는다는 점이다.

음악에는 다음에 반드시 어떤 코드가 와야 한다는 정답이 있는 것이 아니기 때문이다.

그래서 이것은 자동 작곡이라기보다 다음 코드를 탐색하기 위한 힌트에 가깝다.

후보를 보고 실제 건반으로 연주해 본다.

마음에 들면 사용하고, 마음에 들지 않으면 다른 코드를 쳐본다.

결국 선택하는 것은 사람의 귀다.

그래서 이름도 Chord Generator가 아니라 Chord Explorer로 정했다.

코드를 만들어 주는 기계보다는 코드를 돌아다니며 찾아보는 도구라는 의미가 더 잘 맞는다고 생각했다.

COLOR와 FLOW

코드를 하나씩 찾는 것만으로는 곡의 전체적인 흐름을 보기 어렵다.

그래서 COLOR와 FLOW라는 개념도 넣었다.

COLOR는 7이나 9 같은 음을 이용해 현재 코드의 색깔을 조금 바꿔 보는 기능이다.

같은 기본 코드라도 음 하나가 추가되면 느낌이 달라진다.

반면 FLOW는 한 코드가 아니라 몇 개의 코드가 연결되었을 때의 흐름을 보여준다.

예를 들어

C – G – Am – F

C – Am – F – G

Am – F – C – G

Dm – G – C

같은 진행을 보면서 직접 연주해 볼 수 있다.

나는 이것을 음악이론 시험처럼 외우기 위한 기능으로 만들고 싶지 않았다.

오히려 여러 번 쳐보면서

“아, 이 진행 어디선가 많이 들어본 느낌인데?”

하는 경험을 쌓는 것이 목적이다.

8개의 패드는 코드의 성격을 빠르게 바꾸기 위한 것

왼쪽에는 8개의 패드가 있다.

DIM, MIN, MAJ, SUS4, 6, 7, Maj7, 9처럼 자주 사용하는 코드의 성격을 빠르게 선택할 수 있도록 했다.

이것 역시 실제 연주하면서 사용하기 위해 만든 기능이다.

마우스로 복잡한 메뉴를 계속 열기보다 필요한 것을 바로 누르고 결과를 확인하는 것이 편하기 때문이다.

현재 선택된 패드는 불이 들어오도록 했다.

기능적인 이유도 있지만, 나는 신디사이저와 오래된 전자악기를 좋아하기 때문에 프로그램 자체도 악기처럼 보였으면 좋겠다고 생각했다.

화면도 일반적인 프로그램처럼 만들고 싶지 않았다

처음에는 기능을 만드는 데 집중했지만 프로그램이 어느 정도 동작하기 시작하니 디자인에 욕심이 생겼다.

내가 좋아하는 것은 오래된 신디사이저, 랙 음원, 하드웨어 장비의 분위기다.

그래서 일반적인 컴퓨터 프로그램보다는 비행기 콕핏의 계기판과 빈티지 신디사이저를 섞어 놓은 듯한 디자인을 생각했다.

검은색과 짙은 회색의 패널, 금속 느낌의 노브, 적당한 나사, 그리고 붉은색에 가까운 주황색 표시등과 디스플레이.

하지만 너무 낡은 빈티지 장비처럼 만들고 싶지는 않았다.

오래된 장비의 디자인 언어를 가지고 있지만 방금 공장에서 나온 새 장비 같은 느낌.

그것이 현재 디자인의 방향이다.

특히 중앙 디스플레이는 일반적인 컴퓨터 글꼴보다 실제 신디사이저나 하드웨어 장비에서 볼 수 있는 표시창 같은 느낌을 주려고 했다.

9개의 노브는 장식이 아니다

아래에는 9개의 노브가 있다.

KEY / SCALE / AUTO QUALITY / VOICING / PERFORM / RATE / BASS / BASS OCTAVE / VOLUME

이 노브들은 실제 MIDI 컨트롤러와 연결해서 사용할 수 있도록 구상했다.

즉 마우스로 프로그램만 조작하는 것이 아니라 MIDI 키보드 앞에 앉아서 건반을 치고, 실제 노브를 돌리고, 코드를 바꾸면서 사용할 수 있는 것이다.

내가 만들고 싶었던 것은 음악이론을 설명하는 앱이 아니라 연주하면서 사용하는 작은 전자악기 같은 프로그램이었기 때문이다.

마음에 드는 코드는 KEEP

연주하다 보면 우연히 마음에 드는 코드가 나온다.

그때마다 메모장에

C - Am - F - G…

라고 적는 것은 흐름을 끊는다.

그래서 KEEP 버튼을 만들었다.

마음에 드는 코드가 나오면 KEEP을 누른다.

잘못 넣었으면 DELETE LAST로 마지막 것을 지우고, 처음부터 다시 만들고 싶으면 CLEAR를 누른다.

몇 개의 코드를 모은 다음 PLAY를 누르면 그것을 반복해서 들어볼 수 있도록 한다.

이렇게 하면 즉흥적으로 연주하다 발견한 진행이 작은 곡의 스케치가 된다.

나에게는 이 부분이 꽤 중요하다.

이론을 공부하기 위한 프로그램과 음악을 만들기 위한 프로그램 사이를 연결하고 싶었기 때문이다.

AI가 프로그램을 만들었다고 해야 할까?

이 프로그램을 만들면서 재미있는 생각이 들었다.

“이 프로그램은 내가 만든 것일까, AI가 만든 것일까?”

코드 자체만 놓고 보면 상당 부분은 AI가 작성했다.

나는 직접 수천 줄의 프로그램 코드를 타이핑하지 않았다.

대신 계속 요구했다.

“코드를 이렇게 인식했으면 좋겠다.”

“전위형도 같은 코드로 알아봤으면 좋겠다.”

“두 음을 빨리 눌렀을 때 코드로 잘못 판단하지 않았으면 좋겠다.”

“이 버튼은 여기 있어야 한다.”

“이 글씨는 더 커야 한다.”

“이 기능은 필요 없으니 빼자.”

“노브는 실제 MIDI 컨트롤러와 연결하고 싶다.”

실행해 보고 문제가 있으면 다시 AI에게 설명하고, 수정된 것을 다시 실행했다.

이 과정을 수없이 반복했다.

그래서 지금은 이렇게 생각한다.

AI가 코드를 작성했고, 나는 프로그램을 설계했다.

예전에는 이 두 가지 일을 한 사람이 모두 해야 했다면 이제는 분리될 수 있게 된 것이다.

프로그램을 만드는 능력보다 필요한 것을 아는 능력

AI 코딩을 경험하면서 가장 크게 느낀 것은 이것이다.

앞으로 프로그램을 만드는 데 있어서 프로그래밍 지식이 필요 없어지는 것은 아닐 것이다. 복잡하고 큰 프로그램일수록 전문 개발자의 역할은 여전히 중요하다.

하지만 작은 개인용 프로그램의 세계는 크게 달라질 수 있다.

예전에는 이런 생각을 해도,

“이런 프로그램 하나 있으면 좋은데.”

하고 끝났다.

개발자를 고용하기에는 비용이 너무 많이 들고, 직접 프로그래밍을 배우기에는 시간과 진입장벽이 높았기 때문이다.

이제는 다르다.

자기가 하는 일을 잘 알고 있다면

“여기서 이것이 불편하다.”

“이것과 이것을 연결하면 편할 것 같다.”

라는 생각을 실제 프로그램으로 시험해 볼 수 있다.

어쩌면 AI 시대에는 코드를 얼마나 많이 외우고 있느냐 못지않게 문제를 얼마나 구체적으로 발견하고 설명할 수 있느냐가 중요해질지도 모른다.

그렇다고 정말 누구나 한 번에 만들 수 있는 것은 아니다

“AI로 누구나 프로그램을 만들 수 있다”는 말에는 한 가지 덧붙이고 싶은 것이 있다.

AI에게 한 번 말한다고 완성품이 나오는 것은 아니었다.

기능 하나를 추가하면 다른 기능이 이상해지기도 하고, 내가 설명한 것을 AI가 다르게 이해하기도 했다.

겉으로는 정상인데 실제 MIDI 키보드로 연주하면 문제가 생기는 경우도 있었다.

그래서

만들기 → 실행하기 → 직접 사용하기 → 문제 발견하기 → 다시 설명하기 → 수정하기

를 계속 반복했다.

특히 내가 직접 사용할 프로그램이기 때문에 사소한 불편함도 금방 눈에 들어왔다.

결국 AI는 굉장히 빠른 제작 도구이지만 무엇이 잘못됐는지를 판단하는 것은 여전히 사람의 몫이었다.

유료 AI를 결제하면서까지 만들 가치가 있었을까?

AI 코딩을 계속 사용하다 보면 현실적인 문제가 하나 생긴다.

비용이다.

처음에는 호기심으로 시작했지만 수정이 반복되고 프로그램의 규모가 커지면 AI 사용량도 많아진다.

무료 사용 범위 안에서 간단한 프로그램을 시험해 보는 것은 가능하겠지만, 계속 코드를 읽고 수정하고 새로운 기능을 추가하는 작업을 하다 보면 유료 서비스가 필요해질 수 있다.

나 역시 처음에는

“내가 개발자도 아닌데 이것 때문에 돈을 내야 하나?”

라는 생각을 할 수밖에 없었다.

그런데 관점을 조금 바꾸니 계산이 달라졌다.

프로그램을 산 것이 아니라 제작할 수 있는 시간을 산 것

Chord Explorer와 정확히 같은 프로그램을 시중에서 찾기는 어렵다.

비슷한 기능을 가진 음악 프로그램은 있지만 내가 원하는 방식과 정확히 일치하지 않는다.

그렇다면 선택지는 세 가지였다.

내가 프로그래밍을 몇 달 또는 몇 년 공부하거나, 개발자에게 제작을 의뢰하거나, 그냥 포기하는 것이다.

AI라는 네 번째 선택지가 생겼다.

한 달 동안 AI 서비스를 결제해서 프로그램 하나를 완성할 수 있다면 그것을 단순히 AI 구독료라고만 볼 필요는 없다고 생각한다.

내가 직접 사용할 도구를 제작하는 비용이라고 생각할 수도 있다.

게다가 하나를 만들면서 생긴 경험은 다음 프로그램을 만들 때 그대로 남는다.

유료 결제가 모든 사람에게 필요한 것은 아니다

그렇다고 AI 코딩을 하기 위해 무조건 유료 결제를 권하고 싶은 것은 아니다.

간단한 아이디어를 시험하거나 작은 프로그램을 만드는 정도라면 무료 범위에서도 충분히 시작해 볼 수 있다.

중요한 것은 처음부터 거대한 프로그램을 만들려고 하지 않는 것이다.

나 역시 Chord Explorer를 처음부터 지금 모습 그대로 상상한 것은 아니었다.

필요한 기능 하나를 만들고 사용해 본 뒤,

“이게 되니까 이것도 있었으면 좋겠는데?”

라는 식으로 하나씩 추가했다.

그러다 보니 어느 순간 하나의 프로그램이 되어 있었다.

따라서 처음 AI 코딩을 해보는 사람이라면 돈을 결제하기 전에 아주 작은 프로그램 하나부터 만들어 보는 것이 좋다고 생각한다.

그 과정 자체가 재미있다면 그때 더 본격적으로 해도 늦지 않다.

AI 코딩의 진짜 재미는 ‘나만 쓰는 프로그램’에 있다

세상에는 이미 훌륭한 프로그램이 정말 많다.

그런데 내가 원하는 기능이 정확히 들어 있는 프로그램은 의외로 찾기 어렵다.

기존 프로그램을 사용하다 보면 늘 이런 생각이 생긴다.

“여기에 버튼 하나만 더 있으면 되는데.”

“왜 이 정보는 이렇게 작게 보여주지?”

“나는 이 기능 필요 없는데.”

“이것과 저것을 한 화면에서 볼 수 있으면 좋겠는데.”

상용 프로그램은 수많은 사람을 대상으로 만들어야 하기 때문에 한 개인의 이런 요구를 모두 반영할 수 없다.

하지만 AI로 만드는 개인 프로그램은 다르다.

사용자가 한 명이어도 된다.

그 한 명이 바로 나다.

그래서 이상할 정도로 나에게 잘 맞는 프로그램을 만들 수 있다.

Chord Explorer 역시 모든 음악가를 위한 프로그램으로 시작한 것이 아니다.

내가 건반 앞에서 필요했던 프로그램을 내가 만들어 본 것이다.

내가 만든 것은 완성품이라기보다 계속 변하는 악기다

Chord Explorer는 앞으로도 바뀔 것이다.

사용하다 보면 불편한 것이 또 발견될 것이고 새로운 아이디어도 생길 것이다.

그때 다시 AI에게 이야기하면 된다.

“여기는 이렇게 바꿔보자.”

예전의 프로그램은 개발이 끝나면 사용자는 주어진 기능에 적응해야 했다.

AI로 직접 만든 프로그램은 반대다.

프로그램이 사용자에게 계속 적응할 수 있다.

나는 이 점이 상당히 재미있다.

그리고 음악 프로그램에서는 더욱 그렇다.

신디사이저의 노브를 돌려 자기 소리를 만들듯 이제는 프로그램의 기능 자체도 자신의 연주 방식에 맞게 바꿀 수 있기 때문이다.

결국 중요한 것은 아이디어다

Chord Explorer를 만들면서 프로그래밍을 배웠다고 말하기는 어렵다.

하지만 다른 것을 배웠다.

내가 원하는 것을 막연하게 생각하는 것과 그것을 실제 기능으로 설명하는 것은 전혀 다른 일이라는 것이다.

“코드 프로그램을 만들어 줘.”

라고 말하는 것과

“내가 건반에서 코드를 치면 현재 코드를 인식하고, 전위형도 같은 코드로 판단하고, 다음 코드 후보를 보여주고, 마음에 드는 코드는 KEEP으로 모아서 PLAY로 반복할 수 있게 해줘.”

라고 말하는 것은 완전히 다르다.

두 번째 정도로 구체화되는 순간 아이디어가 프로그램의 설계가 된다.

AI는 그 설계를 실제 코드로 옮기는 일을 도와준다.

그래서 이제는 프로그램을 보면서 예전과 다른 생각을 하게 된다.

“이런 프로그램 어디 없나?”

에서 끝나는 것이 아니라,

“없으면 한번 만들어 볼까?”

라고 생각하게 된 것이다.

Chord Explorer는 그 생각으로 만든 첫 번째 결과물 중 하나다.

개발자가 아니어도 자신이 정말 필요로 하는 것이 무엇인지 알고 있다면, 이제 그것을 실제로 작동하는 프로그램으로 만들어 볼 수 있는 시대가 된 것 같다.

Google AdSense 본문 광고 자리