k-l-lambda commited on
Commit
b69de73
·
1 Parent(s): cf23286

initial commit.

Browse files
.gitignore ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ # Large int8 ONNX weights — loaded from a local dir for now (LFS / HF hub later).
2
+ models/*.onnx
3
+
4
+ # Generated outputs written at runtime.
5
+ outputs/
6
+
7
+ __pycache__/
8
+ *.pyc
9
+ .DS_Store
app.py ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """LilyScript — a symbolic-music AIGC app built on the LilyletNotaGen model.
2
+
3
+ Left column:
4
+ (1) generation parameter panel (2) streaming run log
5
+ (3) .lyl file list (session outputs + built-in examples) (4) editable lyl editor
6
+ Right column:
7
+ sheet-music panel (placeholder for now; later a lyl->MEI->Verovio SVG renderer
8
+ reusing the lilylet-live-editor pipeline).
9
+
10
+ Generation streams patch-by-patch: raw decoded text (with `[r:x/y]` stream
11
+ markers) goes to the run log, while the measure-segmented postprocessed text
12
+ fills the editor. The backend is the int8 + two-level KV-cache ONNX generator
13
+ (see lilyscript/generator.py); models load from a local dir for now.
14
+ """
15
+
16
+ import os
17
+ import time
18
+
19
+ import gradio as gr
20
+
21
+ from lilyscript.generator import StreamingLilyletGenerator
22
+
23
+ HERE = os.path.dirname(os.path.abspath(__file__))
24
+ # TODO: swap for huggingface_hub.snapshot_download(repo_id=...) to pull the int8
25
+ # ONNX weights from the hub instead of a local dir.
26
+ MODEL_DIR = os.environ.get('LILYSCRIPT_MODEL_DIR', os.path.join(HERE, 'models'))
27
+ ASSET_DIR = os.path.join(HERE, 'assets')
28
+ EXAMPLES_DIR = os.path.join(HERE, 'examples')
29
+ OUTPUT_DIR = os.path.join(HERE, 'outputs')
30
+
31
+ EXAMPLE_PREFIX = '\U0001F4C4 ' # 📄 examples
32
+ OUTPUT_PREFIX = '✨ ' # ✨ session outputs
33
+
34
+ _GEN = None
35
+
36
+
37
+ def get_generator ():
38
+ '''Lazily build the (heavy) ONNX generator on first use.'''
39
+ global _GEN
40
+ if _GEN is None:
41
+ _GEN = StreamingLilyletGenerator(MODEL_DIR, ASSET_DIR)
42
+ return _GEN
43
+
44
+
45
+ def load_examples ():
46
+ '''Read built-in example .lyl files into a {label: text} dict.'''
47
+ store = {}
48
+ if os.path.isdir(EXAMPLES_DIR):
49
+ for name in sorted(os.listdir(EXAMPLES_DIR)):
50
+ if name.endswith('.lyl'):
51
+ with open(os.path.join(EXAMPLES_DIR, name), encoding='utf-8') as f:
52
+ store[EXAMPLE_PREFIX + name] = f.read()
53
+ return store
54
+
55
+
56
+ def run_generation (prompt, measures, temperature, top_k, top_p, max_patches, seed, store):
57
+ '''Streaming generate callback. Yields updates for (log, editor, file_list, store).
58
+
59
+ store: {label: lyl_text} dict held in gr.State; the produced document is added
60
+ to it under a timestamped label once generation finishes.
61
+ '''
62
+ gen = get_generator()
63
+ meas = int(measures) if measures and int(measures) > 0 else None
64
+ store = dict(store or {})
65
+
66
+ raw = pretty = ''
67
+ for raw, pretty, done in gen.generate_stream(
68
+ prompt_text=prompt or '', max_patches=int(max_patches), temperature=float(temperature),
69
+ top_k=int(top_k), top_p=float(top_p), measures=meas, seed=int(seed)):
70
+ # stream: update log + editor, keep file list / store unchanged
71
+ yield raw, pretty, gr.update(), store
72
+
73
+ # finished: persist the document, refresh the file list, select the new entry
74
+ label = OUTPUT_PREFIX + time.strftime('%H%M%S') + ('_m%d' % meas if meas else '') + '_s%d' % int(seed)
75
+ store[label] = pretty
76
+ os.makedirs(OUTPUT_DIR, exist_ok=True)
77
+ with open(os.path.join(OUTPUT_DIR, label.replace(OUTPUT_PREFIX, '') + '.lyl'), 'w', encoding='utf-8') as f:
78
+ f.write(pretty)
79
+ yield raw, pretty, gr.update(choices=list(store.keys()), value=label), store
80
+
81
+
82
+ def load_file (label, store):
83
+ '''File-list selection -> load that document into the editor.'''
84
+ return (store or {}).get(label, '')
85
+
86
+
87
+ SHEET_PLACEHOLDER = '''
88
+ <div style="height:100%;min-height:600px;display:flex;align-items:center;
89
+ justify-content:center;border:1px dashed #c9c9c9;border-radius:8px;
90
+ color:#999;font-family:sans-serif;text-align:center;">
91
+ <div>
92
+ <div style="font-size:42px;margin-bottom:8px;">&#127932;</div>
93
+ <div>Sheet-music preview</div>
94
+ <div style="font-size:12px;margin-top:4px;">
95
+ (coming soon: Lilylet &rarr; MEI &rarr; Verovio)
96
+ </div>
97
+ </div>
98
+ </div>
99
+ '''
100
+
101
+
102
+ def build_ui ():
103
+ examples = load_examples()
104
+
105
+ with gr.Blocks(title='LilyScript') as demo:
106
+ gr.Markdown('## 🎼 LilyScript — symbolic music generation with Lilylet')
107
+ store = gr.State(examples)
108
+
109
+ with gr.Row(equal_height=True):
110
+ # ---------------- LEFT ----------------
111
+ with gr.Column(scale=5):
112
+ # top row: (1) params | (2) run log
113
+ with gr.Row(equal_height=True):
114
+ with gr.Group():
115
+ gr.Markdown('**① Parameters**')
116
+ prompt = gr.Textbox(label='Metadata prompt', lines=3, value='',
117
+ placeholder='[composer "..."]\n[genre "..."]\n(optional)')
118
+ measures = gr.Number(label='Measures (0 = let model decide)', value=8, precision=0)
119
+ with gr.Row():
120
+ temperature = gr.Slider(0.0, 2.0, value=1.0, step=0.05, label='temperature')
121
+ top_p = gr.Slider(0.0, 1.0, value=0.9, step=0.01, label='top_p')
122
+ with gr.Row():
123
+ top_k = gr.Number(label='top_k (0 = off)', value=0, precision=0)
124
+ max_patches = gr.Number(label='max patches', value=256, precision=0)
125
+ seed = gr.Number(label='seed', value=0, precision=0)
126
+ with gr.Row():
127
+ gen_btn = gr.Button('Generate', variant='primary')
128
+ stop_btn = gr.Button('Stop', variant='stop')
129
+
130
+ log = gr.Textbox(label='② Run log', lines=16, max_lines=16,
131
+ autoscroll=True, interactive=False)
132
+
133
+ # bottom row: (3) file list | (4) editor
134
+ with gr.Row(equal_height=True):
135
+ file_list = gr.Radio(label='③ Files', choices=list(examples.keys()),
136
+ value=None, interactive=True)
137
+ editor = gr.Code(label='④ Lilylet editor', language=None, lines=18,
138
+ interactive=True)
139
+
140
+ # ---------------- RIGHT ----------------
141
+ with gr.Column(scale=6):
142
+ gr.Markdown('**Sheet music**')
143
+ gr.HTML(SHEET_PLACEHOLDER)
144
+
145
+ # ---- wiring ----
146
+ gen_event = gen_btn.click(
147
+ run_generation,
148
+ inputs=[prompt, measures, temperature, top_k, top_p, max_patches, seed, store],
149
+ outputs=[log, editor, file_list, store],
150
+ )
151
+ stop_btn.click(None, None, None, cancels=[gen_event])
152
+ file_list.select(load_file, inputs=[file_list, store], outputs=[editor])
153
+
154
+ return demo
155
+
156
+
157
+ if __name__ == '__main__':
158
+ build_ui().queue().launch(theme=gr.themes.Soft())
assets/lilylet-tokenizer.json ADDED
@@ -0,0 +1,3667 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "version": 1,
3
+ "type": "byte-level-bpe",
4
+ "source": {
5
+ "corpusDir": "tests/output/notagenx-from-abc",
6
+ "serializer": "source/lilylet/serializer.ts",
7
+ "frequencyTsv": "tests/output/bpe-tokenizer/token-frequencies.tsv"
8
+ },
9
+ "config": {
10
+ "vocabSize": 256,
11
+ "minFrequency": 2,
12
+ "allowMerges": false,
13
+ "byteFallback": true,
14
+ "unknownToken": "<unknown>",
15
+ "protectedTokensDoNotMerge": true,
16
+ "fixedTokensUseLongestMatch": true,
17
+ "asciiByteIdsUseByteValue": true
18
+ },
19
+ "specialTokens": [
20
+ {
21
+ "id": 0,
22
+ "token": "<pad>"
23
+ },
24
+ {
25
+ "id": 1,
26
+ "token": "<bos>"
27
+ },
28
+ {
29
+ "id": 2,
30
+ "token": "<eos>"
31
+ },
32
+ {
33
+ "id": 3,
34
+ "token": "<unknown>"
35
+ },
36
+ {
37
+ "id": 4,
38
+ "token": "<mask>"
39
+ },
40
+ {
41
+ "id": 5,
42
+ "token": "<sep>"
43
+ },
44
+ {
45
+ "id": 6,
46
+ "token": "<reserved_6>"
47
+ },
48
+ {
49
+ "id": 7,
50
+ "token": "<reserved_7>"
51
+ }
52
+ ],
53
+ "protectedTokens": [
54
+ "\\numericTimeSignature",
55
+ "\\shortfermata",
56
+ "\\sostenutoOff",
57
+ "\\sostenutoOn",
58
+ "\\stemNeutral",
59
+ "\\sustainOff",
60
+ "\\sustainOn",
61
+ "Allegretto",
62
+ "espressivo",
63
+ "instrument",
64
+ "\\arpeggio",
65
+ "\\stemDown",
66
+ "\\treCorde",
67
+ "\\unaCorda",
68
+ "Andantino",
69
+ "cantabile",
70
+ "sostenuto",
71
+ "\"treble\"",
72
+ "\\fermata",
73
+ "\\mordent",
74
+ "\\partial",
75
+ "composer",
76
+ "grazioso",
77
+ "Menuetto",
78
+ "moderato",
79
+ "Moderato",
80
+ "\\markup",
81
+ "\\ottava",
82
+ "\\repeat",
83
+ "\\stemUp",
84
+ "\\tuplet",
85
+ "agitato",
86
+ "Allegro",
87
+ "Andante",
88
+ "animato",
89
+ "espress",
90
+ "marcato",
91
+ "\"bass\"",
92
+ "\\grace",
93
+ "\\major",
94
+ "\\minor",
95
+ "\\prall",
96
+ "\\staff",
97
+ "\\tempo",
98
+ "\\times",
99
+ "\\trill",
100
+ "Adagio",
101
+ "legato",
102
+ "Presto",
103
+ "ritard",
104
+ "sempre",
105
+ "troppo",
106
+ "vivace",
107
+ "\\clef",
108
+ "\\rest",
109
+ "\\time",
110
+ "\\turn",
111
+ "assai",
112
+ "colla",
113
+ "corda",
114
+ "cresc",
115
+ "dolce",
116
+ "genre",
117
+ "Largo",
118
+ "lento",
119
+ "Lento",
120
+ "molto",
121
+ "Molto",
122
+ "mosso",
123
+ "riten",
124
+ "smorz",
125
+ "sotto",
126
+ "tempo",
127
+ "Tempo",
128
+ "\\bar",
129
+ "\\fff",
130
+ "\\key",
131
+ "\\ppp",
132
+ "\\rfz",
133
+ "\\sfz",
134
+ "alto",
135
+ "arco",
136
+ "lent",
137
+ "moto",
138
+ "pizz",
139
+ "plus",
140
+ "poco",
141
+ "Poco",
142
+ "rall",
143
+ "Solo",
144
+ "sord",
145
+ "Text",
146
+ "Trio",
147
+ "unis",
148
+ "voce",
149
+ "\"1\"",
150
+ "\"2\"",
151
+ "\"3\"",
152
+ "\\\\\\",
153
+ "\\ff",
154
+ "\\fp",
155
+ "\\mf",
156
+ "\\mp",
157
+ "\\pp",
158
+ "con",
159
+ "dim",
160
+ "div",
161
+ "dol",
162
+ "III",
163
+ "non",
164
+ "peu",
165
+ "piu",
166
+ "Piu",
167
+ "rit",
168
+ "una",
169
+ "\\!",
170
+ "\\\\",
171
+ "\\<",
172
+ "\\>",
173
+ "\\f",
174
+ "\\p",
175
+ "ff",
176
+ "II",
177
+ "in",
178
+ "ma",
179
+ "ss",
180
+ "un",
181
+ "Un",
182
+ "\n",
183
+ " ",
184
+ "_",
185
+ ",",
186
+ "!",
187
+ ".",
188
+ "'",
189
+ "(",
190
+ ")",
191
+ "/",
192
+ "%",
193
+ "^",
194
+ "<",
195
+ ">",
196
+ "à",
197
+ "À",
198
+ "é",
199
+ "É",
200
+ "è",
201
+ "È",
202
+ "f",
203
+ "ì",
204
+ "Ì",
205
+ "ò",
206
+ "Ò",
207
+ "s",
208
+ "ù",
209
+ "Ù"
210
+ ],
211
+ "vocab": [
212
+ {
213
+ "id": 0,
214
+ "type": "special",
215
+ "token": "<pad>",
216
+ "text": "<pad>"
217
+ },
218
+ {
219
+ "id": 1,
220
+ "type": "special",
221
+ "token": "<bos>",
222
+ "text": "<bos>"
223
+ },
224
+ {
225
+ "id": 2,
226
+ "type": "special",
227
+ "token": "<eos>",
228
+ "text": "<eos>"
229
+ },
230
+ {
231
+ "id": 3,
232
+ "type": "special",
233
+ "token": "<unknown>",
234
+ "text": "<unknown>"
235
+ },
236
+ {
237
+ "id": 4,
238
+ "type": "special",
239
+ "token": "<mask>",
240
+ "text": "<mask>"
241
+ },
242
+ {
243
+ "id": 5,
244
+ "type": "special",
245
+ "token": "<sep>",
246
+ "text": "<sep>"
247
+ },
248
+ {
249
+ "id": 6,
250
+ "type": "special",
251
+ "token": "<reserved_6>",
252
+ "text": "<reserved_6>"
253
+ },
254
+ {
255
+ "id": 7,
256
+ "type": "special",
257
+ "token": "<reserved_7>",
258
+ "text": "<reserved_7>"
259
+ },
260
+ {
261
+ "id": 8,
262
+ "type": "byte",
263
+ "token": "\b",
264
+ "text": "\b",
265
+ "value": 8
266
+ },
267
+ {
268
+ "id": 9,
269
+ "type": "byte",
270
+ "token": "\t",
271
+ "text": "\t",
272
+ "value": 9
273
+ },
274
+ {
275
+ "id": 10,
276
+ "type": "protected",
277
+ "token": "\n",
278
+ "text": "\n",
279
+ "value": 10
280
+ },
281
+ {
282
+ "id": 11,
283
+ "type": "byte",
284
+ "token": "\u000b",
285
+ "text": "\u000b",
286
+ "value": 11
287
+ },
288
+ {
289
+ "id": 12,
290
+ "type": "byte",
291
+ "token": "\f",
292
+ "text": "\f",
293
+ "value": 12
294
+ },
295
+ {
296
+ "id": 13,
297
+ "type": "byte",
298
+ "token": "\r",
299
+ "text": "\r",
300
+ "value": 13
301
+ },
302
+ {
303
+ "id": 14,
304
+ "type": "protected",
305
+ "token": "à",
306
+ "text": "à"
307
+ },
308
+ {
309
+ "id": 15,
310
+ "type": "protected",
311
+ "token": "è",
312
+ "text": "è"
313
+ },
314
+ {
315
+ "id": 16,
316
+ "type": "protected",
317
+ "token": "é",
318
+ "text": "é"
319
+ },
320
+ {
321
+ "id": 17,
322
+ "type": "protected",
323
+ "token": "ì",
324
+ "text": "ì"
325
+ },
326
+ {
327
+ "id": 18,
328
+ "type": "protected",
329
+ "token": "ò",
330
+ "text": "ò"
331
+ },
332
+ {
333
+ "id": 19,
334
+ "type": "protected",
335
+ "token": "ù",
336
+ "text": "ù"
337
+ },
338
+ {
339
+ "id": 20,
340
+ "type": "protected",
341
+ "token": "À",
342
+ "text": "À"
343
+ },
344
+ {
345
+ "id": 21,
346
+ "type": "protected",
347
+ "token": "È",
348
+ "text": "È"
349
+ },
350
+ {
351
+ "id": 22,
352
+ "type": "protected",
353
+ "token": "É",
354
+ "text": "É"
355
+ },
356
+ {
357
+ "id": 23,
358
+ "type": "protected",
359
+ "token": "Ì",
360
+ "text": "Ì"
361
+ },
362
+ {
363
+ "id": 24,
364
+ "type": "protected",
365
+ "token": "Ò",
366
+ "text": "Ò"
367
+ },
368
+ {
369
+ "id": 25,
370
+ "type": "protected",
371
+ "token": "Ù",
372
+ "text": "Ù"
373
+ },
374
+ {
375
+ "id": 26,
376
+ "type": "byte",
377
+ "token": "\u001a",
378
+ "text": "\u001a",
379
+ "value": 26
380
+ },
381
+ {
382
+ "id": 27,
383
+ "type": "byte",
384
+ "token": "\u001b",
385
+ "text": "\u001b",
386
+ "value": 27
387
+ },
388
+ {
389
+ "id": 28,
390
+ "type": "byte",
391
+ "token": "\u001c",
392
+ "text": "\u001c",
393
+ "value": 28
394
+ },
395
+ {
396
+ "id": 29,
397
+ "type": "byte",
398
+ "token": "\u001d",
399
+ "text": "\u001d",
400
+ "value": 29
401
+ },
402
+ {
403
+ "id": 30,
404
+ "type": "byte",
405
+ "token": "\u001e",
406
+ "text": "\u001e",
407
+ "value": 30
408
+ },
409
+ {
410
+ "id": 31,
411
+ "type": "byte",
412
+ "token": "\u001f",
413
+ "text": "\u001f",
414
+ "value": 31
415
+ },
416
+ {
417
+ "id": 32,
418
+ "type": "protected",
419
+ "token": " ",
420
+ "text": " ",
421
+ "value": 32
422
+ },
423
+ {
424
+ "id": 33,
425
+ "type": "protected",
426
+ "token": "!",
427
+ "text": "!",
428
+ "value": 33
429
+ },
430
+ {
431
+ "id": 34,
432
+ "type": "byte",
433
+ "token": "\"",
434
+ "text": "\"",
435
+ "value": 34
436
+ },
437
+ {
438
+ "id": 35,
439
+ "type": "byte",
440
+ "token": "#",
441
+ "text": "#",
442
+ "value": 35
443
+ },
444
+ {
445
+ "id": 36,
446
+ "type": "byte",
447
+ "token": "$",
448
+ "text": "$",
449
+ "value": 36
450
+ },
451
+ {
452
+ "id": 37,
453
+ "type": "protected",
454
+ "token": "%",
455
+ "text": "%",
456
+ "value": 37
457
+ },
458
+ {
459
+ "id": 38,
460
+ "type": "byte",
461
+ "token": "&",
462
+ "text": "&",
463
+ "value": 38
464
+ },
465
+ {
466
+ "id": 39,
467
+ "type": "protected",
468
+ "token": "'",
469
+ "text": "'",
470
+ "value": 39
471
+ },
472
+ {
473
+ "id": 40,
474
+ "type": "protected",
475
+ "token": "(",
476
+ "text": "(",
477
+ "value": 40
478
+ },
479
+ {
480
+ "id": 41,
481
+ "type": "protected",
482
+ "token": ")",
483
+ "text": ")",
484
+ "value": 41
485
+ },
486
+ {
487
+ "id": 42,
488
+ "type": "byte",
489
+ "token": "*",
490
+ "text": "*",
491
+ "value": 42
492
+ },
493
+ {
494
+ "id": 43,
495
+ "type": "byte",
496
+ "token": "+",
497
+ "text": "+",
498
+ "value": 43
499
+ },
500
+ {
501
+ "id": 44,
502
+ "type": "protected",
503
+ "token": ",",
504
+ "text": ",",
505
+ "value": 44
506
+ },
507
+ {
508
+ "id": 45,
509
+ "type": "byte",
510
+ "token": "-",
511
+ "text": "-",
512
+ "value": 45
513
+ },
514
+ {
515
+ "id": 46,
516
+ "type": "protected",
517
+ "token": ".",
518
+ "text": ".",
519
+ "value": 46
520
+ },
521
+ {
522
+ "id": 47,
523
+ "type": "protected",
524
+ "token": "/",
525
+ "text": "/",
526
+ "value": 47
527
+ },
528
+ {
529
+ "id": 48,
530
+ "type": "byte",
531
+ "token": "0",
532
+ "text": "0",
533
+ "value": 48
534
+ },
535
+ {
536
+ "id": 49,
537
+ "type": "byte",
538
+ "token": "1",
539
+ "text": "1",
540
+ "value": 49
541
+ },
542
+ {
543
+ "id": 50,
544
+ "type": "byte",
545
+ "token": "2",
546
+ "text": "2",
547
+ "value": 50
548
+ },
549
+ {
550
+ "id": 51,
551
+ "type": "byte",
552
+ "token": "3",
553
+ "text": "3",
554
+ "value": 51
555
+ },
556
+ {
557
+ "id": 52,
558
+ "type": "byte",
559
+ "token": "4",
560
+ "text": "4",
561
+ "value": 52
562
+ },
563
+ {
564
+ "id": 53,
565
+ "type": "byte",
566
+ "token": "5",
567
+ "text": "5",
568
+ "value": 53
569
+ },
570
+ {
571
+ "id": 54,
572
+ "type": "byte",
573
+ "token": "6",
574
+ "text": "6",
575
+ "value": 54
576
+ },
577
+ {
578
+ "id": 55,
579
+ "type": "byte",
580
+ "token": "7",
581
+ "text": "7",
582
+ "value": 55
583
+ },
584
+ {
585
+ "id": 56,
586
+ "type": "byte",
587
+ "token": "8",
588
+ "text": "8",
589
+ "value": 56
590
+ },
591
+ {
592
+ "id": 57,
593
+ "type": "byte",
594
+ "token": "9",
595
+ "text": "9",
596
+ "value": 57
597
+ },
598
+ {
599
+ "id": 58,
600
+ "type": "byte",
601
+ "token": ":",
602
+ "text": ":",
603
+ "value": 58
604
+ },
605
+ {
606
+ "id": 59,
607
+ "type": "byte",
608
+ "token": ";",
609
+ "text": ";",
610
+ "value": 59
611
+ },
612
+ {
613
+ "id": 60,
614
+ "type": "protected",
615
+ "token": "<",
616
+ "text": "<",
617
+ "value": 60
618
+ },
619
+ {
620
+ "id": 61,
621
+ "type": "byte",
622
+ "token": "=",
623
+ "text": "=",
624
+ "value": 61
625
+ },
626
+ {
627
+ "id": 62,
628
+ "type": "protected",
629
+ "token": ">",
630
+ "text": ">",
631
+ "value": 62
632
+ },
633
+ {
634
+ "id": 63,
635
+ "type": "byte",
636
+ "token": "?",
637
+ "text": "?",
638
+ "value": 63
639
+ },
640
+ {
641
+ "id": 64,
642
+ "type": "byte",
643
+ "token": "@",
644
+ "text": "@",
645
+ "value": 64
646
+ },
647
+ {
648
+ "id": 65,
649
+ "type": "byte",
650
+ "token": "A",
651
+ "text": "A",
652
+ "value": 65
653
+ },
654
+ {
655
+ "id": 66,
656
+ "type": "byte",
657
+ "token": "B",
658
+ "text": "B",
659
+ "value": 66
660
+ },
661
+ {
662
+ "id": 67,
663
+ "type": "byte",
664
+ "token": "C",
665
+ "text": "C",
666
+ "value": 67
667
+ },
668
+ {
669
+ "id": 68,
670
+ "type": "byte",
671
+ "token": "D",
672
+ "text": "D",
673
+ "value": 68
674
+ },
675
+ {
676
+ "id": 69,
677
+ "type": "byte",
678
+ "token": "E",
679
+ "text": "E",
680
+ "value": 69
681
+ },
682
+ {
683
+ "id": 70,
684
+ "type": "byte",
685
+ "token": "F",
686
+ "text": "F",
687
+ "value": 70
688
+ },
689
+ {
690
+ "id": 71,
691
+ "type": "byte",
692
+ "token": "G",
693
+ "text": "G",
694
+ "value": 71
695
+ },
696
+ {
697
+ "id": 72,
698
+ "type": "byte",
699
+ "token": "H",
700
+ "text": "H",
701
+ "value": 72
702
+ },
703
+ {
704
+ "id": 73,
705
+ "type": "byte",
706
+ "token": "I",
707
+ "text": "I",
708
+ "value": 73
709
+ },
710
+ {
711
+ "id": 74,
712
+ "type": "byte",
713
+ "token": "J",
714
+ "text": "J",
715
+ "value": 74
716
+ },
717
+ {
718
+ "id": 75,
719
+ "type": "byte",
720
+ "token": "K",
721
+ "text": "K",
722
+ "value": 75
723
+ },
724
+ {
725
+ "id": 76,
726
+ "type": "byte",
727
+ "token": "L",
728
+ "text": "L",
729
+ "value": 76
730
+ },
731
+ {
732
+ "id": 77,
733
+ "type": "byte",
734
+ "token": "M",
735
+ "text": "M",
736
+ "value": 77
737
+ },
738
+ {
739
+ "id": 78,
740
+ "type": "byte",
741
+ "token": "N",
742
+ "text": "N",
743
+ "value": 78
744
+ },
745
+ {
746
+ "id": 79,
747
+ "type": "byte",
748
+ "token": "O",
749
+ "text": "O",
750
+ "value": 79
751
+ },
752
+ {
753
+ "id": 80,
754
+ "type": "byte",
755
+ "token": "P",
756
+ "text": "P",
757
+ "value": 80
758
+ },
759
+ {
760
+ "id": 81,
761
+ "type": "byte",
762
+ "token": "Q",
763
+ "text": "Q",
764
+ "value": 81
765
+ },
766
+ {
767
+ "id": 82,
768
+ "type": "byte",
769
+ "token": "R",
770
+ "text": "R",
771
+ "value": 82
772
+ },
773
+ {
774
+ "id": 83,
775
+ "type": "byte",
776
+ "token": "S",
777
+ "text": "S",
778
+ "value": 83
779
+ },
780
+ {
781
+ "id": 84,
782
+ "type": "byte",
783
+ "token": "T",
784
+ "text": "T",
785
+ "value": 84
786
+ },
787
+ {
788
+ "id": 85,
789
+ "type": "byte",
790
+ "token": "U",
791
+ "text": "U",
792
+ "value": 85
793
+ },
794
+ {
795
+ "id": 86,
796
+ "type": "byte",
797
+ "token": "V",
798
+ "text": "V",
799
+ "value": 86
800
+ },
801
+ {
802
+ "id": 87,
803
+ "type": "byte",
804
+ "token": "W",
805
+ "text": "W",
806
+ "value": 87
807
+ },
808
+ {
809
+ "id": 88,
810
+ "type": "byte",
811
+ "token": "X",
812
+ "text": "X",
813
+ "value": 88
814
+ },
815
+ {
816
+ "id": 89,
817
+ "type": "byte",
818
+ "token": "Y",
819
+ "text": "Y",
820
+ "value": 89
821
+ },
822
+ {
823
+ "id": 90,
824
+ "type": "byte",
825
+ "token": "Z",
826
+ "text": "Z",
827
+ "value": 90
828
+ },
829
+ {
830
+ "id": 91,
831
+ "type": "byte",
832
+ "token": "[",
833
+ "text": "[",
834
+ "value": 91
835
+ },
836
+ {
837
+ "id": 92,
838
+ "type": "byte",
839
+ "token": "\\",
840
+ "text": "\\",
841
+ "value": 92
842
+ },
843
+ {
844
+ "id": 93,
845
+ "type": "byte",
846
+ "token": "]",
847
+ "text": "]",
848
+ "value": 93
849
+ },
850
+ {
851
+ "id": 94,
852
+ "type": "protected",
853
+ "token": "^",
854
+ "text": "^",
855
+ "value": 94
856
+ },
857
+ {
858
+ "id": 95,
859
+ "type": "protected",
860
+ "token": "_",
861
+ "text": "_",
862
+ "value": 95
863
+ },
864
+ {
865
+ "id": 96,
866
+ "type": "byte",
867
+ "token": "`",
868
+ "text": "`",
869
+ "value": 96
870
+ },
871
+ {
872
+ "id": 97,
873
+ "type": "byte",
874
+ "token": "a",
875
+ "text": "a",
876
+ "value": 97
877
+ },
878
+ {
879
+ "id": 98,
880
+ "type": "byte",
881
+ "token": "b",
882
+ "text": "b",
883
+ "value": 98
884
+ },
885
+ {
886
+ "id": 99,
887
+ "type": "byte",
888
+ "token": "c",
889
+ "text": "c",
890
+ "value": 99
891
+ },
892
+ {
893
+ "id": 100,
894
+ "type": "byte",
895
+ "token": "d",
896
+ "text": "d",
897
+ "value": 100
898
+ },
899
+ {
900
+ "id": 101,
901
+ "type": "byte",
902
+ "token": "e",
903
+ "text": "e",
904
+ "value": 101
905
+ },
906
+ {
907
+ "id": 102,
908
+ "type": "protected",
909
+ "token": "f",
910
+ "text": "f",
911
+ "value": 102
912
+ },
913
+ {
914
+ "id": 103,
915
+ "type": "byte",
916
+ "token": "g",
917
+ "text": "g",
918
+ "value": 103
919
+ },
920
+ {
921
+ "id": 104,
922
+ "type": "byte",
923
+ "token": "h",
924
+ "text": "h",
925
+ "value": 104
926
+ },
927
+ {
928
+ "id": 105,
929
+ "type": "byte",
930
+ "token": "i",
931
+ "text": "i",
932
+ "value": 105
933
+ },
934
+ {
935
+ "id": 106,
936
+ "type": "byte",
937
+ "token": "j",
938
+ "text": "j",
939
+ "value": 106
940
+ },
941
+ {
942
+ "id": 107,
943
+ "type": "byte",
944
+ "token": "k",
945
+ "text": "k",
946
+ "value": 107
947
+ },
948
+ {
949
+ "id": 108,
950
+ "type": "byte",
951
+ "token": "l",
952
+ "text": "l",
953
+ "value": 108
954
+ },
955
+ {
956
+ "id": 109,
957
+ "type": "byte",
958
+ "token": "m",
959
+ "text": "m",
960
+ "value": 109
961
+ },
962
+ {
963
+ "id": 110,
964
+ "type": "byte",
965
+ "token": "n",
966
+ "text": "n",
967
+ "value": 110
968
+ },
969
+ {
970
+ "id": 111,
971
+ "type": "byte",
972
+ "token": "o",
973
+ "text": "o",
974
+ "value": 111
975
+ },
976
+ {
977
+ "id": 112,
978
+ "type": "byte",
979
+ "token": "p",
980
+ "text": "p",
981
+ "value": 112
982
+ },
983
+ {
984
+ "id": 113,
985
+ "type": "byte",
986
+ "token": "q",
987
+ "text": "q",
988
+ "value": 113
989
+ },
990
+ {
991
+ "id": 114,
992
+ "type": "byte",
993
+ "token": "r",
994
+ "text": "r",
995
+ "value": 114
996
+ },
997
+ {
998
+ "id": 115,
999
+ "type": "protected",
1000
+ "token": "s",
1001
+ "text": "s",
1002
+ "value": 115
1003
+ },
1004
+ {
1005
+ "id": 116,
1006
+ "type": "byte",
1007
+ "token": "t",
1008
+ "text": "t",
1009
+ "value": 116
1010
+ },
1011
+ {
1012
+ "id": 117,
1013
+ "type": "byte",
1014
+ "token": "u",
1015
+ "text": "u",
1016
+ "value": 117
1017
+ },
1018
+ {
1019
+ "id": 118,
1020
+ "type": "byte",
1021
+ "token": "v",
1022
+ "text": "v",
1023
+ "value": 118
1024
+ },
1025
+ {
1026
+ "id": 119,
1027
+ "type": "byte",
1028
+ "token": "w",
1029
+ "text": "w",
1030
+ "value": 119
1031
+ },
1032
+ {
1033
+ "id": 120,
1034
+ "type": "byte",
1035
+ "token": "x",
1036
+ "text": "x",
1037
+ "value": 120
1038
+ },
1039
+ {
1040
+ "id": 121,
1041
+ "type": "byte",
1042
+ "token": "y",
1043
+ "text": "y",
1044
+ "value": 121
1045
+ },
1046
+ {
1047
+ "id": 122,
1048
+ "type": "byte",
1049
+ "token": "z",
1050
+ "text": "z",
1051
+ "value": 122
1052
+ },
1053
+ {
1054
+ "id": 123,
1055
+ "type": "byte",
1056
+ "token": "{",
1057
+ "text": "{",
1058
+ "value": 123
1059
+ },
1060
+ {
1061
+ "id": 124,
1062
+ "type": "byte",
1063
+ "token": "|",
1064
+ "text": "|",
1065
+ "value": 124
1066
+ },
1067
+ {
1068
+ "id": 125,
1069
+ "type": "byte",
1070
+ "token": "}",
1071
+ "text": "}",
1072
+ "value": 125
1073
+ },
1074
+ {
1075
+ "id": 126,
1076
+ "type": "byte",
1077
+ "token": "~",
1078
+ "text": "~",
1079
+ "value": 126
1080
+ },
1081
+ {
1082
+ "id": 127,
1083
+ "type": "byte",
1084
+ "token": "",
1085
+ "text": "",
1086
+ "value": 127
1087
+ },
1088
+ {
1089
+ "id": 128,
1090
+ "type": "protected",
1091
+ "token": "\\numericTimeSignature",
1092
+ "text": "\\numericTimeSignature"
1093
+ },
1094
+ {
1095
+ "id": 129,
1096
+ "type": "protected",
1097
+ "token": "\\shortfermata",
1098
+ "text": "\\shortfermata"
1099
+ },
1100
+ {
1101
+ "id": 130,
1102
+ "type": "protected",
1103
+ "token": "\\sostenutoOff",
1104
+ "text": "\\sostenutoOff"
1105
+ },
1106
+ {
1107
+ "id": 131,
1108
+ "type": "protected",
1109
+ "token": "\\sostenutoOn",
1110
+ "text": "\\sostenutoOn"
1111
+ },
1112
+ {
1113
+ "id": 132,
1114
+ "type": "protected",
1115
+ "token": "\\stemNeutral",
1116
+ "text": "\\stemNeutral"
1117
+ },
1118
+ {
1119
+ "id": 133,
1120
+ "type": "protected",
1121
+ "token": "\\sustainOff",
1122
+ "text": "\\sustainOff"
1123
+ },
1124
+ {
1125
+ "id": 134,
1126
+ "type": "protected",
1127
+ "token": "\\sustainOn",
1128
+ "text": "\\sustainOn"
1129
+ },
1130
+ {
1131
+ "id": 135,
1132
+ "type": "protected",
1133
+ "token": "Allegretto",
1134
+ "text": "Allegretto"
1135
+ },
1136
+ {
1137
+ "id": 136,
1138
+ "type": "protected",
1139
+ "token": "espressivo",
1140
+ "text": "espressivo"
1141
+ },
1142
+ {
1143
+ "id": 137,
1144
+ "type": "protected",
1145
+ "token": "instrument",
1146
+ "text": "instrument"
1147
+ },
1148
+ {
1149
+ "id": 138,
1150
+ "type": "protected",
1151
+ "token": "\\arpeggio",
1152
+ "text": "\\arpeggio"
1153
+ },
1154
+ {
1155
+ "id": 139,
1156
+ "type": "protected",
1157
+ "token": "\\stemDown",
1158
+ "text": "\\stemDown"
1159
+ },
1160
+ {
1161
+ "id": 140,
1162
+ "type": "protected",
1163
+ "token": "\\treCorde",
1164
+ "text": "\\treCorde"
1165
+ },
1166
+ {
1167
+ "id": 141,
1168
+ "type": "protected",
1169
+ "token": "\\unaCorda",
1170
+ "text": "\\unaCorda"
1171
+ },
1172
+ {
1173
+ "id": 142,
1174
+ "type": "protected",
1175
+ "token": "Andantino",
1176
+ "text": "Andantino"
1177
+ },
1178
+ {
1179
+ "id": 143,
1180
+ "type": "protected",
1181
+ "token": "cantabile",
1182
+ "text": "cantabile"
1183
+ },
1184
+ {
1185
+ "id": 144,
1186
+ "type": "protected",
1187
+ "token": "sostenuto",
1188
+ "text": "sostenuto"
1189
+ },
1190
+ {
1191
+ "id": 145,
1192
+ "type": "protected",
1193
+ "token": "\"treble\"",
1194
+ "text": "\"treble\""
1195
+ },
1196
+ {
1197
+ "id": 146,
1198
+ "type": "protected",
1199
+ "token": "\\fermata",
1200
+ "text": "\\fermata"
1201
+ },
1202
+ {
1203
+ "id": 147,
1204
+ "type": "protected",
1205
+ "token": "\\mordent",
1206
+ "text": "\\mordent"
1207
+ },
1208
+ {
1209
+ "id": 148,
1210
+ "type": "protected",
1211
+ "token": "\\partial",
1212
+ "text": "\\partial"
1213
+ },
1214
+ {
1215
+ "id": 149,
1216
+ "type": "protected",
1217
+ "token": "composer",
1218
+ "text": "composer"
1219
+ },
1220
+ {
1221
+ "id": 150,
1222
+ "type": "protected",
1223
+ "token": "grazioso",
1224
+ "text": "grazioso"
1225
+ },
1226
+ {
1227
+ "id": 151,
1228
+ "type": "protected",
1229
+ "token": "Menuetto",
1230
+ "text": "Menuetto"
1231
+ },
1232
+ {
1233
+ "id": 152,
1234
+ "type": "protected",
1235
+ "token": "moderato",
1236
+ "text": "moderato"
1237
+ },
1238
+ {
1239
+ "id": 153,
1240
+ "type": "protected",
1241
+ "token": "Moderato",
1242
+ "text": "Moderato"
1243
+ },
1244
+ {
1245
+ "id": 154,
1246
+ "type": "protected",
1247
+ "token": "\\markup",
1248
+ "text": "\\markup"
1249
+ },
1250
+ {
1251
+ "id": 155,
1252
+ "type": "protected",
1253
+ "token": "\\ottava",
1254
+ "text": "\\ottava"
1255
+ },
1256
+ {
1257
+ "id": 156,
1258
+ "type": "protected",
1259
+ "token": "\\repeat",
1260
+ "text": "\\repeat"
1261
+ },
1262
+ {
1263
+ "id": 157,
1264
+ "type": "protected",
1265
+ "token": "\\stemUp",
1266
+ "text": "\\stemUp"
1267
+ },
1268
+ {
1269
+ "id": 158,
1270
+ "type": "protected",
1271
+ "token": "\\tuplet",
1272
+ "text": "\\tuplet"
1273
+ },
1274
+ {
1275
+ "id": 159,
1276
+ "type": "protected",
1277
+ "token": "agitato",
1278
+ "text": "agitato"
1279
+ },
1280
+ {
1281
+ "id": 160,
1282
+ "type": "protected",
1283
+ "token": "Allegro",
1284
+ "text": "Allegro"
1285
+ },
1286
+ {
1287
+ "id": 161,
1288
+ "type": "protected",
1289
+ "token": "Andante",
1290
+ "text": "Andante"
1291
+ },
1292
+ {
1293
+ "id": 162,
1294
+ "type": "protected",
1295
+ "token": "animato",
1296
+ "text": "animato"
1297
+ },
1298
+ {
1299
+ "id": 163,
1300
+ "type": "protected",
1301
+ "token": "espress",
1302
+ "text": "espress"
1303
+ },
1304
+ {
1305
+ "id": 164,
1306
+ "type": "protected",
1307
+ "token": "marcato",
1308
+ "text": "marcato"
1309
+ },
1310
+ {
1311
+ "id": 165,
1312
+ "type": "protected",
1313
+ "token": "\"bass\"",
1314
+ "text": "\"bass\""
1315
+ },
1316
+ {
1317
+ "id": 166,
1318
+ "type": "protected",
1319
+ "token": "\\grace",
1320
+ "text": "\\grace"
1321
+ },
1322
+ {
1323
+ "id": 167,
1324
+ "type": "protected",
1325
+ "token": "\\major",
1326
+ "text": "\\major"
1327
+ },
1328
+ {
1329
+ "id": 168,
1330
+ "type": "protected",
1331
+ "token": "\\minor",
1332
+ "text": "\\minor"
1333
+ },
1334
+ {
1335
+ "id": 169,
1336
+ "type": "protected",
1337
+ "token": "\\prall",
1338
+ "text": "\\prall"
1339
+ },
1340
+ {
1341
+ "id": 170,
1342
+ "type": "protected",
1343
+ "token": "\\staff",
1344
+ "text": "\\staff"
1345
+ },
1346
+ {
1347
+ "id": 171,
1348
+ "type": "protected",
1349
+ "token": "\\tempo",
1350
+ "text": "\\tempo"
1351
+ },
1352
+ {
1353
+ "id": 172,
1354
+ "type": "protected",
1355
+ "token": "\\times",
1356
+ "text": "\\times"
1357
+ },
1358
+ {
1359
+ "id": 173,
1360
+ "type": "protected",
1361
+ "token": "\\trill",
1362
+ "text": "\\trill"
1363
+ },
1364
+ {
1365
+ "id": 174,
1366
+ "type": "protected",
1367
+ "token": "Adagio",
1368
+ "text": "Adagio"
1369
+ },
1370
+ {
1371
+ "id": 175,
1372
+ "type": "protected",
1373
+ "token": "legato",
1374
+ "text": "legato"
1375
+ },
1376
+ {
1377
+ "id": 176,
1378
+ "type": "protected",
1379
+ "token": "Presto",
1380
+ "text": "Presto"
1381
+ },
1382
+ {
1383
+ "id": 177,
1384
+ "type": "protected",
1385
+ "token": "ritard",
1386
+ "text": "ritard"
1387
+ },
1388
+ {
1389
+ "id": 178,
1390
+ "type": "protected",
1391
+ "token": "sempre",
1392
+ "text": "sempre"
1393
+ },
1394
+ {
1395
+ "id": 179,
1396
+ "type": "protected",
1397
+ "token": "troppo",
1398
+ "text": "troppo"
1399
+ },
1400
+ {
1401
+ "id": 180,
1402
+ "type": "protected",
1403
+ "token": "vivace",
1404
+ "text": "vivace"
1405
+ },
1406
+ {
1407
+ "id": 181,
1408
+ "type": "protected",
1409
+ "token": "\\clef",
1410
+ "text": "\\clef"
1411
+ },
1412
+ {
1413
+ "id": 182,
1414
+ "type": "protected",
1415
+ "token": "\\rest",
1416
+ "text": "\\rest"
1417
+ },
1418
+ {
1419
+ "id": 183,
1420
+ "type": "protected",
1421
+ "token": "\\time",
1422
+ "text": "\\time"
1423
+ },
1424
+ {
1425
+ "id": 184,
1426
+ "type": "protected",
1427
+ "token": "\\turn",
1428
+ "text": "\\turn"
1429
+ },
1430
+ {
1431
+ "id": 185,
1432
+ "type": "protected",
1433
+ "token": "assai",
1434
+ "text": "assai"
1435
+ },
1436
+ {
1437
+ "id": 186,
1438
+ "type": "protected",
1439
+ "token": "colla",
1440
+ "text": "colla"
1441
+ },
1442
+ {
1443
+ "id": 187,
1444
+ "type": "protected",
1445
+ "token": "corda",
1446
+ "text": "corda"
1447
+ },
1448
+ {
1449
+ "id": 188,
1450
+ "type": "protected",
1451
+ "token": "cresc",
1452
+ "text": "cresc"
1453
+ },
1454
+ {
1455
+ "id": 189,
1456
+ "type": "protected",
1457
+ "token": "dolce",
1458
+ "text": "dolce"
1459
+ },
1460
+ {
1461
+ "id": 190,
1462
+ "type": "protected",
1463
+ "token": "genre",
1464
+ "text": "genre"
1465
+ },
1466
+ {
1467
+ "id": 191,
1468
+ "type": "protected",
1469
+ "token": "Largo",
1470
+ "text": "Largo"
1471
+ },
1472
+ {
1473
+ "id": 192,
1474
+ "type": "protected",
1475
+ "token": "lento",
1476
+ "text": "lento"
1477
+ },
1478
+ {
1479
+ "id": 193,
1480
+ "type": "protected",
1481
+ "token": "Lento",
1482
+ "text": "Lento"
1483
+ },
1484
+ {
1485
+ "id": 194,
1486
+ "type": "protected",
1487
+ "token": "molto",
1488
+ "text": "molto"
1489
+ },
1490
+ {
1491
+ "id": 195,
1492
+ "type": "protected",
1493
+ "token": "Molto",
1494
+ "text": "Molto"
1495
+ },
1496
+ {
1497
+ "id": 196,
1498
+ "type": "protected",
1499
+ "token": "mosso",
1500
+ "text": "mosso"
1501
+ },
1502
+ {
1503
+ "id": 197,
1504
+ "type": "protected",
1505
+ "token": "riten",
1506
+ "text": "riten"
1507
+ },
1508
+ {
1509
+ "id": 198,
1510
+ "type": "protected",
1511
+ "token": "smorz",
1512
+ "text": "smorz"
1513
+ },
1514
+ {
1515
+ "id": 199,
1516
+ "type": "protected",
1517
+ "token": "sotto",
1518
+ "text": "sotto"
1519
+ },
1520
+ {
1521
+ "id": 200,
1522
+ "type": "protected",
1523
+ "token": "tempo",
1524
+ "text": "tempo"
1525
+ },
1526
+ {
1527
+ "id": 201,
1528
+ "type": "protected",
1529
+ "token": "Tempo",
1530
+ "text": "Tempo"
1531
+ },
1532
+ {
1533
+ "id": 202,
1534
+ "type": "protected",
1535
+ "token": "\\bar",
1536
+ "text": "\\bar"
1537
+ },
1538
+ {
1539
+ "id": 203,
1540
+ "type": "protected",
1541
+ "token": "\\fff",
1542
+ "text": "\\fff"
1543
+ },
1544
+ {
1545
+ "id": 204,
1546
+ "type": "protected",
1547
+ "token": "\\key",
1548
+ "text": "\\key"
1549
+ },
1550
+ {
1551
+ "id": 205,
1552
+ "type": "protected",
1553
+ "token": "\\ppp",
1554
+ "text": "\\ppp"
1555
+ },
1556
+ {
1557
+ "id": 206,
1558
+ "type": "protected",
1559
+ "token": "\\rfz",
1560
+ "text": "\\rfz"
1561
+ },
1562
+ {
1563
+ "id": 207,
1564
+ "type": "protected",
1565
+ "token": "\\sfz",
1566
+ "text": "\\sfz"
1567
+ },
1568
+ {
1569
+ "id": 208,
1570
+ "type": "protected",
1571
+ "token": "alto",
1572
+ "text": "alto"
1573
+ },
1574
+ {
1575
+ "id": 209,
1576
+ "type": "protected",
1577
+ "token": "arco",
1578
+ "text": "arco"
1579
+ },
1580
+ {
1581
+ "id": 210,
1582
+ "type": "protected",
1583
+ "token": "lent",
1584
+ "text": "lent"
1585
+ },
1586
+ {
1587
+ "id": 211,
1588
+ "type": "protected",
1589
+ "token": "moto",
1590
+ "text": "moto"
1591
+ },
1592
+ {
1593
+ "id": 212,
1594
+ "type": "protected",
1595
+ "token": "pizz",
1596
+ "text": "pizz"
1597
+ },
1598
+ {
1599
+ "id": 213,
1600
+ "type": "protected",
1601
+ "token": "plus",
1602
+ "text": "plus"
1603
+ },
1604
+ {
1605
+ "id": 214,
1606
+ "type": "protected",
1607
+ "token": "poco",
1608
+ "text": "poco"
1609
+ },
1610
+ {
1611
+ "id": 215,
1612
+ "type": "protected",
1613
+ "token": "Poco",
1614
+ "text": "Poco"
1615
+ },
1616
+ {
1617
+ "id": 216,
1618
+ "type": "protected",
1619
+ "token": "rall",
1620
+ "text": "rall"
1621
+ },
1622
+ {
1623
+ "id": 217,
1624
+ "type": "protected",
1625
+ "token": "Solo",
1626
+ "text": "Solo"
1627
+ },
1628
+ {
1629
+ "id": 218,
1630
+ "type": "protected",
1631
+ "token": "sord",
1632
+ "text": "sord"
1633
+ },
1634
+ {
1635
+ "id": 219,
1636
+ "type": "protected",
1637
+ "token": "Text",
1638
+ "text": "Text"
1639
+ },
1640
+ {
1641
+ "id": 220,
1642
+ "type": "protected",
1643
+ "token": "Trio",
1644
+ "text": "Trio"
1645
+ },
1646
+ {
1647
+ "id": 221,
1648
+ "type": "protected",
1649
+ "token": "unis",
1650
+ "text": "unis"
1651
+ },
1652
+ {
1653
+ "id": 222,
1654
+ "type": "protected",
1655
+ "token": "voce",
1656
+ "text": "voce"
1657
+ },
1658
+ {
1659
+ "id": 223,
1660
+ "type": "protected",
1661
+ "token": "\"1\"",
1662
+ "text": "\"1\""
1663
+ },
1664
+ {
1665
+ "id": 224,
1666
+ "type": "protected",
1667
+ "token": "\"2\"",
1668
+ "text": "\"2\""
1669
+ },
1670
+ {
1671
+ "id": 225,
1672
+ "type": "protected",
1673
+ "token": "\"3\"",
1674
+ "text": "\"3\""
1675
+ },
1676
+ {
1677
+ "id": 226,
1678
+ "type": "protected",
1679
+ "token": "\\\\\\",
1680
+ "text": "\\\\\\"
1681
+ },
1682
+ {
1683
+ "id": 227,
1684
+ "type": "protected",
1685
+ "token": "\\ff",
1686
+ "text": "\\ff"
1687
+ },
1688
+ {
1689
+ "id": 228,
1690
+ "type": "protected",
1691
+ "token": "\\fp",
1692
+ "text": "\\fp"
1693
+ },
1694
+ {
1695
+ "id": 229,
1696
+ "type": "protected",
1697
+ "token": "\\mf",
1698
+ "text": "\\mf"
1699
+ },
1700
+ {
1701
+ "id": 230,
1702
+ "type": "protected",
1703
+ "token": "\\mp",
1704
+ "text": "\\mp"
1705
+ },
1706
+ {
1707
+ "id": 231,
1708
+ "type": "protected",
1709
+ "token": "\\pp",
1710
+ "text": "\\pp"
1711
+ },
1712
+ {
1713
+ "id": 232,
1714
+ "type": "protected",
1715
+ "token": "con",
1716
+ "text": "con"
1717
+ },
1718
+ {
1719
+ "id": 233,
1720
+ "type": "protected",
1721
+ "token": "dim",
1722
+ "text": "dim"
1723
+ },
1724
+ {
1725
+ "id": 234,
1726
+ "type": "protected",
1727
+ "token": "div",
1728
+ "text": "div"
1729
+ },
1730
+ {
1731
+ "id": 235,
1732
+ "type": "protected",
1733
+ "token": "dol",
1734
+ "text": "dol"
1735
+ },
1736
+ {
1737
+ "id": 236,
1738
+ "type": "protected",
1739
+ "token": "III",
1740
+ "text": "III"
1741
+ },
1742
+ {
1743
+ "id": 237,
1744
+ "type": "protected",
1745
+ "token": "non",
1746
+ "text": "non"
1747
+ },
1748
+ {
1749
+ "id": 238,
1750
+ "type": "protected",
1751
+ "token": "peu",
1752
+ "text": "peu"
1753
+ },
1754
+ {
1755
+ "id": 239,
1756
+ "type": "protected",
1757
+ "token": "piu",
1758
+ "text": "piu"
1759
+ },
1760
+ {
1761
+ "id": 240,
1762
+ "type": "protected",
1763
+ "token": "Piu",
1764
+ "text": "Piu"
1765
+ },
1766
+ {
1767
+ "id": 241,
1768
+ "type": "protected",
1769
+ "token": "rit",
1770
+ "text": "rit"
1771
+ },
1772
+ {
1773
+ "id": 242,
1774
+ "type": "protected",
1775
+ "token": "una",
1776
+ "text": "una"
1777
+ },
1778
+ {
1779
+ "id": 243,
1780
+ "type": "protected",
1781
+ "token": "\\!",
1782
+ "text": "\\!"
1783
+ },
1784
+ {
1785
+ "id": 244,
1786
+ "type": "protected",
1787
+ "token": "\\\\",
1788
+ "text": "\\\\"
1789
+ },
1790
+ {
1791
+ "id": 245,
1792
+ "type": "protected",
1793
+ "token": "\\<",
1794
+ "text": "\\<"
1795
+ },
1796
+ {
1797
+ "id": 246,
1798
+ "type": "protected",
1799
+ "token": "\\>",
1800
+ "text": "\\>"
1801
+ },
1802
+ {
1803
+ "id": 247,
1804
+ "type": "protected",
1805
+ "token": "\\f",
1806
+ "text": "\\f"
1807
+ },
1808
+ {
1809
+ "id": 248,
1810
+ "type": "protected",
1811
+ "token": "\\p",
1812
+ "text": "\\p"
1813
+ },
1814
+ {
1815
+ "id": 249,
1816
+ "type": "protected",
1817
+ "token": "ff",
1818
+ "text": "ff"
1819
+ },
1820
+ {
1821
+ "id": 250,
1822
+ "type": "protected",
1823
+ "token": "II",
1824
+ "text": "II"
1825
+ },
1826
+ {
1827
+ "id": 251,
1828
+ "type": "protected",
1829
+ "token": "in",
1830
+ "text": "in"
1831
+ },
1832
+ {
1833
+ "id": 252,
1834
+ "type": "protected",
1835
+ "token": "ma",
1836
+ "text": "ma"
1837
+ },
1838
+ {
1839
+ "id": 253,
1840
+ "type": "protected",
1841
+ "token": "ss",
1842
+ "text": "ss"
1843
+ },
1844
+ {
1845
+ "id": 254,
1846
+ "type": "protected",
1847
+ "token": "un",
1848
+ "text": "un"
1849
+ },
1850
+ {
1851
+ "id": 255,
1852
+ "type": "protected",
1853
+ "token": "Un",
1854
+ "text": "Un"
1855
+ }
1856
+ ],
1857
+ "merges": [],
1858
+ "tokenFrequencies": [
1859
+ {
1860
+ "id": 32,
1861
+ "type": "protected",
1862
+ "token": " ",
1863
+ "text": " ",
1864
+ "frequency": 557427
1865
+ },
1866
+ {
1867
+ "id": 10,
1868
+ "type": "protected",
1869
+ "token": "\n",
1870
+ "text": "\n",
1871
+ "frequency": 115131
1872
+ },
1873
+ {
1874
+ "id": 39,
1875
+ "type": "protected",
1876
+ "token": "'",
1877
+ "text": "'",
1878
+ "frequency": 73459
1879
+ },
1880
+ {
1881
+ "id": 114,
1882
+ "type": "byte",
1883
+ "token": "r",
1884
+ "text": "r",
1885
+ "frequency": 68314
1886
+ },
1887
+ {
1888
+ "id": 46,
1889
+ "type": "protected",
1890
+ "token": ".",
1891
+ "text": ".",
1892
+ "frequency": 66311
1893
+ },
1894
+ {
1895
+ "id": 226,
1896
+ "type": "protected",
1897
+ "token": "\\\\\\",
1898
+ "text": "\\\\\\",
1899
+ "frequency": 65431
1900
+ },
1901
+ {
1902
+ "id": 52,
1903
+ "type": "byte",
1904
+ "token": "4",
1905
+ "text": "4",
1906
+ "frequency": 63985
1907
+ },
1908
+ {
1909
+ "id": 62,
1910
+ "type": "protected",
1911
+ "token": ">",
1912
+ "text": ">",
1913
+ "frequency": 52101
1914
+ },
1915
+ {
1916
+ "id": 50,
1917
+ "type": "byte",
1918
+ "token": "2",
1919
+ "text": "2",
1920
+ "frequency": 51522
1921
+ },
1922
+ {
1923
+ "id": 102,
1924
+ "type": "protected",
1925
+ "token": "f",
1926
+ "text": "f",
1927
+ "frequency": 51443
1928
+ },
1929
+ {
1930
+ "id": 103,
1931
+ "type": "byte",
1932
+ "token": "g",
1933
+ "text": "g",
1934
+ "frequency": 50694
1935
+ },
1936
+ {
1937
+ "id": 60,
1938
+ "type": "protected",
1939
+ "token": "<",
1940
+ "text": "<",
1941
+ "frequency": 50096
1942
+ },
1943
+ {
1944
+ "id": 56,
1945
+ "type": "byte",
1946
+ "token": "8",
1947
+ "text": "8",
1948
+ "frequency": 48542
1949
+ },
1950
+ {
1951
+ "id": 99,
1952
+ "type": "byte",
1953
+ "token": "c",
1954
+ "text": "c",
1955
+ "frequency": 48056
1956
+ },
1957
+ {
1958
+ "id": 100,
1959
+ "type": "byte",
1960
+ "token": "d",
1961
+ "text": "d",
1962
+ "frequency": 46271
1963
+ },
1964
+ {
1965
+ "id": 98,
1966
+ "type": "byte",
1967
+ "token": "b",
1968
+ "text": "b",
1969
+ "frequency": 46158
1970
+ },
1971
+ {
1972
+ "id": 101,
1973
+ "type": "byte",
1974
+ "token": "e",
1975
+ "text": "e",
1976
+ "frequency": 43759
1977
+ },
1978
+ {
1979
+ "id": 97,
1980
+ "type": "byte",
1981
+ "token": "a",
1982
+ "text": "a",
1983
+ "frequency": 43713
1984
+ },
1985
+ {
1986
+ "id": 40,
1987
+ "type": "protected",
1988
+ "token": "(",
1989
+ "text": "(",
1990
+ "frequency": 42060
1991
+ },
1992
+ {
1993
+ "id": 45,
1994
+ "type": "byte",
1995
+ "token": "-",
1996
+ "text": "-",
1997
+ "frequency": 35055
1998
+ },
1999
+ {
2000
+ "id": 44,
2001
+ "type": "protected",
2002
+ "token": ",",
2003
+ "text": ",",
2004
+ "frequency": 32179
2005
+ },
2006
+ {
2007
+ "id": 170,
2008
+ "type": "protected",
2009
+ "token": "\\staff",
2010
+ "text": "\\staff",
2011
+ "frequency": 24499
2012
+ },
2013
+ {
2014
+ "id": 49,
2015
+ "type": "byte",
2016
+ "token": "1",
2017
+ "text": "1",
2018
+ "frequency": 23990
2019
+ },
2020
+ {
2021
+ "id": 47,
2022
+ "type": "protected",
2023
+ "token": "/",
2024
+ "text": "/",
2025
+ "frequency": 21632
2026
+ },
2027
+ {
2028
+ "id": 54,
2029
+ "type": "byte",
2030
+ "token": "6",
2031
+ "text": "6",
2032
+ "frequency": 20819
2033
+ },
2034
+ {
2035
+ "id": 124,
2036
+ "type": "byte",
2037
+ "token": "|",
2038
+ "text": "|",
2039
+ "frequency": 19659
2040
+ },
2041
+ {
2042
+ "id": 183,
2043
+ "type": "protected",
2044
+ "token": "\\time",
2045
+ "text": "\\time",
2046
+ "frequency": 18766
2047
+ },
2048
+ {
2049
+ "id": 51,
2050
+ "type": "byte",
2051
+ "token": "3",
2052
+ "text": "3",
2053
+ "frequency": 18237
2054
+ },
2055
+ {
2056
+ "id": 167,
2057
+ "type": "protected",
2058
+ "token": "\\major",
2059
+ "text": "\\major",
2060
+ "frequency": 18051
2061
+ },
2062
+ {
2063
+ "id": 204,
2064
+ "type": "protected",
2065
+ "token": "\\key",
2066
+ "text": "\\key",
2067
+ "frequency": 18051
2068
+ },
2069
+ {
2070
+ "id": 37,
2071
+ "type": "protected",
2072
+ "token": "%",
2073
+ "text": "%",
2074
+ "frequency": 17610
2075
+ },
2076
+ {
2077
+ "id": 244,
2078
+ "type": "protected",
2079
+ "token": "\\\\",
2080
+ "text": "\\\\",
2081
+ "frequency": 14538
2082
+ },
2083
+ {
2084
+ "id": 223,
2085
+ "type": "protected",
2086
+ "token": "\"1\"",
2087
+ "text": "\"1\"",
2088
+ "frequency": 12936
2089
+ },
2090
+ {
2091
+ "id": 41,
2092
+ "type": "protected",
2093
+ "token": ")",
2094
+ "text": ")",
2095
+ "frequency": 11851
2096
+ },
2097
+ {
2098
+ "id": 224,
2099
+ "type": "protected",
2100
+ "token": "\"2\"",
2101
+ "text": "\"2\"",
2102
+ "frequency": 11563
2103
+ },
2104
+ {
2105
+ "id": 34,
2106
+ "type": "byte",
2107
+ "token": "\"",
2108
+ "text": "\"",
2109
+ "frequency": 5840
2110
+ },
2111
+ {
2112
+ "id": 115,
2113
+ "type": "protected",
2114
+ "token": "s",
2115
+ "text": "s",
2116
+ "frequency": 5119
2117
+ },
2118
+ {
2119
+ "id": 248,
2120
+ "type": "protected",
2121
+ "token": "\\p",
2122
+ "text": "\\p",
2123
+ "frequency": 4689
2124
+ },
2125
+ {
2126
+ "id": 247,
2127
+ "type": "protected",
2128
+ "token": "\\f",
2129
+ "text": "\\f",
2130
+ "frequency": 3969
2131
+ },
2132
+ {
2133
+ "id": 53,
2134
+ "type": "byte",
2135
+ "token": "5",
2136
+ "text": "5",
2137
+ "frequency": 3485
2138
+ },
2139
+ {
2140
+ "id": 123,
2141
+ "type": "byte",
2142
+ "token": "{",
2143
+ "text": "{",
2144
+ "frequency": 2866
2145
+ },
2146
+ {
2147
+ "id": 125,
2148
+ "type": "byte",
2149
+ "token": "}",
2150
+ "text": "}",
2151
+ "frequency": 2866
2152
+ },
2153
+ {
2154
+ "id": 158,
2155
+ "type": "protected",
2156
+ "token": "\\tuplet",
2157
+ "text": "\\tuplet",
2158
+ "frequency": 2866
2159
+ },
2160
+ {
2161
+ "id": 55,
2162
+ "type": "byte",
2163
+ "token": "7",
2164
+ "text": "7",
2165
+ "frequency": 2825
2166
+ },
2167
+ {
2168
+ "id": 202,
2169
+ "type": "protected",
2170
+ "token": "\\bar",
2171
+ "text": "\\bar",
2172
+ "frequency": 2622
2173
+ },
2174
+ {
2175
+ "id": 48,
2176
+ "type": "byte",
2177
+ "token": "0",
2178
+ "text": "0",
2179
+ "frequency": 2592
2180
+ },
2181
+ {
2182
+ "id": 57,
2183
+ "type": "byte",
2184
+ "token": "9",
2185
+ "text": "9",
2186
+ "frequency": 2448
2187
+ },
2188
+ {
2189
+ "id": 58,
2190
+ "type": "byte",
2191
+ "token": ":",
2192
+ "text": ":",
2193
+ "frequency": 2290
2194
+ },
2195
+ {
2196
+ "id": 249,
2197
+ "type": "protected",
2198
+ "token": "ff",
2199
+ "text": "ff",
2200
+ "frequency": 2126
2201
+ },
2202
+ {
2203
+ "id": 246,
2204
+ "type": "protected",
2205
+ "token": "\\>",
2206
+ "text": "\\>",
2207
+ "frequency": 1702
2208
+ },
2209
+ {
2210
+ "id": 166,
2211
+ "type": "protected",
2212
+ "token": "\\grace",
2213
+ "text": "\\grace",
2214
+ "frequency": 1691
2215
+ },
2216
+ {
2217
+ "id": 181,
2218
+ "type": "protected",
2219
+ "token": "\\clef",
2220
+ "text": "\\clef",
2221
+ "frequency": 1525
2222
+ },
2223
+ {
2224
+ "id": 245,
2225
+ "type": "protected",
2226
+ "token": "\\<",
2227
+ "text": "\\<",
2228
+ "frequency": 1439
2229
+ },
2230
+ {
2231
+ "id": 134,
2232
+ "type": "protected",
2233
+ "token": "\\sustainOn",
2234
+ "text": "\\sustainOn",
2235
+ "frequency": 1318
2236
+ },
2237
+ {
2238
+ "id": 243,
2239
+ "type": "protected",
2240
+ "token": "\\!",
2241
+ "text": "\\!",
2242
+ "frequency": 1255
2243
+ },
2244
+ {
2245
+ "id": 95,
2246
+ "type": "protected",
2247
+ "token": "_",
2248
+ "text": "_",
2249
+ "frequency": 995
2250
+ },
2251
+ {
2252
+ "id": 231,
2253
+ "type": "protected",
2254
+ "token": "\\pp",
2255
+ "text": "\\pp",
2256
+ "frequency": 986
2257
+ },
2258
+ {
2259
+ "id": 126,
2260
+ "type": "byte",
2261
+ "token": "~",
2262
+ "text": "~",
2263
+ "frequency": 966
2264
+ },
2265
+ {
2266
+ "id": 227,
2267
+ "type": "protected",
2268
+ "token": "\\ff",
2269
+ "text": "\\ff",
2270
+ "frequency": 853
2271
+ },
2272
+ {
2273
+ "id": 128,
2274
+ "type": "protected",
2275
+ "token": "\\numericTimeSignature",
2276
+ "text": "\\numericTimeSignature",
2277
+ "frequency": 846
2278
+ },
2279
+ {
2280
+ "id": 145,
2281
+ "type": "protected",
2282
+ "token": "\"treble\"",
2283
+ "text": "\"treble\"",
2284
+ "frequency": 778
2285
+ },
2286
+ {
2287
+ "id": 165,
2288
+ "type": "protected",
2289
+ "token": "\"bass\"",
2290
+ "text": "\"bass\"",
2291
+ "frequency": 635
2292
+ },
2293
+ {
2294
+ "id": 146,
2295
+ "type": "protected",
2296
+ "token": "\\fermata",
2297
+ "text": "\\fermata",
2298
+ "frequency": 610
2299
+ },
2300
+ {
2301
+ "id": 61,
2302
+ "type": "byte",
2303
+ "token": "=",
2304
+ "text": "=",
2305
+ "frequency": 524
2306
+ },
2307
+ {
2308
+ "id": 171,
2309
+ "type": "protected",
2310
+ "token": "\\tempo",
2311
+ "text": "\\tempo",
2312
+ "frequency": 524
2313
+ },
2314
+ {
2315
+ "id": 133,
2316
+ "type": "protected",
2317
+ "token": "\\sustainOff",
2318
+ "text": "\\sustainOff",
2319
+ "frequency": 472
2320
+ },
2321
+ {
2322
+ "id": 253,
2323
+ "type": "protected",
2324
+ "token": "ss",
2325
+ "text": "ss",
2326
+ "frequency": 387
2327
+ },
2328
+ {
2329
+ "id": 173,
2330
+ "type": "protected",
2331
+ "token": "\\trill",
2332
+ "text": "\\trill",
2333
+ "frequency": 307
2334
+ },
2335
+ {
2336
+ "id": 205,
2337
+ "type": "protected",
2338
+ "token": "\\ppp",
2339
+ "text": "\\ppp",
2340
+ "frequency": 305
2341
+ },
2342
+ {
2343
+ "id": 138,
2344
+ "type": "protected",
2345
+ "token": "\\arpeggio",
2346
+ "text": "\\arpeggio",
2347
+ "frequency": 300
2348
+ },
2349
+ {
2350
+ "id": 111,
2351
+ "type": "byte",
2352
+ "token": "o",
2353
+ "text": "o",
2354
+ "frequency": 286
2355
+ },
2356
+ {
2357
+ "id": 107,
2358
+ "type": "byte",
2359
+ "token": "k",
2360
+ "text": "k",
2361
+ "frequency": 196
2362
+ },
2363
+ {
2364
+ "id": 121,
2365
+ "type": "byte",
2366
+ "token": "y",
2367
+ "text": "y",
2368
+ "frequency": 196
2369
+ },
2370
+ {
2371
+ "id": 91,
2372
+ "type": "byte",
2373
+ "token": "[",
2374
+ "text": "[",
2375
+ "frequency": 186
2376
+ },
2377
+ {
2378
+ "id": 93,
2379
+ "type": "byte",
2380
+ "token": "]",
2381
+ "text": "]",
2382
+ "frequency": 186
2383
+ },
2384
+ {
2385
+ "id": 116,
2386
+ "type": "byte",
2387
+ "token": "t",
2388
+ "text": "t",
2389
+ "frequency": 186
2390
+ },
2391
+ {
2392
+ "id": 149,
2393
+ "type": "protected",
2394
+ "token": "composer",
2395
+ "text": "composer",
2396
+ "frequency": 186
2397
+ },
2398
+ {
2399
+ "id": 104,
2400
+ "type": "byte",
2401
+ "token": "h",
2402
+ "text": "h",
2403
+ "frequency": 158
2404
+ },
2405
+ {
2406
+ "id": 118,
2407
+ "type": "byte",
2408
+ "token": "v",
2409
+ "text": "v",
2410
+ "frequency": 154
2411
+ },
2412
+ {
2413
+ "id": 105,
2414
+ "type": "byte",
2415
+ "token": "i",
2416
+ "text": "i",
2417
+ "frequency": 128
2418
+ },
2419
+ {
2420
+ "id": 110,
2421
+ "type": "byte",
2422
+ "token": "n",
2423
+ "text": "n",
2424
+ "frequency": 120
2425
+ },
2426
+ {
2427
+ "id": 208,
2428
+ "type": "protected",
2429
+ "token": "alto",
2430
+ "text": "alto",
2431
+ "frequency": 112
2432
+ },
2433
+ {
2434
+ "id": 35,
2435
+ "type": "byte",
2436
+ "token": "#",
2437
+ "text": "#",
2438
+ "frequency": 108
2439
+ },
2440
+ {
2441
+ "id": 155,
2442
+ "type": "protected",
2443
+ "token": "\\ottava",
2444
+ "text": "\\ottava",
2445
+ "frequency": 108
2446
+ },
2447
+ {
2448
+ "id": 80,
2449
+ "type": "byte",
2450
+ "token": "P",
2451
+ "text": "P",
2452
+ "frequency": 98
2453
+ },
2454
+ {
2455
+ "id": 84,
2456
+ "type": "byte",
2457
+ "token": "T",
2458
+ "text": "T",
2459
+ "frequency": 98
2460
+ },
2461
+ {
2462
+ "id": 117,
2463
+ "type": "byte",
2464
+ "token": "u",
2465
+ "text": "u",
2466
+ "frequency": 86
2467
+ },
2468
+ {
2469
+ "id": 229,
2470
+ "type": "protected",
2471
+ "token": "\\mf",
2472
+ "text": "\\mf",
2473
+ "frequency": 69
2474
+ },
2475
+ {
2476
+ "id": 122,
2477
+ "type": "byte",
2478
+ "token": "z",
2479
+ "text": "z",
2480
+ "frequency": 58
2481
+ },
2482
+ {
2483
+ "id": 203,
2484
+ "type": "protected",
2485
+ "token": "\\fff",
2486
+ "text": "\\fff",
2487
+ "frequency": 51
2488
+ },
2489
+ {
2490
+ "id": 65,
2491
+ "type": "byte",
2492
+ "token": "A",
2493
+ "text": "A",
2494
+ "frequency": 30
2495
+ },
2496
+ {
2497
+ "id": 66,
2498
+ "type": "byte",
2499
+ "token": "B",
2500
+ "text": "B",
2501
+ "frequency": 30
2502
+ },
2503
+ {
2504
+ "id": 77,
2505
+ "type": "byte",
2506
+ "token": "M",
2507
+ "text": "M",
2508
+ "frequency": 30
2509
+ },
2510
+ {
2511
+ "id": 83,
2512
+ "type": "byte",
2513
+ "token": "S",
2514
+ "text": "S",
2515
+ "frequency": 30
2516
+ },
2517
+ {
2518
+ "id": 87,
2519
+ "type": "byte",
2520
+ "token": "W",
2521
+ "text": "W",
2522
+ "frequency": 30
2523
+ },
2524
+ {
2525
+ "id": 108,
2526
+ "type": "byte",
2527
+ "token": "l",
2528
+ "text": "l",
2529
+ "frequency": 30
2530
+ },
2531
+ {
2532
+ "id": 252,
2533
+ "type": "protected",
2534
+ "token": "ma",
2535
+ "text": "ma",
2536
+ "frequency": 30
2537
+ },
2538
+ {
2539
+ "id": 70,
2540
+ "type": "byte",
2541
+ "token": "F",
2542
+ "text": "F",
2543
+ "frequency": 28
2544
+ },
2545
+ {
2546
+ "id": 76,
2547
+ "type": "byte",
2548
+ "token": "L",
2549
+ "text": "L",
2550
+ "frequency": 28
2551
+ },
2552
+ {
2553
+ "id": 119,
2554
+ "type": "byte",
2555
+ "token": "w",
2556
+ "text": "w",
2557
+ "frequency": 28
2558
+ },
2559
+ {
2560
+ "id": 169,
2561
+ "type": "protected",
2562
+ "token": "\\prall",
2563
+ "text": "\\prall",
2564
+ "frequency": 18
2565
+ },
2566
+ {
2567
+ "id": 207,
2568
+ "type": "protected",
2569
+ "token": "\\sfz",
2570
+ "text": "\\sfz",
2571
+ "frequency": 3
2572
+ },
2573
+ {
2574
+ "id": 74,
2575
+ "type": "byte",
2576
+ "token": "J",
2577
+ "text": "J",
2578
+ "frequency": 2
2579
+ },
2580
+ {
2581
+ "id": 0,
2582
+ "type": "special",
2583
+ "token": "<pad>",
2584
+ "text": "<pad>",
2585
+ "frequency": 0
2586
+ },
2587
+ {
2588
+ "id": 1,
2589
+ "type": "special",
2590
+ "token": "<bos>",
2591
+ "text": "<bos>",
2592
+ "frequency": 0
2593
+ },
2594
+ {
2595
+ "id": 2,
2596
+ "type": "special",
2597
+ "token": "<eos>",
2598
+ "text": "<eos>",
2599
+ "frequency": 0
2600
+ },
2601
+ {
2602
+ "id": 3,
2603
+ "type": "special",
2604
+ "token": "<unknown>",
2605
+ "text": "<unknown>",
2606
+ "frequency": 0
2607
+ },
2608
+ {
2609
+ "id": 4,
2610
+ "type": "special",
2611
+ "token": "<mask>",
2612
+ "text": "<mask>",
2613
+ "frequency": 0
2614
+ },
2615
+ {
2616
+ "id": 5,
2617
+ "type": "special",
2618
+ "token": "<sep>",
2619
+ "text": "<sep>",
2620
+ "frequency": 0
2621
+ },
2622
+ {
2623
+ "id": 6,
2624
+ "type": "special",
2625
+ "token": "<reserved_6>",
2626
+ "text": "<reserved_6>",
2627
+ "frequency": 0
2628
+ },
2629
+ {
2630
+ "id": 7,
2631
+ "type": "special",
2632
+ "token": "<reserved_7>",
2633
+ "text": "<reserved_7>",
2634
+ "frequency": 0
2635
+ },
2636
+ {
2637
+ "id": 8,
2638
+ "type": "byte",
2639
+ "token": "\b",
2640
+ "text": "\b",
2641
+ "frequency": 0
2642
+ },
2643
+ {
2644
+ "id": 9,
2645
+ "type": "byte",
2646
+ "token": "\t",
2647
+ "text": "\t",
2648
+ "frequency": 0
2649
+ },
2650
+ {
2651
+ "id": 11,
2652
+ "type": "byte",
2653
+ "token": "\u000b",
2654
+ "text": "\u000b",
2655
+ "frequency": 0
2656
+ },
2657
+ {
2658
+ "id": 12,
2659
+ "type": "byte",
2660
+ "token": "\f",
2661
+ "text": "\f",
2662
+ "frequency": 0
2663
+ },
2664
+ {
2665
+ "id": 13,
2666
+ "type": "byte",
2667
+ "token": "\r",
2668
+ "text": "\r",
2669
+ "frequency": 0
2670
+ },
2671
+ {
2672
+ "id": 14,
2673
+ "type": "protected",
2674
+ "token": "à",
2675
+ "text": "à",
2676
+ "frequency": 0
2677
+ },
2678
+ {
2679
+ "id": 15,
2680
+ "type": "protected",
2681
+ "token": "è",
2682
+ "text": "è",
2683
+ "frequency": 0
2684
+ },
2685
+ {
2686
+ "id": 16,
2687
+ "type": "protected",
2688
+ "token": "é",
2689
+ "text": "é",
2690
+ "frequency": 0
2691
+ },
2692
+ {
2693
+ "id": 17,
2694
+ "type": "protected",
2695
+ "token": "ì",
2696
+ "text": "ì",
2697
+ "frequency": 0
2698
+ },
2699
+ {
2700
+ "id": 18,
2701
+ "type": "protected",
2702
+ "token": "ò",
2703
+ "text": "ò",
2704
+ "frequency": 0
2705
+ },
2706
+ {
2707
+ "id": 19,
2708
+ "type": "protected",
2709
+ "token": "ù",
2710
+ "text": "ù",
2711
+ "frequency": 0
2712
+ },
2713
+ {
2714
+ "id": 20,
2715
+ "type": "protected",
2716
+ "token": "À",
2717
+ "text": "À",
2718
+ "frequency": 0
2719
+ },
2720
+ {
2721
+ "id": 21,
2722
+ "type": "protected",
2723
+ "token": "È",
2724
+ "text": "È",
2725
+ "frequency": 0
2726
+ },
2727
+ {
2728
+ "id": 22,
2729
+ "type": "protected",
2730
+ "token": "É",
2731
+ "text": "É",
2732
+ "frequency": 0
2733
+ },
2734
+ {
2735
+ "id": 23,
2736
+ "type": "protected",
2737
+ "token": "Ì",
2738
+ "text": "Ì",
2739
+ "frequency": 0
2740
+ },
2741
+ {
2742
+ "id": 24,
2743
+ "type": "protected",
2744
+ "token": "Ò",
2745
+ "text": "Ò",
2746
+ "frequency": 0
2747
+ },
2748
+ {
2749
+ "id": 25,
2750
+ "type": "protected",
2751
+ "token": "Ù",
2752
+ "text": "Ù",
2753
+ "frequency": 0
2754
+ },
2755
+ {
2756
+ "id": 26,
2757
+ "type": "byte",
2758
+ "token": "\u001a",
2759
+ "text": "\u001a",
2760
+ "frequency": 0
2761
+ },
2762
+ {
2763
+ "id": 27,
2764
+ "type": "byte",
2765
+ "token": "\u001b",
2766
+ "text": "\u001b",
2767
+ "frequency": 0
2768
+ },
2769
+ {
2770
+ "id": 28,
2771
+ "type": "byte",
2772
+ "token": "\u001c",
2773
+ "text": "\u001c",
2774
+ "frequency": 0
2775
+ },
2776
+ {
2777
+ "id": 29,
2778
+ "type": "byte",
2779
+ "token": "\u001d",
2780
+ "text": "\u001d",
2781
+ "frequency": 0
2782
+ },
2783
+ {
2784
+ "id": 30,
2785
+ "type": "byte",
2786
+ "token": "\u001e",
2787
+ "text": "\u001e",
2788
+ "frequency": 0
2789
+ },
2790
+ {
2791
+ "id": 31,
2792
+ "type": "byte",
2793
+ "token": "\u001f",
2794
+ "text": "\u001f",
2795
+ "frequency": 0
2796
+ },
2797
+ {
2798
+ "id": 33,
2799
+ "type": "protected",
2800
+ "token": "!",
2801
+ "text": "!",
2802
+ "frequency": 0
2803
+ },
2804
+ {
2805
+ "id": 36,
2806
+ "type": "byte",
2807
+ "token": "$",
2808
+ "text": "$",
2809
+ "frequency": 0
2810
+ },
2811
+ {
2812
+ "id": 38,
2813
+ "type": "byte",
2814
+ "token": "&",
2815
+ "text": "&",
2816
+ "frequency": 0
2817
+ },
2818
+ {
2819
+ "id": 42,
2820
+ "type": "byte",
2821
+ "token": "*",
2822
+ "text": "*",
2823
+ "frequency": 0
2824
+ },
2825
+ {
2826
+ "id": 43,
2827
+ "type": "byte",
2828
+ "token": "+",
2829
+ "text": "+",
2830
+ "frequency": 0
2831
+ },
2832
+ {
2833
+ "id": 59,
2834
+ "type": "byte",
2835
+ "token": ";",
2836
+ "text": ";",
2837
+ "frequency": 0
2838
+ },
2839
+ {
2840
+ "id": 63,
2841
+ "type": "byte",
2842
+ "token": "?",
2843
+ "text": "?",
2844
+ "frequency": 0
2845
+ },
2846
+ {
2847
+ "id": 64,
2848
+ "type": "byte",
2849
+ "token": "@",
2850
+ "text": "@",
2851
+ "frequency": 0
2852
+ },
2853
+ {
2854
+ "id": 67,
2855
+ "type": "byte",
2856
+ "token": "C",
2857
+ "text": "C",
2858
+ "frequency": 0
2859
+ },
2860
+ {
2861
+ "id": 68,
2862
+ "type": "byte",
2863
+ "token": "D",
2864
+ "text": "D",
2865
+ "frequency": 0
2866
+ },
2867
+ {
2868
+ "id": 69,
2869
+ "type": "byte",
2870
+ "token": "E",
2871
+ "text": "E",
2872
+ "frequency": 0
2873
+ },
2874
+ {
2875
+ "id": 71,
2876
+ "type": "byte",
2877
+ "token": "G",
2878
+ "text": "G",
2879
+ "frequency": 0
2880
+ },
2881
+ {
2882
+ "id": 72,
2883
+ "type": "byte",
2884
+ "token": "H",
2885
+ "text": "H",
2886
+ "frequency": 0
2887
+ },
2888
+ {
2889
+ "id": 73,
2890
+ "type": "byte",
2891
+ "token": "I",
2892
+ "text": "I",
2893
+ "frequency": 0
2894
+ },
2895
+ {
2896
+ "id": 75,
2897
+ "type": "byte",
2898
+ "token": "K",
2899
+ "text": "K",
2900
+ "frequency": 0
2901
+ },
2902
+ {
2903
+ "id": 78,
2904
+ "type": "byte",
2905
+ "token": "N",
2906
+ "text": "N",
2907
+ "frequency": 0
2908
+ },
2909
+ {
2910
+ "id": 79,
2911
+ "type": "byte",
2912
+ "token": "O",
2913
+ "text": "O",
2914
+ "frequency": 0
2915
+ },
2916
+ {
2917
+ "id": 81,
2918
+ "type": "byte",
2919
+ "token": "Q",
2920
+ "text": "Q",
2921
+ "frequency": 0
2922
+ },
2923
+ {
2924
+ "id": 82,
2925
+ "type": "byte",
2926
+ "token": "R",
2927
+ "text": "R",
2928
+ "frequency": 0
2929
+ },
2930
+ {
2931
+ "id": 85,
2932
+ "type": "byte",
2933
+ "token": "U",
2934
+ "text": "U",
2935
+ "frequency": 0
2936
+ },
2937
+ {
2938
+ "id": 86,
2939
+ "type": "byte",
2940
+ "token": "V",
2941
+ "text": "V",
2942
+ "frequency": 0
2943
+ },
2944
+ {
2945
+ "id": 88,
2946
+ "type": "byte",
2947
+ "token": "X",
2948
+ "text": "X",
2949
+ "frequency": 0
2950
+ },
2951
+ {
2952
+ "id": 89,
2953
+ "type": "byte",
2954
+ "token": "Y",
2955
+ "text": "Y",
2956
+ "frequency": 0
2957
+ },
2958
+ {
2959
+ "id": 90,
2960
+ "type": "byte",
2961
+ "token": "Z",
2962
+ "text": "Z",
2963
+ "frequency": 0
2964
+ },
2965
+ {
2966
+ "id": 92,
2967
+ "type": "byte",
2968
+ "token": "\\",
2969
+ "text": "\\",
2970
+ "frequency": 0
2971
+ },
2972
+ {
2973
+ "id": 94,
2974
+ "type": "protected",
2975
+ "token": "^",
2976
+ "text": "^",
2977
+ "frequency": 0
2978
+ },
2979
+ {
2980
+ "id": 96,
2981
+ "type": "byte",
2982
+ "token": "`",
2983
+ "text": "`",
2984
+ "frequency": 0
2985
+ },
2986
+ {
2987
+ "id": 106,
2988
+ "type": "byte",
2989
+ "token": "j",
2990
+ "text": "j",
2991
+ "frequency": 0
2992
+ },
2993
+ {
2994
+ "id": 109,
2995
+ "type": "byte",
2996
+ "token": "m",
2997
+ "text": "m",
2998
+ "frequency": 0
2999
+ },
3000
+ {
3001
+ "id": 112,
3002
+ "type": "byte",
3003
+ "token": "p",
3004
+ "text": "p",
3005
+ "frequency": 0
3006
+ },
3007
+ {
3008
+ "id": 113,
3009
+ "type": "byte",
3010
+ "token": "q",
3011
+ "text": "q",
3012
+ "frequency": 0
3013
+ },
3014
+ {
3015
+ "id": 120,
3016
+ "type": "byte",
3017
+ "token": "x",
3018
+ "text": "x",
3019
+ "frequency": 0
3020
+ },
3021
+ {
3022
+ "id": 127,
3023
+ "type": "byte",
3024
+ "token": "",
3025
+ "text": "",
3026
+ "frequency": 0
3027
+ },
3028
+ {
3029
+ "id": 129,
3030
+ "type": "protected",
3031
+ "token": "\\shortfermata",
3032
+ "text": "\\shortfermata",
3033
+ "frequency": 0
3034
+ },
3035
+ {
3036
+ "id": 130,
3037
+ "type": "protected",
3038
+ "token": "\\sostenutoOff",
3039
+ "text": "\\sostenutoOff",
3040
+ "frequency": 0
3041
+ },
3042
+ {
3043
+ "id": 131,
3044
+ "type": "protected",
3045
+ "token": "\\sostenutoOn",
3046
+ "text": "\\sostenutoOn",
3047
+ "frequency": 0
3048
+ },
3049
+ {
3050
+ "id": 132,
3051
+ "type": "protected",
3052
+ "token": "\\stemNeutral",
3053
+ "text": "\\stemNeutral",
3054
+ "frequency": 0
3055
+ },
3056
+ {
3057
+ "id": 135,
3058
+ "type": "protected",
3059
+ "token": "Allegretto",
3060
+ "text": "Allegretto",
3061
+ "frequency": 0
3062
+ },
3063
+ {
3064
+ "id": 136,
3065
+ "type": "protected",
3066
+ "token": "espressivo",
3067
+ "text": "espressivo",
3068
+ "frequency": 0
3069
+ },
3070
+ {
3071
+ "id": 137,
3072
+ "type": "protected",
3073
+ "token": "instrument",
3074
+ "text": "instrument",
3075
+ "frequency": 0
3076
+ },
3077
+ {
3078
+ "id": 139,
3079
+ "type": "protected",
3080
+ "token": "\\stemDown",
3081
+ "text": "\\stemDown",
3082
+ "frequency": 0
3083
+ },
3084
+ {
3085
+ "id": 140,
3086
+ "type": "protected",
3087
+ "token": "\\treCorde",
3088
+ "text": "\\treCorde",
3089
+ "frequency": 0
3090
+ },
3091
+ {
3092
+ "id": 141,
3093
+ "type": "protected",
3094
+ "token": "\\unaCorda",
3095
+ "text": "\\unaCorda",
3096
+ "frequency": 0
3097
+ },
3098
+ {
3099
+ "id": 142,
3100
+ "type": "protected",
3101
+ "token": "Andantino",
3102
+ "text": "Andantino",
3103
+ "frequency": 0
3104
+ },
3105
+ {
3106
+ "id": 143,
3107
+ "type": "protected",
3108
+ "token": "cantabile",
3109
+ "text": "cantabile",
3110
+ "frequency": 0
3111
+ },
3112
+ {
3113
+ "id": 144,
3114
+ "type": "protected",
3115
+ "token": "sostenuto",
3116
+ "text": "sostenuto",
3117
+ "frequency": 0
3118
+ },
3119
+ {
3120
+ "id": 147,
3121
+ "type": "protected",
3122
+ "token": "\\mordent",
3123
+ "text": "\\mordent",
3124
+ "frequency": 0
3125
+ },
3126
+ {
3127
+ "id": 148,
3128
+ "type": "protected",
3129
+ "token": "\\partial",
3130
+ "text": "\\partial",
3131
+ "frequency": 0
3132
+ },
3133
+ {
3134
+ "id": 150,
3135
+ "type": "protected",
3136
+ "token": "grazioso",
3137
+ "text": "grazioso",
3138
+ "frequency": 0
3139
+ },
3140
+ {
3141
+ "id": 151,
3142
+ "type": "protected",
3143
+ "token": "Menuetto",
3144
+ "text": "Menuetto",
3145
+ "frequency": 0
3146
+ },
3147
+ {
3148
+ "id": 152,
3149
+ "type": "protected",
3150
+ "token": "moderato",
3151
+ "text": "moderato",
3152
+ "frequency": 0
3153
+ },
3154
+ {
3155
+ "id": 153,
3156
+ "type": "protected",
3157
+ "token": "Moderato",
3158
+ "text": "Moderato",
3159
+ "frequency": 0
3160
+ },
3161
+ {
3162
+ "id": 154,
3163
+ "type": "protected",
3164
+ "token": "\\markup",
3165
+ "text": "\\markup",
3166
+ "frequency": 0
3167
+ },
3168
+ {
3169
+ "id": 156,
3170
+ "type": "protected",
3171
+ "token": "\\repeat",
3172
+ "text": "\\repeat",
3173
+ "frequency": 0
3174
+ },
3175
+ {
3176
+ "id": 157,
3177
+ "type": "protected",
3178
+ "token": "\\stemUp",
3179
+ "text": "\\stemUp",
3180
+ "frequency": 0
3181
+ },
3182
+ {
3183
+ "id": 159,
3184
+ "type": "protected",
3185
+ "token": "agitato",
3186
+ "text": "agitato",
3187
+ "frequency": 0
3188
+ },
3189
+ {
3190
+ "id": 160,
3191
+ "type": "protected",
3192
+ "token": "Allegro",
3193
+ "text": "Allegro",
3194
+ "frequency": 0
3195
+ },
3196
+ {
3197
+ "id": 161,
3198
+ "type": "protected",
3199
+ "token": "Andante",
3200
+ "text": "Andante",
3201
+ "frequency": 0
3202
+ },
3203
+ {
3204
+ "id": 162,
3205
+ "type": "protected",
3206
+ "token": "animato",
3207
+ "text": "animato",
3208
+ "frequency": 0
3209
+ },
3210
+ {
3211
+ "id": 163,
3212
+ "type": "protected",
3213
+ "token": "espress",
3214
+ "text": "espress",
3215
+ "frequency": 0
3216
+ },
3217
+ {
3218
+ "id": 164,
3219
+ "type": "protected",
3220
+ "token": "marcato",
3221
+ "text": "marcato",
3222
+ "frequency": 0
3223
+ },
3224
+ {
3225
+ "id": 168,
3226
+ "type": "protected",
3227
+ "token": "\\minor",
3228
+ "text": "\\minor",
3229
+ "frequency": 0
3230
+ },
3231
+ {
3232
+ "id": 172,
3233
+ "type": "protected",
3234
+ "token": "\\times",
3235
+ "text": "\\times",
3236
+ "frequency": 0
3237
+ },
3238
+ {
3239
+ "id": 174,
3240
+ "type": "protected",
3241
+ "token": "Adagio",
3242
+ "text": "Adagio",
3243
+ "frequency": 0
3244
+ },
3245
+ {
3246
+ "id": 175,
3247
+ "type": "protected",
3248
+ "token": "legato",
3249
+ "text": "legato",
3250
+ "frequency": 0
3251
+ },
3252
+ {
3253
+ "id": 176,
3254
+ "type": "protected",
3255
+ "token": "Presto",
3256
+ "text": "Presto",
3257
+ "frequency": 0
3258
+ },
3259
+ {
3260
+ "id": 177,
3261
+ "type": "protected",
3262
+ "token": "ritard",
3263
+ "text": "ritard",
3264
+ "frequency": 0
3265
+ },
3266
+ {
3267
+ "id": 178,
3268
+ "type": "protected",
3269
+ "token": "sempre",
3270
+ "text": "sempre",
3271
+ "frequency": 0
3272
+ },
3273
+ {
3274
+ "id": 179,
3275
+ "type": "protected",
3276
+ "token": "troppo",
3277
+ "text": "troppo",
3278
+ "frequency": 0
3279
+ },
3280
+ {
3281
+ "id": 180,
3282
+ "type": "protected",
3283
+ "token": "vivace",
3284
+ "text": "vivace",
3285
+ "frequency": 0
3286
+ },
3287
+ {
3288
+ "id": 182,
3289
+ "type": "protected",
3290
+ "token": "\\rest",
3291
+ "text": "\\rest",
3292
+ "frequency": 0
3293
+ },
3294
+ {
3295
+ "id": 184,
3296
+ "type": "protected",
3297
+ "token": "\\turn",
3298
+ "text": "\\turn",
3299
+ "frequency": 0
3300
+ },
3301
+ {
3302
+ "id": 185,
3303
+ "type": "protected",
3304
+ "token": "assai",
3305
+ "text": "assai",
3306
+ "frequency": 0
3307
+ },
3308
+ {
3309
+ "id": 186,
3310
+ "type": "protected",
3311
+ "token": "colla",
3312
+ "text": "colla",
3313
+ "frequency": 0
3314
+ },
3315
+ {
3316
+ "id": 187,
3317
+ "type": "protected",
3318
+ "token": "corda",
3319
+ "text": "corda",
3320
+ "frequency": 0
3321
+ },
3322
+ {
3323
+ "id": 188,
3324
+ "type": "protected",
3325
+ "token": "cresc",
3326
+ "text": "cresc",
3327
+ "frequency": 0
3328
+ },
3329
+ {
3330
+ "id": 189,
3331
+ "type": "protected",
3332
+ "token": "dolce",
3333
+ "text": "dolce",
3334
+ "frequency": 0
3335
+ },
3336
+ {
3337
+ "id": 190,
3338
+ "type": "protected",
3339
+ "token": "genre",
3340
+ "text": "genre",
3341
+ "frequency": 0
3342
+ },
3343
+ {
3344
+ "id": 191,
3345
+ "type": "protected",
3346
+ "token": "Largo",
3347
+ "text": "Largo",
3348
+ "frequency": 0
3349
+ },
3350
+ {
3351
+ "id": 192,
3352
+ "type": "protected",
3353
+ "token": "lento",
3354
+ "text": "lento",
3355
+ "frequency": 0
3356
+ },
3357
+ {
3358
+ "id": 193,
3359
+ "type": "protected",
3360
+ "token": "Lento",
3361
+ "text": "Lento",
3362
+ "frequency": 0
3363
+ },
3364
+ {
3365
+ "id": 194,
3366
+ "type": "protected",
3367
+ "token": "molto",
3368
+ "text": "molto",
3369
+ "frequency": 0
3370
+ },
3371
+ {
3372
+ "id": 195,
3373
+ "type": "protected",
3374
+ "token": "Molto",
3375
+ "text": "Molto",
3376
+ "frequency": 0
3377
+ },
3378
+ {
3379
+ "id": 196,
3380
+ "type": "protected",
3381
+ "token": "mosso",
3382
+ "text": "mosso",
3383
+ "frequency": 0
3384
+ },
3385
+ {
3386
+ "id": 197,
3387
+ "type": "protected",
3388
+ "token": "riten",
3389
+ "text": "riten",
3390
+ "frequency": 0
3391
+ },
3392
+ {
3393
+ "id": 198,
3394
+ "type": "protected",
3395
+ "token": "smorz",
3396
+ "text": "smorz",
3397
+ "frequency": 0
3398
+ },
3399
+ {
3400
+ "id": 199,
3401
+ "type": "protected",
3402
+ "token": "sotto",
3403
+ "text": "sotto",
3404
+ "frequency": 0
3405
+ },
3406
+ {
3407
+ "id": 200,
3408
+ "type": "protected",
3409
+ "token": "tempo",
3410
+ "text": "tempo",
3411
+ "frequency": 0
3412
+ },
3413
+ {
3414
+ "id": 201,
3415
+ "type": "protected",
3416
+ "token": "Tempo",
3417
+ "text": "Tempo",
3418
+ "frequency": 0
3419
+ },
3420
+ {
3421
+ "id": 206,
3422
+ "type": "protected",
3423
+ "token": "\\rfz",
3424
+ "text": "\\rfz",
3425
+ "frequency": 0
3426
+ },
3427
+ {
3428
+ "id": 209,
3429
+ "type": "protected",
3430
+ "token": "arco",
3431
+ "text": "arco",
3432
+ "frequency": 0
3433
+ },
3434
+ {
3435
+ "id": 210,
3436
+ "type": "protected",
3437
+ "token": "lent",
3438
+ "text": "lent",
3439
+ "frequency": 0
3440
+ },
3441
+ {
3442
+ "id": 211,
3443
+ "type": "protected",
3444
+ "token": "moto",
3445
+ "text": "moto",
3446
+ "frequency": 0
3447
+ },
3448
+ {
3449
+ "id": 212,
3450
+ "type": "protected",
3451
+ "token": "pizz",
3452
+ "text": "pizz",
3453
+ "frequency": 0
3454
+ },
3455
+ {
3456
+ "id": 213,
3457
+ "type": "protected",
3458
+ "token": "plus",
3459
+ "text": "plus",
3460
+ "frequency": 0
3461
+ },
3462
+ {
3463
+ "id": 214,
3464
+ "type": "protected",
3465
+ "token": "poco",
3466
+ "text": "poco",
3467
+ "frequency": 0
3468
+ },
3469
+ {
3470
+ "id": 215,
3471
+ "type": "protected",
3472
+ "token": "Poco",
3473
+ "text": "Poco",
3474
+ "frequency": 0
3475
+ },
3476
+ {
3477
+ "id": 216,
3478
+ "type": "protected",
3479
+ "token": "rall",
3480
+ "text": "rall",
3481
+ "frequency": 0
3482
+ },
3483
+ {
3484
+ "id": 217,
3485
+ "type": "protected",
3486
+ "token": "Solo",
3487
+ "text": "Solo",
3488
+ "frequency": 0
3489
+ },
3490
+ {
3491
+ "id": 218,
3492
+ "type": "protected",
3493
+ "token": "sord",
3494
+ "text": "sord",
3495
+ "frequency": 0
3496
+ },
3497
+ {
3498
+ "id": 219,
3499
+ "type": "protected",
3500
+ "token": "Text",
3501
+ "text": "Text",
3502
+ "frequency": 0
3503
+ },
3504
+ {
3505
+ "id": 220,
3506
+ "type": "protected",
3507
+ "token": "Trio",
3508
+ "text": "Trio",
3509
+ "frequency": 0
3510
+ },
3511
+ {
3512
+ "id": 221,
3513
+ "type": "protected",
3514
+ "token": "unis",
3515
+ "text": "unis",
3516
+ "frequency": 0
3517
+ },
3518
+ {
3519
+ "id": 222,
3520
+ "type": "protected",
3521
+ "token": "voce",
3522
+ "text": "voce",
3523
+ "frequency": 0
3524
+ },
3525
+ {
3526
+ "id": 225,
3527
+ "type": "protected",
3528
+ "token": "\"3\"",
3529
+ "text": "\"3\"",
3530
+ "frequency": 0
3531
+ },
3532
+ {
3533
+ "id": 228,
3534
+ "type": "protected",
3535
+ "token": "\\fp",
3536
+ "text": "\\fp",
3537
+ "frequency": 0
3538
+ },
3539
+ {
3540
+ "id": 230,
3541
+ "type": "protected",
3542
+ "token": "\\mp",
3543
+ "text": "\\mp",
3544
+ "frequency": 0
3545
+ },
3546
+ {
3547
+ "id": 232,
3548
+ "type": "protected",
3549
+ "token": "con",
3550
+ "text": "con",
3551
+ "frequency": 0
3552
+ },
3553
+ {
3554
+ "id": 233,
3555
+ "type": "protected",
3556
+ "token": "dim",
3557
+ "text": "dim",
3558
+ "frequency": 0
3559
+ },
3560
+ {
3561
+ "id": 234,
3562
+ "type": "protected",
3563
+ "token": "div",
3564
+ "text": "div",
3565
+ "frequency": 0
3566
+ },
3567
+ {
3568
+ "id": 235,
3569
+ "type": "protected",
3570
+ "token": "dol",
3571
+ "text": "dol",
3572
+ "frequency": 0
3573
+ },
3574
+ {
3575
+ "id": 236,
3576
+ "type": "protected",
3577
+ "token": "III",
3578
+ "text": "III",
3579
+ "frequency": 0
3580
+ },
3581
+ {
3582
+ "id": 237,
3583
+ "type": "protected",
3584
+ "token": "non",
3585
+ "text": "non",
3586
+ "frequency": 0
3587
+ },
3588
+ {
3589
+ "id": 238,
3590
+ "type": "protected",
3591
+ "token": "peu",
3592
+ "text": "peu",
3593
+ "frequency": 0
3594
+ },
3595
+ {
3596
+ "id": 239,
3597
+ "type": "protected",
3598
+ "token": "piu",
3599
+ "text": "piu",
3600
+ "frequency": 0
3601
+ },
3602
+ {
3603
+ "id": 240,
3604
+ "type": "protected",
3605
+ "token": "Piu",
3606
+ "text": "Piu",
3607
+ "frequency": 0
3608
+ },
3609
+ {
3610
+ "id": 241,
3611
+ "type": "protected",
3612
+ "token": "rit",
3613
+ "text": "rit",
3614
+ "frequency": 0
3615
+ },
3616
+ {
3617
+ "id": 242,
3618
+ "type": "protected",
3619
+ "token": "una",
3620
+ "text": "una",
3621
+ "frequency": 0
3622
+ },
3623
+ {
3624
+ "id": 250,
3625
+ "type": "protected",
3626
+ "token": "II",
3627
+ "text": "II",
3628
+ "frequency": 0
3629
+ },
3630
+ {
3631
+ "id": 251,
3632
+ "type": "protected",
3633
+ "token": "in",
3634
+ "text": "in",
3635
+ "frequency": 0
3636
+ },
3637
+ {
3638
+ "id": 254,
3639
+ "type": "protected",
3640
+ "token": "un",
3641
+ "text": "un",
3642
+ "frequency": 0
3643
+ },
3644
+ {
3645
+ "id": 255,
3646
+ "type": "protected",
3647
+ "token": "Un",
3648
+ "text": "Un",
3649
+ "frequency": 0
3650
+ }
3651
+ ],
3652
+ "unknowns": {
3653
+ "total": 0,
3654
+ "unique": 0,
3655
+ "hits": []
3656
+ },
3657
+ "stats": {
3658
+ "files": 215,
3659
+ "inputBytes": 2623813,
3660
+ "seedVocabSize": 256,
3661
+ "vocabSize": 256,
3662
+ "merges": 0,
3663
+ "seedTokens": 1972017,
3664
+ "finalTokens": 1972017,
3665
+ "compressionRatio": 1
3666
+ }
3667
+ }
lilyscript/__init__.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ from .generator import StreamingLilyletGenerator
2
+ from .postprocess import postprocess
3
+ from .tokenizer import LilyletTokenizer
4
+
5
+ __all__ = ['StreamingLilyletGenerator', 'postprocess', 'LilyletTokenizer']
lilyscript/generator.py ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Standalone streaming Lilylet generator (int8 ONNX + two-level KV cache).
2
+
3
+ Torch-free adaptation of deep-starry's ORTGeneratorKV
4
+ (tests/bench_lilylet_int8_ort.py): the patch-level decoder runs incrementally
5
+ through `patch_kv_int8.onnx` (O(1) per step) and the token decoder inside each
6
+ patch through `token_kv_int8.onnx`, both via onnxruntime. The token embedding
7
+ table and model geometry are loaded from vendored assets (`wte.npy`,
8
+ `geometry.json`) instead of a torch model, and sampling is reimplemented in
9
+ numpy — so the only runtime deps are onnxruntime + numpy.
10
+
11
+ `generate_stream(...)` is a Python generator: it yields `(raw, pretty, done)`
12
+ after every patch, where `raw` is the accumulated decoded text (for the run
13
+ log) and `pretty = postprocess(raw)` (for the editor, segmented by measure).
14
+ """
15
+
16
+ import os
17
+ import json
18
+
19
+ import numpy as np
20
+ import onnxruntime as ort
21
+
22
+ from .postprocess import postprocess
23
+
24
+
25
+ def sample_next (logits, rng, temperature=1.0, top_k=0, top_p=1.0):
26
+ '''Sample one token id from a logits vector (numpy) with temperature/top-k/top-p.'''
27
+ logits = logits.astype(np.float64)
28
+ if temperature != 1.0:
29
+ logits = logits / max(temperature, 1e-6)
30
+ if top_k and top_k > 0:
31
+ k = min(top_k, logits.shape[-1])
32
+ kth = np.sort(logits)[-k]
33
+ logits = np.where(logits < kth, -np.inf, logits)
34
+ if top_p and top_p < 1.0:
35
+ order = np.argsort(logits)[::-1]
36
+ sorted_logits = logits[order]
37
+ probs = _softmax(sorted_logits)
38
+ cdf = np.cumsum(probs)
39
+ remove = cdf > top_p
40
+ remove[1:] = remove[:-1].copy()
41
+ remove[0] = False
42
+ sorted_logits = np.where(remove, -np.inf, sorted_logits)
43
+ logits = np.full_like(logits, -np.inf)
44
+ logits[order] = sorted_logits
45
+ probs = _softmax(logits)
46
+ return int(rng.choice(len(probs), p=probs))
47
+
48
+
49
+ def _softmax (x):
50
+ x = x - np.max(x)
51
+ e = np.exp(x)
52
+ return e / e.sum()
53
+
54
+
55
+ class StreamingLilyletGenerator:
56
+ '''Loads the int8 KV ONNX sessions + vendored assets and streams generation.'''
57
+
58
+ def __init__ (self, model_dir, asset_dir, threads=None):
59
+ from .tokenizer import LilyletTokenizer
60
+
61
+ geo = json.load(open(os.path.join(asset_dir, 'geometry.json')))
62
+ self.patch_size = geo['patch_size']
63
+ self.pad_id = geo['pad_id']
64
+ self.bos_id = geo['bos_id']
65
+ self.eos_id = geo['eos_id']
66
+ # patch-level KV geometry
67
+ self.n_layers = geo['patch']['n_layers']
68
+ self.n_kv = geo['patch']['n_kv_heads']
69
+ self.head_dim = geo['patch']['head_dim']
70
+ # token-level KV geometry
71
+ self.t_layers = geo['token']['n_layers']
72
+ self.t_kv = geo['token']['n_kv_heads']
73
+ self.t_head_dim = geo['token']['head_dim']
74
+
75
+ self.tokenizer = LilyletTokenizer(os.path.join(asset_dir, 'lilylet-tokenizer.json'))
76
+ self.wte = np.load(os.path.join(asset_dir, 'wte.npy')) # [vocab, hidden]
77
+
78
+ so = ort.SessionOptions()
79
+ if threads:
80
+ so.intra_op_num_threads = threads
81
+ self.patch_kv_sess = ort.InferenceSession(
82
+ os.path.join(model_dir, 'patch_kv_int8.onnx'), so, providers=['CPUExecutionProvider'])
83
+ self.token_kv_sess = ort.InferenceSession(
84
+ os.path.join(model_dir, 'token_kv_int8.onnx'), so, providers=['CPUExecutionProvider'])
85
+ self.patch_out_names = [o.name for o in self.patch_kv_sess.get_outputs()]
86
+ self.token_out_names = [o.name for o in self.token_kv_sess.get_outputs()]
87
+
88
+ # ---- text helpers (mirror LilyletPatchyGenerator.patch_to_text) ----
89
+
90
+ def patch_to_text (self, patch):
91
+ out = []
92
+ for tid in patch:
93
+ tid = int(tid)
94
+ if tid == self.eos_id:
95
+ break
96
+ if tid in (self.pad_id, self.bos_id):
97
+ continue
98
+ out.append(self.tokenizer.text_by_id.get(tid, ''))
99
+ return ''.join(out)
100
+
101
+ def patches_to_text (self, patches):
102
+ return ''.join(self.patch_to_text(p) for p in patches)
103
+
104
+ # ---- KV plumbing ----
105
+
106
+ def _empty_patch_past (self):
107
+ return [np.zeros((1, self.n_kv, 0, self.head_dim), dtype=np.float32) for _ in range(2 * self.n_layers)]
108
+
109
+ def _empty_token_past (self):
110
+ return [np.zeros((1, self.t_kv, 0, self.t_head_dim), dtype=np.float32) for _ in range(2 * self.t_layers)]
111
+
112
+ def _patch_kv_step (self, patch_rows, past):
113
+ '''Feed L new patches (list of patch_size-length id rows) + past KV.
114
+ Returns (last_hidden [hidden], new_past list).'''
115
+ feed = {'patches': np.asarray([patch_rows], dtype=np.int64)}
116
+ for i in range(self.n_layers):
117
+ feed[f'past_k_{i}'] = past[2 * i]
118
+ feed[f'past_v_{i}'] = past[2 * i + 1]
119
+ out = dict(zip(self.patch_out_names, self.patch_kv_sess.run(None, feed)))
120
+ new_past = []
121
+ for i in range(self.n_layers):
122
+ new_past.append(out[f'new_k_{i}'])
123
+ new_past.append(out[f'new_v_{i}'])
124
+ return out['hidden'][0, -1], new_past
125
+
126
+ def _token_kv_step (self, emb_np, past):
127
+ '''Feed L new token embeddings [1,L,hidden] + past KV. Returns (logits[-1], new_past).'''
128
+ feed = {'inputs_embeds': emb_np.astype(np.float32)}
129
+ for i in range(self.t_layers):
130
+ feed[f'past_k_{i}'] = past[2 * i]
131
+ feed[f'past_v_{i}'] = past[2 * i + 1]
132
+ out = dict(zip(self.token_out_names, self.token_kv_sess.run(None, feed)))
133
+ new_past = []
134
+ for i in range(self.t_layers):
135
+ new_past.append(out[f'new_k_{i}'])
136
+ new_past.append(out[f'new_v_{i}'])
137
+ return out['logits'][0, -1], new_past
138
+
139
+ def _generate_patch (self, last_hidden, rng, prefix_ids=None, temperature=1.0, top_k=0, top_p=1.0):
140
+ '''Token-level decode for one patch through the token-KV session: feed the
141
+ patch state, then bos+prefix embeddings, then sample until the patch is full.'''
142
+ generated = list(prefix_ids or [])
143
+ tokens = [self.bos_id] + list(prefix_ids or [])
144
+ past = self._empty_token_past()
145
+ enc = last_hidden.reshape(1, 1, -1).astype(np.float32)
146
+ logits, past = self._token_kv_step(enc, past)
147
+ for i in range(1, len(tokens)):
148
+ emb = self.wte[tokens[i]].reshape(1, 1, -1)
149
+ logits, past = self._token_kv_step(emb, past)
150
+ while len(generated) < self.patch_size:
151
+ nxt = sample_next(logits, rng, temperature=temperature, top_k=top_k, top_p=top_p)
152
+ generated.append(nxt)
153
+ if len(generated) < self.patch_size:
154
+ emb = self.wte[nxt].reshape(1, 1, -1)
155
+ logits, past = self._token_kv_step(emb, past)
156
+ return generated
157
+
158
+ def generate_stream (self, prompt_text='', max_patches=256, temperature=1.0, top_k=0,
159
+ top_p=0.9, measures=None, seed=0):
160
+ '''Autoregressive generation, yielding after every patch.
161
+
162
+ Yields (raw, pretty, done):
163
+ raw -- accumulated decoded patch text (with `[r:x/y]` markers), for the log
164
+ pretty -- postprocess(raw), measure-segmented, for the editor
165
+ done -- True on the final yield (EOS patch or max_patches reached)
166
+ '''
167
+ rng = np.random.default_rng(seed)
168
+
169
+ bos_patch = [self.bos_id] * (self.patch_size - 1) + [self.eos_id]
170
+ patches = [bos_patch]
171
+ if prompt_text:
172
+ for line in prompt_text.splitlines():
173
+ ids = self.tokenizer.encode(line + '\n')
174
+ for i in range(0, len(ids), self.patch_size):
175
+ chunk = ids[i:i + self.patch_size]
176
+ patches.append(chunk + [self.pad_id] * (self.patch_size - len(chunk)))
177
+
178
+ out_text = self.patches_to_text(patches[1:])
179
+ prime_ids = self.tokenizer.encode(f'[r:0/{measures}]') if measures is not None else None
180
+ primed = False
181
+
182
+ # prefill: run all seed patches through the patch-KV decoder in one call
183
+ past = self._empty_patch_past()
184
+ last, past = self._patch_kv_step(patches, past)
185
+
186
+ yield out_text, postprocess(out_text), False
187
+
188
+ for _ in range(max_patches):
189
+ patch_ids = self._generate_patch(last, rng, temperature=temperature, top_k=top_k, top_p=top_p)
190
+
191
+ # first time the model emits a stream patch, re-sample with the forced
192
+ # `[r:0/<measures>]` prefix so the body starts at the requested measure count.
193
+ if prime_ids is not None and not primed and self.patch_to_text(patch_ids).startswith('[r:'):
194
+ primed = True
195
+ patch_ids = self._generate_patch(last, rng, prefix_ids=prime_ids,
196
+ temperature=temperature, top_k=top_k, top_p=top_p)
197
+
198
+ # EOS patch -> done
199
+ if patch_ids[0] == self.bos_id and patch_ids[1] == self.eos_id:
200
+ break
201
+
202
+ out_text += self.patch_to_text(patch_ids)
203
+
204
+ # mask tokens after the first EOS inside the patch to PAD before caching
205
+ clean = list(patch_ids)
206
+ seen_eos = False
207
+ for j in range(len(clean)):
208
+ if seen_eos:
209
+ clean[j] = self.pad_id
210
+ if clean[j] == self.eos_id:
211
+ seen_eos = True
212
+
213
+ # advance the patch-level cache by the one new patch -> next hidden state
214
+ last, past = self._patch_kv_step([clean], past)
215
+
216
+ yield out_text, postprocess(out_text), False
217
+
218
+ yield out_text, postprocess(out_text), True
lilyscript/postprocess.py ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Lilylet output post-processing (vendored from deep-starry, torch-free).
2
+
3
+ Cleans raw generated Lilylet text for readability:
4
+ - move each `[r:x/y]` stream marker from the measure head to a trailing
5
+ comment `% r:x/y` at the measure end (the line ending in `|`),
6
+ - insert a blank line after the metadata block,
7
+ - insert a blank line at every measure boundary.
8
+
9
+ Because a blank line is inserted at each measure boundary, the postprocessed
10
+ text is naturally segmented measure-by-measure — which is what the editor pane
11
+ displays as generation streams in.
12
+
13
+ Source: deep-starry/starry/lilylet/patchyGenerator.py (postprocess / _STREAM_RE).
14
+ """
15
+
16
+ import re
17
+
18
+
19
+ # matches a stream marker like `[r:12/34]` (and a trailing partial `[r:12/` at EOF);
20
+ # group 1 captures the `x/y` payload.
21
+ _STREAM_RE = re.compile(r'\[r:(\d+/\d*)\]?')
22
+
23
+
24
+ def postprocess (text: str) -> str:
25
+ lines = [ln.rstrip() for ln in text.split('\n')]
26
+ out = []
27
+ meta_done = False
28
+ pending = None # marker payload waiting to be attached at the measure end
29
+
30
+ for ln in lines:
31
+ # extract the stream marker (sits at the measure head); remember its
32
+ # payload and strip the marker text from the line.
33
+ m = _STREAM_RE.search(ln)
34
+ if m:
35
+ # a still-pending marker means the previous measure had no barline
36
+ # (e.g. truncated); keep it as a standalone comment so it isn't lost.
37
+ if pending is not None:
38
+ out.append('% r:' + pending)
39
+ pending = m.group(1)
40
+ ln = _STREAM_RE.sub('', ln).rstrip()
41
+
42
+ is_meta = ln.startswith('[') and ln.endswith(']')
43
+ # blank line once the metadata block ends and the body begins
44
+ if not meta_done and out and not is_meta and ln:
45
+ out.append('')
46
+ meta_done = True
47
+
48
+ is_measure_end = ln.endswith('|')
49
+ if is_measure_end and pending is not None:
50
+ ln = ln + ' % r:' + pending
51
+ pending = None
52
+
53
+ out.append(ln)
54
+
55
+ # blank line after a measure-ending line
56
+ if meta_done and is_measure_end:
57
+ out.append('')
58
+
59
+ # any marker left pending at EOF -> attach as a trailing comment
60
+ if pending is not None:
61
+ out.append('% r:' + pending)
62
+
63
+ # collapse runs of blank lines, trim leading/trailing blanks
64
+ cleaned = []
65
+ for ln in out:
66
+ if ln == '' and (not cleaned or cleaned[-1] == ''):
67
+ continue
68
+ cleaned.append(ln)
69
+ return '\n'.join(cleaned).strip('\n') + '\n'
lilyscript/tokenizer.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Standalone Lilylet tokenizer (vendored from deep-starry, torch-free).
2
+
3
+ Trimmed to what inference needs: load the vocab artifact, expose the special
4
+ ids + the id->text table, and encode text to ids (longest protected-token match
5
+ first, then per-character, then byte-level fallback). The training-time unknown
6
+ tracking and the patchify/packing machinery are intentionally dropped.
7
+
8
+ Source: deep-starry/starry/lilylet/data/patchifier.py (LilyletTokenizer).
9
+ """
10
+
11
+ import json
12
+ from typing import List
13
+
14
+
15
+ class LilyletTokenizer:
16
+ def __init__ (self, tokenizer_path: str):
17
+ self.path = tokenizer_path
18
+ with open(tokenizer_path, 'r', encoding='utf-8') as f:
19
+ self.artifact = json.load(f)
20
+
21
+ self.vocab = self.artifact['vocab']
22
+ self.id_by_token = {entry['token']: entry['id'] for entry in self.vocab}
23
+ self.text_by_id = {entry['id']: entry.get('text', entry['token']) for entry in self.vocab}
24
+ self.unknown_id = self.id_by_token.get('<unknown>', 3)
25
+ self.pad_id = self.id_by_token.get('<pad>', 0)
26
+ self.bos_id = self.id_by_token.get('<bos>', 1)
27
+ self.eos_id = self.id_by_token.get('<eos>', 2)
28
+ self.vocab_size = max(entry['id'] for entry in self.vocab) + 1
29
+
30
+ fixed = [entry['token'] for entry in self.vocab if entry.get('type') == 'protected']
31
+ self.fixed_tokens = sorted(set(fixed), key=lambda token: (-len(token), token))
32
+
33
+ def encode (self, text: str) -> List[int]:
34
+ ids: List[int] = []
35
+ i = 0
36
+ while i < len(text):
37
+ matched = None
38
+ for token in self.fixed_tokens:
39
+ if text.startswith(token, i):
40
+ matched = token
41
+ break
42
+ if matched is not None:
43
+ ids.append(self.id_by_token[matched])
44
+ i += len(matched)
45
+ continue
46
+
47
+ char = text[i]
48
+ if char in self.id_by_token:
49
+ ids.append(self.id_by_token[char])
50
+ else:
51
+ emitted_unknown = False
52
+ for byte in char.encode('utf-8'):
53
+ if 0x08 <= byte <= 0x7f and byte in self.text_by_id:
54
+ ids.append(byte)
55
+ else:
56
+ emitted_unknown = True
57
+ if emitted_unknown:
58
+ ids.append(self.unknown_id)
59
+ i += 1
60
+ return ids
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ gradio==6.18.0
2
+ onnxruntime
3
+ numpy