악구 동기(1동기) 동기(2동기) 악 절
MIC Hummed Queries Digital Audio MIDI Songs Melody Database Pitch Tracker Melodic Contour Query Engine Ranked List of Matching Melodies
사용자 음악 MIDI 화일 특징 정보 추출 박자, 높이, 길이 동기 분할 및 절정 선율 추출 동기별 데이터 동기간 유사도 계산 동기별 8차원 데이터 8차원 시계열 데이터 구성 음악 MIDI 화일 동기별 유사도 행렬 첫동기선율, 절정 선율 형식 고려한 대표 선율 클러스터링 클러스터들 대표 선율 추출 대표 선율 데이터베이스 M-Tree
00 90 3C 64 78 3C 00 연주 속도(velocity) 음높이(pitch) 음길이를 대신하는 델타타임 연주 속도(velocity) 음높이(pitch) Note On을 나타내는 상태 바이트(이후 상태 바이트는 생략) 음길이를 대신하는 델타타임
76 76 72 68 64 72 68 64 69.0 66.3 67.7 72.0 72.0 60 56 52 1 7 13 19 25 31 37 43 60 56 52 63.3 61.7 60.0 1 2 3 4 5 6 7 8
j cos ( i, j ) = i i j
8 1 2 3 8 1 2 100 100 100 3 새로운 사이클 노드 99 8 100 72 2 76 99 7 4 7 98 4 4 6 5 6 5 6 5 (a) (b) (c) 1 2 8 3 1 2 8 3 7 4 6 70 5 7 한계치 = 98 4 (d) (e)
8 7 사이클 노드 81 1 2 80 99 78 3 4 1 81 80 99 2 6 80 100 3 7 92 100 8 4 66 8 100 4 99 6 2 81 57 57 100 80 1 3 6 (a) 5 57 (b) 5 92 7 한계치 = 78 5 (c)
따라서 한 클러스터 에
D d f C c A b a B D d f C c A b a B
81 1 2 1 2 1 2 8 7 80 99 3 4 8 7 80 80 100 3 4 8 7 79 57 3 4 6 (a) 5 6 (b) 5 6 (c) 5 57 1 2 1 2 79 2 8 3 8 3 8 3 100 7 4 7 4 7 4 6 5 6 5 6 한계치 = 81 (d) (e) (f)
1 2 1 2 1 5 8 7 62 68 6 88 (a) 5 3 4 95 8 7 6 94 97 5 (b) 3 4 7 94 2 97 3 99 4 (c) 94 8 6 8 7 99 1 2 94 97 73 6 5 3 4 8 7 1 2 98 6 5 3 4 1 7 92 2 88 5 97 95 99 98 4 한계치 = 73 3 92 94 8 6 (d) (e) (f)
l = (( k i= 1 m l i ) / k + ( k 1 i= 1 l i+ 1 li ) /( k 1)) / 2
p = (( k 1 i= 1 p k 1 1 pi+ 1 ) /( k 1) + ( pi+ 1 pi ) /( k 1)) / 2 i= 1
d ( u, v) su1 sv1 + + su8 sv8 2 2 = L
r = Max( d( rm, a), d( rm, b), d( rm, c),...) max
O r r(o r ) M-tree ptr(tr(o r )) O j O r r(o r ) O j
y O 6 O 2 O 5 O 4 O 7 r(o4) O 3 O 1 0 0 x O3 O4 OO 2 OO1 O5 O6 O7
y O 6 O 5 r(o5) O 2 O 4 O 7 r(o7) O5 O 7 ptr(t(o 5 )) ptr(t(o 7 )) O 3 O 8 O 1 0 0 x O5 O 2 O 3 O 1 O 4 O O 7 6 O 8
선출된 라우팅 객체들 a) 노드 분할 전 b) 노드 분할 후
최대거리 최대거리 V_CP V_CP
4 사용자 질의선율 질의 선율의 분석 MIDI 결과예상개수 질의 선율 변화 패턴 구성 8차원 시계열데이터 구성 순위 부여 K개검색결과 K-근접 검색 검색 결과 결과 음악 사용자만족도 범위 검색 M-Tree (대표 선율 색인)
* d min (T(O r )) = max{ d(o r, Q) - r(o r ), 0 } O r * d max (T(O r )) = d(o r, Q) + r(o r ) d max (T(Or)) d min (T(O r )) Q
Q r(q) O r r(o r ) d(o p,q) d(o p,o r ) O p O p d(o p,o r ) O r r(o r ) d(o p,q) Q r(q) a) d(o r, Q) >= d(o p, Q) - d(o r, O p ) > r(q) + r(o r ) b) d(o r, Q) >= d(o r, O p ) - d(o p, Q ) > r(q) + r(o r )
5 등 록 특징 정보 추출기 동기 분할기 유사도 계산기 동기 선율 클러스터링기 대표 선율 색인 등록자 대표 선율 추출기 질의 처리기 K-근접 검색 범위 검색 M-tree 엔진 악보 그리기 질 의 Query by humming Query by 및 playing MIDI 생성기 데이타 저장 음악 데이타베이스 질의자 결 과 사용자 관련 성 피드백 순위기
CPreprocessor CMidi +MakeTimeSeries() +SimComputeTime() +ComputSDM() +MakePartition() +CClustering() +GetTimeSig() +GetTimebase() +ParseMidi() +Quantitate() SDI Classes MidiSender MidiViewer MTree +Insert() +Split() +Nearest() +Range() QuerySend RSFinal CSong CStaff CBar CSymbol
정확률 (%) 120 100 80 60 40 20 0 8차원 2차원 1 2 3 4 5 6 7 8 9 10 검색 결과 수(개)
6