broken-neees
Version:
A really broken NEEES emulator that introduces glitches and random bugs on purpose!
24 lines (21 loc) • 685 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
const APU_SAMPLE_RATE = 44100;
const TRIANGLE_SEQUENCE = [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
/** A triangle wave generator. */
class TriangleOscillator {
constructor() {
this.frequency = 0;
this._phase = 0; // (0~1)
}
/** Generates a new sample (0~15). */
sample() {
this._phase = (this._phase + this.frequency / APU_SAMPLE_RATE) % 1;
const step = Math.floor(this._phase * TRIANGLE_SEQUENCE.length);
return TRIANGLE_SEQUENCE[step];
}
}
exports.default = TriangleOscillator;