Tempo Lock · 생각의 양식
클릭이 멎은 뒤
게임은 템포를 새기는 클릭으로 시작하고, 이윽고 그 클릭이 침묵합니다. 그러면 플레이어는 소리 없는 마디를 지나는 동안 같은 템포로 계속 두드려야 합니다.
영어로 집필하고 편집했습니다. 이 한국어 판은 기계 번역으로 만들어졌으며, 정확성이 중요한 경우에는 영어 원문이 기준이 됩니다. 영어 원문 읽기 →
한 라운드의 구조
Tempo Lock의 한 라운드는 네 가지를 지정하는 목표로부터 세워집니다. 템포를 나타내는 분당 박자 수, 클릭이 울리는 마디 수, 그 뒤에 이어지는 소리 없는 마디 수, 그리고 박자표의 분자에 해당하는 마디당 박자 수입니다. 엔진은 이 필드들을 써서 첫 들리는 박부터 마지막 소리 없는 박까지 라운드 전체를 구성합니다. 템포는 클릭의 속도를 정하고, 들리는 마디는 플레이어가 메트로놈을 얼마나 오래 듣는지를 정하며, 소리 없는 마디는 클릭 없이 그 템포를 유지하는 과제를 정합니다. 마디당 박자 수는 한 마디에 몇 박이 들어가는지를 정의하며, 게임은 모든 라운드에서 이를 4, 곧 4분의 4박자로 설정합니다. 3
엔진은 채점 체계를 뒷받침하기 위해 목표로부터 여러 파생값을 계산합니다. 박 길이는 6만을 템포로 나눈 값으로 계산되며, 이는 한 박의 지속 시간을 밀리초로 나타냅니다. 전체 박 수는 들리는 마디와 소리 없는 마디의 합에 마디당 박자 수를 곱한 값으로 계산되며, 이는 플레이어가 두드려 지나야 할 박의 총수를 나타냅니다. 침묵 시작점은 들리는 마디 수에 마디당 박자 수를 곱한 값으로 계산되며, 이는 클릭이 멎는 정확한 박 번호를 가리킵니다. 이 파생값들이 라운드 전체의 수학적 토대를 이룹니다. 3
클릭과 침묵
클릭은 라운드의 템포를 세워 주는, 귀에 들리는 신호입니다. 그것은 들리는 마디 동안 목표 템포로 울리며 짧은 소리로 각 박을 새깁니다. 이 클릭은 메트로놈 구실을 합니다. 곧 일정한 간격으로 들리는 소리를 내는데, 다만 여기서는 그 간격을 플레이어가 아니라 라운드의 목표가 정합니다. 네 박의 도입 카운트가 먼저 울리고, 각 마디의 첫 박에는 더 높은 음의 클릭이 붙습니다. 음악가들은 박자에 맞춰 연주하거나 연습하려고, 꾸준한 템포와 규칙적인 박을 지키려고 메트로놈을 씁니다. 게임의 클릭은 들리는 구간 동안 바로 그 구실을 하며, 플레이어가 자기 두드림을 맞출 기준점을 제공합니다. 2
들리는 마디가 끝나면 클릭은 완전히 멎습니다. 플레이어는 더 이상 메트로놈을 듣지 못한 채 소리 없는 마디를 지나며 같은 템포로 계속 두드려야 합니다. 이 침묵이 게임의 핵심 과제를 만들어 냅니다. 플레이어는 바깥의 기준 없이 머릿속에 템포를 붙들고 있어야 하기 때문입니다. 침묵은 비어 있지 않습니다. 그것은 템포의 기억과, 그것을 지켜 내려는 플레이어의 시도로 채워져 있습니다. 점수는 나중에 플레이어가 그 침묵 동안 템포를 얼마나 잘 붙들었는지를 잽니다. 3
원시 타임스탬프와 결정론
엔진은 전적으로 밀리초 단위로 측정된 원시 두드림 타임스탬프에서 작동합니다. 각 두드림은 절대 시각값으로 기록되며, 모든 계산은 이 타임스탬프들과 목표로부터 나옵니다. 같은 두드림 타임스탬프 열은 언제나 같은 결과를 냅니다. 덕분에 엔진은 결정론적이고 시계 없이도 시험할 수 있습니다. 이 접근은 타이밍 계산에서 모호함을 걷어 내고, 같은 입력이라면 서로 다른 실행에서도 채점이 일관되도록 보장합니다. 3
엔진의 채점 함수들은 밀리초 단위의 원시 두드림 타임스탬프와 목표를 입력으로 받습니다. 이 설계 덕분에 엔진은 미리 정해 둔 타임스탬프 열로 시험할 수 있고, 게임을 실시간으로 돌리지 않고도 출력을 검증할 수 있습니다. 결정론은 라운드마다 목표 템포를 고르는 시드 기반 난수 생성기까지 이어집니다. 주어진 시드와 난이도는 언제나 같은 목표를 정하며, 그 지점부터 모든 규칙을 시험할 수 있습니다. 3
두드림에서 템포를 되찾기
엔진은 잇따른 두드림 사이 간격의 평균으로부터 템포 추정값을 되찾습니다. 두드림 사이 간격, 곧 각 두드림과 바로 앞 두드림 사이의 시간 차를 계산한 뒤, 0이거나 음수인 간격은 건너뛰고 그 평균을 냅니다. 두드림이 두 번 미만이면 템포를 아예 보고하지 않습니다. 분당 박자 수는 이 평균 간격에서 끌어내며, 플레이어가 두드린 구간 동안 유지한 템포의 척도를 줍니다. 이 함수는 목표 템포와 무관하게 작동하며, 플레이어의 실제 수행에 대한 객관적인 측정을 제공합니다. 3
되찾은 템포는 결과 화면에 목표 옆에 “Your tempo”(당신의 템포)로 표시되어, 플레이어가 의도된 속도에 얼마나 가까웠는지를 볼 수 있게 합니다. 계산은 오직 원시 타임스탬프만으로, 들리는 구간과 소리 없는 구간을 가리지 않고 기록된 모든 두드림에 걸쳐 이루어집니다. 이는 참고용으로만 보고됩니다. 점수 자체는 되찾은 템포가 아니라 어긋남에서 계산됩니다. 3
격자에서 벗어난 어긋남 재기
채점 체계는 플레이어가 소리 없는 구간 동안 두드림을 이상적인 메트로놈 격자에 가깝게 유지하는 것에 보상을 줍니다. 이상적인 격자는 플레이어의 첫 두드림에서 메트로놈이 시작해 목표 템포로 계속 갔을 때 생길 박 위치들로 이루어집니다. 각 두드림은 가장 가까운 이상적인 박 위치에 짝지어지고, 둘 사이의 차이가 그 두드림의 어긋남이 됩니다. 가장 가까운 박이 소리 없는 구간에 놓이는 두드림만 셈에 들어가며, 각 두드림이 가장 가까운 박에 짝지어지므로 어떤 두드림도 반 박을 넘게 어긋날 수 없습니다. 두드림 없이 남겨진 소리 없는 구간의 박은 모두 최악의 경우인 반 박 놓침으로 매겨져 같은 평균에 섞여 들어가므로, 박을 건너뛰면 평균 어긋남이 올라가고 점수는 내려가며, 침묵 동안 아무것도 두드리지 않은 플레이어는 0점을 받습니다. 3
이 어긋남 기반 접근은 템포를 붙드는 일을 잴 수 있는 양으로 바꿉니다. 엔진은 두드림이 어떤 창 안에 들어오는지를 그저 확인하는 것이 아니라, 이상적인 위치로부터의 정확한 편차를 잽니다. 평균 어긋남이 0인 완벽한 유지는 1000점이고, 점수는 평균 어긋남이 4분의 1 박일 때 0까지 직선으로 떨어지므로 어긋남이 작을수록 언제나 점수가 높습니다. 척도는 밀리초가 아니라 박 단위로 재므로 어떤 템포에서도 같은 뜻을 지닙니다. 분당 120박에서 4분의 1 박은 125밀리초이고, 80에서는 187.5밀리초입니다. 4분의 1 박은 또한 아무렇게나 두드렸을 때의 평균이기도 하므로, 무작위로 두드리면 사실상 아무 점수도 얻지 못합니다. 결과 화면은 평균 어긋남을 밀리초로도 알려 주고, 점수를 평가로 바꾸어 줍니다. 850점 이상은 “Locked in!”(딱 맞췄습니다!), 650점 이상은 “Tight.”(탄탄합니다.), 350점 이상은 “Wobbly.”(흔들립니다.), 그 아래는 “Lost the beat.”(박을 놓쳤습니다.)입니다. 이는 합격과 불합격의 이분법이 아니라 연속적인 수행 척도를 만들어 내어 타이밍 정확도를 섬세하게 평가할 수 있게 합니다. 3
난이도 프리셋
게임은 Easy(쉬움), Medium(보통), Hard(어려움)의 세 가지 난이도 프리셋을 제공하며, 이들은 템포 범위와 소리 없는 마디 수를 달리합니다. 모든 프리셋은 들리는 마디를 넷씩 줍니다. Easy는 분당 70에서 100박 사이의 템포를 뽑고 소리 없는 마디 넷을 요구하며, Medium은 90에서 130 사이를 뽑고 여섯을, Hard는 110에서 170 사이를 뽑고 여덟을 요구합니다. 이 프리셋들은 느긋한 템포에 짧은 침묵 구간부터 빠른 템포에 긴 침묵 유지까지, 플레이어에게 도전의 폭을 골라잡게 해 줍니다. 3
프리셋들은 엔진의 나머지 부분과 똑같은 결정론적 틀 안에서 작동합니다. 각 프리셋은 구체적인 필드 값을 지닌 목표를 정의하고, 엔진은 그 목표를 다른 어떤 목표와도 똑같이 처리합니다. 난이도는 템포와 소리 없는 마디 수의 조합에 있으며, 이는 박이 얼마나 빠르게 오는지와 클릭 없이 얼마나 오래 붙들어야 하는지를 정합니다. 채점 체계는 모든 프리셋에서 한결같이 유지되어 고른 난이도와 무관하게 이상적인 격자로부터의 어긋남을 재며, 그 척도가 박의 분수로 정해져 있으므로 같은 점수는 빠른 Hard 템포에서든 느린 Easy 템포에서든 똑같은 상대적 정밀도를 뜻합니다. 3
게임 뒤에 있는 템포
음악에서 템포는 주어진 작품의 속도 또는 빠르기이며, 분당 박자 수로 측정됩니다. 분당 60박의 템포는 1초에 한 박을 뜻하고, 분당 120박의 템포는 그 두 배로 빨라 1초에 두 박을 뜻합니다. 각 박의 음표 값은 대개 박자표의 분모가 가리키는 것입니다. 템포는 largo나 andante 같은 느린 것부터 allegro나 presto 같은 빠른 것까지 이탈리아어 표기로 나타낼 수도 있고, 구체적인 BPM을 주는 메트로놈 표시로 나타낼 수도 있습니다. 템포 표기는 빠르기뿐 아니라 분위기도 전할 수 있으며, 템포가 반드시 고정되어야 하는 것도 아닙니다. 작곡가는 곡 안에서 빨라지도록 accelerando를, 느려지도록 ritardando를 적어 넣을 수 있습니다 1. 게임은 템포라는 이 개념을 분당 박자 수로 측정되는 고정값으로 사용하며, 목표 bpm이 라운드 전체의 속도를 정합니다.
게임에서 템포는 클릭이 울리고 플레이어가 붙들어야 하는 분당 박자 수 값입니다. 그것은 라운드의 속도를 정의하는 하나의 숫자이며, 마디 수들과 나란히 목표 안에 들어 있습니다. 플레이어는 이 템포로 두드리고, 엔진은 그것을 얼마나 잘 유지하는지를 잽니다. 템포는 라운드 도중 바뀌지 않습니다. 그것은 플레이어의 수행을 평가하는, 변치 않는 기준점입니다. 3
메트로놈이라는 장치
메트로놈은 사용자가 대개 분당 박자 수로 설정할 수 있는 일정한 간격으로 클릭이나 다른 소리를 내는 장치입니다. 연주자와 가수는 꾸준한 템포와 고른 박을 지키려고 메트로놈에 맞추어 연습합니다. 전통적인 기계식 메트로놈은 추가 달린 진자를 씁니다. 막대를 따라 추를 위로 올리면 템포가 느려지고 아래로 내리면 빨라지며, 그 기구는 흔들릴 때마다 클릭 소리를 냅니다. Johann Maelzel은 1815년에 기계식 메트로놈의 특허를 얻고 1816년부터 대량 생산했는데, 이는 Dietrich Nikolaus Winkel의 앞선 태엽 구동 역진자 설계 위에 숫자로 된 템포 눈금을 더한 것이었습니다. 현대의 메트로놈은 수정 발진 전자 장치나 소프트웨어의 형태로도 나옵니다 2.
게임의 클릭은 들리는 구간 동안 메트로놈 구실을 하며 들리는 마디 동안 목표 템포를 울립니다. 그것은 플레이어가 두드림으로 맞춰야 할 일정한 간격을 제공합니다. 클릭이 멎으면 플레이어는 그 장치 없이 같은 템포를 유지해야 하며, 이는 템포를 안에서 붙들어 두는 능력을 시험합니다. 게임에서 메트로놈의 구실은 템포를 세워 준 다음 스스로 물러나, 플레이어 홀로 그 템포를 이어 가게 하는 것입니다. 3
목표와 그 필드들
목표는 각 라운드를 정의하는 중심 자료 구조입니다. 거기에는 네 개의 필드가 들어 있습니다. 분당 박자 수로 나타낸 템포, 클릭이 울리는 들리는 마디의 수, 그 뒤에 이어지는 소리 없는 마디의 수, 그리고 박자표의 분자에 해당하며 4분의 4박자에서는 4인 마디당 박자 수입니다. 이 필드들이 함께 들리는 구간의 박 수부터 소리 없는 구간의 박 수까지 라운드의 구조를 결정합니다. 3
엔진은 목표를 써서 라운드를 다스리는 모든 파생값을 계산합니다. 템포로부터 각 박의 지속 시간을 밀리초로 끌어냅니다. 마디 수들과 마디당 박자 수로부터 전체 박 수와 침묵이 시작되는 박을 끌어냅니다. 목표는 라운드 동안 고정되어 있으므로 템포와 마디 수는 내내 변하지 않습니다. 플레이어가 목표에 대응할 수 있는 길은 알맞은 템포로 두드리고 그 두드림을 이상적인 격자에 맞추는 것뿐입니다. 3
타임스탬프에서 점수까지
두드림 타임스탬프에서 최종 점수에 이르는 길은 분명한 계산 순서를 따릅니다. 먼저 게임은 각 두드림을 밀리초 타임스탬프로 기록하되, 네 박의 도입 카운트가 끝나기 반 박보다 더 앞서 이루어진 두드림은 무시합니다. 들리는 구간 동안 플레이어는 클릭에 맞춰 두드리며 템포에 대한 감각을 세웁니다. 클릭이 멎으면 플레이어는 소리 없는 마디를 지나며 계속 두드립니다. 그다음 엔진은 소리 없는 구간의 두드림마다 첫 두드림에 고정된 이상적인 메트로놈 격자로부터의 어긋남을 재고, 두드림 없이 남은 소리 없는 구간의 박을 각각 반 박 놓침으로 셈하면서 그 어긋남들의 평균을 낸 뒤, 박의 분수로 본 그 평균을 0에서 1000까지의 점수로 옮깁니다. 점수와 함께 평균 두드림 간격에서 되찾은 템포와 소리 없는 구간의 두드림 횟수도 보고합니다. 3
이 처리 과정은 전적으로 결정론적입니다. 같은 시드와 난이도가 주어지면 같은 목표가 생성됩니다. 같은 목표와 같은 두드림 타임스탬프가 주어지면 같은 점수가 계산됩니다. 엔진은 벽시계 시간이나 어떤 외부 기준에도 의존하지 않고, 오직 타임스탬프와 목표에만 의존합니다. 덕분에 이 체계는 믿을 만하면서도 시험하기 좋습니다. 모든 단계를 미리 정한 입력과 기대 출력으로 검증할 수 있기 때문입니다. 3
측정으로서의 침묵 구간
측정이 이루어지는 곳은 소리 없는 구간입니다. 들리는 구간 동안에는 클릭이 기준을 제공하므로 플레이어가 그에 맞추어 두드림을 조정할 수 있습니다. 소리 없는 구간에는 그런 기준이 없으며, 플레이어의 두드림이 그가 템포를 얼마나 잘 몸에 익혔는지를 드러냅니다. 엔진은 각 두드림을 플레이어의 첫 두드림에서 목표 템포로 뻗어 나간 이상적인 박 위치와 견주어 이 내면화를 잽니다. 두드림과 이상적인 위치 사이의 차이가 그 두드림의 어긋남입니다. 3
소리 없는 구간은 게임의 설계가 가장 뚜렷하게 드러나는 곳이기도 합니다. 클릭은 들리는 마디 동안 목표 템포를 울리다가 멎고, 플레이어는 소리 없는 마디를 지나며 같은 템포로 계속 두드려야 합니다. 소리 없는 구간의 길이는 소리 없는 마디 수와 마디당 박자 수로 정해지며, 이것이 측정 기간의 길이를 정합니다. 침묵 구간이 길수록 플레이어는 더 많은 박 동안 템포를 붙들어야 하고, 그만큼 어긋남이 쌓일 여지가 커집니다. 채점 체계는 소리 없는 구간의 모든 두드림에 대해 어긋남을 재고, 두드림 없이 남은 모든 박에 대가를 매기며, 그 전부를 평균 내어 최종 점수로 삼습니다. 그래서 긴 유지 동안 조금씩 커지는 템포 오차가 평균 어긋남을 밀어 올리고 점수를 끌어내립니다. 3
시드 기반 결정론
이 체계 전체는 시드가 주어진 난수 생성기로부터 결정론적입니다. 주어진 시드는 언제나 같은 목표를 정하며, 그 지점부터 모든 규칙을 시험할 수 있습니다. 시드는 템포를 정하는데, 그것은 고른 난이도의 범위에서 정수로 뽑힙니다. 마디 수는 난이도 프리셋 자체에서 옵니다. 시드와 난이도가 목표를 온전히 결정하므로 이들은 언제나 같은 라운드 구조를 만들어 냅니다. 이 성질은 채점에도 이어집니다. 같은 목표에 대한 같은 두드림 타임스탬프는 언제나 같은 점수를 내기 때문입니다. 3
시드 기반 결정론은 플레이어와 개발자 모두에게 이롭습니다. 플레이어에게는 라운드가 일관되고 공정하다는 뜻입니다. 같은 두드림 열은 언제나 같은 결과를 냅니다. Daily(데일리) 모드는 시드를 UTC 기준 날짜에서 끌어오므로 그날 같은 난이도로 플레이하는 모두가 같은 목표를 받으며, Practice(연습)는 라운드마다 새로운 난수 시드를 뽑습니다. 개발자에게는 미리 정한 시드와 두드림 열로 엔진을 철저히 시험할 수 있다는 뜻입니다. 결정론은 제약이 아니라, 게임의 타이밍 체계를 투명하고 믿을 만하게 만들어 주는 특징입니다. 3
Sources & notes
- "Tempo," Wikipedia, in music, tempo is the speed or pace of a given composition, measured in beats per minute (BPM): a tempo of 60 beats per minute signifies one beat per second, while a tempo of 120 beats per minute is twice as rapid, signifying two beats every second. The note value of each beat is typically the one indicated by the denominator of the time signature. Tempo may be indicated by Italian markings, from slow ones such as largo and andante (at a walking pace) to fast ones such as allegro and presto, or by a metronome mark giving a specific BPM. Tempo markings can convey mood as well as speed, and a tempo need not be fixed: a composer may write an accelerando to speed up or a ritardando to slow down within a piece. en.wikipedia.org/wiki/Tempo.
- "Metronome," Wikipedia, a device that produces an audible click or other sound at a uniform interval that can be set by the user, typically in beats per minute. Musicians use a metronome to play or practise in time, keeping a steady tempo and a regular beat. A traditional mechanical metronome uses a weighted pendulum: sliding the weight up the rod slows the tempo and sliding it down speeds it up, and the mechanism produces a click with each swing. Johann Maelzel patented a mechanical metronome in 1815 and mass-produced it from 1816, building on an earlier spring-powered, inverted-pendulum design by Dietrich Nikolaus Winkel and adding a numerical tempo scale; modern metronomes also come as quartz electronic devices and software. en.wikipedia.org/wiki/Metronome.
- Tempo Lock game engine: a pure, deterministic timing engine with no audio and no DOM. A target sets a tempo in beats per minute, a number of audible bars while a click plays, a number of silent bars to hold after it stops, and a beats-per-bar time-signature numerator (4 for 4/4). The click plays the target tempo for the audible bars, then cuts out, and the player must keep tapping the same tempo through the silent bars. The beat length in milliseconds is sixty thousand divided by the tempo; the total beat count is the audible plus silent bars times the beats per bar; and the silent phase starts at the audible bars times the beats per bar. The scoring functions take raw tap timestamps in milliseconds together with the target, so the same inputs always give the same result and the engine is testable without a clock. The tempo is recovered from the average interval between taps. Drift is the average distance of silent-phase taps from the nearest beat of an ideal grid anchored on the first tap and stepped at the target tempo; each silent-phase beat without a tap counts as a miss of half a beat, and with fewer than two taps the drift is half a beat. The score is 1000 at zero drift, falling linearly to 0 at a quarter of a beat, so the scale is relative to the tempo; the result grades are “Locked in!” at 850 or more, “Tight.” at 650 or more, “Wobbly.” at 350 or more, and “Lost the beat.” below that. Difficulty presets: Easy 70–100 BPM with 4 audible and 4 silent bars, Medium 90–130 with 4 and 6, Hard 110–170 with 4 and 8. The tempo is drawn from a seeded random number generator; Daily mode seeds it from the UTC date, Practice from a random number. Read from the game’s own source.
- Further reading on Metronome, Re-examining Czerny’s and Moscheles’s Metronome Marks for Beethoven’s Piano Sonatas. doi.org.
- Further reading on Metronome, Turn the Beat On: An Evidenced-Based Practice Journey Implementing Metronome Use in Emergency Department Cardiac Arrest . pubmed.ncbi.nlm.nih.gov.