TECH 으로 돌아가기
TECH HACKER NEWS 오늘 8분 읽기 23 READS

악기 대신 코드로 음악을 배우다: 12음이 물리학에서 나오는 이유

악기 대신 코드로 음악을 배우다: 12음이 물리학에서 나오는 이유
SOURCE IMAGE · HACKER NEWS

악기를 다뤄본 적이 없어도 음악 이론은 배울 수 있다. 한 개발자는 "왜 그 음들이어야 하는가"에 대한 답을 얻지 못한 채 관습으로만 설명되는 음악 교육에 답답함을 느끼고, 자바스크립트로 음악을 처음부터 다시 유도해보기로 했다. 그 결과물은 흥미로운 관점을 제시한다. 12개의 음, 음계, 화음이 취향이나 전통이 아니라 물리학과 산술에서 필연적으로 도출된다는 것이다. 코드를 다루는 사람이라면 오히려 더 자연스럽게 이해할 수 있는 접근이다.

소리는 결국 숫자의 배열이다

출발점은 단순하다. 소리는 공기 압력이 떨리는 현상이고, 스피커는 콘을 밀고 당기며 그 떨림을 만든다. 컴퓨터가 하는 일은 콘의 위치를 초당 4만 4천 번 기술하는 숫자 목록을 만드는 것뿐이다. 오디오 파일은 그 목록을 기록해둔 것이고, 신디사이저는 실시간으로 만들어낸다. 웹 오디오 API를 쓰면 브라우저가 사인파 하나를 초당 440번 반복시키는 일을 대신해준다. 여기서 440이라는 숫자만이 유일하게 음악적 의미를 가지는데, 그마저도 누군가 'A'라고 부르기로 합의한 임의의 기준값이다. 300으로 바꿔도 아무것도 깨지지 않는다. 이 단계에는 아직 '음'이 없고 숫자만 있기 때문이다. 주파수가 곧 음높이이며, 높은 숫자가 높은 음이라는 것이 전부다.

소리를 재생하면 끝에서 '딸깍' 소리가 날 수 있는데, 이는 버그가 아니라 물리다. 파형 도중에 진동이 멈추면 콘이 이동 범위 끝에 있다가 순간적으로 되돌아가고, 압력의 급격한 점프가 곧 클릭음이다. 해결책은 시간에 따라 변하는 두 번째 숫자, 즉 음량 곡선인 '엔벨로프'다. 10밀리초에 걸쳐 서서히 커졌다가 잦아들게 하면 시험음이 비로소 들을 만한 소리가 된다. 어택을 0.5초로 늘리면 주파수는 1헤르츠도 바뀌지 않았는데도 두드리는 소리가 활로 켜는 소리로 변한다. 완전한 형태는 어택, 디케이, 서스테인, 릴리스로 이루어진 ADSR이다.

배음이 모든 것을 설명한다

사인파가 청력검사음처럼 들리는 이유는 단일 주파수뿐이기 때문이다. 반면 440Hz로 조율된 기타 줄은 절반, 3분의 1, 4분의 1로도 동시에 진동해 880, 1320, 1760Hz의 추가 주파수를 함께 낸다. 이것이 배음렬(harmonic series)이며, 기본음에 1, 2, 3, 4, 5를 곱한 값이다. 각 배음의 상대적 크기 배합이 바로 음색(timbre)이다. 같은 음이라도 이 배합이 바이올린과 트럼펫을 다르게 만든다. 브라우저가 기본 제공하는 사각파는 홀수 배음만 담아 텅 빈 전자음처럼 들리고, 톱니파는 모든 배음을 담아 거칠게 윙윙거린다. 중요한 것은 어떤 배음이 딸려오는지가 우리 선택이 아니라, 진동하는 줄과 공기 기둥의 물리로 고정된 산술이라는 점이다.

주파수를 두 배로 하면 다른 높이인데도 같은 음처럼 들린다. 서로 접촉이 없던 문화권들이 독립적으로 이 사실에 도달했고, 서양 표기법에서는 이 간격을 옥타브라 부른다. 이유 역시 배음렬에 있다. 440의 모든 배음은 이미 220의 배음렬 안에 들어 있어, 높은 음은 새로운 색이 아니라 같은 색을 더 밝게 한 것에 불과하다. 여기서 핵심 원리가 나온다. 음높이는 덧셈이 아니라 곱셈이다. 옥타브 상승은 '×2'이며, 110→220의 110Hz 차이와 880→1760의 880Hz 차이가 같은 거리로 들린다. 주파수 공간은 로그적이고, 모든 음정은 비율이다. 그래서 한 옥타브만 풀면 그 답이 가청 영역 전체에 자동으로 타일처럼 깔린다.

협화음은 귀가 규칙을 빨리 찾는 것

그렇다면 옥타브 사이를 어떻게 나눌 것인가. 균등하게 나누는 순진한 방법을 아무도 쓰지 않는 이유는, 우리가 모든 주파수 쌍을 같게 경험하지 않기 때문이다. 분수가 단순할수록 잘 어울린다. 2/1(옥타브), 3/2(5도), 4/3(4도), 5/4(장3도)까지는 화음처럼 들리지만, 16/15쯤 되면 두 음이 다투는 소리가 된다. 이 산술적 결과에는 두 가지 물리적 이유가 있다. 첫째, 220과 330(3:2)은 660과 1320을 공유해 서로 겹치며 강화되지만, 220과 311(≈√2)은 어떤 배음도 일치하지 않는다. 둘째는 맥놀이(beating)다. 두 주파수가 가깝지만 다르면 위상이 어긋나며 음량이 맥동하고, 그 속도는 정확히 두 주파수의 차이와 같다. 즉 협화음이란 귀가 반복 패턴을 빠르게 찾아내는 것이고, √2처럼 무리수는 영원히 반복되지 않아 귀가 붙잡을 패턴이 없다.

12라는 숫자의 필연성

가장 깨끗한 비율인 3/2로만 음계를 쌓으면 어떻게 될까. 5도씩 올리고 옥타브를 벗어날 때마다 절반으로 접는 피타고라스식 방법은 한동안 잘 작동한다. 그러나 220에서 12번의 5도를 거치면 220이 아니라 222.99에 도착한다. 12개의 완전5도가 7개의 완전옥타브를 1.0136배만큼 초과하는데, 이 틈이 피타고라스 콤마(약 23센트, 한 옥타브는 1200센트)다. 그리고 이것은 개발자에게 익숙한 이유로 고칠 수 없다. 3^n = 2^(n+m)이 성립하려면 3의 거듭제곱이 2의 거듭제곱과 같아야 하는데, 둘 다 소수이므로 어떤 n에서도 결코 일어나지 않는다. 옥타브도 순정이고 5도도 순정이면서 깔끔하게 닫히는 시스템은 존재한 적이 없으며, 역사상 모든 조율법은 이 오차를 어디에 버릴지에 대한 서로 다른 선택이었다.

현대의 답은 순정 비율을 완전히 포기하는 평균율이다. 옥타브를 12개의 동일한 곱셈 단계로 나누고, 옥타브를 제외한 어떤 것도 정확하지 않음을 받아들인다. 그렇다면 왜 하필 12일까. 옥타브를 n등분해 실제 3/2 5도에 가장 가까운 단계를 찾아보면 답이 나온다. 12는 5도를 오차 약 0.1% 이내로 맞추는 첫 번째 분할이며, 그 아래 어떤 수보다 세 배 이상 낫다. 24는 12에 음을 하나씩 끼운 것이라 경쟁 상대가 못 되고, 5도가 더 정확해지려면 29나 41까지 가야 하지만 옥타브당 41개 건반을 만드는 사람은 없다. 결국 12는 설득력 있는 5도를 얻는 가장 저렴한 음의 개수이며, 5도가 맞으면 4도와 3도는 자연히 따라온다. 이 글의 실무적 함의는 명확하다. 음악 시스템의 상수처럼 보이는 값들이 사실은 최적화 문제의 해이며, 코드로 직접 계산해 귀로 검증할 수 있는 대상이라는 점이다. 다만 이는 서양 12음 체계에 국한된 유도이고, 다른 음률 전통이나 음색·리듬의 표현 영역까지 설명하지는 않는다는 한계도 함께 기억할 필요가 있다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://runjs.app/blog/music-theory-for-programmers
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...