이 글은 ScorePlayer 시리즈의 5번째 기록입니다. (총 6개)

오늘 한 일

  • 악보 기호를 전용 폰트(Bravura)로 바꿨다. 자리표·조표·음표 머리·쉼표·꼬리·임시표·붙임점이 전부 이 폰트에서 나온다.
    • 이유: 기호가 반 칸씩 어긋나 앉는 문제의 원인이 기호 자체였다. 아래 「막힌 부분」 참고.
    • 라이선스를 먼저 확인했다. 상업적으로 쓰고 앱에 넣어 파는 것까지 되는 조건이라 채택했다.
  • 마디선을 직전 음표와 첫 음표의 한가운데로 옮기고, 마디 첫 음표에 임시표가 붙으면 그 폭까지 감안하게 했다.
  • 볼이 화면 한가운데서 튀도록 악보 배치를 다시 잡았다.
  • 빔이 음표에서 멀어지던 것, 기둥이 머리 반대편에 붙던 것, 쉼표가 음표와 겹치던 것을 고쳤다.
  • 전후 비교 그림을 만들어 무엇이 달라졌는지 눈으로 확인할 수 있게 했다.

막힌 부분

조표가 안 맞아 보이던 것과 임시표가 아래 음에 붙던 것은 원인이 같았다

임시표(♭)가 음표보다 반 칸 아래에 붙어, 다른 음에 붙은 것처럼 보였다. 조표도 네 개가 통째로 반 칸 낮아 조가 틀리게 읽혔다.

원인은 기호를 앉히는 방식이었다. 글자의 네모 상자 중앙을 줄에 맞췄는데, ♭의 기준점은 상자 중앙이 아니라 아래쪽 둥근 배다. ♯과 ♮는 위아래가 대칭이라 멀쩡했고, ♭만 어긋나 원인이 늦게 드러났다.

  • 해결: 악보 전용 폰트로 바꿨다. 이 규격은 기호마다 기준점이 “악보에서 앉는 줄”에 있어서, 그 줄의 좌표를 그대로 넘기면 제자리에 앉는다.
  • 덤: 기호를 억지로 맞추려고 두었던 눈대중 보정값 아홉 개가 통째로 사라졌다. 보정값이 많다는 건 대개 기준이 틀렸다는 신호다.

임시표가 마디 밖으로 밀려났다

마디 첫 음표에 ♯이 붙으면 그 기호가 마디선 왼쪽, 그러니까 앞 마디에 그려졌다.

마디선을 음표 자리만 보고 그었기 때문이다. 임시표는 음표보다 왼쪽에 붙으니, 음표 기준으로만 자리를 잡으면 기호가 선을 넘는다.

  • 해결: 마디선을 그을 때 첫 음표의 임시표 폭까지 빼고 계산한다.

빔이 음표에서 멀리 떠 옆 단까지 올라갔다

왼손의 8분음표 묶음에서 빔이 음표를 한참 벗어나 오른손 영역까지 올라갔다. 기둥도 그만큼 길어져 오선을 가로질렀다.

빔 자리를 묶음에서 가장 바깥에 있는 음표에 맞춰 잡았기 때문이다. 도약이 큰 묶음에서는 그 음 하나 때문에 빔 전체가 밀려난다.

  • 해결: 묶음의 평균 높이에서 출발하고, 어느 기둥도 최소 길이 밑으로 내려가지 않게 필요한 만큼만 민다.
  • 이전에 넣어 둔 “음정 폭이 넘으면 묶음을 끊는다”는 규칙과 같이 걸린다.

기둥이 머리 반대편에 붙었다

기둥은 위로 갈 때 머리 오른쪽, 아래로 갈 때 왼쪽에 붙는다. 그런데 아래로 가는 기둥이 오른쪽에 붙은 음표가 있었다.

빔 묶음은 방향을 하나로 통일해 그리는데, 기둥이 붙는 쪽은 음표가 각자 정한 방향으로 계산해 두었다. 묶음과 방향이 다른 음표만 반대편에 붙는다.

  • 해결: 붙는 쪽도 묶음 방향에서 뽑는다. 같은 값을 두 곳에서 정하면 언젠가 어긋난다.

볼을 화면 가운데 두려니 아래 단이 잘렸다

볼이 화면 중앙에서 튀기를 원했는데, 볼은 음표를 짚으므로 결국 악보를 위로 올려야 한다. 그러면 대보표의 아래 단이 화면 밖으로 나간다.

  • 해결: 오선 간격을 줄이고 위아래 여백을 확보했다. 악보가 작아지는 대신 잘리는 곳이 없다.
  • 남은 판단: 위쪽 여백이 넓어졌다. 볼을 조금 양보하고 악보를 꽉 채우는 쪽도 가능하다.

고쳤다는 말로는 전달되지 않았다

다섯 가지를 고치고 설명했지만 화면에서 무엇이 달라졌는지 알아볼 수 없었다. 고친 쪽 화면만 보여 주면 비교 대상이 없어서다.

  • 해결: 고치기 전과 후의 같은 지점을 나란히 놓은 그림을 만들어 두었다.

다음에 할 일

  • 재생 소리 붙이기
  • 가사 직접 입력과 보정 화면
  • 구간만 뽑는 기능
  • 박자표 기호와 잇단음표 표시
  • 두 단을 넘나드는 빔

Series: ScorePlayer


Suggested Posts