utkucoban commited on
Commit
0dfba4f
·
verified ·
1 Parent(s): 4f7563e

Upload 4 files

Browse files
Files changed (3) hide show
  1. app.js +13 -1
  2. index.html +1 -0
  3. worker.js +79 -0
app.js CHANGED
@@ -125,6 +125,7 @@ const midiBpmModeButtons = midiBpmModeGroup ? midiBpmModeGroup.querySelectorAll(
125
  let midiSeedActive = false;
126
  let bachSeedActive = false;
127
  let bachSymphonyActive = true;
 
128
  let midiBpmMode = "lock";
129
  let midiTokens = [];
130
  let midiStartBar = 0;
@@ -783,7 +784,8 @@ async function start() {
783
  midiStartBar: midiStartBar,
784
  midiBpmMode: midiBpmMode,
785
  bachSeedActive: bachSeedActive,
786
- bachSymphonyActive: bachSymphonyActive
 
787
  });
788
  });
789
 
@@ -1491,21 +1493,31 @@ toggleButtons.forEach(btn => {
1491
  midiSeedControls.style.display = "block";
1492
  bachSeedActive = false;
1493
  bachSymphonyActive = false;
 
1494
  } else if (value === "bach") {
1495
  midiSeedActive = false;
1496
  midiSeedControls.style.display = "none";
1497
  bachSeedActive = true;
1498
  bachSymphonyActive = false;
 
1499
  } else if (value === "bach_symphony") {
1500
  midiSeedActive = false;
1501
  midiSeedControls.style.display = "none";
1502
  bachSeedActive = false;
1503
  bachSymphonyActive = true;
 
 
 
 
 
 
 
1504
  } else {
1505
  midiSeedActive = false;
1506
  midiSeedControls.style.display = "none";
1507
  bachSeedActive = false;
1508
  bachSymphonyActive = false;
 
1509
  }
1510
  });
1511
  });
 
125
  let midiSeedActive = false;
126
  let bachSeedActive = false;
127
  let bachSymphonyActive = true;
128
+ let bachSymphony2HandActive = false;
129
  let midiBpmMode = "lock";
130
  let midiTokens = [];
131
  let midiStartBar = 0;
 
784
  midiStartBar: midiStartBar,
785
  midiBpmMode: midiBpmMode,
786
  bachSeedActive: bachSeedActive,
787
+ bachSymphonyActive: bachSymphonyActive,
788
+ bachSymphony2HandActive: bachSymphony2HandActive
789
  });
790
  });
791
 
 
1493
  midiSeedControls.style.display = "block";
1494
  bachSeedActive = false;
1495
  bachSymphonyActive = false;
1496
+ bachSymphony2HandActive = false;
1497
  } else if (value === "bach") {
1498
  midiSeedActive = false;
1499
  midiSeedControls.style.display = "none";
1500
  bachSeedActive = true;
1501
  bachSymphonyActive = false;
1502
+ bachSymphony2HandActive = false;
1503
  } else if (value === "bach_symphony") {
1504
  midiSeedActive = false;
1505
  midiSeedControls.style.display = "none";
1506
  bachSeedActive = false;
1507
  bachSymphonyActive = true;
1508
+ bachSymphony2HandActive = false;
1509
+ } else if (value === "bach_symphony_2hand") {
1510
+ midiSeedActive = false;
1511
+ midiSeedControls.style.display = "none";
1512
+ bachSeedActive = false;
1513
+ bachSymphonyActive = false;
1514
+ bachSymphony2HandActive = true;
1515
  } else {
1516
  midiSeedActive = false;
1517
  midiSeedControls.style.display = "none";
1518
  bachSeedActive = false;
1519
  bachSymphonyActive = false;
1520
+ bachSymphony2HandActive = false;
1521
  }
1522
  });
1523
  });
index.html CHANGED
@@ -191,6 +191,7 @@
191
  <button type="button" class="toggle-btn" data-value="midi">Start from MIDI</button>
192
  <button type="button" class="toggle-btn" data-value="bach">Bach</button>
193
  <button type="button" class="toggle-btn active" data-value="bach_symphony">Grand Symphony</button>
 
194
  </div>
195
 
196
  <!-- MIDI Seeding Controls (Expandable if active) -->
 
191
  <button type="button" class="toggle-btn" data-value="midi">Start from MIDI</button>
192
  <button type="button" class="toggle-btn" data-value="bach">Bach</button>
193
  <button type="button" class="toggle-btn active" data-value="bach_symphony">Grand Symphony</button>
194
+ <button type="button" class="toggle-btn" data-value="bach_symphony_2hand">Grand Symphony (2-Hand)</button>
195
  </div>
196
 
197
  <!-- MIDI Seeding Controls (Expandable if active) -->
worker.js CHANGED
@@ -33,6 +33,7 @@ let midiTokens = [];
33
  let midiStartBar = 0;
34
  let isWarmingUp = false;
35
  let bachSymphonyActive = false;
 
36
 
37
  // Temporal queues for gathering parsed events
38
  let tempQueue = [];
@@ -335,6 +336,83 @@ async function warmPrompt() {
335
  "NOTE_74", "DUR_32", "VEL_7",
336
  "BAR"
337
  ];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
338
  } else {
339
  allTokensStr = ["BOS", "BPM_120", "GRID_64", "BAR", "POS_0"];
340
  }
@@ -411,6 +489,7 @@ self.onmessage = async function (e) {
411
  midiBpmMode = data.midiBpmMode || "lock";
412
  bachSeedActive = data.bachSeedActive || false;
413
  bachSymphonyActive = data.bachSymphonyActive || false;
 
414
 
415
  parser = makeParser();
416
  parser.reset();
 
33
  let midiStartBar = 0;
34
  let isWarmingUp = false;
35
  let bachSymphonyActive = false;
36
+ let bachSymphony2HandActive = false;
37
 
38
  // Temporal queues for gathering parsed events
39
  let tempQueue = [];
 
336
  "NOTE_74", "DUR_32", "VEL_7",
337
  "BAR"
338
  ];
339
+ } else if (bachSymphony2HandActive) {
340
+ allTokensStr = [
341
+ "BOS", "BPM_120", "GRID_64",
342
+ "BAR",
343
+ // Bar 1: J.S. Bach Cantata 29 Sinfonia theme (Preludio transposed to D Major) with Left-Hand Bass
344
+ "POS_0",
345
+ "NOTE_38", "DUR_16", "VEL_6", // LH octaves
346
+ "NOTE_50", "DUR_16", "VEL_6",
347
+ "NOTE_74", "DUR_4", "VEL_6", // RH arpeggio
348
+ "POS_4", "NOTE_69", "DUR_4", "VEL_6",
349
+ "POS_8", "NOTE_66", "DUR_4", "VEL_6",
350
+ "POS_12", "NOTE_69", "DUR_4", "VEL_6",
351
+ "POS_16",
352
+ "NOTE_42", "DUR_16", "VEL_6", // LH octaves
353
+ "NOTE_54", "DUR_16", "VEL_6",
354
+ "NOTE_74", "DUR_4", "VEL_6", // RH arpeggio
355
+ "POS_20", "NOTE_69", "DUR_4", "VEL_6",
356
+ "POS_24", "NOTE_66", "DUR_4", "VEL_6",
357
+ "POS_28", "NOTE_69", "DUR_4", "VEL_6",
358
+ "POS_32",
359
+ "NOTE_45", "DUR_16", "VEL_6", // LH octaves
360
+ "NOTE_57", "DUR_16", "VEL_6",
361
+ "NOTE_74", "DUR_4", "VEL_6", // RH arpeggio
362
+ "POS_36", "NOTE_76", "DUR_4", "VEL_6",
363
+ "POS_40", "NOTE_78", "DUR_4", "VEL_6",
364
+ "POS_44", "NOTE_79", "DUR_4", "VEL_6",
365
+ "POS_48",
366
+ "NOTE_38", "DUR_16", "VEL_6", // LH octaves
367
+ "NOTE_50", "DUR_16", "VEL_6",
368
+ "NOTE_81", "DUR_4", "VEL_6", // RH arpeggio
369
+ "POS_52", "NOTE_83", "DUR_4", "VEL_6",
370
+ "POS_56", "NOTE_85", "DUR_4", "VEL_6",
371
+ "POS_60", "NOTE_86", "DUR_4", "VEL_6",
372
+ "BAR",
373
+ // Bar 2: Harmonic response (A Major context) with Left-Hand Bass
374
+ "POS_0",
375
+ "NOTE_45", "DUR_16", "VEL_6", // LH octaves
376
+ "NOTE_57", "DUR_16", "VEL_6",
377
+ "NOTE_73", "DUR_4", "VEL_6", // RH arpeggio
378
+ "POS_4", "NOTE_69", "DUR_4", "VEL_6",
379
+ "POS_8", "NOTE_64", "DUR_4", "VEL_6",
380
+ "POS_12", "NOTE_69", "DUR_4", "VEL_6",
381
+ "POS_16",
382
+ "NOTE_49", "DUR_16", "VEL_6", // LH octaves
383
+ "NOTE_61", "DUR_16", "VEL_6",
384
+ "NOTE_73", "DUR_4", "VEL_6", // RH arpeggio
385
+ "POS_20", "NOTE_69", "DUR_4", "VEL_6",
386
+ "POS_24", "NOTE_64", "DUR_4", "VEL_6",
387
+ "POS_28", "NOTE_69", "DUR_4", "VEL_6",
388
+ "POS_32",
389
+ "NOTE_40", "DUR_16", "VEL_6", // LH octaves
390
+ "NOTE_52", "DUR_16", "VEL_6",
391
+ "NOTE_73", "DUR_4", "VEL_6", // RH arpeggio
392
+ "POS_36", "NOTE_74", "DUR_4", "VEL_6",
393
+ "POS_40", "NOTE_76", "DUR_4", "VEL_6",
394
+ "POS_44", "NOTE_78", "DUR_4", "VEL_6",
395
+ "POS_48",
396
+ "NOTE_45", "DUR_16", "VEL_6", // LH octaves
397
+ "NOTE_57", "DUR_16", "VEL_6",
398
+ "NOTE_79", "DUR_4", "VEL_6", // RH arpeggio
399
+ "POS_52", "NOTE_81", "DUR_4", "VEL_6",
400
+ "POS_56", "NOTE_83", "DUR_4", "VEL_6",
401
+ "POS_60", "NOTE_85", "DUR_4", "VEL_6",
402
+ "BAR",
403
+ // Bar 3: Grand D Major Symphonic Chord resolution (2-hand massive layout)
404
+ "POS_0",
405
+ "NOTE_26", "DUR_32", "VEL_7", // Low D1 & D2
406
+ "NOTE_38", "DUR_32", "VEL_7",
407
+ "NOTE_50", "DUR_32", "VEL_7", // Right hand layout
408
+ "NOTE_54", "DUR_32", "VEL_7",
409
+ "NOTE_57", "DUR_32", "VEL_7",
410
+ "NOTE_62", "DUR_32", "VEL_7",
411
+ "NOTE_66", "DUR_32", "VEL_7",
412
+ "NOTE_69", "DUR_32", "VEL_7",
413
+ "NOTE_74", "DUR_32", "VEL_7",
414
+ "BAR"
415
+ ];
416
  } else {
417
  allTokensStr = ["BOS", "BPM_120", "GRID_64", "BAR", "POS_0"];
418
  }
 
489
  midiBpmMode = data.midiBpmMode || "lock";
490
  bachSeedActive = data.bachSeedActive || false;
491
  bachSymphonyActive = data.bachSymphonyActive || false;
492
+ bachSymphony2HandActive = data.bachSymphony2HandActive || false;
493
 
494
  parser = makeParser();
495
  parser.reset();