"코드 진행을 넣으면 애드립이 자동으로 나온다?" 어떻게 가능한 걸까요?
Guitar Ad-lib Trainer는 음악 이론을 알고리즘으로 변환하여, 코드 진행 위에 실제로 연주 가능한 기타 애드립을 자동 생성합니다. 이 글에서는 그 핵심 원리를 단계별로 풀어봅니다.
전체 흐름
애드립 생성은 크게 4단계로 이루어집니다:
- 스케일 음 매핑 — 프렛보드에서 연주 가능한 음 찾기
- 프레이즈 윤곽 결정 — 음이 올라갈지, 내려갈지 방향 정하기
- 리듬 패턴 생성 — 어떤 길이의 음표를 배치할지
- 음 선택 + 운지 최적화 — 코드톤 우선, 실제 손가락이 닿는 위치로
1단계: 프렛보드 위의 스케일 매핑
기타는 같은 음이 여러 위치에 존재합니다. 예를 들어 A(라) 음은 5번줄 개방, 4번줄 7프렛, 3번줄 14프렛 등 여러 곳에서 낼 수 있습니다.
알고리즘의 첫 단계는 선택된 스케일(예: Am 펜타토닉)의 모든 음을 프렛보드 위에 매핑하는 것입니다.
입력: 스케일(Am 펜타토닉), 포지션 범위(5~12프렛)
출력: [
{ 줄: 6, 프렛: 5, 음: A },
{ 줄: 6, 프렛: 8, 음: C },
{ 줄: 5, 프렛: 5, 음: D },
{ 줄: 5, 프렛: 7, 음: E },
...
]
이렇게 만든 위치 목록이 애드립에서 사용할 수 있는 "음의 팔레트"가 됩니다.
2단계: 프레이즈 윤곽 (Contour)
좋은 애드립은 음을 무작위로 나열하지 않습니다. 방향성이 있어야 합니다.
알고리즘은 마디마다 "프레이즈 윤곽"을 결정합니다:
| 윤곽 | 설명 | 느낌 |
|---|---|---|
| ascending | 점점 올라감 | 긴장감 상승 |
| descending | 점점 내려감 | 해결, 안정 |
| arch | 올라갔다 내려옴 | 자연스러운 호흡 |
| valley | 내려갔다 올라옴 | 반전, 극적 |
| arpeggio | 코드톤 순서대로 | 화성적 |
| approach | 타겟 음으로 접근 | 재즈적 |
| repeat | 패턴 반복 | 리듬감 강조 |
스타일별 윤곽 확률
연습 스타일에 따라 각 윤곽이 선택될 확률이 다릅니다:
- Simple: ascending, descending 위주 — 단순하고 예측 가능
- Melodic: arch, valley, approach 비중 높음 — 노래하는 듯한 선율
- Rhythmic: repeat, approach 위주 — 리듬 패턴 반복 강조
- Technical: ascending, descending, arpeggio — 빠른 런과 아르페지오
또한 4마디째에는 자동으로 하행(descending)이나 접근(approach)으로 전환하여, 프레이즈가 자연스럽게 마무리되는 "종지감"을 만듭니다.
3단계: 리듬 패턴 생성
멜로디만큼 중요한 것이 리듬입니다. 알고리즘은 "릭(Lick) 단위"로 리듬을 생성합니다.
릭 구조
[릭] → [호흡(쉼표)] → [릭] → [호흡] → ...
실제 기타리스트도 한 숨에 긴 음을 나열하지 않습니다. 짧은 프레이즈(릭)를 치고, 잠시 쉬고, 다시 치는 패턴을 반복합니다. 알고리즘도 이 호흡을 모방합니다.
스타일별 리듬 차이
| 스타일 | 릭 길이 | 음표 길이 | 쉼표 길이 |
|---|---|---|---|
| Simple | 2~3음 | 2박, 1박 위주 | 1박, 0.5박 |
| Melodic | 3~5음 | 1박, 0.5박, 부점 | 0.5박, 0.75박 |
| Rhythmic | 2~4음 | 0.5박, 0.25박, 부점 | 0.5박, 0.25박 |
| Technical | 4~6음 | 0.25박, 0.5박 | 0.25박, 0.5박 |
Simple은 느긋하게, Technical은 빠르고 촘촘하게 생성되는 것이죠.
모티브 반복
윤곽이 "repeat"일 때는 특별한 처리를 합니다. 2~3개 음의 짧은 모티브(동기)를 만들고, 이것을 반복합니다. 블루스 기타리스트가 같은 릭을 여러 번 반복하며 강조하는 것과 같은 효과입니다.
4단계: 코드톤 기반 음 선택
리듬과 윤곽이 정해지면, 실제로 어떤 음을 칠지 결정합니다. 이때 가장 중요한 규칙이 **"강박에는 코드톤"**입니다.
코드톤 우선 규칙
마디의 첫 박(강박)에서는 현재 코드의 구성음을 우선 선택합니다.
예시: Am 코드 위에서
- 코드톤 (우선): A(루트), C(단3도), E(완전5도)
- 스케일톤 (경과음): D, G 등은 약박에서 사용
특히 3도와 5도 같은 **색깔 있는 음(Color Tone)**을 강박에 배치하면, 코드 위에서 애드립이 화성적으로 어울리는 소리를 만들어냅니다.
Avoid Note (회피음)
반대로, 강박에서 피해야 할 음도 있습니다:
- 메이저 코드 위: 4도 (예: C코드에서 F음)
- 마이너 코드 위: b6도 (예: Am코드에서 F음)
이 음들은 코드와 반음 충돌을 일으켜 "삑사리"처럼 들립니다. 알고리즘은 강박에서 이 음들을 자동으로 회피합니다.
운지 최적화
컴퓨터가 생성한 음이 실제로 기타에서 연주 가능해야 합니다. 이를 위한 규칙들이 있습니다.
줄 범위 제한
한 마디 안에서 사용하는 줄은 앵커 줄 기준 ±1줄로 제한합니다. 실제 연주에서 한 마디 안에 1번줄에서 6번줄까지 오가는 것은 비현실적이기 때문입니다.
운지 거리 계산
음과 음 사이의 "운지 거리"를 계산하여, 손가락이 자연스럽게 이동할 수 있는 음을 우선 선택합니다:
- 같은 줄: 프렛 거리만 계산
- 인접 줄(±1): 약간의 페널티 추가
- 2줄 이상 건너뛰기: 큰 페널티 → 거의 선택하지 않음
큰 도약 후 반진행
5반음 이상의 큰 도약이 발생하면, 다음 음은 반대 방향으로 이동합니다. 이것은 음악 이론의 기본 원칙으로, 큰 도약 후 순차 진행으로 돌아와야 자연스럽게 들립니다.
슬라이드 조건
슬라이드 테크닉은 같은 줄에서 2~3프렛 이동할 때만 적용됩니다. 줄이 다르거나 프렛 거리가 너무 멀면 물리적으로 슬라이드가 불가능하기 때문입니다.
마지막 마디: 종지 처리
애드립의 마지막 마디에서는 특별한 처리를 합니다:
- 하행 진행: 음이 점점 낮아지며
- 루트 음으로 해결: 마지막 음은 키의 루트 음
이렇게 하면 애드립이 "끝났다"는 느낌을 자연스럽게 전달합니다. 마치 문장 끝에 마침표를 찍는 것과 같습니다.
실제로 들어보기
이론은 여기까지! 실제로 어떻게 들리는지는 Guitar Ad-lib Trainer에서 직접 확인해보세요.
- 코드 진행을 선택합니다
- 스타일(Simple/Melodic/Rhythmic/Technical)을 선택합니다
- 재생 버튼을 누르면 자동으로 애드립이 생성됩니다
- 악보와 TAB을 보면서 함께 연주해보세요
같은 코드 진행이라도 재생할 때마다 다른 애드립이 생성됩니다. 다양한 패턴을 들으면서 자신만의 프레이즈 아이디어를 얻어보세요!
