ortal1602 commited on
Commit
ce3ffba
·
verified ·
1 Parent(s): 007cdd7

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +410 -2
index.html CHANGED
@@ -144,8 +144,416 @@
144
  showHighlight(highlightIndex);
145
  </script>
146
 
147
- <!-- The rest of your sections go here -->
148
- <!-- Ensure other tables are also inside <div style="overflow-x:auto"> if needed -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
 
150
  </body>
151
  </html>
 
144
  showHighlight(highlightIndex);
145
  </script>
146
 
147
+ <div class="container">
148
+ <h1>Bibtex</h1>
149
+ <p>TODO</p>
150
+ </div>
151
+
152
+ <!-- Section 1 -->
153
+ <div class="container">
154
+ <h1>Fixed Training Configuration</h1>
155
+
156
+ <h5>Text Descriptions</h5>
157
+ <table style="width:100%; border-collapse: separate; border-spacing: 0 10px;">
158
+ <tbody>
159
+ <tr><td style="font-weight: bold;">Text 1:</td><td>Cool and sophisticated, featuring crisp distorted guitar, shuffling drums and simple bass that create a vintage atmosphere.</td></tr>
160
+ <tr><td style="font-weight: bold;">Text 2:</td><td>Powerful rock track with continuously improvised electric guitar solo. Played by a rock band of drums, bass guitar, electric guitar, acoustic guitar and electric organ. Energetic and lively - ideal for sports, action and motivational soulfulness. BPM 106</td></tr>
161
+ <tr><td style="font-weight: bold;">Text 3:</td><td>Positive, tropical, shiny 4 tracks collection inspired by summer. Perfect for dance, energetic, party, travel or presentation video projects.</td></tr>
162
+ <tr><td style="font-weight: bold;">Text 4:</td><td>An upbeat and fast-pace jazz sing trailer featuring horns, drums and vibes. This full-length and face-paced track tells a story.This song is perfect for trailers, promotional videos, advertisements, commercials, TV ads, YouTube videos, corporate presentations and wedding videos.</td></tr>
163
+ </tbody>
164
+ </table>
165
+
166
+ <br>
167
+ <label><b>Latent Representation Frequency</b>:</label>
168
+ <select id="mappingSelect">
169
+ <option value="25">25</option>
170
+ <option value="50" selected>50</option>
171
+ <option value="100">100</option>
172
+ </select>
173
+
174
+ <table style="width:100%; border-collapse: separate; border-spacing: 0 10px;">
175
+ <thead>
176
+ <tr>
177
+ <th>Text Description</th>
178
+ <th>AR</th>
179
+ <th>FM</th>
180
+ <th>FM (VAE)</th>
181
+ <th>GT</th>
182
+ </tr>
183
+ </thead>
184
+ <tbody>
185
+ <!-- Row 1 -->
186
+ <tr>
187
+ <td><b>Text 1</b></td>
188
+ <td><audio controls data-text="1" data-model="ar"></audio></td>
189
+ <td><audio controls data-text="1" data-model="fm"></audio></td>
190
+ <td><audio controls data-text="1" data-model="fm_vae"></audio></td>
191
+ <td><audio controls data-text="1" data-model="gt"></audio></td>
192
+ </tr>
193
+ <!-- Row 2 -->
194
+ <tr>
195
+ <td><b>Text 2</b></td>
196
+ <td><audio controls data-text="2" data-model="ar"></audio></td>
197
+ <td><audio controls data-text="2" data-model="fm"></audio></td>
198
+ <td><audio controls data-text="2" data-model="fm_vae"></audio></td>
199
+ <td><audio controls data-text="2" data-model="gt"></audio></td>
200
+ </tr>
201
+ <!-- Row 3 -->
202
+ <tr>
203
+ <td><b>Text 3</b></td>
204
+ <td><audio controls data-text="3" data-model="ar"></audio></td>
205
+ <td><audio controls data-text="3" data-model="fm"></audio></td>
206
+ <td><audio controls data-text="3" data-model="fm_vae"></audio></td>
207
+ <td><audio controls data-text="3" data-model="gt"></audio></td>
208
+ </tr>
209
+ <!-- Row 4 -->
210
+ <tr>
211
+ <td><b>Text 4</b></td>
212
+ <td><audio controls data-text="4" data-model="ar"></audio></td>
213
+ <td><audio controls data-text="4" data-model="fm"></audio></td>
214
+ <td><audio controls data-text="4" data-model="fm_vae"></audio></td>
215
+ <td><audio controls data-text="4" data-model="gt"></audio></td>
216
+ </tr>
217
+ </tbody>
218
+ </table>
219
+ </div>
220
+
221
+ <!-- Section 2 -->
222
+ <div class="container">
223
+ <h2>Controlability</h2>
224
+ <p>The following examples are conditioned using temporally-aligned drums, chord progressions and melody controls that were extracted the ground-truth sample.</p>
225
+ <p>The figure paired with each audio corresponds to the extracted ground-truth melody condition.</p>
226
+ <p>The exctacted melody corresponds to G2 to B7 note range, obtained by using a pretrained <a href=https://github.com/rabitt/ismir2017-deepsalience>multi-f0 classification model</a> followed by a threshold filtering and top-1 binarization.</p>
227
+ <div id="section2-table-container"></div>
228
+ </div>
229
+
230
+ <!-- Scripts -->
231
+ <script>
232
+ // Update Section 1 dynamically based on dropdown
233
+ function updateAudioSources() {
234
+ const frameRate = document.getElementById('mappingSelect').value;
235
+ document.querySelectorAll('audio[data-text]').forEach(audio => {
236
+ const text = audio.getAttribute('data-text');
237
+ const model = audio.getAttribute('data-model');
238
+ if (model === 'gt') {
239
+ audio.src = `audio/section1/text${text}_gt.wav`;
240
+ } else {
241
+ audio.src = `audio/section1/text${text}_${model.toLowerCase()}_${frameRate}.wav`;
242
+ }
243
+ });
244
+ }
245
+
246
+ document.getElementById('mappingSelect').addEventListener('change', updateAudioSources);
247
+ updateAudioSources(); // Initialize
248
+
249
+ // Section 2: Generate static table
250
+ const texts = [1, 2, 3, 4];
251
+ const models = ['ar', 'fm', 'gt'];
252
+
253
+ function createSection2Table() {
254
+ const table = document.createElement('table');
255
+ table.style.width = '100%';
256
+ table.style.borderCollapse = 'separate';
257
+ table.style.borderSpacing = '0 10px';
258
+ const thead = document.createElement('thead');
259
+ const headerRow = document.createElement('tr');
260
+ ['Text Description', 'AR', 'FM', 'GT'].forEach(h => {
261
+ const th = document.createElement('th');
262
+ th.textContent = h;
263
+ headerRow.appendChild(th);
264
+ });
265
+ thead.appendChild(headerRow);
266
+ table.appendChild(thead);
267
+
268
+ const tbody = document.createElement('tbody');
269
+
270
+ texts.forEach(textId => {
271
+ const row = document.createElement('tr');
272
+ const descCell = document.createElement('td');
273
+ descCell.textContent = `Text ${textId}`;
274
+ row.appendChild(descCell);
275
+
276
+ models.forEach(model => {
277
+ const cell = document.createElement('td');
278
+
279
+ const canvas = document.createElement('canvas');
280
+ canvas.width = 300;
281
+ canvas.height = 150;
282
+ canvas.style.border = '1px solid #ccc';
283
+ canvas.id = `canvas_2_${textId}_${model.toLowerCase()}`;
284
+
285
+ const audio = document.createElement('audio');
286
+ audio.controls = true;
287
+ audio.id = `audio_2_${textId}_${model.toLowerCase()}`;
288
+ audio.src = `audio/section2/text${textId}_${model.toLowerCase()}.wav`;
289
+
290
+ cell.appendChild(canvas);
291
+ cell.appendChild(document.createElement('br'));
292
+ cell.appendChild(audio);
293
+ row.appendChild(cell);
294
+ });
295
+
296
+ tbody.appendChild(row);
297
+ });
298
+
299
+ table.appendChild(tbody);
300
+ return table;
301
+ }
302
+
303
+ function setupCanvasOverlay(canvasId, audioId, imageSrc) {
304
+ const canvas = document.getElementById(canvasId);
305
+ const audio = document.getElementById(audioId);
306
+ const ctx = canvas.getContext('2d');
307
+ const img = new Image();
308
+ img.src = imageSrc;
309
+
310
+ img.onload = () => ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
311
+
312
+ function drawOverlay() {
313
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
314
+ ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
315
+ const x = (audio.currentTime / audio.duration) * canvas.width;
316
+ ctx.beginPath();
317
+ ctx.moveTo(x, 0);
318
+ ctx.lineTo(x, canvas.height);
319
+ ctx.strokeStyle = 'red';
320
+ ctx.lineWidth = 2;
321
+ ctx.stroke();
322
+ }
323
+
324
+ let interval;
325
+ audio.addEventListener('play', () => interval = setInterval(drawOverlay, 30));
326
+ audio.addEventListener('pause', () => clearInterval(interval));
327
+ audio.addEventListener('ended', () => {
328
+ clearInterval(interval);
329
+ ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
330
+ });
331
+ }
332
+
333
+ // Render Section 2
334
+ document.getElementById('section2-table-container').appendChild(createSection2Table());
335
+
336
+ // Setup canvas overlays
337
+ texts.forEach(textId => {
338
+ models.forEach(model => {
339
+ setupCanvasOverlay(
340
+ `canvas_2_${textId}_${model.toLowerCase()}`,
341
+ `audio_2_${textId}_${model.toLowerCase()}`,
342
+ `figures/section2/text${textId}.png`
343
+ );
344
+ });
345
+ });
346
+ </script>
347
+
348
+ <!-- Section 3 -->
349
+ <div class="container">
350
+ <h2>Inpainting</h2>
351
+ <p>Below there's a table containing multiple examples of inpainting, flip through the pages to see modre examples.</p>
352
+ <label><b>Page:</b></label>
353
+ <select id="section3PageSelect">
354
+ <option value="1">1</option>
355
+ <option value="2">2</option>
356
+ <option value="3">3</option>
357
+ <!-- <option value="4">4</option>
358
+ <option value="5">5</option>
359
+ <option value="6">6</option>
360
+ <option value="7">7</option>
361
+ <option value="8">8</option>
362
+ <option value="9">9</option>
363
+ <option value="10">10</option> -->
364
+ </select>
365
+
366
+ <div id="section3-text-table"></div>
367
+ <div id="section3-audio-table"></div>
368
+ </div>
369
+
370
+ <script>
371
+ const Section3Models = ['ar', 'fm', 'fm_zs', 'gt'];
372
+
373
+ const textsDict = {
374
+ 1: [
375
+ "Heavy and driving, featuring gritty electric guitar and a powerful Heavy Metal groove that creates a bold, determined mood.",
376
+ "Upbeat and bright, featuring an Indie Pop feel, acoustic guitar and piano that create a positive mood.",
377
+ "A light floating acoustic orchestral piece with piano, bass, drums and choir.",
378
+ "Wintry and sweeping, featuring soaring strings, plinking harp and huge horns that create an atmosphere of magic."
379
+ ],
380
+
381
+ 2: [
382
+ "Synthetic Hip Hop and soul derived from a poem about losing young friends to violence.",
383
+ "Soaring and hopeful, featuring atmospheric electric guitar, floating vocal chops, bouncy choir and light synth drums that create a dreamy, inspirational mood.",
384
+ "Bright and bouncy, with a Nu Disco feel, electric guitar and vintage keyboards that create a slick mood.",
385
+ "Smooth R&B groove featuring a female voice with hip hop elements."
386
+ ],
387
+
388
+ 3: [
389
+ "Shimmering and flowing, with R&B neo-soul elements featuring euphoric synthesizer, electric guitar, and piano to create a chill and blissful mood.",
390
+ "Bouncy and bright, featuring electric guitar and a funky groove that creates a proud, confident mood.",
391
+ "A funky, driving jazz/r&b instrumental with a modern/retro feel.",
392
+ "Building and tense, with suspense elements featuring pulsing synthesizer, piano, and strings to create a menacing and anticipatory mood."
393
+ ],
394
+
395
+ // 4: [
396
+ // "Building and tense, with suspense elements featuring pulsing synthesizer, piano, and strings to create a menacing and anticipatory mood.",
397
+ // "Radiant and flowing, with corporate inspirational and indie pop elements featuring positive piano, electric guitar, and vocal oohs to create a proud and happy mood.",
398
+ // "A light song with overtones of old western movie themes.",
399
+ // "Warm and driving, featuring heavy electric guitar, piano and pulsing drums that create a bold, reflective mood."
400
+ // ],
401
+
402
+ // 5: [
403
+ // "Warm and bouncy, featuring groovy piano, synthesizers, vocal chops and synth drums that create a confident, hip mood.",
404
+ // "Radiant and gleaming, with pop bubblegum elements featuring happy electric guitar and synthesizer to create a joyful and enthusiastic mood.",
405
+ // "Dark and eerie, featuring urgent brass and strings that create an anxious mood.",
406
+ // "Groovy and hip, featuring soulful female vocal chops, electric guitar, keyboards and drums that create a laid-back, chill mood."
407
+ // ],
408
+
409
+ // 6: [
410
+ // "Smooth Jazz piece.",
411
+ // "Bright and anthemic, featuring vocal samples, synthesizer and synth drums that create a happy, upbeat mood.",
412
+ // "Soaring and evocative, featuring jangling guitar, restless percussion and a long, slow build that create an atmosphere of progress.",
413
+ // "Bright and enthusiastic, featuring acoustic guitar, hand claps, vocal oohs and marimba that create a satisfied mood."
414
+ // ],
415
+
416
+ // 7: [
417
+ // "Traditional Spanish Song",
418
+ // "Heavy and building, featuring gritty synth textures and a laid-back dance groove, creating a determined mood.",
419
+ // "Smooth and hypnotic, featuring floating piano and drones that create a peaceful mood.",
420
+ // "Bright and building, featuring a heavy Dance groove, pounding synth drums and floating electronic elements create a determined, hypnotic mood."
421
+ // ],
422
+
423
+ // 8: [
424
+ // "Driving and determined with Indie rock elements, featuring edgy electric guitar, bass, drums, background vocals, and piano, creating an energetic and powerful mood.",
425
+ // "A Ragtime Blues improvisation done on a vintage tack-piano in an old-time saloon setting.",
426
+ // "Pulsing and hopeful, featuring lush piano, guitars, strings, percussion and drums that build up to a heartfelt, soaring mood.",
427
+ // "Warm and mellow, featuring a laidback downtempo groove, piano that build with edgy drums and gritty synth brass that create a confident mood."
428
+ // ],
429
+
430
+ // 9: [
431
+ // "Bright and flowing, featuring an upbeat Indie Folk feel, vocal oohs and bells that create an enthusiastic mood.",
432
+ // "London, Montreal Caribbean inspired melody driven rap.",
433
+ // "Pulsing and bouncy, with corporate inspirational elements featuring reflective synthesizer, piano, and electric guitar to create a soaring and uplifting mood.",
434
+ // "Upbeat with a driving Pop Punk groove, featuring bright electric guitar and hand claps that create an energetic mood."
435
+ // ],
436
+
437
+ // 10: [
438
+ // "Grime influenced hard hitting electro fusion",
439
+ // "Bright and grooving, featuring vocal chops, synthesizers, bass, and beats that create a proud, soaring mood.",
440
+ // "Atmospheric and growing, with cinematic and suspense elements featuring dramatic strings, synth pulses, and percussion to create an inquisitive and anxious mood.",
441
+ // "Think “ Curb Your Enthusiasm “ Theme. A fun quirky song with many different elements."
442
+ // ]
443
+ };
444
+
445
+ function createSection3TextTable(page) {
446
+ const container = document.getElementById('section3-text-table');
447
+ container.innerHTML = '';
448
+
449
+ const table = document.createElement('table');
450
+ table.style.width = '100%';
451
+ table.style.borderCollapse = 'separate';
452
+ table.style.borderSpacing = '0 10px';
453
+
454
+ const tbody = document.createElement('tbody');
455
+ const texts = textsDict[page] || [];
456
+
457
+ texts.forEach((text, i) => {
458
+ const row = document.createElement('tr');
459
+ const label = document.createElement('td');
460
+ label.style.fontWeight = 'bold';
461
+ label.textContent = `Text ${i + 1}:`;
462
+ const content = document.createElement('td');
463
+ content.textContent = text;
464
+ row.appendChild(label);
465
+ row.appendChild(content);
466
+ tbody.appendChild(row);
467
+ });
468
+
469
+ table.appendChild(tbody);
470
+ container.appendChild(table);
471
+ }
472
+
473
+ function createSection3AudioTable(page) {
474
+ const container = document.getElementById('section3-audio-table');
475
+ container.innerHTML = '';
476
+
477
+ const table = document.createElement('table');
478
+ table.style.width = '100%';
479
+ table.style.borderCollapse = 'separate';
480
+ table.style.borderSpacing = '0 10px';
481
+
482
+ const thead = document.createElement('thead');
483
+ const headRow = document.createElement('tr');
484
+ ['Text', 'AR', 'FM', 'FM_ZS', 'GT'].forEach(h => {
485
+ const th = document.createElement('th');
486
+ th.textContent = h;
487
+ headRow.appendChild(th);
488
+ });
489
+ thead.appendChild(headRow);
490
+ table.appendChild(thead);
491
+
492
+ const tbody = document.createElement('tbody');
493
+
494
+ for (let i = 0; i < 4; i++) {
495
+ const globalIndex = (page - 1) * 4 + (i + 1); // 1-based indexing
496
+ const row = document.createElement('tr');
497
+
498
+ const labelCell = document.createElement('td');
499
+ labelCell.textContent = `Text ${i + 1}`;
500
+ row.appendChild(labelCell);
501
+
502
+ Section3Models.forEach(model => {
503
+ const cell = document.createElement('td');
504
+
505
+ const canvas = document.createElement('canvas');
506
+ canvas.width = 300;
507
+ canvas.height = 150;
508
+ canvas.style.border = '1px solid #ccc';
509
+ canvas.id = `canvas_3_${globalIndex}_${model.toLowerCase()}`;
510
+
511
+ const audio = document.createElement('audio');
512
+ audio.controls = true;
513
+ audio.id = `audio_3_${globalIndex}_${model.toLowerCase()}`;
514
+ audio.src = `audio/section3/text${globalIndex}_${model.toLowerCase()}.wav`;
515
+
516
+ cell.appendChild(canvas);
517
+ cell.appendChild(document.createElement('br'));
518
+ cell.appendChild(audio);
519
+ row.appendChild(cell);
520
+ });
521
+
522
+ tbody.appendChild(row);
523
+ }
524
+
525
+ table.appendChild(tbody);
526
+ container.appendChild(table);
527
+ }
528
+
529
+ function setupSection3Canvases(page) {
530
+ for (let i = 0; i < 4; i++) {
531
+ const globalIndex = (page - 1) * 4 + (i + 1);
532
+ Section3Models.forEach(model => {
533
+ setupCanvasOverlay(
534
+ `canvas_3_${globalIndex}_${model.toLowerCase()}`,
535
+ `audio_3_${globalIndex}_${model.toLowerCase()}`,
536
+ `figures/section3/text${globalIndex}_${model.toLowerCase()}.png`
537
+ );
538
+ });
539
+ }
540
+ }
541
+
542
+ function renderSection3() {
543
+ const page = parseInt(document.getElementById('section3PageSelect').value);
544
+ createSection3TextTable(page);
545
+ createSection3AudioTable(page);
546
+ setTimeout(() => setupSection3Canvases(page), 100);
547
+ }
548
+
549
+ document.getElementById('section3PageSelect').addEventListener('change', renderSection3);
550
+ renderSection3(); // initial render
551
+ </script>
552
+
553
+
554
+ </body>
555
+ </html>
556
+
557
 
558
  </body>
559
  </html>