2026년 5월 14일 목요일

ChatGPT를 이용한 악보 그리기(Lilypond)

Lilypond를 이용하여 악보를 그리는 일은 LA TEX 으로 문서를 편집하는 일과 매우 흡사하다. 어떻게 생각하면 '코딩'과 유사한 면이 없지 아니하다.

나의 자작곡 <화장을 지우고>(유튜브 링크)의 악보를 Lilypond로 가장 마지막에 만들어 놓은 것이 벌써 2년 전이다. 엔딩의 반복 부분에 가사를 다르게 표시하는 방법을 잘 몰라서 불완전한 상태로 방치하였다가 이를 완성하기로 하고 다시 Frescobaldi를 실행하였다. Frescobaldi는 Lilypond를 위한 IDE에 해당하며, Python + Qt로 만들어져 있다.

이 프로그램은 마우스로 음표 위치와 종류를 찍어서 악보를 만드는 것이 아니다. 

  % Ending 1st time
  b2
  r8 d,8 b'8 b
  b16 c8 c16~ c2 r8 a16 b
  c8 c16 c~ c8 b16 d~ d c8. b8 a16 (g)  
  g4. r8 a8 g fis d8  \break
  e2  e8 fis16 g~ g8 a      
  g8 d8~ d4 r8 d8 g a    
  b4 a g8 a4 a8~ a2 r8 d,8 g a  \break

이것이 Lilypond 파일(.ly)의 일부이다. 텍스트 정보를 표현하는 마크다운 문서와 비슷하다는 기분이 든다. 이를 LA TEX 으로 처리하듯이 'Engraving'을 거치면 비로소 PDF 형식의 악보가 나온다. latex에 이어서 dvi2ps를 실행하듯. 

Lilypond 문법은 자주 쓰지 않으면 쉽게 기억이 나지는 않는다. 예를 들어 큐 노트(cue notes, 다른 악기의 중요한 멜로디를 작은 음표로 잠깐 보여주는 기능)을 그리려면 초보자의 경우 매뉴얼을 보고 상당히 궁리를 해야 한다. 잠시 고민을 하다가 아예 ChatGPT를 이용해 보기로 했다. '.ly' 파일 전체를 텍스트 형태로 복사해서 넣은 뒤, 원하는 방식으로 수정을 해 달라고 했다. 그랬더니 놀랍게도 잘 '컴파일'된 결과를 얻을 수 있었다.


Lilypond는 인쇄 품질 면에서는 매우 우수하지만, 대중음악용 악보를 적기에는 그렇게 친절하지는 않다. 기타(guitar)의 벤딩을 표현하거나, 슬래시를 이용하여 간략하게 표기하기에는 좋지 않다.

LibreCAD, KiCad, Lilypond. 이들은 전부 "시각 결과물"을 만들지만 본질은 구조 기술(description)을 위한 도구이다. 정해진 규칙에 따라서 정밀한 결과물을 만들어내는 용도로 쓰인다는 뜻이다. 

오랜만에 Frescobaldi를 다시 실행해 보니, 잊고 있었던 Lilypond 문법보다 먼저 떠오른 것은 이 독특한 감각이었다. 음표를 그린다기보다는 구조를 기술하고, 이를 다시 컴파일하여 결과물을 얻는 느낌. 그래서인지 나에게 Lilypond는 단순한 악보 프로그램이라기보다, 음악을 위한 또 하나의 프로그래밍 언어처럼 느껴진다.

더 늦기 전에 Fluid Ardule 케이스를 설계해야 되는데...

댓글 없음: