asigalov61 commited on
Commit
314a157
·
verified ·
1 Parent(s): 33e9ab5

Create user_guide/Orpheus_Music_Transformer_User_Guide.html

Browse files
user_guide/Orpheus_Music_Transformer_User_Guide.html ADDED
@@ -0,0 +1,410 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Orpheus Music Transformer – User Guide</title>
7
+ <meta name="color-scheme" content="light dark">
8
+ <style>
9
+ /* ----- CSS variables (light mode default) ----- */
10
+ * {
11
+ margin: 0;
12
+ padding: 0;
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ :root {
17
+ --bg-gradient-start: #f6f9fc;
18
+ --bg-gradient-end: #e9f1f8;
19
+ --container-bg: rgba(255,255,255,0.75);
20
+ --container-border: rgba(255,255,255,0.5);
21
+ --text-primary: #1e2b3c;
22
+ --text-secondary: #2c5775;
23
+ --heading-primary: #0b2b44;
24
+ --heading-secondary: #1a3b4e;
25
+ --accent: #2a5f7a;
26
+ --accent-light: #2a5f7a15;
27
+ --card-bg: white;
28
+ --card-shadow: 0 10px 20px -8px rgba(0,32,64,0.15);
29
+ --border-light: rgba(42,95,122,0.1);
30
+ --step-bg: #ffffffcc;
31
+ --table-bg: white;
32
+ --table-header-bg: #1f4b63;
33
+ --table-header-text: white;
34
+ --table-border: #d9e7f0;
35
+ --badge-bg: #2a5f7a15;
36
+ --badge-text: #1f4b63;
37
+ --badge-border: #2a5f7a30;
38
+ --note-bg: #fef8e7;
39
+ --note-border: #f3b33d;
40
+ --attribution-border: #9bbfd0;
41
+ }
42
+
43
+ /* ----- dark mode overrides (auto‑detected) ----- */
44
+ @media (prefers-color-scheme: dark) {
45
+ :root {
46
+ --bg-gradient-start: #121e2c;
47
+ --bg-gradient-end: #1a2b3a;
48
+ --container-bg: rgba(20, 30, 40, 0.85);
49
+ --container-border: rgba(100, 140, 170, 0.3);
50
+ --text-primary: #e2eaf1;
51
+ --text-secondary: #b6d0e0;
52
+ --heading-primary: #aaccff;
53
+ --heading-secondary: #9bb8d4;
54
+ --accent: #3f8bb0;
55
+ --accent-light: #3f8bb020;
56
+ --card-bg: #1f2f3c;
57
+ --card-shadow: 0 10px 20px -8px rgba(0,0,0,0.5);
58
+ --border-light: #3f5f7450;
59
+ --step-bg: #1f2f3ccc;
60
+ --table-bg: #1f2f3c;
61
+ --table-header-bg: #2b4b60;
62
+ --table-header-text: #ffffff;
63
+ --table-border: #3f5f74;
64
+ --badge-bg: #3f8bb025;
65
+ --badge-text: #c2e0ff;
66
+ --badge-border: #3f8bb070;
67
+ --note-bg: #2f2a1c;
68
+ --note-border: #e5a739;
69
+ --attribution-border: #3f5f74;
70
+ }
71
+ }
72
+
73
+ body {
74
+ background: linear-gradient(145deg, var(--bg-gradient-start), var(--bg-gradient-end));
75
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
76
+ line-height: 1.6;
77
+ color: var(--text-primary);
78
+ padding: clamp(1rem, 4vw, 2.5rem);
79
+ min-height: 100vh;
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ transition: background 0.3s ease, color 0.2s ease;
84
+ }
85
+
86
+ .container {
87
+ max-width: 1100px;
88
+ width: 100%;
89
+ margin: 0 auto;
90
+ background: var(--container-bg);
91
+ backdrop-filter: blur(10px);
92
+ -webkit-backdrop-filter: blur(10px);
93
+ border-radius: 2.5rem;
94
+ box-shadow: 0 25px 50px -12px rgba(0,0,0,0.35);
95
+ padding: clamp(1.5rem, 5vw, 3rem);
96
+ border: 1px solid var(--container-border);
97
+ }
98
+
99
+ h1 {
100
+ font-size: clamp(2rem, 6vw, 3rem);
101
+ font-weight: 700;
102
+ letter-spacing: -0.02em;
103
+ background: linear-gradient(135deg, var(--heading-primary), var(--accent));
104
+ -webkit-background-clip: text;
105
+ -webkit-text-fill-color: transparent;
106
+ background-clip: text;
107
+ margin-bottom: 0.5rem;
108
+ line-height: 1.2;
109
+ }
110
+
111
+ .subhead {
112
+ font-size: clamp(1rem, 4vw, 1.3rem);
113
+ color: var(--text-secondary);
114
+ margin-bottom: 2rem;
115
+ border-bottom: 2px solid var(--accent-light);
116
+ padding-bottom: 1rem;
117
+ }
118
+
119
+ h2 {
120
+ font-size: clamp(1.5rem, 5vw, 2rem);
121
+ font-weight: 600;
122
+ color: var(--heading-secondary);
123
+ margin: 2.5rem 0 1.2rem 0;
124
+ border-left: 6px solid var(--accent);
125
+ padding-left: 1rem;
126
+ }
127
+
128
+ h3 {
129
+ font-size: clamp(1.2rem, 4vw, 1.5rem);
130
+ font-weight: 600;
131
+ color: var(--accent);
132
+ margin: 1.5rem 0 0.75rem 0;
133
+ }
134
+
135
+ p {
136
+ margin-bottom: 1.2rem;
137
+ font-size: clamp(0.95rem, 2.5vw, 1.05rem);
138
+ }
139
+
140
+ ul, ol {
141
+ margin: 0.5rem 0 1.8rem 1.8rem;
142
+ }
143
+
144
+ li {
145
+ margin-bottom: 0.5rem;
146
+ font-size: clamp(0.95rem, 2.5vw, 1.05rem);
147
+ }
148
+
149
+ .feature-grid {
150
+ display: grid;
151
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
152
+ gap: 1.5rem;
153
+ margin: 2rem 0;
154
+ }
155
+
156
+ .feature-card {
157
+ background: var(--card-bg);
158
+ border-radius: 1.5rem;
159
+ padding: 1.5rem;
160
+ box-shadow: var(--card-shadow);
161
+ border: 1px solid var(--border-light);
162
+ transition: transform 0.2s ease, background 0.3s ease;
163
+ }
164
+
165
+ .feature-card:hover {
166
+ transform: translateY(-5px);
167
+ }
168
+
169
+ .feature-card strong {
170
+ display: block;
171
+ font-size: 1.2rem;
172
+ color: var(--accent);
173
+ margin-bottom: 0.5rem;
174
+ }
175
+
176
+ .step-container {
177
+ background: var(--step-bg);
178
+ border-radius: 2rem;
179
+ padding: 1.8rem;
180
+ margin: 1.5rem 0;
181
+ border: 1px solid var(--border-light);
182
+ backdrop-filter: blur(4px);
183
+ }
184
+
185
+ .step-item {
186
+ display: flex;
187
+ gap: 1.2rem;
188
+ margin-bottom: 1.8rem;
189
+ align-items: flex-start;
190
+ }
191
+
192
+ .step-number {
193
+ background: var(--accent);
194
+ color: white;
195
+ width: 2.4rem;
196
+ height: 2.4rem;
197
+ border-radius: 50%;
198
+ display: inline-flex;
199
+ align-items: center;
200
+ justify-content: center;
201
+ font-weight: 700;
202
+ flex-shrink: 0;
203
+ font-size: 1.1rem;
204
+ box-shadow: 0 4px 8px rgba(0,0,0,0.2);
205
+ }
206
+
207
+ table {
208
+ width: 100%;
209
+ border-collapse: collapse;
210
+ background: var(--table-bg);
211
+ border-radius: 1.2rem;
212
+ overflow: hidden;
213
+ box-shadow: 0 6px 14px rgba(0,0,0,0.15);
214
+ margin: 1.8rem 0;
215
+ transition: background 0.3s ease;
216
+ }
217
+
218
+ th {
219
+ background: var(--table-header-bg);
220
+ color: var(--table-header-text);
221
+ font-weight: 600;
222
+ padding: 1rem 1.2rem;
223
+ text-align: left;
224
+ font-size: 1rem;
225
+ }
226
+
227
+ td {
228
+ padding: 1rem 1.2rem;
229
+ border-bottom: 1px solid var(--table-border);
230
+ color: var(--text-primary);
231
+ }
232
+
233
+ tr:last-child td {
234
+ border-bottom: none;
235
+ }
236
+
237
+ .badge {
238
+ display: inline-block;
239
+ background: var(--badge-bg);
240
+ color: var(--badge-text);
241
+ border-radius: 40px;
242
+ padding: 0.25rem 1rem;
243
+ font-size: 0.9rem;
244
+ font-weight: 500;
245
+ border: 1px solid var(--badge-border);
246
+ margin-right: 0.5rem;
247
+ }
248
+
249
+ .note {
250
+ background: var(--note-bg);
251
+ border-left: 6px solid var(--note-border);
252
+ padding: 1.2rem 1.8rem;
253
+ border-radius: 1rem;
254
+ margin: 2rem 0;
255
+ color: var(--text-primary);
256
+ }
257
+
258
+ .attribution {
259
+ margin-top: 3.5rem;
260
+ padding-top: 2rem;
261
+ border-top: 2px dashed var(--attribution-border);
262
+ text-align: center;
263
+ color: var(--text-secondary);
264
+ font-size: 0.95rem;
265
+ }
266
+
267
+ .attribution a {
268
+ color: var(--accent);
269
+ text-decoration: none;
270
+ font-weight: 500;
271
+ transition: color 0.2s;
272
+ }
273
+
274
+ .attribution a:hover {
275
+ text-decoration: underline;
276
+ filter: brightness(1.2);
277
+ }
278
+
279
+ code {
280
+ background: var(--accent-light);
281
+ padding: 0.2rem 0.4rem;
282
+ border-radius: 6px;
283
+ font-size: 0.9em;
284
+ color: var(--accent);
285
+ }
286
+
287
+ @media (max-width: 600px) {
288
+ .step-item {
289
+ flex-direction: column;
290
+ gap: 0.5rem;
291
+ }
292
+ .step-number {
293
+ width: 2rem;
294
+ height: 2rem;
295
+ font-size: 1rem;
296
+ }
297
+ .container {
298
+ padding: 1.5rem;
299
+ }
300
+ }
301
+
302
+ /* small touch: smooth theme transition */
303
+ .container, .feature-card, .step-container, table, .badge, .note {
304
+ transition: background-color 0.3s ease, border-color 0.2s ease, box-shadow 0.2s ease;
305
+ }
306
+ </style>
307
+ </head>
308
+ <body>
309
+ <div class="container">
310
+ <h1>🎼 Orpheus Music Transformer</h1>
311
+ <div class="subhead">SOTA symbolic music transformer · 2.3M+ MIDIs · 8k context · multi‑instrument co‑composition</div>
312
+
313
+ <!-- feature grid -->
314
+ <div class="feature-grid">
315
+ <div class="feature-card"><strong>⚡ Advanced architecture</strong> 748M parameters, full attention, RoPE, Flash Attention – optimised for speed and quality.</div>
316
+ <div class="feature-card"><strong>🎹 Efficient encoding</strong> 3 tokens per note, 7 per tri‑chord – rich music within 8k tokens.</div>
317
+ <div class="feature-card"><strong>🥁 Instrument‑aware</strong> Learns all 128 MIDI patches separately + dedicated drum channel.</div>
318
+ <div class="feature-card"><strong>🔚 Natural endings</strong> Special outro tokens for graceful conclusions.</div>
319
+ <div class="feature-card"><strong>🧪 Batch generation</strong> 10 continuations at once – preview, select, combine.</div>
320
+ <div class="feature-card"><strong>🎚️ Three models</strong> Medium (fast), Large (quality), Fine‑tuned (optimal).</div>
321
+ </div>
322
+
323
+ <h2>📘 How to use – step by step</h2>
324
+
325
+ <div class="step-container">
326
+ <div class="step-item">
327
+ <span class="step-number">1</span>
328
+ <div><strong>Start a composition</strong><br>
329
+ Upload a MIDI file (.mid, .midi, .kar) – the model works best with a clear musical phrase.<br>
330
+ <em>Or</em> select up to 5 prime instruments (the app builds a simple chord from them).<br>
331
+ <em>Or</em> just click “Generate” – the model starts from the start‑of‑sequence token.</div>
332
+ </div>
333
+ <div class="step-item">
334
+ <span class="step-number">2</span>
335
+ <div><strong>Set generation parameters</strong><br>
336
+ Adjust prime tokens (max 6656), generation length, temperature, top‑p, and optionally add drums or an outro token.</div>
337
+ </div>
338
+ <div class="step-item">
339
+ <span class="step-number">3</span>
340
+ <div><strong>Choose a model</strong><br>
341
+ Medium Base (fast), Large Base (higher quality), Large Fine‑Tuned (recommended for final pieces).</div>
342
+ </div>
343
+ <div class="step-item">
344
+ <span class="step-number">4</span>
345
+ <div><strong>Generate & preview</strong><br>
346
+ Click “Generate”. You get 10 continuations (batches). Each tab shows audio preview, MIDI plot (with seed‑end marker), and downloadable MIDI file.</div>
347
+ </div>
348
+ <div class="step-item">
349
+ <span class="step-number">5</span>
350
+ <div><strong>Assemble your final piece</strong><br>
351
+ Pick a batch, click “Add batch” – it appends to your composition. Preview the full result below. Add more batches or remove the last one as you like.</div>
352
+ </div>
353
+ <div class="step-item">
354
+ <span class="step-number">6</span>
355
+ <div><strong>Export</strong><br>
356
+ The final composition is shown as audio, full MIDI plot, and a downloadable MIDI file. (Local files are saved in <code>output_midis/</code>.)</div>
357
+ </div>
358
+ </div>
359
+
360
+ <h2>⚙️ Generation options explained</h2>
361
+
362
+ <table>
363
+ <thead><tr><th>Option</th><th>Description</th></tr></thead>
364
+ <tbody>
365
+ <tr><td><strong>Prime instruments</strong></td><td>If no MIDI is uploaded, builds a short chord from these instruments. Drums are separate.</td></tr>
366
+ <tr><td><strong>Number of prime tokens</strong></td><td>How much of the uploaded MIDI is fed to the model. Truncate to the exact phrase you want continued.</td></tr>
367
+ <tr><td><strong>Number of tokens to generate</strong></td><td>Length of each continuation. 512–1024 tokens ≈ 30–60 seconds of music.</td></tr>
368
+ <tr><td><strong>Temperature</strong></td><td>Randomness in sampling. 0.8–1.0 is typical. Higher = more creative, lower = more repetitive.</td></tr>
369
+ <tr><td><strong>Top‑p</strong></td><td>Nucleus sampling – only tokens summing to probability <code>p</code> are considered. 0.96 works well; 1 = disabled.</td></tr>
370
+ <tr><td><strong>Add drums</strong></td><td>Prepends a simple random drum pattern – useful if your seed lacks drums.</td></tr>
371
+ <tr><td><strong>Add outro</strong></td><td>Appends an <code>[OUTRO]</code> token, encouraging the model to wrap up the piece.</td></tr>
372
+ </tbody>
373
+ </table>
374
+
375
+ <h2>💡 Best practices tips</h2>
376
+ <ul>
377
+ <li><strong>A good seed is everything!</strong> Upload a MIDI with a clear, trimmed phrase.</li>
378
+ <li><strong>Trim your seed</strong> – use the <em>number of prime tokens</em> slider to cut exactly where you want the continuation to start.</li>
379
+ <li><strong>Keep it focused:</strong> Remove excessive instruments – 4–5 prominent ones work best.</li>
380
+ <li><strong>Ideal run time:</strong> 30–60 seconds (~1024–1536 tokens) gives the model enough context.</li>
381
+ <li><strong>Experiment:</strong> You may need several generation attempts to get a continuation you like.</li>
382
+ <li><strong>Don’t chase perfection:</strong> Enjoy the creative process and the unexpected ideas the model offers.</li>
383
+ </ul>
384
+
385
+ <div class="note">
386
+ <strong>📌 Please note:</strong> Orpheus is primarily a continuation/co‑composition model. It works best when given musical context. Random generation from scratch may not always produce great results.
387
+ </div>
388
+
389
+ <h2>🧠 Available models</h2>
390
+ <p>
391
+ <span class="badge">Medium Base</span> – faster, good for quick experiments.<br>
392
+ <span class="badge">Large Base</span> – higher quality, more nuanced.<br>
393
+ <span class="badge">Large Fine‑Tuned</span> – optimised for musical coherence and quality (recommended).
394
+ </p>
395
+
396
+ <h2>📦 Output & export</h2>
397
+ <p>All generated MIDI files include metadata and are playable in any DAW. Audio is rendered with a professional SoundFont (SGM‑v2.01). Final compositions can be downloaded as MIDI files.</p>
398
+
399
+ <div class="attribution">
400
+ <p>🎵 <strong>Orpheus Music Transformer</strong> – developed by Alex Lev (Tegridy Code) exclusively for <strong>Project Los Angeles</strong>.<br>
401
+ 🐙 <a href="https://github.com/asigalov61" target="_blank">GitHub</a> ·
402
+ 🤗 <a href="https://huggingface.co/spaces/asigalov61/Orpheus-Music-Transformer" target="_blank">Hugging Face Space</a> ·
403
+ 📄 License: Apache 2.0 · Year 2026</p>
404
+ <p style="margin-top: 1rem; font-size: 0.9rem;">If you use this model in your work, please credit the author and link to the Hugging Face Space.</p>
405
+ <p style="margin-top: 1.5rem; font-size: 1.1rem;">❤️ Enjoy making music with Orpheus!</p>
406
+ <p style="margin-top: 1rem; opacity: 0.8;">🌓 Automatically adapts to your system light/dark theme.</p>
407
+ </div>
408
+ </div>
409
+ </body>
410
+ </html>