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