За търсене на подобие на песните
Н. Киров
От .ly файла получаваме редица от ноти - (софтуер ly2str или
Кирил...) с абсолютни височини на нотите
Пример: От
файла
td_134_1_11.ly
\score {
\relative
c'' {
\tempo 4 =
126
%\time 5/16
\cadenzaOn
\phrasingSlurDown
\par
{ \stdB
\parenthesize a8 \stdE }
\override
Glissando #'style = #'zigzag
\parS
d4
\acciaccatura d8 \afterGrace c2-\parenthesize^\rtoe\( { \stdB b8\)
\stdE }
d[( c])
b4.^\ltoe( a8) b4
\varA
b1\startTextSpan(~
b4 a1)\stopTextSpan
r4
\bar ""
\varB
\acciaccatura
c8\startTextSpan d4 \acciaccatura d8
\afterGrace
c2-\parenthesize^\rtoe\( { \stdB b8\) \stdE } d[( c\stopTextSpan])
\varCD
b8.\startTextSpan(
a16[ g\stopTextSpan])
a4 a1~ a2
e'4
\bar
"|."
s4 \fixB
a,, \fixC
\bar
"|."
s16 \clef
treble
\varA
a'1\startTextSpan(
g4\stopTextSpan) \bar "||"
\varB
\acciaccatura
c8\startTextSpan d4 c8[( d32 c b c] d4) c\stopTextSpan \bar "||"
\varC
b8.\startTextSpan(
a8\stopTextSpan) \bar "||"
\varD
b8.\startTextSpan(\glissando
g8\stopTextSpan)
\bar
"|."
}
получаваме файл td_134_1_11.notes
(LilyPond нотация относно c'')
a d d c b
d c b a b
b b a c d d c b d c b a g a a a e' a,, a' g c d c d c b c d c b a b g
и оттук с MIDI абсолютно кодиране на нотите (c = 72) получаваме файл td_134_1_11.codes
69 74 74 72 71
74 72 71 69 71 71
71 69 72 74 74 72 71 74 72 71 69 67 69 69 69 76 57 69 67 72 74 72 74 72
71 72 74 72 71 69 71 67
За осигуряване на независимост от гамата (височината на пеене)
пресмятаме измененията на височината (крайна разлика)
5
0 -2 -1 3 -2 -1 -2 2 0 0 -2 3 2 0 -2 -1 3 -2 -1 -2 -2 2 0 0 7 -19 12 -2
5 2 -2 2 -2 -1 1 2 -2 -1 -2 2 -4
или в таблица:
|
(0)
|
(1)
|
(2)
|
(3)
|
(4)
|
(5)
|
(6)
|
(7)
|
(8)
|
(9)
|
(10)
|
(11)
|
(12)
|
(13)
|
(14)
|
(15)
|
(16)
|
(17)
|
(18)
|
(19)
|
(20)
|
(21)
|
(22)
|
(23)
|
(24)
|
(25)
|
(26)
|
(27)
|
|
(28)
|
|
(29)
|
(30)
|
|
(31)
|
(32)
|
(33)
|
(34)
|
(35)
|
(36)
|
(37)
|
(38)
|
(39)
|
|
(40)
|
(41)
|
|
(42)
|
(43)
|
|
(I)
|
8
|
4
|
0
|
2
|
0
|
8
|
8
|
4.5
|
8
|
4
|
1~
|
4
|
1
|
4
|
0
|
4
|
0
|
2
|
0
|
8
|
8
|
8.
|
16
|
16
|
4
|
1~
|
2
|
4
|
|
??
|
|
1
|
4
|
|
0
|
4
|
8
|
32
|
32
|
32
|
32
|
4
|
4
|
|
8.
|
8
|
|
8.
|
8
|
|
(II)
|
a |
d |
d |
c |
b
|
d |
c |
b |
a |
b |
b |
b |
a |
-
|
c
|
d |
d |
c |
b
|
d |
c |
b |
a |
g |
a |
a |
a |
e'
|
|
a,, |
|
a' |
g |
|
c
|
d |
c
|
d |
c |
b |
c |
d |
c |
|
b |
a |
|
b |
g |
|
(III)
|
69 |
74 |
74 |
72 |
71 |
74 |
72 |
71 |
69 |
71 |
71 |
71 |
69 |
-
|
72 |
74 |
74 |
72 |
71 |
74 |
72 |
71 |
69 |
67 |
69 |
69 |
69 |
76 |
|
57 |
|
69 |
67 |
|
72 |
74 |
72 |
74 |
72 |
71 |
72 |
74 |
72 |
|
71 |
69 |
|
71 |
67 |
|
(IV)
|
-
|
5
|
0
|
-2
|
-1
|
3
|
-2
|
-1
|
-2
|
2
|
0
|
0
|
-2
|
|
3
|
2
|
0
|
-2
|
-1
|
3
|
-2
|
-1
|
-2
|
-2
|
-2
|
0
|
0
|
7
|
|
-19
|
|
12
|
-2
|
|
5
|
2
|
-2
|
2
|
-2
|
-1
|
1
|
2
|
-2
|
|
-1
|
-2
|
|
2
|
-4
|
|
(V)
|
и
|
Я
|
|
но
|
|
ма-
|
|
ла
|
|
мо-
|
ме
|
|
|
|
|
що
|
|
си
|
|
за-
|
|
мрък-
|
|
|
на-
|
ла
|
|
и
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(VI)
|
1/8
|
1/4
|
-
|
1/2
|
-
|
1/4
|
+
|
1/2
|
+
|
1/4
|
2 1/4
|
+
|
+
|
1/4
|
-
|
1/4
|
-
|
1/2
|
-
|
1/4
|
+
|
5/16
|
+
|
+
|
1/4
|
1 1/2
|
+
|
1/4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(V)
|
|
|
|
|
|
|
|
|
|
|
1
|
1
|
1
|
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
3,4
|
3,4
|
3,4
|
|
|
|
|
|
|
|
1
|
1
|
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
2
|
|
3
|
3
|
|
4
|
4
|
|
(I) - Продължителност на нотата - 1 означава цяла нота, 2 - половинка,
4 - четвъртинка и т.н.
(II) - Височина на нотата - LilyPond
нотация
относно c'', червени са украсителните ноти, зелени - тези в скоби и "извикване"
(III) - MIDI абсолютно кодиране на нотите (c = 72)
(IV) - Степен на повишаване или понижаване (крайна разлика):
(III)(n-1) - (III)(n)
(V) - Текст на песента
(VI) - Продължителност на изпяване на всяка сричка (абсолютни
стойности), + означава, че тази продължителност е прибавена в числото
вляво
(V) - Варианти на песента - може де се получат още няколко "песни"
Въпроси:
1. Височина на нотите (мелодия)
- когато има лигатура, една нота ли да се брои? [(10)-(11), (25)-(26)]
- да отбелязваме ли украсителните ноти? [(2), (4), (14), (16), (18)]
- за да получим съответствие на ноти и срички, как да гледаме на
легатото? [(7)-(8), ...]
- основна нота ??? []
- "вметки" като "и", да се броят ли? [(0), (27)]
- варианти на мелодията??? [(29)-(30), (31)-(39), (40)-(41), (42)-(43)]
2. Дължина на нотите (темпо??)
- без украсителни ноти [(2), (4), (14), (16), (18)]
- когато има лигатура, една нота ли да се брои? [(10)-(11), (25)-(26)]
- съответствие със срички - коя сричка на колко (продължителност) се
пее (легато)
- \fermata ???
3. Връзка - ноти и темпо
4. Дефиниране на подобни песни (като мелодия и/или ритъм)
[една песен се представя като списък (редица) от числа, или няколко
редици (низове)]
- Максималнен общ подниз
- С колко операции може да се стигне от единия до другия низ
(дефиниране на операции)
Коментар
на Л. Ласков
Предлагам следната:
Идея за търсене на подобия в песните от базата данни, разглеждани като:
(*) последователност от ноти
(*) относителните разлики между състедните тонове, които ще предствят
песента като едномерен сигнал, независим от гамата (както е
представено от Николай в
/folk/compare.thml)
-- хипотеза: основните характеристики на една мелодия (песен) се
съдържат именно относителните разлики между съседните тонове (нека
специалистите по музика да кажат своето мнение)
Представянето на песните като едномерни дискретни сигнали от
относителни разлики между съседните тонове позволяват използването на
честотни подходи (едномерна трансформация на Фурие) за търсене на
ковариации и съответно, подобия между тях.
Известно е да са правени подобни опити за търсене на подобия в:
(*) произведения от класическата музика
(*) дълги низове от символи като книги, литературни произведения