├── demo
├── index.md
├── 3.ogg
└── logo.jpg
├── requirements.txt
├── _config.yml
├── logo.ico
├── logo.jpg
├── tools
├── hyph_en_US.dic
├── inputs
│ ├── midi
│ │ ├── somebodyThatIUsedToKnow.mid
│ │ └── somebodyThatIUsedToKnow_voice.mid
│ ├── lyrics
│ │ └── somebodyThatIUsedToKnow_lyrics.txt
│ └── musicXMLs
│ │ ├── voice-ja.xml
│ │ └── voice.xml
├── voiceTag.py
├── test.txt
├── musicxml.py
└── hyphenator.py
├── inputs
├── midi
│ ├── somebodyThatIUsedToKnow.mid
│ └── somebodyThatIUsedToKnow_voice.mid
├── lyrics
│ └── somebodyThatIUsedToKnow_lyrics.txt
└── musicXMLs
│ ├── voice.xml
│ └── voice-en.xml
├── curl.py
├── wavresample.py
├── utils.py
├── appveyor.yml
├── main.spec
├── LICENSE
├── wavsave.py
├── README.md
├── main.py
├── voice.py
└── voice.xml
/demo/index.md:
--------------------------------------------------------------------------------
1 | !
2 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | scipy
2 | requests
3 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
2 | show_downloads: true
3 |
--------------------------------------------------------------------------------
/logo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuzukiTsuru/SinsyPlus/HEAD/logo.ico
--------------------------------------------------------------------------------
/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuzukiTsuru/SinsyPlus/HEAD/logo.jpg
--------------------------------------------------------------------------------
/demo/3.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuzukiTsuru/SinsyPlus/HEAD/demo/3.ogg
--------------------------------------------------------------------------------
/demo/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuzukiTsuru/SinsyPlus/HEAD/demo/logo.jpg
--------------------------------------------------------------------------------
/tools/hyph_en_US.dic:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuzukiTsuru/SinsyPlus/HEAD/tools/hyph_en_US.dic
--------------------------------------------------------------------------------
/inputs/midi/somebodyThatIUsedToKnow.mid:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuzukiTsuru/SinsyPlus/HEAD/inputs/midi/somebodyThatIUsedToKnow.mid
--------------------------------------------------------------------------------
/inputs/midi/somebodyThatIUsedToKnow_voice.mid:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuzukiTsuru/SinsyPlus/HEAD/inputs/midi/somebodyThatIUsedToKnow_voice.mid
--------------------------------------------------------------------------------
/tools/inputs/midi/somebodyThatIUsedToKnow.mid:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuzukiTsuru/SinsyPlus/HEAD/tools/inputs/midi/somebodyThatIUsedToKnow.mid
--------------------------------------------------------------------------------
/tools/inputs/midi/somebodyThatIUsedToKnow_voice.mid:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuzukiTsuru/SinsyPlus/HEAD/tools/inputs/midi/somebodyThatIUsedToKnow_voice.mid
--------------------------------------------------------------------------------
/tools/voiceTag.py:
--------------------------------------------------------------------------------
1 | import sys
2 | sys.path.append('.')
3 | from utils import *
4 | import subprocess
5 |
6 | output = WAVS_ROOT + 'voice_' + tag() + '.wav'
7 | subprocess.Popen("cp " + LAST_VOICE_WAV + " " + output, shell=True)
--------------------------------------------------------------------------------
/curl.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 |
4 | # 下载(语言,语言名称,XML文件)
5 | def curl(lang, langstr, XML):
6 | f = os.popen("curl -X POST -F \"SPKR_LANG=" + langstr + "\" -F \"SPKR=" + lang +"\" -F 'SYNALPHA=0.55' -F 'VIBPOWER=1' -F 'F0SHIFT=0' -F \"SYNSRC=@" + XML + "\" http://sinsy.sp.nitech.ac.jp/index.php | grep \"lf0\"")
7 | textsrc = f.readlines()
8 | # print(textsrc) # Debug
9 | return textsrc
--------------------------------------------------------------------------------
/wavresample.py:
--------------------------------------------------------------------------------
1 | from scipy.io import wavfile
2 |
3 |
4 | # 读取文件
5 | def wavwrite(wavsrc):
6 | return wavsrc
7 |
8 | # 文件压缩
9 | def wavzip(wavsrc, filename, ziprate):
10 | # 读取原始文件采样率
11 | sampleRate, musicdata = wavfile.read(wavsrc)
12 | # 压缩,储存
13 | wavfile.write(filename, sampleRate // ziprate, musicdata[::5])
14 |
15 |
16 | # wavzip("test.wav", "testout.wav", 5) # debug
17 |
--------------------------------------------------------------------------------
/utils.py:
--------------------------------------------------------------------------------
1 | import time
2 | import datetime
3 | from functools import reduce
4 |
5 | VOICE_XML_ROOT_PATH = "inputs/musicXMLs/"
6 | WAVS_ROOT = "output/"
7 | LAST_VOICE_WAV = WAVS_ROOT + "voice_last_recording.wav"
8 |
9 | # 时间
10 | def tag():
11 | ts = time.time()
12 | return datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H-%M-%S')
13 |
14 |
15 | # 获取文件名称
16 | def text(src):
17 | text = reduce(lambda accum,x: accum + x, src, "")
18 | index = text.find('./temp/') + len('./temp/')
19 | text = text[index:index+40].split(".")[0]
20 | print ("Get target File:" + text)
21 | return text
22 |
--------------------------------------------------------------------------------
/tools/test.txt:
--------------------------------------------------------------------------------
1 | Now and then I think of when we were together
2 | Like when you said you felt so happy you could die
3 | Told myself that you were right for me
4 | But felt so lonely in your company
5 | But that was love and it's an ache I still remember
6 | You can get addicted to a certain kind of sadness
7 | Like resignation to the end, always the end
8 | So when we found that we could not make sense
9 | Well you said that we would still be friends
10 | But I'll admit that I was glad it was over
11 | But you didn't have to cut me off
12 | Make out like it never happened and that we were nothing
13 | And I don't even need your love
14 | But you treat me like a stranger and that feels so rough
15 | No, you didn't have to stoop so low
16 | Have your friends collect your records and then change your number
17 | I guess
--------------------------------------------------------------------------------
/inputs/lyrics/somebodyThatIUsedToKnow_lyrics.txt:
--------------------------------------------------------------------------------
1 | Now and then I think of when we were together
2 | Like when you said you felt so happy you could die
3 | Told myself that you were right for me
4 | But felt so lonely in your company
5 | But that was love and it's an ache I still remember
6 | You can get addicted to a certain kind of sadness
7 | Like resignation to the end, always the end
8 | So when we found that we could not make sense
9 | Well you said that we would still be friends
10 | But I'll admit that I was glad it was over
11 | But you didn't have to cut me off
12 | Make out like it never happened and that we were nothing
13 | And I don't even need your love
14 | But you treat me like a stranger and that feels so rough
15 | No, you didn't have to stoop so low
16 | Have your friends collect your records and then change your number
17 | I guess
--------------------------------------------------------------------------------
/tools/inputs/lyrics/somebodyThatIUsedToKnow_lyrics.txt:
--------------------------------------------------------------------------------
1 | Now and then I think of when we were together
2 | Like when you said you felt so happy you could die
3 | Told myself that you were right for me
4 | But felt so lonely in your company
5 | But that was love and it's an ache I still remember
6 | You can get addicted to a certain kind of sadness
7 | Like resignation to the end, always the end
8 | So when we found that we could not make sense
9 | Well you said that we would still be friends
10 | But I'll admit that I was glad it was over
11 | But you didn't have to cut me off
12 | Make out like it never happened and that we were nothing
13 | And I don't even need your love
14 | But you treat me like a stranger and that feels so rough
15 | No, you didn't have to stoop so low
16 | Have your friends collect your records and then change your number
17 | I guess
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | image: Visual Studio 2017
2 |
3 | platform:
4 | - x64
5 |
6 | environment:
7 | matrix:
8 | - PYTHON: "C:\\Python36-x64"
9 | PYTHON_VERSION: "3.6.8"
10 | PYTHON_ARCH: "64"
11 |
12 | init:
13 | - git config --global core.autocrlf input
14 |
15 | install:
16 | - virtualenv -p C:\\Python36-x64\\python.exe .
17 | - cd Scripts
18 | - activate
19 | - cd ..
20 | - python -m pip install --upgrade pip
21 | - pip install -r requirements.txt && pip install pyinstaller
22 |
23 | build_script:
24 | - pyinstaller -F main.spec
25 |
26 | test: off
27 |
28 | version: 0.0.{build}.Appveyor
29 |
30 | artifacts:
31 | - path: dist\*exe
32 | name: SinsyPlus-{build}
33 |
34 |
35 | deploy:
36 | - provider: GitHub
37 | auth_token:
38 | secure: s4Qh6C0lm0rZIKztCRjl69ER4IzK4voYH4O8XgMNu88/8pSW3Vb9h6kwq35UDq3V
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/main.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python -*-
2 |
3 | block_cipher = None
4 |
5 |
6 | a = Analysis(['main.py'],
7 | pathex=['C:\\Users\\GloomyGhost\\PycharmProjects\\SinsyPlus-win'],
8 | binaries=[],
9 | datas=[],
10 | hiddenimports=[],
11 | hookspath=[],
12 | runtime_hooks=[],
13 | excludes=[],
14 | win_no_prefer_redirects=False,
15 | win_private_assemblies=False,
16 | cipher=block_cipher,
17 | noarchive=False)
18 | pyz = PYZ(a.pure, a.zipped_data,
19 | cipher=block_cipher)
20 | exe = EXE(pyz,
21 | a.scripts,
22 | a.binaries,
23 | a.zipfiles,
24 | a.datas,
25 | [],
26 | name='main',
27 | debug=False,
28 | bootloader_ignore_signals=False,
29 | strip=False,
30 | upx=True,
31 | runtime_tmpdir=None,
32 | console=True,
33 | icon='logo.ico')
34 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 GloomyGhost
4 | Copyright (c) 2018 Mathias Gatti
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
--------------------------------------------------------------------------------
/wavsave.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import requests
3 |
4 |
5 | # 下载文件
6 | def downloadfile(link, filename):
7 | # 把下载地址发送给requests模块
8 | file = requests.get(link)
9 | # 下载文件
10 | with open(filename, "wb") as feed:
11 | feed.write(file.content)
12 |
13 |
14 | # 下载文件,显示进度条
15 | def download(url, file_path):
16 | # verify=False 这一句是为了有的网站证书问题,为True会报错
17 | r = requests.get(url, stream=True, verify=False)
18 |
19 | # 既然要实现下载进度,那就要知道你文件大小啊,下面这句就是得到总大小
20 | total_size = int(r.headers['Content-Length'])
21 | temp_size = 0
22 |
23 | with open(file_path, "wb+") as f:
24 | # iter_content()函数就是得到文件的内容,
25 | # 有些人下载文件很大怎么办,内存都装不下怎么办?
26 | # 那就要指定chunk_size=1024,大小自己设置,
27 | # 意思是下载一点写一点到磁盘。
28 | for chunk in r.iter_content(chunk_size=1024):
29 | if chunk:
30 | temp_size += len(chunk)
31 | f.write(chunk)
32 | f.flush()
33 | done = int(50 * temp_size / total_size)
34 | # 调用标准输出刷新命令行,看到\r回车符了吧
35 | # 相当于把每一行重新刷新一遍
36 | sys.stdout.write("\r[%s%s] %d%%" % ('#' * done, ' ' * (50 - done), 100 * temp_size / total_size))
37 | sys.stdout.flush()
38 | print() # 避免上面\r 回车符,执行完后需要换行了,不然都在一行显示
39 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # SinsyPlus
4 | Singing Voice Synthesis System based on Sinsy
5 |
6 | [](https://ci.appveyor.com/project/GloomyGhost-MosquitoCoil/sinsyplus)
7 |
8 | セパレイト (Japanese):[XML](demo/3.xml)(UST by YoshikageFuckwad)
9 |
13 |
14 | This script relies on the sinsy.jp website from the Nagoya Institute of Technology which implements a HMM-based Singing Voice Synthesis System.
15 |
16 | ```bash
17 | The HMM/DNN-Based Singing Voice Syntheis System "SinsyPlus"
18 | Version 0.0.1 (https://github.com/740291272/SinsyPlus)
19 | Copyright (C)2009-2018 Nagoya Institute of Technology
20 | Copyright (C)2017-2018 GloomyGhost
21 | All rights reserved
22 |
23 | Usage:
24 | SinsyPlus [infile] [Language]
25 | Language:
26 | Japanese:ja
27 | Chinese :ch
28 | English :en
29 | Example : sinsyplus voice.xml ja
30 |
31 | ```
32 |
33 | ## Requirements
34 | - musescore
35 | - curl
36 | - numpy
37 | - matplotlib
38 | - requests
39 | - scipy
40 | - urllib
41 |
42 | ## For Unix User
43 | You need to download curl before running.
44 | ```bash
45 | sudo apt-get install curl
46 | ```
47 | ## Reference:
48 | https://github.com/mathigatti/midi2voice
49 |
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | import os
2 | import sys
3 | from urllib import request
4 | from wavsave import *
5 | from wavresample import *
6 | from utils import *
7 | from curl import *
8 | from voice import *
9 |
10 |
11 | def usage():
12 | print("The HMM/DNN-Based Singing Voice Syntheis System \"SinsyPlus\"")
13 | print("Version 0.0.1 (https://github.com/740291272/SinsyPlus)")
14 | print("Copyright (C)2009-2018 Nagoya Institute of Technology")
15 | print("Copyright (C)2017-2018 GloomyGhost")
16 | print("All rights reserved")
17 | print()
18 | print("Usage:")
19 | print("\tSinsyPlus [infile] [Language]")
20 | print("\t\tLanguage:")
21 | print("\t\t\tJapanese:ja")
22 | print("\t\t\tChinese :ch")
23 | print("\t\t\tEnglish :en")
24 | print("\tExample : sinsyplus voice.xml ja ")
25 | os.system('pause')
26 |
27 |
28 |
29 | # 程序入口
30 | if __name__ == '__main__':
31 | if len(sys.argv) < 2:
32 | usage()
33 | else:
34 | XML = sys.argv[1] # 读取XML
35 | if len(sys.argv) < 3:
36 | lang = lang() # 读取语言
37 | else:
38 | lang = langnum(sys.argv[2])
39 | langstr = langstr(lang) # 获取语言
40 | print(langstr)
41 | print("Upload MusicXML...")
42 | fileName = text(curl(lang, langstr, XML)) # 获取文件名
43 | print("Synthesising from servers...")
44 | req = request.Request('http://sinsy.sp.nitech.ac.jp/temp/'+ fileName + ".wav")
45 | link = "http://sinsy.sp.nitech.ac.jp/temp/"+ fileName + ".wav"
46 | # Save Wav
47 | fileNameSave = fileName + ".wav"
48 | download(link, fileNameSave)
49 |
--------------------------------------------------------------------------------
/tools/musicxml.py:
--------------------------------------------------------------------------------
1 | import math
2 | from utils import *
3 | from hyphenator import Hyphenator
4 |
5 |
6 | def cleanText(text):
7 | text.replace("\n", " ")
8 | text = text.lower()
9 | symbolsToDelete = ".,'!?" + '"'
10 | for symbol in symbolsToDelete:
11 | text = text.replace(symbol, "")
12 | return text
13 |
14 |
15 | def separarEnSilabas(text):
16 | text = cleanText(text)
17 | print(text)
18 | h = Hyphenator("hyph_en_US.dic")
19 | textSyllables = h.inserted(text)
20 | print(textSyllables)
21 | return list(filter(lambda x: len(x) > 0, textSyllables.replace(" ", "-").split("-")))
22 |
23 |
24 | def addVoiceTags(tempo, text, content):
25 | output = ""
26 | tempo_xml = '\n\n'.format(tempo)
27 | lyrics_xml = '1\n\n{}\n'
28 | i = 0
29 | for line in content:
30 | if "
2 |
4 |
5 |
6 |
7 | Finale 2010 for Windows
8 | Dolet Light for Finale 2010
9 | 2011-02-28
10 |
11 |
12 |
13 |
14 |
15 |
16 | 6.9674
17 | 40
18 |
19 |
20 | 1705
21 | 1206
22 |
23 | 86
24 | 86
25 | 86
26 | 86
27 |
28 |
29 |
30 |
31 | 0
32 | 0
33 |
34 | 146
35 | 97
36 |
37 |
38 | 1.0417
39 | 5
40 | 0.944
41 | 1.4583
42 | 5
43 | 1.4583
44 | 1.0417
45 | 1.25
46 | 0.944
47 | 1.25
48 | 75
49 | 75
50 |
51 |
52 |
53 |
54 |
55 |
56 | phrase01
57 |
58 |
59 |
60 | MusicXML Part
61 |
62 | Grand Piano
63 |
64 |
65 | 1
66 | 1
67 | 80
68 | 0
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 | 57
78 | 0
79 |
80 | 230
81 |
82 |
83 |
84 | 1
85 |
86 | 0
87 | major
88 |
89 |
93 |
94 | G
95 | 2
96 |
97 |
98 |
99 |
100 |
101 | quarter
102 | 100
103 |
104 |
105 |
106 |
107 |
108 |
109 | 4
110 | 1
111 |
112 |
113 |
114 |
115 |
116 | C
117 | 4
118 |
119 | 2
120 | 1
121 | half
122 | up
123 |
124 | single
125 | ど
126 |
127 |
128 |
129 |
130 | D
131 | 4
132 |
133 | 2
134 | 1
135 | half
136 | up
137 |
138 | single
139 | れ
140 |
141 |
142 |
143 |
144 |
145 |
146 | E
147 | 4
148 |
149 | 2
150 | 1
151 | half
152 | up
153 |
154 | single
155 | み
156 |
157 |
158 |
159 |
160 | F
161 | 4
162 |
163 | 2
164 | 1
165 | half
166 | up
167 |
168 | single
169 | ふぁ
170 |
171 |
172 |
173 |
174 |
175 |
176 | G
177 | 4
178 |
179 | 2
180 | 1
181 | half
182 | up
183 |
184 | single
185 | そ
186 |
187 |
188 |
189 |
190 | A
191 | 4
192 |
193 | 2
194 | 1
195 | half
196 | up
197 |
198 | single
199 | ら
200 |
201 |
202 |
203 |
204 |
205 |
206 | 137
207 |
208 |
209 |
210 |
211 | B
212 | 4
213 |
214 | 2
215 | 1
216 | half
217 | down
218 |
219 | single
220 | し
221 |
222 |
223 |
224 |
225 | C
226 | 5
227 |
228 | 2
229 | 1
230 | half
231 | down
232 |
233 | single
234 | ど
235 |
236 |
237 |
238 |
239 |
240 |
241 | 4
242 | 1
243 |
244 |
245 | light-heavy
246 |
247 |
248 |
249 |
250 |
--------------------------------------------------------------------------------
/inputs/musicXMLs/voice.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 | Finale 2010 for Windows
8 | Dolet Light for Finale 2010
9 | 2011-02-28
10 |
11 |
12 |
13 |
14 |
15 |
16 | 6.9674
17 | 40
18 |
19 |
20 | 1705
21 | 1206
22 |
23 | 86
24 | 86
25 | 86
26 | 86
27 |
28 |
29 |
30 |
31 | 0
32 | 0
33 |
34 | 146
35 | 97
36 |
37 |
38 | 1.0417
39 | 5
40 | 0.944
41 | 1.4583
42 | 5
43 | 1.4583
44 | 1.0417
45 | 1.25
46 | 0.944
47 | 1.25
48 | 75
49 | 75
50 |
51 |
52 |
53 |
54 |
55 |
56 | phrase01
57 |
58 |
59 |
60 | MusicXML Part
61 |
62 | Grand Piano
63 |
64 |
65 | 1
66 | 1
67 | 80
68 | 0
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 | 57
78 | 0
79 |
80 | 230
81 |
82 |
83 |
84 | 1
85 |
86 | 0
87 | major
88 |
89 |
93 |
94 | G
95 | 2
96 |
97 |
98 |
99 |
100 |
101 | quarter
102 | 100
103 |
104 |
105 |
106 |
107 |
108 |
109 | 4
110 | 1
111 |
112 |
113 |
114 |
115 |
116 | C
117 | 4
118 |
119 | 2
120 | 1
121 | half
122 | up
123 |
124 | single
125 | ど
126 |
127 |
128 |
129 |
130 | D
131 | 4
132 |
133 | 2
134 | 1
135 | half
136 | up
137 |
138 | single
139 | れ
140 |
141 |
142 |
143 |
144 |
145 |
146 | E
147 | 4
148 |
149 | 2
150 | 1
151 | half
152 | up
153 |
154 | single
155 | み
156 |
157 |
158 |
159 |
160 | F
161 | 4
162 |
163 | 2
164 | 1
165 | half
166 | up
167 |
168 | single
169 | ふぁ
170 |
171 |
172 |
173 |
174 |
175 |
176 | G
177 | 4
178 |
179 | 2
180 | 1
181 | half
182 | up
183 |
184 | single
185 | そ
186 |
187 |
188 |
189 |
190 | A
191 | 4
192 |
193 | 2
194 | 1
195 | half
196 | up
197 |
198 | single
199 | ら
200 |
201 |
202 |
203 |
204 |
205 |
206 | 137
207 |
208 |
209 |
210 |
211 | B
212 | 4
213 |
214 | 2
215 | 1
216 | half
217 | down
218 |
219 | single
220 | し
221 |
222 |
223 |
224 |
225 | C
226 | 5
227 |
228 | 2
229 | 1
230 | half
231 | down
232 |
233 | single
234 | ど
235 |
236 |
237 |
238 |
239 |
240 |
241 | 4
242 | 1
243 |
244 |
245 | light-heavy
246 |
247 |
248 |
249 |
250 |
--------------------------------------------------------------------------------
/tools/inputs/musicXMLs/voice-ja.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 | Finale 2010 for Windows
8 | Dolet Light for Finale 2010
9 | 2011-02-28
10 |
11 |
12 |
13 |
14 |
15 |
16 | 6.9674
17 | 40
18 |
19 |
20 | 1705
21 | 1206
22 |
23 | 86
24 | 86
25 | 86
26 | 86
27 |
28 |
29 |
30 |
31 | 0
32 | 0
33 |
34 | 146
35 | 97
36 |
37 |
38 | 1.0417
39 | 5
40 | 0.944
41 | 1.4583
42 | 5
43 | 1.4583
44 | 1.0417
45 | 1.25
46 | 0.944
47 | 1.25
48 | 75
49 | 75
50 |
51 |
52 |
53 |
54 |
55 |
56 | phrase01
57 |
58 |
59 |
60 | MusicXML Part
61 |
62 | Grand Piano
63 |
64 |
65 | 1
66 | 1
67 | 80
68 | 0
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 | 57
78 | 0
79 |
80 | 230
81 |
82 |
83 |
84 | 1
85 |
86 | 0
87 | major
88 |
89 |
93 |
94 | G
95 | 2
96 |
97 |
98 |
99 |
100 |
101 | quarter
102 | 100
103 |
104 |
105 |
106 |
107 |
108 |
109 | 4
110 | 1
111 |
112 |
113 |
114 |
115 |
116 | C
117 | 4
118 |
119 | 2
120 | 1
121 | half
122 | up
123 |
124 | single
125 | ど
126 |
127 |
128 |
129 |
130 | D
131 | 4
132 |
133 | 2
134 | 1
135 | half
136 | up
137 |
138 | single
139 | れ
140 |
141 |
142 |
143 |
144 |
145 |
146 | E
147 | 4
148 |
149 | 2
150 | 1
151 | half
152 | up
153 |
154 | single
155 | み
156 |
157 |
158 |
159 |
160 | F
161 | 4
162 |
163 | 2
164 | 1
165 | half
166 | up
167 |
168 | single
169 | ふぁ
170 |
171 |
172 |
173 |
174 |
175 |
176 | G
177 | 4
178 |
179 | 2
180 | 1
181 | half
182 | up
183 |
184 | single
185 | そ
186 |
187 |
188 |
189 |
190 | A
191 | 4
192 |
193 | 2
194 | 1
195 | half
196 | up
197 |
198 | single
199 | ら
200 |
201 |
202 |
203 |
204 |
205 |
206 | 137
207 |
208 |
209 |
210 |
211 | B
212 | 4
213 |
214 | 2
215 | 1
216 | half
217 | down
218 |
219 | single
220 | し
221 |
222 |
223 |
224 |
225 | C
226 | 5
227 |
228 | 2
229 | 1
230 | half
231 | down
232 |
233 | single
234 | ど
235 |
236 |
237 |
238 |
239 |
240 |
241 | 4
242 | 1
243 |
244 |
245 | light-heavy
246 |
247 |
248 |
249 |
250 |
--------------------------------------------------------------------------------
/tools/hyphenator.py:
--------------------------------------------------------------------------------
1 | """
2 |
3 | This is a Pure Python module to hyphenate text.
4 |
5 | It is inspired by Ruby's Text::Hyphen, but currently reads standard *.dic files,
6 | that must be installed separately.
7 |
8 | In the future it's maybe nice if dictionaries could be distributed together with
9 | this module, in a slightly prepared form, like in Ruby's Text::Hyphen.
10 |
11 | Wilbert Berendsen, March 2008
12 | info@wilbertberendsen.nl
13 |
14 | License: LGPL.
15 |
16 | """
17 |
18 | import sys
19 | import re
20 |
21 | __all__ = ("Hyphenator")
22 |
23 | # cache of per-file Hyph_dict objects
24 | hdcache = {}
25 |
26 | # precompile some stuff
27 | parse_hex = re.compile(r'\^{2}([0-9a-f]{2})').sub
28 | parse = re.compile(r'(\d?)(\D?)').findall
29 |
30 | def hexrepl(matchObj):
31 | return unichr(int(matchObj.group(1), 16))
32 |
33 |
34 | class parse_alt(object):
35 | """
36 | Parse nonstandard hyphen pattern alternative.
37 | The instance returns a special int with data about the current position
38 | in the pattern when called with an odd value.
39 | """
40 | def __init__(self, pat, alt):
41 | alt = alt.split(',')
42 | self.change = alt[0]
43 | if len(alt) > 2:
44 | self.index = int(alt[1])
45 | self.cut = int(alt[2]) + 1
46 | else:
47 | self.index = 1
48 | self.cut = len(re.sub(r'[\d\.]', '', pat)) + 1
49 | if pat.startswith('.'):
50 | self.index += 1
51 |
52 | def __call__(self, val):
53 | self.index -= 1
54 | val = int(val)
55 | if val & 1:
56 | return dint(val, (self.change, self.index, self.cut))
57 | else:
58 | return val
59 |
60 |
61 | class dint(int):
62 | """
63 | Just an int some other data can be stuck to in a data attribute.
64 | Call with ref=other to use the data from the other dint.
65 | """
66 | def __new__(cls, value, data=None, ref=None):
67 | obj = int.__new__(cls, value)
68 | if ref and type(ref) == dint:
69 | obj.data = ref.data
70 | else:
71 | obj.data = data
72 | return obj
73 |
74 |
75 | class Hyph_dict(object):
76 | """
77 | Reads a hyph_*.dic file and stores the hyphenation patterns.
78 | Parameters:
79 | -filename : filename of hyph_*.dic to read
80 | """
81 | def __init__(self, filename):
82 | self.patterns = {}
83 | f = open(filename)
84 | charset = f.readline().strip()
85 | if charset.startswith('charset '):
86 | charset = charset[8:].strip()
87 |
88 | for pat in f:
89 | pat = (charset).strip()
90 | if not pat or pat[0] == '%': continue
91 | # replace ^^hh with the real character
92 | pat = parse_hex(hexrepl, pat)
93 | # read nonstandard hyphen alternatives
94 | if '/' in pat:
95 | pat, alt = pat.split('/', 1)
96 | factory = parse_alt(pat, alt)
97 | else:
98 | factory = int
99 | tag, value = zip(*[(s, factory(i or "0")) for i, s in parse(pat)])
100 | # if only zeros, skip this pattern
101 | if max(value) == 0: continue
102 | # chop zeros from beginning and end, and store start offset.
103 | start, end = 0, len(value)
104 | while not value[start]: start += 1
105 | while not value[end-1]: end -= 1
106 | self.patterns[''.join(tag)] = start, value[start:end]
107 | f.close()
108 | self.cache = {}
109 | self.maxlen = max(map(len, self.patterns.keys()))
110 |
111 | def positions(self, word):
112 | """
113 | Returns a list of positions where the word can be hyphenated.
114 | E.g. for the dutch word 'lettergrepen' this method returns
115 | the list [3, 6, 9].
116 |
117 | Each position is a 'data int' (dint) with a data attribute.
118 | If the data attribute is not None, it contains a tuple with
119 | information about nonstandard hyphenation at that point:
120 | (change, index, cut)
121 |
122 | change: is a string like 'ff=f', that describes how hyphenation
123 | should take place.
124 | index: where to substitute the change, counting from the current
125 | point
126 | cut: how many characters to remove while substituting the nonstandard
127 | hyphenation
128 | """
129 | word = word.lower()
130 | points = self.cache.get(word)
131 | if points is None:
132 | prepWord = '.%s.' % word
133 | res = [0] * (len(prepWord) + 1)
134 | for i in range(len(prepWord) - 1):
135 | for j in range(i + 1, min(i + self.maxlen, len(prepWord)) + 1):
136 | p = self.patterns.get(prepWord[i:j])
137 | if p:
138 | offset, value = p
139 | s = slice(i + offset, i + offset + len(value))
140 | res[s] = map(max, value, res[s])
141 |
142 | points = [dint(i - 1, ref=r) for i, r in enumerate(res) if r % 2]
143 | self.cache[word] = points
144 | return points
145 |
146 |
147 | class Hyphenator(object):
148 | """
149 | Reads a hyph_*.dic file and stores the hyphenation patterns.
150 | Provides methods to hyphenate strings in various ways.
151 | Parameters:
152 | -filename : filename of hyph_*.dic to read
153 | -left: make the first syllabe not shorter than this
154 | -right: make the last syllabe not shorter than this
155 | -cache: if true (default), use a cached copy of the dic file, if possible
156 |
157 | left and right may also later be changed:
158 | h = Hyphenator(file)
159 | h.left = 1
160 | """
161 | def __init__(self, filename, left=2, right=2, cache=True):
162 | self.left = left
163 | self.right = right
164 | if not cache or filename not in hdcache:
165 | hdcache[filename] = Hyph_dict(filename)
166 | self.hd = hdcache[filename]
167 |
168 | def positions(self, word):
169 | """
170 | Returns a list of positions where the word can be hyphenated.
171 | See also Hyph_dict.positions. The points that are too far to
172 | the left or right are removed.
173 | """
174 | right = len(word) - self.right
175 | return [i for i in self.hd.positions(word) if self.left <= i <= right]
176 |
177 | def iterate(self, word):
178 | """
179 | Iterate over all hyphenation possibilities, the longest first.
180 | """
181 | if isinstance(word, str):
182 | word = word.decode('latin1')
183 | for p in reversed(self.positions(word)):
184 | if p.data:
185 | # get the nonstandard hyphenation data
186 | change, index, cut = p.data
187 | if word.isupper():
188 | change = change.upper()
189 | c1, c2 = change.split('=')
190 | yield word[:p+index] + c1, c2 + word[p+index+cut:]
191 | else:
192 | yield word[:p], word[p:]
193 |
194 | def wrap(self, word, width, hyphen='-'):
195 | """
196 | Return the longest possible first part and the last part of the
197 | hyphenated word. The first part has the hyphen already attached.
198 | Returns None, if there is no hyphenation point before width, or
199 | if the word could not be hyphenated.
200 | """
201 | width -= len(hyphen)
202 | for w1, w2 in self.iterate(word):
203 | if len(w1) <= width:
204 | return w1 + hyphen, w2
205 |
206 | def inserted(self, word, hyphen='-'):
207 | """
208 | Returns the word as a string with all the possible hyphens inserted.
209 | E.g. for the dutch word 'lettergrepen' this method returns
210 | the string 'let-ter-gre-pen'. The hyphen string to use can be
211 | given as the second parameter, that defaults to '-'.
212 | """
213 | if isinstance(word, str):
214 | word = ('latin1')
215 | l = list(word)
216 | for p in reversed(self.positions(word)):
217 | if p.data:
218 | # get the nonstandard hyphenation data
219 | change, index, cut = p.data
220 | if word.isupper():
221 | change = change.upper()
222 | l[p + index : p + index + cut] = change.replace('=', hyphen)
223 | else:
224 | l.insert(p, hyphen)
225 | return ''.join(l)
226 |
227 | __call__ = iterate
228 |
229 |
230 | if __name__ == "__main__":
231 |
232 | dict_file = sys.argv[1]
233 | word = sys.argv[2].decode('latin1')
234 |
235 | h = Hyphenator(dict_file, left=1, right=1)
236 |
237 | for i in h(word):
238 | print (i)
239 |
240 |
--------------------------------------------------------------------------------
/inputs/musicXMLs/voice-en.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 | Finale 2011 for Windows
8 | Dolet Light for Finale 2011
9 | 2012-12-24
10 |
11 |
12 |
13 |
14 |
15 |
16 | 6.9427
17 | 40
18 |
19 |
20 | 1711
21 | 1210
22 |
23 | 86
24 | 86
25 | 86
26 | 86
27 |
28 |
29 |
30 |
31 | 0
32 | 0
33 |
34 | 146
35 | 97
36 |
37 |
38 | 1.0417
39 | 5
40 | 0.944
41 | 1.4583
42 | 5
43 | 1.4583
44 | 1.0417
45 | 1.25
46 | 0.944
47 | 1.25
48 | 75
49 | 75
50 |
51 |
52 |
53 |
54 |
55 |
56 | - 2 -
57 |
58 |
59 |
60 | MusicXML Part
61 |
62 | Grand Piano
63 |
64 |
65 | 1
66 | 1
67 | 80
68 | 0
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | 57
79 | 0
80 |
81 | 230
82 |
83 | system
84 |
85 |
86 | 4
87 |
88 | 1
89 | major
90 |
91 |
95 |
96 | G
97 | 2
98 |
99 |
100 |
101 |
102 |
103 | 8
104 | 1
105 | half
106 |
107 |
108 |
109 | 4
110 | 1
111 | quarter
112 |
113 |
114 |
115 | D
116 | 4
117 |
118 | 4
119 | 1
120 | quarter
121 | up
122 |
123 | single
124 | my
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 | G
133 | 4
134 |
135 | 4
136 | 1
137 | quarter
138 | up
139 |
140 | begin
141 | grand
142 |
143 |
144 |
145 |
146 | F
147 | 1
148 | 4
149 |
150 | 2
151 | 1
152 | eighth
153 | up
154 | begin
155 |
156 | middle
157 | fa
158 |
159 |
160 |
161 |
162 | G
163 | 4
164 |
165 | 2
166 | 1
167 | eighth
168 | up
169 | end
170 |
171 | end
172 | ther's
173 |
174 |
175 |
176 |
177 | A
178 | 4
179 |
180 | 3
181 | 1
182 | eighth
183 |
184 | up
185 |
186 | single
187 | clock
188 |
189 |
190 |
191 |
192 | 1
193 | 1
194 | 16th
195 |
196 |
197 |
198 | G
199 | 4
200 |
201 | 2
202 | 1
203 | eighth
204 | up
205 | begin
206 |
207 | single
208 | was
209 |
210 |
211 |
212 |
213 | A
214 | 4
215 |
216 | 2
217 | 1
218 | eighth
219 | up
220 | end
221 |
222 | single
223 | too
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 | B
232 | 4
233 |
234 | 4
235 | 1
236 | quarter
237 | down
238 |
239 | single
240 | large
241 |
242 |
243 |
244 |
245 | C
246 | 5
247 |
248 | 2
249 | 1
250 | eighth
251 | down
252 | begin
253 |
254 | single
255 | for
256 |
257 |
258 |
259 |
260 | B
261 | 4
262 |
263 | 2
264 | 1
265 | eighth
266 | down
267 | end
268 |
269 | single
270 | the
271 |
272 |
273 |
274 |
275 | E
276 | 4
277 |
278 | 3
279 | 1
280 | eighth
281 |
282 | up
283 |
284 | single
285 | shelf
286 |
287 |
288 |
289 |
290 | 1
291 | 1
292 | 16th
293 |
294 |
295 |
296 | A
297 | 4
298 |
299 | 2
300 | 1
301 | eighth
302 | up
303 | begin
304 |
305 | single
306 | so
307 |
308 |
309 |
310 |
311 | A
312 | 4
313 |
314 | 2
315 | 1
316 | eighth
317 | up
318 | end
319 |
320 | single
321 | it
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 | 137
330 |
331 |
332 |
333 |
334 | G
335 | 4
336 |
337 | 4
338 | 1
339 | quarter
340 | up
341 |
342 | single
343 | stood
344 |
345 |
346 |
347 |
348 | G
349 | 4
350 |
351 | 2
352 | 1
353 | eighth
354 | up
355 | begin
356 |
357 | begin
358 | nine
359 |
360 |
361 |
362 |
363 | G
364 | 4
365 |
366 | 2
367 | 1
368 | eighth
369 | up
370 | end
371 |
372 | end
373 | ty
374 |
375 |
376 |
377 |
378 | F
379 | 1
380 | 4
381 |
382 | 4
383 | 1
384 | quarter
385 | up
386 |
387 | single
388 | years
389 |
390 |
391 |
392 |
393 | E
394 | 4
395 |
396 | 2
397 | 1
398 | eighth
399 | up
400 | begin
401 |
402 | single
403 | on
404 |
405 |
406 |
407 |
408 | F
409 | 1
410 | 4
411 |
412 | 2
413 | 1
414 | eighth
415 | up
416 | end
417 |
418 | single
419 | the
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 | G
428 | 4
429 |
430 | 8
431 | 1
432 | half
433 | up
434 |
435 | single
436 | floor
437 |
438 |
439 |
440 |
441 | 4
442 | 1
443 | quarter
444 |
445 |
446 |
447 | D
448 | 4
449 |
450 | 2
451 | 1
452 | eighth
453 | up
454 | begin
455 |
456 | single
457 | it
458 |
459 |
460 |
461 |
462 | D
463 | 4
464 |
465 | 2
466 | 1
467 | eighth
468 | up
469 | end
470 |
471 | single
472 | was
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 | G
481 | 4
482 |
483 | 4
484 | 1
485 | quarter
486 | up
487 |
488 | begin
489 | tall
490 |
491 |
492 |
493 |
494 | F
495 | 1
496 | 4
497 |
498 | 2
499 | 1
500 | eighth
501 | up
502 | begin
503 |
504 | end
505 | er
506 |
507 |
508 |
509 |
510 | G
511 | 4
512 |
513 | 2
514 | 1
515 | eighth
516 | up
517 | end
518 |
519 | single
520 | by
521 |
522 |
523 |
524 |
525 | A
526 | 4
527 |
528 | 3
529 | 1
530 | eighth
531 |
532 | up
533 |
534 | single
535 | half
536 |
537 |
538 |
539 |
540 | 1
541 | 1
542 | 16th
543 |
544 |
545 |
546 | G
547 | 4
548 |
549 | 2
550 | 1
551 | eighth
552 | up
553 | begin
554 |
555 | single
556 | than
557 |
558 |
559 |
560 |
561 | A
562 | 4
563 |
564 | 2
565 | 1
566 | eighth
567 | up
568 | end
569 |
570 | single
571 | the
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 | 137
580 |
581 |
582 |
583 |
584 | B
585 | 4
586 |
587 | 4
588 | 1
589 | quarter
590 | down
591 |
592 | single
593 | old
594 |
595 |
596 |
597 |
598 | C
599 | 5
600 |
601 | 2
602 | 1
603 | eighth
604 | down
605 | begin
606 |
607 | single
608 | man
609 |
610 |
611 |
612 |
613 | B
614 | 4
615 |
616 | 2
617 | 1
618 | eighth
619 | down
620 | end
621 |
622 | begin
623 | him
624 |
625 |
626 |
627 |
628 | E
629 | 4
630 |
631 | 3
632 | 1
633 | eighth
634 |
635 | up
636 |
637 | end
638 | self
639 |
640 |
641 |
642 |
643 | 1
644 | 1
645 | 16th
646 |
647 |
648 |
649 | A
650 | 4
651 |
652 | 2
653 | 1
654 | eighth
655 | up
656 | begin
657 |
658 | single
659 | though
660 |
661 |
662 |
663 |
664 | A
665 | 4
666 |
667 | 2
668 | 1
669 | eighth
670 | up
671 | end
672 |
673 | single
674 | it
675 |
676 |
677 |
678 |
679 |
680 |
681 |
682 | G
683 | 4
684 |
685 | 4
686 | 1
687 | quarter
688 | up
689 |
690 | single
691 | weighed
692 |
693 |
694 |
695 |
696 | G
697 | 4
698 |
699 | 2
700 | 1
701 | eighth
702 | up
703 | begin
704 |
705 | single
706 | not
707 |
708 |
709 |
710 |
711 | G
712 | 4
713 |
714 | 2
715 | 1
716 | eighth
717 | up
718 | end
719 |
720 | single
721 | a
722 |
723 |
724 |
725 |
726 | F
727 | 1
728 | 4
729 |
730 | 4
731 | 1
732 | quarter
733 | up
734 |
735 | begin
736 | penny
737 |
738 |
739 |
740 |
741 | E
742 | 4
743 |
744 | 2
745 | 1
746 | eighth
747 | up
748 | begin
749 |
750 | middle
751 | wei
752 |
753 |
754 |
755 |
756 | F
757 | 1
758 | 4
759 |
760 | 2
761 | 1
762 | eighth
763 | up
764 | end
765 |
766 | end
767 | ght
768 |
769 |
770 |
771 |
772 |
773 |
774 |
775 | G
776 | 4
777 |
778 | 8
779 | 1
780 | half
781 | up
782 |
783 | single
784 | more
785 |
786 |
787 |
788 |
789 | 4
790 | 1
791 | quarter
792 |
793 |
794 |
795 | G
796 | 4
797 |
798 | 2
799 | 1
800 | eighth
801 | up
802 | begin
803 |
804 | single
805 | it
806 |
807 |
808 |
809 |
810 | B
811 | 4
812 |
813 | 2
814 | 1
815 | eighth
816 | up
817 | end
818 |
819 | single
820 | was
821 |
822 |
823 |
824 |
825 |
826 |
827 |
828 | 137
829 |
830 |
831 |
832 |
833 | D
834 | 5
835 |
836 | 4
837 | 1
838 | quarter
839 | down
840 |
841 | single
842 | bought
843 |
844 |
845 |
846 |
847 | B
848 | 4
849 |
850 | 2
851 | 1
852 | eighth
853 | up
854 | begin
855 |
856 | single
857 | on
858 |
859 |
860 |
861 |
862 | A
863 | 4
864 |
865 | 2
866 | 1
867 | eighth
868 | up
869 | end
870 |
871 | single
872 | the
873 |
874 |
875 |
876 |
877 | G
878 | 4
879 |
880 | 4
881 | 1
882 | quarter
883 | up
884 |
885 | single
886 | morn
887 |
888 |
889 |
890 |
891 | F
892 | 1
893 | 4
894 |
895 | 2
896 | 1
897 | eighth
898 | up
899 | begin
900 |
901 | single
902 | of
903 |
904 |
905 |
906 |
907 | G
908 | 4
909 |
910 | 2
911 | 1
912 | eighth
913 | up
914 | end
915 |
916 | single
917 | the
918 |
919 |
920 |
921 |
922 |
923 |
924 |
925 | A
926 | 4
927 |
928 | 2
929 | 1
930 | eighth
931 | up
932 | begin
933 |
934 | single
935 | day
936 |
937 |
938 |
939 |
940 | G
941 | 4
942 |
943 | 2
944 | 1
945 | eighth
946 | up
947 | continue
948 |
949 | single
950 | that
951 |
952 |
953 |
954 |
955 | F
956 | 1
957 | 4
958 |
959 | 2
960 | 1
961 | eighth
962 | up
963 | continue
964 |
965 | single
966 | he
967 |
968 |
969 |
970 |
971 | E
972 | 4
973 |
974 | 2
975 | 1
976 | eighth
977 | up
978 | end
979 |
980 | single
981 | was
982 |
983 |
984 |
985 |
986 | D
987 | 4
988 |
989 | 3
990 | 1
991 | eighth
992 |
993 | up
994 |
995 | single
996 | born
997 |
998 |
999 |
1000 |
1001 | 1
1002 | 1
1003 | 16th
1004 |
1005 |
1006 |
1007 | G
1008 | 4
1009 |
1010 | 2
1011 | 1
1012 | eighth
1013 | up
1014 | begin
1015 |
1016 | single
1017 | and
1018 |
1019 |
1020 |
1021 |
1022 | B
1023 | 4
1024 |
1025 | 2
1026 | 1
1027 | eighth
1028 | up
1029 | end
1030 |
1031 | single
1032 | was
1033 |
1034 |
1035 |
1036 |
1037 |
1038 |
1039 |
1040 | D
1041 | 5
1042 |
1043 | 4
1044 | 1
1045 | quarter
1046 | down
1047 |
1048 | begin
1049 | al
1050 |
1051 |
1052 |
1053 |
1054 | B
1055 | 4
1056 |
1057 | 2
1058 | 1
1059 | eighth
1060 | up
1061 | begin
1062 |
1063 | end
1064 | ways
1065 |
1066 |
1067 |
1068 |
1069 | A
1070 | 4
1071 |
1072 | 2
1073 | 1
1074 | eighth
1075 | up
1076 | end
1077 |
1078 | single
1079 | his
1080 |
1081 |
1082 |
1083 |
1084 | G
1085 | 4
1086 |
1087 | 4
1088 | 1
1089 | quarter
1090 | up
1091 |
1092 | begin
1093 | trea
1094 |
1095 |
1096 |
1097 |
1098 | F
1099 | 1
1100 | 4
1101 |
1102 | 2
1103 | 1
1104 | eighth
1105 | up
1106 | begin
1107 |
1108 | end
1109 | sure
1110 |
1111 |
1112 |
1113 |
1114 | G
1115 | 4
1116 |
1117 | 2
1118 | 1
1119 | eighth
1120 | up
1121 | end
1122 |
1123 | single
1124 | and
1125 |
1126 |
1127 |
1128 |
1129 |
1130 |
1131 |
1132 | 137
1133 |
1134 |
1135 |
1136 |
1137 | A
1138 | 4
1139 |
1140 | 8
1141 | 1
1142 | half
1143 | up
1144 |
1145 | single
1146 | pride
1147 |
1148 |
1149 |
1150 |
1151 | 4
1152 | 1
1153 | quarter
1154 |
1155 |
1156 |
1157 | D
1158 | 4
1159 |
1160 | 2
1161 | 1
1162 | eighth
1163 | up
1164 | begin
1165 |
1166 | single
1167 | but
1168 |
1169 |
1170 |
1171 |
1172 | D
1173 | 4
1174 |
1175 | 2
1176 | 1
1177 | eighth
1178 | up
1179 | end
1180 |
1181 | single
1182 | it
1183 |
1184 |
1185 |
1186 |
1187 |
1188 |
1189 |
1190 | G
1191 | 4
1192 |
1193 | 4
1194 | 1
1195 | quarter
1196 | up
1197 |
1198 | single
1199 | stopped
1200 |
1201 |
1202 |
1203 |
1204 | 4
1205 | 1
1206 | quarter
1207 |
1208 |
1209 |
1210 | A
1211 | 4
1212 |
1213 | 4
1214 | 1
1215 | quarter
1216 | up
1217 |
1218 | single
1219 | short
1220 |
1221 |
1222 |
1223 |
1224 | 4
1225 | 1
1226 | quarter
1227 |
1228 |
1229 |
1230 |
1231 |
1232 |
1233 | B
1234 | 4
1235 |
1236 | 2
1237 | 1
1238 | eighth
1239 | down
1240 | begin
1241 |
1242 | single
1243 | never
1244 |
1245 |
1246 |
1247 |
1248 | B
1249 | 4
1250 |
1251 | 2
1252 | 1
1253 | eighth
1254 | down
1255 | continue
1256 |
1257 | single
1258 | to
1259 |
1260 |
1261 |
1262 |
1263 | C
1264 | 5
1265 |
1266 | 2
1267 | 1
1268 | eighth
1269 | down
1270 | continue
1271 |
1272 | single
1273 | go
1274 |
1275 |
1276 |
1277 |
1278 | B
1279 | 4
1280 |
1281 | 2
1282 | 1
1283 | eighth
1284 | down
1285 | end
1286 |
1287 | begin
1288 | a
1289 |
1290 |
1291 |
1292 |
1293 | E
1294 | 4
1295 |
1296 | 3
1297 | 1
1298 | eighth
1299 |
1300 | up
1301 |
1302 | end
1303 | gain
1304 |
1305 |
1306 |
1307 |
1308 | 1
1309 | 1
1310 | 16th
1311 |
1312 |
1313 |
1314 | A
1315 | 4
1316 |
1317 | 2
1318 | 1
1319 | eighth
1320 | up
1321 | begin
1322 |
1323 | single
1324 | when
1325 |
1326 |
1327 |
1328 |
1329 | A
1330 | 4
1331 |
1332 | 2
1333 | 1
1334 | eighth
1335 | up
1336 | end
1337 |
1338 | single
1339 | the
1340 |
1341 |
1342 |
1343 |
1344 |
1345 |
1346 |
1347 | 137
1348 |
1349 |
1350 |
1351 |
1352 | G
1353 | 4
1354 |
1355 | 8
1356 | 1
1357 | half
1358 | up
1359 |
1360 | single
1361 | old
1362 |
1363 |
1364 |
1365 |
1366 | F
1367 | 1
1368 | 4
1369 |
1370 | 8
1371 | 1
1372 | half
1373 | up
1374 |
1375 | single
1376 | man
1377 |
1378 |
1379 |
1380 |
1381 |
1382 |
1383 |
1384 | G
1385 | 4
1386 |
1387 | 8
1388 | 1
1389 | half
1390 | up
1391 |
1392 | single
1393 | died
1394 |
1395 |
1396 |
1397 |
1398 | 4
1399 | 1
1400 | quarter
1401 |
1402 |
1403 |
1404 | D
1405 | 4
1406 |
1407 | 2
1408 | 1
1409 | eighth
1410 | up
1411 | begin
1412 |
1413 | begin
1414 | nine
1415 |
1416 |
1417 |
1418 |
1419 | D
1420 | 4
1421 |
1422 | 2
1423 | 1
1424 | eighth
1425 | up
1426 | end
1427 |
1428 | end
1429 | ty
1430 |
1431 |
1432 |
1433 |
1434 |
1435 |
1436 |
1437 | G
1438 | 4
1439 |
1440 | 4
1441 | 1
1442 | quarter
1443 | up
1444 |
1445 | single
1446 | years
1447 |
1448 |
1449 |
1450 |
1451 | D
1452 | 4
1453 |
1454 | 2
1455 | 1
1456 | eighth
1457 | up
1458 | begin
1459 |
1460 | begin
1461 | with
1462 |
1463 |
1464 |
1465 |
1466 | D
1467 | 4
1468 |
1469 | 2
1470 | 1
1471 | eighth
1472 | up
1473 | end
1474 |
1475 | end
1476 | out
1477 |
1478 |
1479 |
1480 |
1481 | E
1482 | 4
1483 |
1484 | 2
1485 | 1
1486 | eighth
1487 | up
1488 | begin
1489 |
1490 | begin
1491 | slum
1492 |
1493 |
1494 |
1495 |
1496 | D
1497 | 4
1498 |
1499 | 2
1500 | 1
1501 | eighth
1502 | up
1503 | end
1504 |
1505 | middle
1506 | be
1507 |
1508 |
1509 |
1510 |
1511 | D
1512 | 4
1513 |
1514 | 4
1515 | 1
1516 | quarter
1517 | up
1518 |
1519 | end
1520 | ring
1521 |
1522 |
1523 |
1524 |
1525 |
1526 |
1527 |
1528 | 137
1529 |
1530 |
1531 |
1532 |
1533 | B
1534 | 3
1535 |
1536 | 2
1537 | 1
1538 | eighth
1539 | up
1540 | begin
1541 |
1542 |
1543 |
1544 |
1545 |
1546 |
1547 | single
1548 | tick
1549 |
1550 |
1551 |
1552 |
1553 | 2
1554 | 1
1555 | eighth
1556 |
1557 |
1558 |
1559 | D
1560 | 4
1561 |
1562 | 2
1563 | 1
1564 | eighth
1565 | up
1566 | end
1567 |
1568 |
1569 |
1570 |
1571 |
1572 |
1573 | single
1574 | tock
1575 |
1576 |
1577 |
1578 |
1579 | 2
1580 | 1
1581 | eighth
1582 |
1583 |
1584 |
1585 | B
1586 | 3
1587 |
1588 | 2
1589 | 1
1590 | eighth
1591 | up
1592 | begin
1593 |
1594 |
1595 |
1596 |
1597 |
1598 |
1599 | single
1600 | tick
1601 |
1602 |
1603 |
1604 |
1605 | 2
1606 | 1
1607 | eighth
1608 |
1609 |
1610 |
1611 | D
1612 | 4
1613 |
1614 | 2
1615 | 1
1616 | eighth
1617 | up
1618 | continue
1619 |
1620 |
1621 |
1622 |
1623 |
1624 |
1625 | single
1626 | tock
1627 |
1628 |
1629 |
1630 |
1631 | D
1632 | 4
1633 |
1634 | 2
1635 | 1
1636 | eighth
1637 | up
1638 | end
1639 |
1640 | single
1641 | his
1642 |
1643 |
1644 |
1645 |
1646 |
1647 |
1648 |
1649 | G
1650 | 4
1651 |
1652 | 4
1653 | 1
1654 | quarter
1655 | up
1656 |
1657 | single
1658 | life
1659 |
1660 |
1661 |
1662 |
1663 | D
1664 | 4
1665 |
1666 | 2
1667 | 1
1668 | eighth
1669 | up
1670 | begin
1671 |
1672 | begin
1673 | se
1674 |
1675 |
1676 |
1677 |
1678 | D
1679 | 4
1680 |
1681 | 2
1682 | 1
1683 | eighth
1684 | up
1685 | end
1686 |
1687 | end
1688 | conds
1689 |
1690 |
1691 |
1692 |
1693 | E
1694 | 4
1695 |
1696 | 2
1697 | 1
1698 | eighth
1699 | up
1700 | begin
1701 |
1702 | begin
1703 | num
1704 |
1705 |
1706 |
1707 |
1708 | D
1709 | 4
1710 |
1711 | 2
1712 | 1
1713 | eighth
1714 | up
1715 | end
1716 |
1717 | middle
1718 | be
1719 |
1720 |
1721 |
1722 |
1723 | D
1724 | 4
1725 |
1726 | 4
1727 | 1
1728 | quarter
1729 | up
1730 |
1731 | end
1732 | ring
1733 |
1734 |
1735 |
1736 |
1737 |
1738 |
1739 |
1740 | B
1741 | 3
1742 |
1743 | 2
1744 | 1
1745 | eighth
1746 | up
1747 | begin
1748 |
1749 |
1750 |
1751 |
1752 |
1753 |
1754 | single
1755 | tick
1756 |
1757 |
1758 |
1759 |
1760 | 2
1761 | 1
1762 | eighth
1763 |
1764 |
1765 |
1766 | D
1767 | 4
1768 |
1769 | 2
1770 | 1
1771 | eighth
1772 | up
1773 | end
1774 |
1775 |
1776 |
1777 |
1778 |
1779 |
1780 | single
1781 | tock
1782 |
1783 |
1784 |
1785 |
1786 | 2
1787 | 1
1788 | eighth
1789 |
1790 |
1791 |
1792 | B
1793 | 3
1794 |
1795 | 2
1796 | 1
1797 | eighth
1798 | up
1799 | begin
1800 |
1801 |
1802 |
1803 |
1804 |
1805 |
1806 | single
1807 | tick
1808 |
1809 |
1810 |
1811 |
1812 | 2
1813 | 1
1814 | eighth
1815 |
1816 |
1817 |
1818 | D
1819 | 4
1820 |
1821 | 2
1822 | 1
1823 | eighth
1824 | up
1825 | continue
1826 |
1827 |
1828 |
1829 |
1830 |
1831 |
1832 | single
1833 | tock
1834 |
1835 |
1836 |
1837 |
1838 | D
1839 | 4
1840 |
1841 | 2
1842 | 1
1843 | eighth
1844 | up
1845 | end
1846 |
1847 | single
1848 | it
1849 |
1850 |
1851 |
1852 |
1853 |
1854 |
1855 |
1856 |
1857 | G
1858 | 4
1859 |
1860 | 4
1861 | 1
1862 | quarter
1863 | up
1864 |
1865 | single
1866 | stopped
1867 |
1868 |
1869 |
1870 |
1871 | 4
1872 | 1
1873 | quarter
1874 |
1875 |
1876 |
1877 | A
1878 | 4
1879 |
1880 | 4
1881 | 1
1882 | quarter
1883 | up
1884 |
1885 | single
1886 | short
1887 |
1888 |
1889 |
1890 |
1891 | 4
1892 | 1
1893 | quarter
1894 |
1895 |
1896 |
1897 |
1898 |
1899 |
1900 | B
1901 | 4
1902 |
1903 | 2
1904 | 1
1905 | eighth
1906 | down
1907 | begin
1908 |
1909 | single
1910 | never
1911 |
1912 |
1913 |
1914 |
1915 | B
1916 | 4
1917 |
1918 | 2
1919 | 1
1920 | eighth
1921 | down
1922 | continue
1923 |
1924 | single
1925 | to
1926 |
1927 |
1928 |
1929 |
1930 | C
1931 | 5
1932 |
1933 | 2
1934 | 1
1935 | eighth
1936 | down
1937 | continue
1938 |
1939 | single
1940 | go
1941 |
1942 |
1943 |
1944 |
1945 | B
1946 | 4
1947 |
1948 | 2
1949 | 1
1950 | eighth
1951 | down
1952 | end
1953 |
1954 | begin
1955 | a
1956 |
1957 |
1958 |
1959 |
1960 | E
1961 | 4
1962 |
1963 | 3
1964 | 1
1965 | eighth
1966 |
1967 | up
1968 |
1969 | end
1970 | gain
1971 |
1972 |
1973 |
1974 |
1975 | 1
1976 | 1
1977 | 16th
1978 |
1979 |
1980 |
1981 | A
1982 | 4
1983 |
1984 | 2
1985 | 1
1986 | eighth
1987 | up
1988 | begin
1989 |
1990 | single
1991 | when
1992 |
1993 |
1994 |
1995 |
1996 | A
1997 | 4
1998 |
1999 | 2
2000 | 1
2001 | eighth
2002 | up
2003 | end
2004 |
2005 | single
2006 | the
2007 |
2008 |
2009 |
2010 |
2011 |
2012 |
2013 |
2014 | G
2015 | 4
2016 |
2017 | 8
2018 | 1
2019 | half
2020 | up
2021 |
2022 | single
2023 | old
2024 |
2025 |
2026 |
2027 |
2028 | F
2029 | 1
2030 | 4
2031 |
2032 | 8
2033 | 1
2034 | half
2035 | up
2036 |
2037 | single
2038 | man
2039 |
2040 |
2041 |
2042 |
2043 |
2044 |
2045 |
2046 | G
2047 | 4
2048 |
2049 | 12
2050 | 1
2051 | half
2052 |
2053 | up
2054 |
2055 | single
2056 | died
2057 |
2058 |
2059 |
2060 |
2061 | 4
2062 | 1
2063 | quarter
2064 |
2065 |
2066 | light-heavy
2067 |
2068 |
2069 |
2070 |
2071 |
2072 |
--------------------------------------------------------------------------------
/tools/inputs/musicXMLs/voice.xml:
--------------------------------------------------------------------------------
1 | MuseScore 2.3.12018-07-167.05556401683.781190.5556.692956.692956.6929113.38656.692956.692956.6929113.386OboeOb.Oboe16978.74020
2 |
3 | 0.00-0.0070.0041G2quarter1201611
4 |
5 | n
6 |
7 |
8 | 1611
9 |
10 | o
11 |
12 |
13 | 1611
14 |
15 | w
16 |
17 |
18 | 1611
19 |
20 |
21 |
22 |
23 | 1611
24 |
25 | a
26 |
27 |
28 | 1611
29 |
30 | n
31 |
32 |
33 | 1611
34 |
35 | d
36 |
37 |
38 | 1611
39 |
40 |
41 |
42 |
43 | 1611
44 |
45 | t
46 |
47 |
48 | 1611
49 |
50 | h
51 |
52 |
53 | 1611
54 |
55 | e
56 |
57 |
58 | 1611
59 |
60 | n
61 |
62 |
63 | 1611
64 |
65 |
66 |
67 |
68 | 1611
69 |
70 | i
71 |
72 |
73 | 41quarter1
74 |
75 |
76 | A421eighthupbegin1
77 |
78 | t
79 | A421eighthupend1
80 |
81 | h
82 | G421eighthupbegin1
83 |
84 | i
85 | G421eighthupcontinue1
86 |
87 | n
88 | G421eighthupcontinue1
89 |
90 | k
91 | G421eighthupend1
92 |
93 |
94 |
95 |
96 | 0.000.00126.71C541quarterdown1
97 |
98 | o
99 | G441quarterup1
100 |
101 | f
102 | F441quarternaturalup1
103 |
104 |
105 | E421eighthupbegin1
106 |
107 | w
108 | E421eighthupend1
109 |
110 | h
111 |
112 |
113 | D4121halfup1
114 |
115 | e
116 | 41quarter1
117 |
118 | n
119 |
120 |
121 | 1611
122 |
123 |
124 |
125 |
126 | 21eighth1
127 |
128 | w
129 | A421eighthupbegin1
130 |
131 | e
132 | A421eighthupcontinue1
133 |
134 |
135 | A421eighthupend1
136 |
137 | w
138 | G421eighthupbegin1
139 |
140 | e
141 | G421eighthupcontinue1
142 |
143 | r
144 | G421eighthupcontinue1
145 |
146 | e
147 | G421eighthupend1
148 |
149 |
150 |
151 |
152 | C541quarterdown1
153 |
154 | t
155 | A421eighthupbegin1
156 |
157 | o
158 | G421eighthupend1
159 |
160 | g
161 | G441quarterup1
162 |
163 | e
164 | G421eighthupbegin1
165 |
166 | t
167 | A421eighthupend1
168 |
169 | h
170 |
171 |
172 | A4161whole1
173 |
174 | e
175 |
176 |
177 | 1611
178 |
179 | r
180 |
181 |
182 | 21eighth1
183 |
184 |
185 |
186 | A421eighthupbegin1
187 |
188 | l
189 | A421eighthupcontinue1
190 |
191 | i
192 | A421eighthupend1
193 |
194 | k
195 | G421eighthupbegin1
196 |
197 | e
198 | G421eighthupcontinue1
199 |
200 |
201 | G421eighthupcontinue1
202 |
203 | w
204 | G421eighthupend1
205 |
206 | h
207 |
208 |
209 | C541quarterdown1
210 |
211 | e
212 | A441quarterup1
213 |
214 | n
215 | G441quarterup1
216 |
217 |
218 | 41quarter1
219 |
220 | y
221 |
222 |
223 | 0.000.00126.7121eighth1
224 |
225 | o
226 | F421eighthnaturalupbegin1
227 |
228 | u
229 | F421eighthupcontinue1
230 |
231 |
232 | F421eighthupend1
233 |
234 | s
235 | G421eighthupbegin1
236 |
237 | a
238 | F421eighthupcontinue1
239 |
240 | i
241 | E421eighthupcontinue1
242 |
243 | d
244 | F421eighthupend1
245 |
246 |
247 |
248 |
249 | E441quarterup1
250 |
251 | y
252 | D421eighthupbegin1
253 |
254 | o
255 | D421eighthupend1
256 |
257 | u
258 | D441quarterup1
259 |
260 |
261 | 41quarter1
262 |
263 | f
264 |
265 |
266 | 21eighth1
267 |
268 | e
269 | A421eighthupbegin1
270 |
271 | l
272 | A421eighthupcontinue1
273 |
274 | t
275 | A421eighthupend1
276 |
277 |
278 | G421eighthupbegin1
279 |
280 | s
281 | G421eighthupcontinue1
282 |
283 | o
284 | G421eighthupcontinue1
285 |
286 |
287 | G421eighthupend1
288 |
289 | h
290 |
291 |
292 | C541quarterdown1
293 |
294 | a
295 | A441quarterup1
296 |
297 | p
298 | G441quarterup1
299 |
300 | p
301 | E421eighthupbegin1
302 |
303 | y
304 | E421eighthupend1
305 |
306 |
307 |
308 |
309 | D4161whole1
310 |
311 | y
312 |
313 |
314 | 1611
315 |
316 | o
317 |
318 |
319 | 1611
320 |
321 | u
322 |
323 |
324 | 1611
325 |
326 |
327 |
328 |
329 | 1611
330 |
331 | c
332 |
333 |
334 | 1611
335 |
336 | o
337 |
338 |
339 | 0.000.00126.711611
340 |
341 | u
342 |
343 |
344 | 1611
345 |
346 | l
347 |
348 |
349 | 1611
350 |
351 | d
352 |
353 |
354 | 1611
355 |
356 |
357 |
358 |
359 | A421eighthupbegin1
360 |
361 | d
362 | A421eighthupcontinue1
363 |
364 | i
365 | A421eighthupcontinue1
366 |
367 | e
368 | A421eighthupend1
369 |
370 |
371 |
372 | G421eighthupbegin1
373 |
374 | t
375 | G421eighthupcontinue1
376 |
377 | o
378 | G421eighthupcontinue1
379 |
380 | l
381 | G421eighthupend1
382 |
383 | d
384 |
385 |
386 | C541quarterdown1
387 |
388 |
389 | G441quarterup1
390 |
391 | m
392 | F441quarternaturalup1
393 |
394 | y
395 | E421eighthupbegin1
396 |
397 | s
398 | E421eighthupend1
399 |
400 | e
401 |
402 |
403 | E421eighthup1
404 |
405 | l
406 | D461quarterup1
407 |
408 | f
409 | D441quarterup1
410 |
411 |
412 | 41quarter1
413 |
414 | t
415 |
416 |
417 | 1611
418 |
419 | h
420 |
421 |
422 | 21eighth1
423 |
424 | a
425 | A421eighthupbegin1
426 |
427 | t
428 | A421eighthupcontinue1
429 |
430 |
431 | A421eighthupend1
432 |
433 | y
434 | G421eighthupbegin1
435 |
436 | o
437 | G421eighthupcontinue1
438 |
439 | u
440 | G421eighthupcontinue1
441 |
442 |
443 | G421eighthupend1
444 |
445 | w
446 |
447 |
448 | 0.000.00126.71A481halfup1
449 |
450 | e
451 | E431eighthupbegin1
452 |
453 | r
454 | E41116thupendbackward hook1
455 |
456 | e
457 | E421eighthupbegin1
458 |
459 |
460 | C421eighthupend1
461 |
462 | r
463 |
464 |
465 | C481halfup1
466 |
467 | i
468 | 81half1
469 |
470 | g
471 |
472 |
473 | 1611
474 |
475 | h
476 |
477 |
478 | 21eighth1
479 |
480 | t
481 | A421eighthupbegin1
482 |
483 |
484 | A421eighthupcontinue1
485 |
486 | f
487 | A421eighthupend1
488 |
489 | o
490 | G421eighthupbegin1
491 |
492 | r
493 | G421eighthupcontinue1
494 |
495 |
496 | G421eighthupcontinue1
497 |
498 | m
499 | G421eighthupend1
500 |
501 | e
502 |
503 |
504 | C541quarterdown1
505 |
506 |
507 |
508 | A441quarterup1
509 |
510 | b
511 | G441quarterup1
512 |
513 | u
514 | 41quarter1
515 |
516 | t
517 |
518 |
519 | 21eighth1
520 |
521 |
522 | F421eighthnaturalupbegin1
523 |
524 | f
525 | F421eighthupcontinue1
526 |
527 | e
528 | F421eighthupend1
529 |
530 | l
531 | G421eighthupbegin1
532 |
533 | t
534 | F421eighthupcontinue1
535 |
536 |
537 | E421eighthupcontinue1
538 |
539 | s
540 | F421eighthupend1
541 |
542 | o
543 |
544 |
545 | E441quarterup1
546 |
547 |
548 | D421eighthupbegin1
549 |
550 | l
551 | D421eighthupend1
552 |
553 | o
554 | D441quarterup1
555 |
556 | n
557 | 41quarter1
558 |
559 | e
560 |
561 |
562 | 0.000.00126.7121eighth1
563 |
564 | l
565 | A421eighthupbegin1
566 |
567 | y
568 | A421eighthupcontinue1
569 |
570 |
571 | A421eighthupend1
572 |
573 | i
574 | G421eighthupbegin1
575 |
576 | n
577 | G421eighthupcontinue1
578 |
579 |
580 | G421eighthupcontinue1
581 |
582 | y
583 | G421eighthupend1
584 |
585 | o
586 |
587 |
588 | C581halfdown1
589 |
590 | u
591 | G421eighthup1
592 |
593 | r
594 | E441quarterup1
595 |
596 |
597 | E421eighthup1
598 |
599 | c
600 |
601 |
602 | D4161whole1
603 |
604 | o
605 |
606 |
607 | 1611
608 |
609 | m
610 |
611 |
612 | 41quarter1
613 |
614 | p
615 | D421eighthupbegin1
616 |
617 | a
618 | D421eighthupend1
619 |
620 | n
621 | D421eighthupbegin1
622 |
623 | y
624 | F421eighthnaturalupcontinue1
625 |
626 |
627 |
628 | F421eighthupcontinue1
629 |
630 | b
631 | F421eighthupend1
632 |
633 | u
634 |
635 |
636 | B-1461quarterflatdown1
637 |
638 | t
639 | A421eighthup1
640 |
641 |
642 | A481halfup1
643 |
644 | t
645 |
646 |
647 | 41quarter1
648 |
649 | h
650 | A421eighthupbegin1
651 |
652 | a
653 | A421eighthupend1
654 |
655 | t
656 | G421eighthupbegin1
657 |
658 |
659 | G421eighthupcontinue1
660 |
661 | w
662 | G421eighthupcontinue1
663 |
664 | a
665 | G421eighthupend1
666 |
667 | s
668 |
669 |
670 | 0.000.00126.71C521eighthdownbegin1
671 |
672 |
673 | C521eighthdowncontinue1
674 |
675 | l
676 | C521eighthdowncontinue1
677 |
678 | o
679 | C521eighthdownend1
680 |
681 | v
682 | B-1421eighthflatdown1
683 |
684 | e
685 | A441quarterup1
686 |
687 |
688 | G421eighthup1
689 |
690 | a
691 |
692 |
693 | F441quarternaturalup1
694 |
695 | n
696 | 41quarter1
697 |
698 | d
699 | D421eighthupbegin1
700 |
701 |
702 | F421eighthupcontinue1
703 |
704 | i
705 | F421eighthupcontinue1
706 |
707 | t
708 | F421eighthupend1
709 |
710 | s
711 |
712 |
713 | B-1461quarterflatdown1
714 |
715 |
716 | A421eighthup1
717 |
718 | a
719 | A441quarterup1
720 |
721 | n
722 | G421eighthupbegin1
723 |
724 |
725 | G421eighthupend1
726 |
727 | a
728 |
729 |
730 | G421eighthupbegin1
731 |
732 | c
733 | A421eighthupcontinue1
734 |
735 | h
736 | A421eighthupcontinue1
737 |
738 | e
739 | A421eighthupend1
740 |
741 |
742 | G421eighthupbegin1
743 |
744 | i
745 | D421eighthupcontinue1
746 |
747 |
748 | D421eighthupcontinue1
749 |
750 | s
751 | D421eighthupend1
752 |
753 | t
754 |
755 |
756 | D441quarterup1
757 |
758 | i
759 | C441quarterup1
760 |
761 | l
762 | C441quarterup1
763 |
764 | l
765 | 41quarter1
766 |
767 |
768 |
769 |
770 | 41quarter1
771 |
772 | r
773 | C421eighthupbegin1
774 |
775 | e
776 | C421eighthupend1
777 |
778 | m
779 | D421eighthupbegin1
780 |
781 | e
782 | F421eighthnaturalupcontinue1
783 |
784 | m
785 | F421eighthupcontinue1
786 |
787 | b
788 | F421eighthupend1
789 |
790 | e
791 |
792 |
793 | 0.000.00126.71B-1461quarterflatdown1
794 |
795 | r
796 | A421eighthup1
797 |
798 |
799 |
800 | A481halfup1
801 |
802 | y
803 |
804 |
805 | 41quarter1
806 |
807 | o
808 | A421eighthupbegin1
809 |
810 | u
811 | A421eighthupend1
812 |
813 |
814 | G421eighthupbegin1
815 |
816 | c
817 | G41116thupcontinuebegin1
818 |
819 | a
820 | G41116thupendend1
821 |
822 | n
823 | G421eighthupbegin1
824 |
825 |
826 | G421eighthupend1
827 |
828 | g
829 |
830 |
831 | C521eighthdownbegin1
832 |
833 | e
834 | C521eighthdowncontinue1
835 |
836 | t
837 | C521eighthdowncontinue1
838 |
839 |
840 | C521eighthdownend1
841 |
842 | a
843 | B-1421eighthflatdown1
844 |
845 | d
846 | A441quarterup1
847 |
848 | d
849 | G421eighthup1
850 |
851 | i
852 |
853 |
854 | F441quarternaturalup1
855 |
856 | c
857 | 41quarter1
858 |
859 | t
860 | D421eighthupbegin1
861 |
862 | e
863 | F421eighthupcontinue1
864 |
865 | d
866 | F421eighthupcontinue1
867 |
868 |
869 | D421eighthupend1
870 |
871 | t
872 |
873 |
874 | A461quarterup1
875 |
876 | o
877 | G421eighthup1
878 |
879 |
880 | G441quarterup1
881 |
882 | a
883 | 41quarter1
884 |
885 |
886 |
887 |
888 | G421eighthupbegin1
889 |
890 | c
891 | A421eighthupcontinue1
892 |
893 | e
894 | A421eighthupcontinue1
895 |
896 | r
897 | A421eighthupend1
898 |
899 | t
900 | F421eighthnaturalupbegin1
901 |
902 | a
903 | G421eighthupcontinue1
904 |
905 | i
906 | G421eighthupcontinue1
907 |
908 | n
909 | A421eighthupend1
910 |
911 |
912 |
913 |
914 | 0.000.00126.71G441quarterup1
915 |
916 | k
917 | F441quarternaturalup1
918 |
919 | i
920 | F481halfup1
921 |
922 | n
923 |
924 |
925 | 1611
926 |
927 | d
928 |
929 |
930 | 1611
931 |
932 |
933 |
934 |
935 | G421eighthupbegin1
936 |
937 | o
938 | A421eighthupcontinue1
939 |
940 | f
941 | A421eighthupcontinue1
942 |
943 |
944 | A421eighthupend1
945 |
946 | s
947 | F421eighthnaturalupbegin1
948 |
949 | a
950 | G421eighthupcontinue1
951 |
952 | d
953 | G421eighthupcontinue1
954 |
955 | n
956 | A421eighthupend1
957 |
958 | e
959 |
960 |
961 | G441quarterup1
962 |
963 | s
964 | F441quarternaturalup1
965 |
966 | s
967 | F481halfup1
968 |
969 |
970 |
971 |
--------------------------------------------------------------------------------