BUILD LOG / 005

Opusis를 만든 이유

종이 악보를 정리하는 번거로움에서 시작한 생각은 합주 중 위치를 찾는 시간을 줄이고 함께 음악에 집중하도록 돕는 제품으로 이어졌다.

처음부터 악보를 위한 제품을 만들려던 것은 아니다. 시작은 단순했다. PDF 악보를 출력해 한 장씩 파일철에 꽂는 일이 너무 번거로웠다.

종이 악보가 귀찮아서 산 iPad

2017년, 이 일을 더는 하지 않아도 되기를 바라며 iPad를 샀다. 벌써 9년 전이다.

iPad로 PDF 악보를 보기 시작하니 분명 편해졌다. 악보를 출력하지 않아도 됐고, 늘어나는 종이 악보를 파일철마다 나눠 정리할 필요도 없었다. 필요한 악보를 기기 하나에 담아 다닐 수 있다는 것만으로도 이전보다 훨씬 나았다.

하지만 막상 합창단 연습에 들어가면 또 다른 불편이 보였다.

연습은 악보에서 위치를 찾는 일의 연속이었다

잘되지 않는 부분을 되풀이해 연습할 때마다 마디 번호를 찾았다. 지휘자가 “A부터”라고 하면 A와 같은 연습기호를 찾았고, 도돌이표가 나오면 어디로 돌아가야 하는지 다시 악보를 훑었다.

종이는 화면으로 바뀌었지만 연습은 여전히 찾기의 연속이었다. 지휘자가 이미 보고 있는 곳을 단원들은 각자의 악보에서 다시 찾아야 했다. 누군가 위치를 놓치면 모두가 다시 같은 곳을 보고 노래하기까지 시간이 더 걸렸다.

그때 이런 생각을 했다.

지휘자가 보고 있는 악보의 위치를 단원 모두가 함께 볼 수 있다면 어떨까?

Opusis의 출발점은 종이 악보를 없애는 데 있지 않았다. 합창단 전체가 같은 악보의 같은 위치를 보며, 찾는 데 쓰는 시간을 줄이고 노래에 더 집중할 수 있게 하는 것이었다.

PDF만으로는 풀 수 없는 문제

PDF는 종이 악보를 화면에 옮겨 보는 데는 충분했다. 하지만 현재 위치와 악보의 구조를 파악하고, 그 위치를 여러 사람의 화면에 동시에 보여주려면 악보를 단순한 이미지나 페이지가 아니라 음악 정보로 다뤄야 했다.

여러 악보 프로그램이 주고받을 수 있고 악보의 구조를 표현할 수 있는 MusicXML이 가장 현실적인 선택이었다.

첫 프로토타입과 WebView라는 벽

바쁜 와중에도 여러 방식으로 프로토타입을 만들었다. MusicXML 악보를 화면에 표시하려고 오픈소스 라이브러리를 찾아 적용해 보기도 했다.

당시 찾은 라이브러리는 HTML5와 JavaScript를 기반으로 동작했다. 앱에서 사용하려면 WebView를 거쳐야 했다. Android WebView의 성능 문제는 다른 프로젝트를 통해 이미 알고 있었다.

실제로 악보를 렌더링해 보니 우려했던 성능 문제는 생각보다 두드러지지 않았다. 하지만 화면을 원하는 방식으로 제어하기가 어려웠다.

아이디어는 있었지만, 계속 개발할 수 있는 형태까지 만들지는 못했다. 그렇게 Opusis의 출발점이 된 생각은 오랫동안 머릿속과 여러 프로토타입 사이에 머물렀다.

그중 하나는 재생 위치에 따라 악보 위의 음표를 하이라이트하는 단순한 시도였다.

그리고 AI의 시대가 왔다

2026년, 육아휴직을 5개월쯤 남겨두고 있었다. 복직하기 전에 의미 있는 일을 해보고 싶었고, 오랫동안 머릿속에만 있던 이 아이디어가 다시 떠올랐다.

그 사이 소프트웨어를 만드는 환경도 크게 달라져 있었다. AI가 개발 방식에 빠르게 스며들던 때였다.

틈틈이 만드는 제품은 한 번 문제에 막히면 다시 시작하는 데 드는 비용이 컸다.

AI가 악보의 복잡함을 없애준 것도, 합창 연습의 문제를 저절로 이해해 제품을 완성해준 것도 아니었다. 다만 오래전에 막혔던 아이디어를 다시 꺼내 가능한 방법을 빠르게 시도하고, 실패한 접근을 버린 뒤 다음 방법으로 넘어갈 수 있는 여지를 만들어주었다.

2017년, 악보를 출력해 파일철에 꽂기 싫어 iPad를 샀던 일에서 시작한 생각은 그렇게 다시 제품의 형태를 갖추기 시작했다.

Opusis가 만들고자 하는 것은 단순히 종이 대신 화면으로 보는 악보가 아니다. 지휘자와 단원이 같은 곳을 보며, 악보에서 위치를 찾는 대신 함께 음악을 만드는 데 집중할 수 있는 연습 환경이다.

합창단에서 발견한 문제는 오케스트라와 여러 형태의 앙상블에도 이어졌다. 악보를 함께 보며 연습하는 사람이라면 누구나 같은 위치를 찾고 공유하는 데 시간을 쓰기 때문이다.

지금 Opusis에서는 이 생각이 실제 화면으로 구현돼 있다. 왼쪽은 리더(지휘자), 오른쪽은 연주자 화면이다. 리더가 악보의 한 위치로 이동하면 빨간 세로선과 하이라이트가 모든 연주자 화면의 같은 위치에 동시에 나타난다.

리더 화면과 연주자 화면에서 같은 위치가 빨간 세로선과 하이라이트로 동기화되어 표시되는 모습
왼쪽 리더 화면에서 선택한 위치가 오른쪽 연주자 화면에도 동시에 표시된다. 이미지에 포함된 악보: Canon in D, Johann Pachelbel. 악보 © 2009 Launceston Youth and Community Orchestra Inc., CC BY-SA 2.5 Australia. 원본을 Opusis에서 렌더링하고 위치 표시를 추가했으며, 음악적 내용은 변경하지 않았다.

이 화면을 구현하려면 WebView에서 막혔던 악보 렌더링 기술부터 다시 풀어야 했다. VexFlow와 OSMD를 Dart로 옮긴 과정은 다음 글에서 이어서 기록한다.

Build Log로 돌아가기 메인 허브로 돌아가기