-
Notifications
You must be signed in to change notification settings - Fork 0
/
melobeep_regexp.txt
49 lines (40 loc) · 2.22 KB
/
melobeep_regexp.txt
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
44
45
46
47
48
49
nokia skladatel, regulární výraz pro notu:
regexr.com: (1|2|4|8|16|32)([.]?([#]?[a-g][1-3]?|[-]))
formálně: (1+2+4+8+16+32)([.]?([#]?[a-g][1-3]?+[-]))
melobeep, regulární výraz pro notu:
delka[.][.][#]ton[oktava][t]
regexr.com: (1|2|4|8|16|32)([.]{0,2}([#]?[a-h][1-3]?[t]?|[-][t]?))
formálně: (1+2+4+8+16+32)([.]{0,2}([#]?[a-h][1-3]?[t]?)+[-][t]?))
melobeep, regulární výraz pro notu i se slovem:
delka noty tecky ton triola triola a pauza
v v v v v v v v v v
regexr.com: (1|2|4|8|16|32)([.]{0,2}([#]?[a-h][1-3]?[t]?|[-][t]?))(\[[^\]]*\])?
^ ^ ^ ^ ^ ^
krizek oktava slovo v []
formálně: (1+2+4+8+16+32)(([.]?[.]?[#]?[a-h][1-3]?[t]?)+[-][t]?)(\[[^\]]*\])?
kompletní melobeep, regulární výraz pro notu i se slovem a ligaturou:
příklad: 8.#a1+2+32.t+16t+4.[ahoj ]
regexr.com: (1|2|4|8|16|32)([.]{0,2}(([#]?[a-h][1-3]?[t]?(\+(16|2|4|8|1|32)[.]{0,2}[t]?)*)|[-][t]?))(\[[^\[\]]*\])?
formálně: (1+2+4+8+16+32)([.]{0,2}(([#]?[a-h][1-3]?[t]?(\+(16+2+4+8+1+32)[.]{0,2}[t]?)*)+[-][t]?))(\[[^\[\]]*\])?
rozděleno (podle opory z IFJ, str.22, př.2.4.7):
<delka> = 1+2+4+8+16+32;
<tecka> = \.;
<krizek> = #;
<ton> = a+b+c+d+e+f+g+h;
<oktava> = 1+2+3;
<triola> = t;
<ligatura> = (\+<delka><tecka>{0,2}<triola>?);
<pauza> = -;
<slovo> = \[[^\[\]]*\];
<melobeep_note> = <delka>(<tecka>{0,2}(<krizek>?<ton><oktava>?<triola>?<ligatura>* + <pauza><triola>?))<slovo>?
4c 8..t+16+32#g3
Legato: 4c+1d 4h+4c
pozn. V části "formálně" a "rozděleno" je znak '+' je ve významu disjunkce, nikoli kvantifikátoru.
Změny:
vyhozena odmlka(*)
ligatura jen pro notu(tedy ne pro pauzy)
info:
odmlka(*) prinasi komplikace, protoze je podminena notou - vysledny regexp by znacne narostl a zbytecne se zkomplikoval
navic neni odmlka cistym prvkem jazyka, moc nesouvisi se samotnymi tony, je lepsi problem resit jinak:
- odmlku je mozno implementovat ve funkci play(), jako fade in/out
- nebo nacitat o jednu notu dopredu a v pripade dvou stejnych not za sebou(stejne frekvence) dat mezi ne odmlku