From 2b9faffe821570c27642246f924a830b3474f3a5 Mon Sep 17 00:00:00 2001
From: Bye <bye@byecorps.com>
Date: Fri, 16 Aug 2024 19:26:18 +0100
Subject: [PATCH] mouse detection yay

---
 hampsterengine                   |   2 +-
 src/js/extras.js                 |   2 +-
 src/js/main.js                   |  24 +-
 src/js/objects.js                |  14 +-
 src/js/rooms/debug_mouse.js      |  24 +-
 src/js/rooms/debug_music.js      |  17 ++
 src/music/DEMOSONGDONOTCOMMIT.js | 387 -------------------------------
 7 files changed, 52 insertions(+), 418 deletions(-)
 create mode 100644 src/js/rooms/debug_music.js
 delete mode 100644 src/music/DEMOSONGDONOTCOMMIT.js

diff --git a/hampsterengine b/hampsterengine
index af2cf2a..835a59e 160000
--- a/hampsterengine
+++ b/hampsterengine
@@ -1 +1 @@
-Subproject commit af2cf2a30cde54565a43473096ecdcd2f9c0e39f
+Subproject commit 835a59e5aa3e22142d346f51d1e162d7b69dbab8
diff --git a/src/js/extras.js b/src/js/extras.js
index 9ca2444..d1c119a 100644
--- a/src/js/extras.js
+++ b/src/js/extras.js
@@ -1,5 +1,5 @@
 
 export function drawLineThroughPoint(x, y) {
     // draws a line across the whole canvas through a point
-    canvas.drawLine()
+    canvas.drawLine();
 }
diff --git a/src/js/main.js b/src/js/main.js
index aaf1ad5..d880200 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -5,12 +5,12 @@ import {Room} from "../../hampsterengine/src/things.js";
 
 import {Logo, MainMenuButton} from "./objects.js";
 import SoundBox from "./sb-player-small";
-import {mus_DEMOSONG} from "../music/DEMOSONGDONOTCOMMIT";
+// import {mus_DEMOSONG} from "./songs/DEMOSONGDONOTCOMMIT";
 
 // Rooms
 import {rm_DEBUG_button} from "./rooms/debug_button";
 import {rm_DEBUG_mouse} from "./rooms/debug_mouse";
-import assetStore from "../../hampsterengine/src/assetStore";
+import {rm_DEBUG_music} from "./rooms/debug_music";
 
 // Music
 
@@ -18,7 +18,7 @@ const canvas = new Canvas('canvas');
 const engine = new Engine(canvas);
 const assets = engine.assetStore;
 
-assets.addSoundBoxAudio('mus_DEMO', mus_DEMOSONG, new SoundBox());
+// assets.addSoundBoxAudio('mus_DEMO', mus_DEMOSONG, new SoundBox());
 
 canvas.width = 640;
 canvas.height = 480;
@@ -33,7 +33,7 @@ let lastClickPos = {
 window.lastClickPos = lastClickPos;
 
 const rm_MainMenu = new Room();
-rm_MainMenu.bgColor = 'black';
+rm_MainMenu.bgColor = '#f0f0f0';
 
 const logo = new Logo();
 logo.x = 30;
@@ -47,8 +47,8 @@ newGameButton.y = 70;
 rm_MainMenu.things.push(newGameButton);
 
 rm_MainMenu.drawGui = _ => {
-    canvas.setFillColor('white');
-    canvas.drawText("(c) bye 2024", 30, canvas.height-45,{
+    canvas.setFillColor('#0f0f0f');
+    canvas.drawText("(c) bye 2024", 30, canvas.height-25,{
         font: '8px serif'
     });
 }
@@ -57,6 +57,7 @@ engine.registerRoom(rm_MainMenu, 'mainMenu');
 
 engine.registerRoom(rm_DEBUG_button, 'debug_button');
 engine.registerRoom(rm_DEBUG_mouse, 'debug_mouse');
+engine.registerRoom(rm_DEBUG_music, 'debug_music');
 
 function main() {
     requestAnimationFrame(main);
@@ -71,27 +72,20 @@ function main() {
 
 console.debug(engine.rooms);
 
-canvas.canvas.addEventListener('click', ev => {
-    lastClickPos.x = engine.mouse.x;
-    lastClickPos.y = engine.mouse.y;
-    console.log(lastClickPos);
-})
-
 if (document.location.hash) {
     console.log('Requesting room', document.location.hash.substring(1));
+    engine.loadDelay = 0;
     engine.room = engine.getRoomIndex(document.location.hash.substring(1));
 } else {
     engine.room = engine.getRoomIndex('mainMenu');
 }
 
 // Ensure assets are loaded.
-
 function load() {
     if (engine.loading) {
         engine.loadLoop();
-        setTimeout(main, 1000/60);
+        setTimeout(load, 1000/60);
     } else {
-        engine.room = engine.getRoomIndex('mainMenu');
         main();
     }
 }
diff --git a/src/js/objects.js b/src/js/objects.js
index 8daaaa1..0ea1eb5 100644
--- a/src/js/objects.js
+++ b/src/js/objects.js
@@ -37,7 +37,7 @@ export class Button extends Thing {
         this.height = 14;
         this.width = 16;
 
-        this.depressedColour = '#3e3546';
+        this.depressedColour = '#645372';
     }
 
     draw() {
@@ -45,12 +45,14 @@ export class Button extends Thing {
     }
 
     mousedown() {
-        super.mousedown();
         this.clicked = true;
     }
 
+    mouseup() {
+    }
+
     mouseupOffThing() {
-        super.mouseupOffThing();
+        this.clicked = false;
     }
 }
 
@@ -92,10 +94,6 @@ export class MainMenuButton extends Button {
         // DO NOT REMOVE THIS. THE TEXT ON THE MAIN MENU BREAKS OTHERWISE.
         canvas.drawText("", 0, 0, {})
     }
-
-    click() {
-        this.action();
-    }
 }
 
 export class Logo extends Thing {
@@ -107,7 +105,7 @@ export class Logo extends Thing {
     }
 
     draw() {
-        canvas.setFillColor('#efefef');
+        canvas.setFillColor('#0f0f0f');
         let font = 'Times New Roman';
         let align = (function () {
             switch (this.align) {
diff --git a/src/js/rooms/debug_mouse.js b/src/js/rooms/debug_mouse.js
index 8cbed12..f2af324 100644
--- a/src/js/rooms/debug_mouse.js
+++ b/src/js/rooms/debug_mouse.js
@@ -6,18 +6,30 @@ export const rm_DEBUG_mouse = new Room();
 
 rm_DEBUG_mouse.drawGui = _=> {
     // Draw the last click
+    const lastClick = engine.lastClickPos;
     canvas.setFillColor('red');
     canvas.setStrokeColor('red');
-    canvas.drawLine(lastClickPos.x, 0, lastClickPos.x, canvas.height);
-    canvas.drawLine(0, lastClickPos.y, canvas.width, lastClickPos.y);
-    canvas.drawText(`LAST(${Math.round(lastClickPos.x)},${Math.round(lastClickPos.y)})`, lastClickPos.x+2, lastClickPos.y-2, {})
+    canvas.drawLine(lastClick.x, 0, lastClick.x, canvas.height);
+    canvas.drawLine(0, lastClick.y, canvas.width, lastClick.y);
+    canvas.drawText(`LAST(${Math.round(lastClick.x)},${Math.round(lastClick.y)})`, lastClick.x+2, lastClick.y-2, {})
 
+    if (engine.mouseDown) {
+        // Draw the mousedown position
+        const moused = engine.mouseDownPos;
+        canvas.setFillColor('green');
+        canvas.setStrokeColor('green');
+        canvas.drawLine(moused.x, 0, moused.x, canvas.height);
+        canvas.drawLine(0, moused.y, canvas.width, moused.y);
+        canvas.drawText(`DOW(${Math.round(moused.x)},${Math.round(moused.y)})`, moused.x+2, moused.y-2, {})
+
+    }
 
     // Draw the current mouse position onto the screen.
+    const cur = engine.mouse;
     canvas.setFillColor('black');
     canvas.setStrokeColor('black');
-    canvas.drawLine(engine.mouse.x, 0, engine.mouse.x, canvas.height);
-    canvas.drawLine(0, engine.mouse.y, canvas.width, engine.mouse.y);
-    canvas.drawText(`CUR(${Math.round(engine.mouse.x)},${Math.round(engine.mouse.y)})`, engine.mouse.x+2, engine.mouse.y-2, {})
+    canvas.drawLine(cur.x, 0, cur.x, canvas.height);
+    canvas.drawLine(0, cur.y, canvas.width, cur.y);
+    canvas.drawText(`CUR(${Math.round(cur.x)},${Math.round(cur.y)})`, cur.x+2, cur.y-2, {})
 }
 
diff --git a/src/js/rooms/debug_music.js b/src/js/rooms/debug_music.js
new file mode 100644
index 0000000..51ccb5f
--- /dev/null
+++ b/src/js/rooms/debug_music.js
@@ -0,0 +1,17 @@
+
+import {Room} from "../../../hampsterengine/src/things";
+
+export const rm_DEBUG_music = new Room();
+
+rm_DEBUG_music.start = _ => {
+    engine.assetStore.get('mus_DEMO').play();
+}
+
+rm_DEBUG_music.stop = _ => {
+    engine.assetStore.get('mus_DEMO').pause();
+}
+
+rm_DEBUG_music.drawGui = _=> {
+    canvas.setFillColor('black');
+    canvas.drawText((engine.assetStore.get('mus_DEMO').paused ? 'paused' : 'playing'), canvas.center.x, canvas.center.y, {});
+}
diff --git a/src/music/DEMOSONGDONOTCOMMIT.js b/src/music/DEMOSONGDONOTCOMMIT.js
deleted file mode 100644
index 36a4cd7..0000000
--- a/src/music/DEMOSONGDONOTCOMMIT.js
+++ /dev/null
@@ -1,387 +0,0 @@
-    // This music has been exported by SoundBox. You can use it with
-    // http://sb.bitsnbites.eu/player-small.js in your own product.
-
-    // See http://sb.bitsnbites.eu/demo.html for an example of how to
-    // use it in a demo.
-
-    // Song data
-    export var mus_DEMOSONG = {
-      songData: [
-        { // Instrument 0
-          i: [
-          2, // OSC1_WAVEFORM
-          100, // OSC1_VOL
-          128, // OSC1_SEMI
-          0, // OSC1_XENV
-          3, // OSC2_WAVEFORM
-          201, // OSC2_VOL
-          128, // OSC2_SEMI
-          0, // OSC2_DETUNE
-          0, // OSC2_XENV
-          0, // NOISE_VOL
-          0, // ENV_ATTACK
-          6, // ENV_SUSTAIN
-          29, // ENV_RELEASE
-          0, // ENV_EXP_DECAY
-          0, // ARP_CHORD
-          0, // ARP_SPEED
-          0, // LFO_WAVEFORM
-          194, // LFO_AMT
-          4, // LFO_FREQ
-          1, // LFO_FX_FREQ
-          3, // FX_FILTER
-          25, // FX_FREQ
-          191, // FX_RESONANCE
-          115, // FX_DIST
-          244, // FX_DRIVE
-          147, // FX_PAN_AMT
-          6, // FX_PAN_FREQ
-          84, // FX_DELAY_AMT
-          6 // FX_DELAY_TIME
-          ],
-          // Patterns
-          p: [5,1,2,1,1,1,1,3,4,1,2,1,2,1,2,,,7,8,7,8,7,8,7,8,6,9],
-          // Columns
-          c: [
-            {n: [123,123,135,128,123,123,135,130,126,125,126,128,123,123,135,128,123,123,135,130,126,125,126,128,123,123,135,128,123,123,135,130],
-             f: [22,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48]},
-            {n: [123,123,135,128,123,123,135,130,126,125,126,128,123,123,135,128,123,123,135,130,126,125,126,128,123,,99,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,111],
-             f: [,,,,,,,,,,,,,,,,,,,,,,,,,,,11,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,31]},
-            {n: [111,,,,,,,,123,,,,,,,,111,,,,,,,,123],
-             f: []},
-            {n: [114,,,,,,,,126,,,,,,,,114,,,,,,,,114,126,111,123,114,126,118,130],
-             f: [13,,,,,,,,,,,,,,,,,,,,,,,,13,,13,,13,,13,11,29,,,,,,,,,,,,,,,,,,,,,,,,32,,41,,29,,25,15]},
-            {n: [123,123,135,128,123,123,135,130,126,125,126,128,123,123,135,128,123,123,135,130,126,125,126,128,123,,99,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,111],
-             f: [13,11,22,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,29,,25,113,,,,,,,,,,,,,,,,,,,,,,,,,,,,194]},
-            {n: [111,,,,,,,,123,,,,,,,,111,,,,,,,,99],
-             f: []},
-            {n: [111,123,,123,111,,123,111,111,123,,123,111,,123,111,111,123,,123,111,,123,111,111,123,,123,111,,123,111],
-             f: []},
-            {n: [114,126,,126,114,,126,114,114,126,,126,114,,126,114,114,126,,126,114,,126,114,116,128,,128,116,,114,121],
-             f: []},
-            {n: [],
-             f: []}
-          ]
-        },
-        { // Instrument 1
-          i: [
-          0, // OSC1_WAVEFORM
-          255, // OSC1_VOL
-          117, // OSC1_SEMI
-          64, // OSC1_XENV
-          0, // OSC2_WAVEFORM
-          255, // OSC2_VOL
-          110, // OSC2_SEMI
-          0, // OSC2_DETUNE
-          64, // OSC2_XENV
-          0, // NOISE_VOL
-          4, // ENV_ATTACK
-          6, // ENV_SUSTAIN
-          35, // ENV_RELEASE
-          0, // ENV_EXP_DECAY
-          0, // ARP_CHORD
-          0, // ARP_SPEED
-          0, // LFO_WAVEFORM
-          0, // LFO_AMT
-          0, // LFO_FREQ
-          0, // LFO_FX_FREQ
-          2, // FX_FILTER
-          14, // FX_FREQ
-          1, // FX_RESONANCE
-          1, // FX_DIST
-          39, // FX_DRIVE
-          76, // FX_PAN_AMT
-          5, // FX_PAN_FREQ
-          0, // FX_DELAY_AMT
-          0 // FX_DELAY_TIME
-          ],
-          // Patterns
-          p: [,1,1,1,1,1,1,2,,,,1,1,1,1,1,1,,,1,1,1,1,1,1],
-          // Columns
-          c: [
-            {n: [147,,,,,,147,,,,147,,,,,,147,,,,,,147,,,,147,,,,147],
-             f: []},
-            {n: [147],
-             f: []}
-          ]
-        },
-        { // Instrument 2
-          i: [
-          0, // OSC1_WAVEFORM
-          0, // OSC1_VOL
-          140, // OSC1_SEMI
-          0, // OSC1_XENV
-          0, // OSC2_WAVEFORM
-          0, // OSC2_VOL
-          140, // OSC2_SEMI
-          0, // OSC2_DETUNE
-          0, // OSC2_XENV
-          60, // NOISE_VOL
-          4, // ENV_ATTACK
-          10, // ENV_SUSTAIN
-          68, // ENV_RELEASE
-          0, // ENV_EXP_DECAY
-          0, // ARP_CHORD
-          0, // ARP_SPEED
-          0, // LFO_WAVEFORM
-          187, // LFO_AMT
-          5, // LFO_FREQ
-          0, // LFO_FX_FREQ
-          1, // FX_FILTER
-          239, // FX_FREQ
-          135, // FX_RESONANCE
-          0, // FX_DIST
-          32, // FX_DRIVE
-          108, // FX_PAN_AMT
-          5, // FX_PAN_FREQ
-          16, // FX_DELAY_AMT
-          4 // FX_DELAY_TIME
-          ],
-          // Patterns
-          p: [,1,1,2,3,2,3,4,,,,2,3,2,3,2,3,,,5,5,5,5,5,5,4],
-          // Columns
-          c: [
-            {n: [,,,,147,,,,,,,,148,,,,,,,,147,,,,,,,,147],
-             f: [13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35]},
-            {n: [,,,,147,,,147,,,,,148,,,,,,,,147,,,147,,,147,,,,147],
-             f: [13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35]},
-            {n: [,,,,147,,,147,,,,,148,,,,,,,,147,,,147,,,147,,,147,147,147],
-             f: [13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35]},
-            {n: [147],
-             f: [13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,68]},
-            {n: [147,,,147,,,147,,147,,,147,,147,,147,147,,,147,,,147,,147,,,147,,147,,147],
-             f: [13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35]}
-          ]
-        },
-        { // Instrument 3
-          i: [
-          2, // OSC1_WAVEFORM
-          192, // OSC1_VOL
-          128, // OSC1_SEMI
-          0, // OSC1_XENV
-          2, // OSC2_WAVEFORM
-          192, // OSC2_VOL
-          140, // OSC2_SEMI
-          18, // OSC2_DETUNE
-          0, // OSC2_XENV
-          0, // NOISE_VOL
-          107, // ENV_ATTACK
-          115, // ENV_SUSTAIN
-          138, // ENV_RELEASE
-          0, // ENV_EXP_DECAY
-          0, // ARP_CHORD
-          0, // ARP_SPEED
-          0, // LFO_WAVEFORM
-          136, // LFO_AMT
-          5, // LFO_FREQ
-          1, // LFO_FX_FREQ
-          2, // FX_FILTER
-          8, // FX_FREQ
-          92, // FX_RESONANCE
-          21, // FX_DIST
-          56, // FX_DRIVE
-          148, // FX_PAN_AMT
-          5, // FX_PAN_FREQ
-          85, // FX_DELAY_AMT
-          8 // FX_DELAY_TIME
-          ],
-          // Patterns
-          p: [3,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2],
-          // Columns
-          c: [
-            {n: [111],
-             f: []},
-            {n: [114],
-             f: []},
-            {n: [111],
-             f: [25,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56]}
-          ]
-        },
-        { // Instrument 4
-          i: [
-          3, // OSC1_WAVEFORM
-          0, // OSC1_VOL
-          127, // OSC1_SEMI
-          0, // OSC1_XENV
-          3, // OSC2_WAVEFORM
-          68, // OSC2_VOL
-          127, // OSC2_SEMI
-          0, // OSC2_DETUNE
-          64, // OSC2_XENV
-          218, // NOISE_VOL
-          4, // ENV_ATTACK
-          4, // ENV_SUSTAIN
-          40, // ENV_RELEASE
-          0, // ENV_EXP_DECAY
-          0, // ARP_CHORD
-          0, // ARP_SPEED
-          1, // LFO_WAVEFORM
-          55, // LFO_AMT
-          4, // LFO_FREQ
-          1, // LFO_FX_FREQ
-          2, // FX_FILTER
-          67, // FX_FREQ
-          115, // FX_RESONANCE
-          124, // FX_DIST
-          190, // FX_DRIVE
-          67, // FX_PAN_AMT
-          6, // FX_PAN_FREQ
-          39, // FX_DELAY_AMT
-          1 // FX_DELAY_TIME
-          ],
-          // Patterns
-          p: [,,,1,2,1,2,3,,,,1,2,1,2,1,2,,,1,4,1,4,1,4,3],
-          // Columns
-          c: [
-            {n: [,,,,147,,,,,,,,147,,,,,,,,147,,,,,,,,147],
-             f: []},
-            {n: [,,,,147,,,,,,,,147,,,,,,,,147,,,,,,,,147,,147,147],
-             f: []},
-            {n: [147],
-             f: []},
-            {n: [,,,,147,,,,,,,,147,,,,,,,,147,,,,,,,,147,,,147],
-             f: []}
-          ]
-        },
-        { // Instrument 5
-          i: [
-          0, // OSC1_WAVEFORM
-          91, // OSC1_VOL
-          128, // OSC1_SEMI
-          0, // OSC1_XENV
-          0, // OSC2_WAVEFORM
-          95, // OSC2_VOL
-          128, // OSC2_SEMI
-          12, // OSC2_DETUNE
-          0, // OSC2_XENV
-          0, // NOISE_VOL
-          12, // ENV_ATTACK
-          0, // ENV_SUSTAIN
-          67, // ENV_RELEASE
-          0, // ENV_EXP_DECAY
-          0, // ARP_CHORD
-          0, // ARP_SPEED
-          0, // LFO_WAVEFORM
-          0, // LFO_AMT
-          0, // LFO_FREQ
-          0, // LFO_FX_FREQ
-          2, // FX_FILTER
-          255, // FX_FREQ
-          15, // FX_RESONANCE
-          0, // FX_DIST
-          32, // FX_DRIVE
-          83, // FX_PAN_AMT
-          3, // FX_PAN_FREQ
-          134, // FX_DELAY_AMT
-          4 // FX_DELAY_TIME
-          ],
-          // Patterns
-          p: [,,,1,2,3,2,1,2,,,1,2,3,2,1,2,,,,,4,5,4,5],
-          // Columns
-          c: [
-            {n: [159,,147,,154,,147,,157,,147,,154,,150,,159,,147,,154,,147,,162,,147,,154,,150,,123],
-             f: [5,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67]},
-            {n: [159,,147,,154,,147,,157,,147,,154,,150,,159,,147,,154,,147,,162,,147,,157,,162,,126],
-             f: []},
-            {n: [159,,147,,154,,147,,157,,147,,154,,150,,159,,147,,154,,147,,162,,147,,154,,150,,123],
-             f: [5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3]},
-            {n: [159,,162,,164,,,,159,,162,164,,,162,,159,,162,,164,,,,159,,162,164,,,162],
-             f: [13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25]},
-            {n: [157,,162,,164,,,,157,,162,164,,,162,,157,,162,,164,,,,157,,162,164,,,162],
-             f: [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67]}
-          ]
-        },
-        { // Instrument 6
-          i: [
-          3, // OSC1_WAVEFORM
-          146, // OSC1_VOL
-          140, // OSC1_SEMI
-          0, // OSC1_XENV
-          1, // OSC2_WAVEFORM
-          224, // OSC2_VOL
-          128, // OSC2_SEMI
-          3, // OSC2_DETUNE
-          0, // OSC2_XENV
-          0, // NOISE_VOL
-          92, // ENV_ATTACK
-          0, // ENV_SUSTAIN
-          95, // ENV_RELEASE
-          0, // ENV_EXP_DECAY
-          0, // ARP_CHORD
-          0, // ARP_SPEED
-          3, // LFO_WAVEFORM
-          179, // LFO_AMT
-          5, // LFO_FREQ
-          1, // LFO_FX_FREQ
-          3, // FX_FILTER
-          37, // FX_FREQ
-          135, // FX_RESONANCE
-          63, // FX_DIST
-          67, // FX_DRIVE
-          150, // FX_PAN_AMT
-          3, // FX_PAN_FREQ
-          157, // FX_DELAY_AMT
-          6 // FX_DELAY_TIME
-          ],
-          // Patterns
-          p: [,,,,,,,,,1,2,3,,1,2,1,2,3,,4,5,,,,,3],
-          // Columns
-          c: [
-            {n: [123,,,,,,,,,,,,,,,,130],
-             f: [11,25,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,92,67]},
-            {n: [133,,,,,,,,,,,,,,,138,126,,,,,,,,,,,,125],
-             f: [11,,,,,,,,,,,,,,,,,,,,,,,,,,,,11,,,,95,,,,,,,,,,,,,,,,,,,,,,,,,,,,29]},
-            {n: [123],
-             f: [25,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67]},
-            {n: [123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,138,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,116],
-             f: [11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,95]},
-            {n: [133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,126,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,118],
-             f: []}
-          ]
-        },
-        { // Instrument 7
-          i: [
-          0, // OSC1_WAVEFORM
-          255, // OSC1_VOL
-          106, // OSC1_SEMI
-          64, // OSC1_XENV
-          0, // OSC2_WAVEFORM
-          255, // OSC2_VOL
-          106, // OSC2_SEMI
-          0, // OSC2_DETUNE
-          64, // OSC2_XENV
-          0, // NOISE_VOL
-          5, // ENV_ATTACK
-          7, // ENV_SUSTAIN
-          164, // ENV_RELEASE
-          0, // ENV_EXP_DECAY
-          0, // ARP_CHORD
-          0, // ARP_SPEED
-          0, // LFO_WAVEFORM
-          0, // LFO_AMT
-          0, // LFO_FREQ
-          0, // LFO_FX_FREQ
-          2, // FX_FILTER
-          255, // FX_FREQ
-          0, // FX_RESONANCE
-          2, // FX_DIST
-          16, // FX_DRIVE
-          83, // FX_PAN_AMT
-          5, // FX_PAN_FREQ
-          53, // FX_DELAY_AMT
-          1 // FX_DELAY_TIME
-          ],
-          // Patterns
-          p: [,,,,,,,1,,,,,,,,,,1,,,,,,,,1],
-          // Columns
-          c: [
-            {n: [147],
-             f: []}
-          ]
-        },
-      ],
-      rowLen: 5513,   // In sample lengths
-      patternLen: 32,  // Rows per pattern
-      endPattern: 26,  // End pattern
-      numChannels: 8  // Number of channels
-    };
-- 
GitLab