@beatbax/engine 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -0
- package/dist/audio/bufferedRenderer.d.ts +32 -0
- package/dist/audio/bufferedRenderer.d.ts.map +1 -0
- package/dist/audio/bufferedRenderer.js +309 -0
- package/dist/audio/bufferedRenderer.js.map +1 -0
- package/dist/audio/pcmRenderer.d.ts +25 -0
- package/dist/audio/pcmRenderer.d.ts.map +1 -0
- package/dist/audio/pcmRenderer.js +1288 -0
- package/dist/audio/pcmRenderer.js.map +1 -0
- package/dist/audio/playback.d.ts +57 -0
- package/dist/audio/playback.d.ts.map +1 -0
- package/dist/audio/playback.js +794 -0
- package/dist/audio/playback.js.map +1 -0
- package/dist/chips/gameboy/apu.d.ts +9 -0
- package/dist/chips/gameboy/apu.d.ts.map +1 -0
- package/dist/chips/gameboy/apu.js +27 -0
- package/dist/chips/gameboy/apu.js.map +1 -0
- package/dist/chips/gameboy/noise.d.ts +6 -0
- package/dist/chips/gameboy/noise.d.ts.map +1 -0
- package/dist/chips/gameboy/noise.js +155 -0
- package/dist/chips/gameboy/noise.js.map +1 -0
- package/dist/chips/gameboy/packet.d.ts +3 -0
- package/dist/chips/gameboy/packet.d.ts.map +1 -0
- package/dist/chips/gameboy/packet.js +3 -0
- package/dist/chips/gameboy/packet.js.map +1 -0
- package/dist/chips/gameboy/periodTables.d.ts +16 -0
- package/dist/chips/gameboy/periodTables.d.ts.map +1 -0
- package/dist/chips/gameboy/periodTables.js +29 -0
- package/dist/chips/gameboy/periodTables.js.map +1 -0
- package/dist/chips/gameboy/pulse.d.ts +12 -0
- package/dist/chips/gameboy/pulse.d.ts.map +1 -0
- package/dist/chips/gameboy/pulse.js +275 -0
- package/dist/chips/gameboy/pulse.js.map +1 -0
- package/dist/chips/gameboy/wave.d.ts +8 -0
- package/dist/chips/gameboy/wave.d.ts.map +1 -0
- package/dist/chips/gameboy/wave.js +146 -0
- package/dist/chips/gameboy/wave.js.map +1 -0
- package/dist/effects/index.d.ts +7 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +1028 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/effects/types.d.ts +8 -0
- package/dist/effects/types.d.ts.map +1 -0
- package/dist/effects/types.js +2 -0
- package/dist/effects/types.js.map +1 -0
- package/dist/expand/refExpander.d.ts +14 -0
- package/dist/expand/refExpander.d.ts.map +1 -0
- package/dist/expand/refExpander.js +130 -0
- package/dist/expand/refExpander.js.map +1 -0
- package/dist/export/index.d.ts +5 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +5 -0
- package/dist/export/index.js.map +1 -0
- package/dist/export/jsonExport.d.ts +9 -0
- package/dist/export/jsonExport.d.ts.map +1 -0
- package/dist/export/jsonExport.js +184 -0
- package/dist/export/jsonExport.js.map +1 -0
- package/dist/export/midiExport.d.ts +9 -0
- package/dist/export/midiExport.d.ts.map +1 -0
- package/dist/export/midiExport.js +390 -0
- package/dist/export/midiExport.js.map +1 -0
- package/dist/export/ugeWriter.d.ts +33 -0
- package/dist/export/ugeWriter.d.ts.map +1 -0
- package/dist/export/ugeWriter.js +1997 -0
- package/dist/export/ugeWriter.js.map +1 -0
- package/dist/export/wavWriter.d.ts +24 -0
- package/dist/export/wavWriter.d.ts.map +1 -0
- package/dist/export/wavWriter.js +126 -0
- package/dist/export/wavWriter.js.map +1 -0
- package/dist/import/index.d.ts +5 -0
- package/dist/import/index.d.ts.map +1 -0
- package/dist/import/index.js +8 -0
- package/dist/import/index.js.map +1 -0
- package/dist/import/remoteCache.d.ts +60 -0
- package/dist/import/remoteCache.d.ts.map +1 -0
- package/dist/import/remoteCache.js +194 -0
- package/dist/import/remoteCache.js.map +1 -0
- package/dist/import/uge/uge.reader.d.ts +27 -0
- package/dist/import/uge/uge.reader.d.ts.map +1 -0
- package/dist/import/uge/uge.reader.js +545 -0
- package/dist/import/uge/uge.reader.js.map +1 -0
- package/dist/import/urlUtils.d.ts +50 -0
- package/dist/import/urlUtils.d.ts.map +1 -0
- package/dist/import/urlUtils.js +87 -0
- package/dist/import/urlUtils.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +318 -0
- package/dist/index.js.map +1 -0
- package/dist/instruments/instrumentState.d.ts +15 -0
- package/dist/instruments/instrumentState.d.ts.map +1 -0
- package/dist/instruments/instrumentState.js +24 -0
- package/dist/instruments/instrumentState.js.map +1 -0
- package/dist/parser/ast.d.ts +22 -0
- package/dist/parser/ast.d.ts.map +1 -0
- package/dist/parser/ast.js +5 -0
- package/dist/parser/ast.js.map +1 -0
- package/dist/parser/index.d.ts +14 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +10 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/peggy/generated/parser.d.ts +8 -0
- package/dist/parser/peggy/generated/parser.d.ts.map +1 -0
- package/dist/parser/peggy/generated/parser.js +6269 -0
- package/dist/parser/peggy/generated/parser.js.map +1 -0
- package/dist/parser/peggy/index.d.ts +3 -0
- package/dist/parser/peggy/index.d.ts.map +1 -0
- package/dist/parser/peggy/index.js +555 -0
- package/dist/parser/peggy/index.js.map +1 -0
- package/dist/parser/structured.d.ts +16 -0
- package/dist/parser/structured.d.ts.map +1 -0
- package/dist/parser/structured.js +232 -0
- package/dist/parser/structured.js.map +1 -0
- package/dist/parser/tokenizer.d.ts +12 -0
- package/dist/parser/tokenizer.d.ts.map +1 -0
- package/dist/parser/tokenizer.js +14 -0
- package/dist/parser/tokenizer.js.map +1 -0
- package/dist/patterns/expand.d.ts +32 -0
- package/dist/patterns/expand.d.ts.map +1 -0
- package/dist/patterns/expand.js +184 -0
- package/dist/patterns/expand.js.map +1 -0
- package/dist/patterns/index.d.ts +2 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +2 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/scheduler/index.d.ts +6 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +9 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/tickScheduler.d.ts +27 -0
- package/dist/scheduler/tickScheduler.d.ts.map +1 -0
- package/dist/scheduler/tickScheduler.js +74 -0
- package/dist/scheduler/tickScheduler.js.map +1 -0
- package/dist/sequences/expand.d.ts +14 -0
- package/dist/sequences/expand.d.ts.map +1 -0
- package/dist/sequences/expand.js +137 -0
- package/dist/sequences/expand.js.map +1 -0
- package/dist/song/importResolver.browser.d.ts +29 -0
- package/dist/song/importResolver.browser.d.ts.map +1 -0
- package/dist/song/importResolver.browser.js +168 -0
- package/dist/song/importResolver.browser.js.map +1 -0
- package/dist/song/importResolver.d.ts +40 -0
- package/dist/song/importResolver.d.ts.map +1 -0
- package/dist/song/importResolver.js +445 -0
- package/dist/song/importResolver.js.map +1 -0
- package/dist/song/index.browser.d.ts +9 -0
- package/dist/song/index.browser.d.ts.map +1 -0
- package/dist/song/index.browser.js +7 -0
- package/dist/song/index.browser.js.map +1 -0
- package/dist/song/index.d.ts +8 -0
- package/dist/song/index.d.ts.map +1 -0
- package/dist/song/index.js +6 -0
- package/dist/song/index.js.map +1 -0
- package/dist/song/resolver.browser.d.ts +50 -0
- package/dist/song/resolver.browser.d.ts.map +1 -0
- package/dist/song/resolver.browser.js +536 -0
- package/dist/song/resolver.browser.js.map +1 -0
- package/dist/song/resolver.d.ts +20 -0
- package/dist/song/resolver.d.ts.map +1 -0
- package/dist/song/resolver.js +540 -0
- package/dist/song/resolver.js.map +1 -0
- package/dist/song/songModel.d.ts +34 -0
- package/dist/song/songModel.d.ts.map +1 -0
- package/dist/song/songModel.js +2 -0
- package/dist/song/songModel.js.map +1 -0
- package/dist/tests/refExpander.test.d.ts +2 -0
- package/dist/tests/refExpander.test.d.ts.map +1 -0
- package/dist/tests/refExpander.test.js +37 -0
- package/dist/tests/refExpander.test.js.map +1 -0
- package/dist/util/diag.d.ts +16 -0
- package/dist/util/diag.d.ts.map +1 -0
- package/dist/util/diag.js +29 -0
- package/dist/util/diag.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playback.js","sourceRoot":"","sources":["../../src/audio/playback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Utilities for note/frequency conversions used by the Player. */
|
|
2
|
+
export declare function midiToFreq(midi: number): number;
|
|
3
|
+
export declare function noteNameToMidi(name: string, octave: number): number | null;
|
|
4
|
+
declare const _default: {
|
|
5
|
+
midiToFreq: typeof midiToFreq;
|
|
6
|
+
noteNameToMidi: typeof noteNameToMidi;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=apu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apu.d.ts","sourceRoot":"","sources":["../../../src/chips/gameboy/apu.ts"],"names":[],"mappings":"AAEA,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,UAUtC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU1E;;;;;AAED,wBAA8C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { GB_PERIOD_TABLE, freqFromRegister } from './periodTables.js';
|
|
2
|
+
/** Utilities for note/frequency conversions used by the Player. */
|
|
3
|
+
export function midiToFreq(midi) {
|
|
4
|
+
// Use hardware-accurate period table for Game Boy parity
|
|
5
|
+
// GB_PERIOD_TABLE starts at C2 (MIDI 36)
|
|
6
|
+
const index = midi - 36;
|
|
7
|
+
if (index >= 0 && index < GB_PERIOD_TABLE.length) {
|
|
8
|
+
return freqFromRegister(GB_PERIOD_TABLE[index]);
|
|
9
|
+
}
|
|
10
|
+
// Fallback to standard equal temperament for notes outside the hardware range
|
|
11
|
+
return 440 * Math.pow(2, (midi - 69) / 12);
|
|
12
|
+
}
|
|
13
|
+
export function noteNameToMidi(name, octave) {
|
|
14
|
+
const m = name.match(/^([A-G])([#B]?)$/i);
|
|
15
|
+
if (!m)
|
|
16
|
+
return null;
|
|
17
|
+
const letter = m[1].toUpperCase();
|
|
18
|
+
const acc = (m[2] || '').toUpperCase();
|
|
19
|
+
const map = { C: 0, 'C#': 1, DB: 1, D: 2, 'D#': 3, EB: 3, E: 4, F: 5, 'F#': 6, GB: 6, G: 7, 'G#': 8, AB: 8, A: 9, 'A#': 10, BB: 10, B: 11 };
|
|
20
|
+
const key = letter + (acc === 'B' ? 'B' : (acc === '#' ? '#' : ''));
|
|
21
|
+
const semi = map[key];
|
|
22
|
+
if (semi === undefined)
|
|
23
|
+
return null;
|
|
24
|
+
return (octave + 1) * 12 + semi;
|
|
25
|
+
}
|
|
26
|
+
export default { midiToFreq, noteNameToMidi };
|
|
27
|
+
//# sourceMappingURL=apu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apu.js","sourceRoot":"","sources":["../../../src/chips/gameboy/apu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEtE,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,yDAAyD;IACzD,yCAAyC;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QACjD,OAAO,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,8EAA8E;IAC9E,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAc;IACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC1C,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,GAAG,GAA2B,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,EAAC,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,EAAC,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,EAAC,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,EAAC,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,EAAC,EAAE,EAAE,EAAE,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC;IACnJ,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,GAAG,CAAC,GAAuB,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function playNoise(ctx: BaseAudioContext | any, start: number, dur: number, inst: any, scheduler?: any, destination?: AudioNode, skipEnvelope?: boolean): any[];
|
|
2
|
+
declare const _default: {
|
|
3
|
+
playNoise: typeof playNoise;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
//# sourceMappingURL=noise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../../../src/chips/gameboy/noise.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,SA2G7J;;;;AAED,wBAA6B"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/** Noise channel helper implementing an LFSR-like buffer generator. */
|
|
2
|
+
import { parseEnvelope } from './pulse.js';
|
|
3
|
+
export function playNoise(ctx, start, dur, inst, scheduler, destination, skipEnvelope) {
|
|
4
|
+
const sr = ctx.sampleRate;
|
|
5
|
+
const len = Math.ceil(Math.min(1, dur + 0.05) * sr);
|
|
6
|
+
const buf = ctx.createBuffer(1, len, sr);
|
|
7
|
+
const data = buf.getChannelData(0);
|
|
8
|
+
// Support both plain and gb: prefixed properties
|
|
9
|
+
const width = inst && (inst.width || inst['gb:width']) ? Number(inst.width || inst['gb:width']) : 15;
|
|
10
|
+
const divisor = inst && (inst.divisor || inst['gb:divisor']) ? Number(inst.divisor || inst['gb:divisor']) : 3;
|
|
11
|
+
const shift = inst && (inst.shift || inst['gb:shift']) ? Number(inst.shift || inst['gb:shift']) : 4;
|
|
12
|
+
const GB_CLOCK = 4194304;
|
|
13
|
+
const div = Math.max(1, Number.isFinite(divisor) ? divisor : 3);
|
|
14
|
+
const lfsrHz = GB_CLOCK / (div * Math.pow(2, (shift || 0) + 1));
|
|
15
|
+
let phase = 0;
|
|
16
|
+
let lfsr = 1;
|
|
17
|
+
const is7bit = width === 7 || width === 7;
|
|
18
|
+
function stepLFSR(state) {
|
|
19
|
+
const bit = ((state >> 0) ^ (state >> 1)) & 1;
|
|
20
|
+
state = (state >> 1) | (bit << 14);
|
|
21
|
+
if (is7bit) {
|
|
22
|
+
const low7 = ((state >> 8) & 0x7F) >>> 0;
|
|
23
|
+
const newLow7 = ((low7 >> 1) | ((low7 & 1) << 6)) & 0x7F;
|
|
24
|
+
state = (state & ~(0x7F << 8)) | (newLow7 << 8);
|
|
25
|
+
}
|
|
26
|
+
return state >>> 0;
|
|
27
|
+
}
|
|
28
|
+
for (let i = 0; i < len; i++) {
|
|
29
|
+
phase += lfsrHz / sr;
|
|
30
|
+
const ticks = Math.floor(phase);
|
|
31
|
+
if (ticks > 0) {
|
|
32
|
+
for (let t = 0; t < ticks; t++)
|
|
33
|
+
lfsr = stepLFSR(lfsr);
|
|
34
|
+
phase -= ticks;
|
|
35
|
+
}
|
|
36
|
+
const sampleVal = (lfsr & 1) ? 1 : -1;
|
|
37
|
+
data[i] = sampleVal * 1.0;
|
|
38
|
+
}
|
|
39
|
+
const src = ctx.createBufferSource();
|
|
40
|
+
src.buffer = buf;
|
|
41
|
+
const gain = ctx.createGain();
|
|
42
|
+
src.connect(gain);
|
|
43
|
+
gain.connect(destination || ctx.destination);
|
|
44
|
+
const env = parseEnvelope(inst && inst.env);
|
|
45
|
+
const g = gain.gain;
|
|
46
|
+
// Skip envelope automation if skipEnvelope flag is set (e.g., when volume effects are present)
|
|
47
|
+
if (skipEnvelope) {
|
|
48
|
+
g.setValueAtTime(1.0, start);
|
|
49
|
+
}
|
|
50
|
+
else if (env && env.mode === 'gb') {
|
|
51
|
+
const initialVol = (env.initial ?? 15) / 15;
|
|
52
|
+
const stepPeriod = (env.period ?? 1) * (65536 / GB_CLOCK);
|
|
53
|
+
if (env.period && env.period > 0) {
|
|
54
|
+
const maxSteps = Math.max(1, Math.floor(dur / stepPeriod));
|
|
55
|
+
const vals = [];
|
|
56
|
+
let cur = env.initial ?? 15;
|
|
57
|
+
vals.push((cur / 15) * 1.0);
|
|
58
|
+
for (let s = 1; s <= maxSteps; s++) {
|
|
59
|
+
if (env.direction === 'up')
|
|
60
|
+
cur = Math.min(15, cur + 1);
|
|
61
|
+
else
|
|
62
|
+
cur = Math.max(0, cur - 1);
|
|
63
|
+
vals.push((cur / 15) * 1.0);
|
|
64
|
+
if (cur === 0 || cur === 15)
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
const curve = new Float32Array(vals);
|
|
68
|
+
const curveDuration = (vals.length - 1) * stepPeriod;
|
|
69
|
+
if (scheduler && typeof scheduler.scheduleAligned === 'function' && typeof g.setValueCurveAtTime === 'function') {
|
|
70
|
+
scheduler.scheduleAligned(start, () => {
|
|
71
|
+
try {
|
|
72
|
+
g.setValueCurveAtTime(curve, start, curveDuration);
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
try {
|
|
76
|
+
g.setValueAtTime(vals[0], start);
|
|
77
|
+
}
|
|
78
|
+
catch (_) { }
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
scheduler.scheduleAligned(start + dur, () => { try {
|
|
82
|
+
g.setValueAtTime(g.value, start + dur);
|
|
83
|
+
g.linearRampToValueAtTime(0.0001, start + dur + 0.005);
|
|
84
|
+
}
|
|
85
|
+
catch (e) { } });
|
|
86
|
+
}
|
|
87
|
+
else if (scheduler && typeof scheduler.schedule === 'function' && typeof g.setValueCurveAtTime === 'function') {
|
|
88
|
+
scheduler.schedule(start, () => {
|
|
89
|
+
try {
|
|
90
|
+
g.setValueCurveAtTime(curve, start, curveDuration);
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
try {
|
|
94
|
+
g.setValueAtTime(vals[0], start);
|
|
95
|
+
}
|
|
96
|
+
catch (_) { }
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
scheduler.schedule(start + dur, () => { try {
|
|
100
|
+
g.setValueAtTime(g.value, start + dur);
|
|
101
|
+
g.linearRampToValueAtTime(0.0001, start + dur + 0.005);
|
|
102
|
+
}
|
|
103
|
+
catch (e) { } });
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
try {
|
|
107
|
+
if (typeof g.setValueCurveAtTime === 'function') {
|
|
108
|
+
g.setValueCurveAtTime(curve, start, curveDuration);
|
|
109
|
+
g.setValueAtTime(g.value, start + dur);
|
|
110
|
+
g.linearRampToValueAtTime(0.0001, start + dur + 0.005);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
g.setValueAtTime(vals[0], start);
|
|
114
|
+
let t = start + stepPeriod;
|
|
115
|
+
for (let vi = 1; vi < vals.length; vi++) {
|
|
116
|
+
g.setValueAtTime(vals[vi], t);
|
|
117
|
+
t += stepPeriod;
|
|
118
|
+
}
|
|
119
|
+
g.setValueAtTime(g.value, start + dur);
|
|
120
|
+
g.linearRampToValueAtTime(0.0001, start + dur + 0.005);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
g.setValueAtTime(vals[0], start);
|
|
125
|
+
g.setValueAtTime(g.value, start + dur);
|
|
126
|
+
g.linearRampToValueAtTime(0.0001, start + dur + 0.005);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
g.gain.setValueAtTime(1.0, start);
|
|
132
|
+
g.gain.setTargetAtTime(0.0001, start + dur - 0.02, 0.02);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
g.gain.setValueAtTime(1.0, start);
|
|
137
|
+
g.gain.setTargetAtTime(0.0001, start + dur - 0.02, 0.02);
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
src.start(start);
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
try {
|
|
144
|
+
src.start();
|
|
145
|
+
}
|
|
146
|
+
catch (_) { }
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
src.stop(start + dur + 0.02);
|
|
150
|
+
}
|
|
151
|
+
catch (e) { }
|
|
152
|
+
return [src, gain];
|
|
153
|
+
}
|
|
154
|
+
export default { playNoise };
|
|
155
|
+
//# sourceMappingURL=noise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noise.js","sourceRoot":"","sources":["../../../src/chips/gameboy/noise.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../../../src/chips/gameboy/packet.ts"],"names":[],"mappings":";AACA,wBAAkB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../../../src/chips/gameboy/packet.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const GB_CLOCK = 4194304;
|
|
2
|
+
/**
|
|
3
|
+
* Standard Game Boy period table used by hUGETracker.
|
|
4
|
+
* Covers 72 notes (6 octaves), starting from C2 (MIDI 36).
|
|
5
|
+
* Index 0 = C2, Index 12 = C3, etc.
|
|
6
|
+
*/
|
|
7
|
+
export declare const GB_PERIOD_TABLE: number[];
|
|
8
|
+
export declare function freqFromRegister(reg: number): number;
|
|
9
|
+
export declare function registerFromFreq(freq: number): number;
|
|
10
|
+
declare const _default: {
|
|
11
|
+
GB_CLOCK: number;
|
|
12
|
+
freqFromRegister: typeof freqFromRegister;
|
|
13
|
+
registerFromFreq: typeof registerFromFreq;
|
|
14
|
+
};
|
|
15
|
+
export default _default;
|
|
16
|
+
//# sourceMappingURL=periodTables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"periodTables.d.ts","sourceRoot":"","sources":["../../../src/chips/gameboy/periodTables.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,UAAU,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,eAAe,UAO3B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;;;;;;AAED,wBAAgE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const GB_CLOCK = 4194304; // 4.194304 MHz
|
|
2
|
+
/**
|
|
3
|
+
* Standard Game Boy period table used by hUGETracker.
|
|
4
|
+
* Covers 72 notes (6 octaves), starting from C2 (MIDI 36).
|
|
5
|
+
* Index 0 = C2, Index 12 = C3, etc.
|
|
6
|
+
*/
|
|
7
|
+
export const GB_PERIOD_TABLE = [
|
|
8
|
+
44, 156, 262, 363, 457, 547, 631, 711, 786, 856, 923, 986,
|
|
9
|
+
1046, 1102, 1155, 1205, 1253, 1297, 1339, 1379, 1417, 1452, 1486, 1517,
|
|
10
|
+
1547, 1575, 1601, 1627, 1650, 1673, 1694, 1714, 1732, 1750, 1767, 1783,
|
|
11
|
+
1797, 1811, 1825, 1837, 1849, 1860, 1871, 1881, 1890, 1899, 1907, 1915,
|
|
12
|
+
1923, 1930, 1936, 1943, 1949, 1954, 1959, 1964, 1969, 1973, 1977, 1981,
|
|
13
|
+
1985, 1989, 1992, 1995, 1998, 2001, 2004, 2006, 2008, 2011, 2013, 2015
|
|
14
|
+
];
|
|
15
|
+
export function freqFromRegister(reg) {
|
|
16
|
+
const r = Math.max(0, Math.min(2047, Math.floor(reg)));
|
|
17
|
+
const denom = 2048 - r;
|
|
18
|
+
if (denom <= 0)
|
|
19
|
+
return Infinity;
|
|
20
|
+
return 131072 / denom;
|
|
21
|
+
}
|
|
22
|
+
export function registerFromFreq(freq) {
|
|
23
|
+
if (!isFinite(freq) || freq <= 0)
|
|
24
|
+
return 0;
|
|
25
|
+
const val = Math.round(2048 - (131072 / freq));
|
|
26
|
+
return Math.max(0, Math.min(2047, val));
|
|
27
|
+
}
|
|
28
|
+
export default { GB_CLOCK, freqFromRegister, registerFromFreq };
|
|
29
|
+
//# sourceMappingURL=periodTables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"periodTables.js","sourceRoot":"","sources":["../../../src/chips/gameboy/periodTables.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,eAAe;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACvE,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;IACvB,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChC,OAAO,MAAM,GAAG,KAAK,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function parseEnvelope(envStr: any): any;
|
|
2
|
+
export declare function parseSweep(sweepStr: any): {
|
|
3
|
+
time: number;
|
|
4
|
+
direction: "up" | "down";
|
|
5
|
+
shift: number;
|
|
6
|
+
} | null;
|
|
7
|
+
export declare function playPulse(ctx: BaseAudioContext, freq: number, duty: number, start: number, dur: number, inst: any, scheduler?: any, destination?: AudioNode): any[];
|
|
8
|
+
declare const _default: {
|
|
9
|
+
playPulse: typeof playPulse;
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
12
|
+
//# sourceMappingURL=pulse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pulse.d.ts","sourceRoot":"","sources":["../../../src/chips/gameboy/pulse.ts"],"names":[],"mappings":"AAmBA,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,OAoDxC;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,GAAG;;;;SA2BvC;AAwCD,wBAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,SAAS,SAyF3J;;;;AAED,wBAA6B"}
|