import { BasicSample } from "../basic_soundfont/basic_sample.js"; export class DLSSample extends BasicSample { /** * in decibels of attenuation, WITHOUT EMU CORRECTION * @type {number} */ sampleDbAttenuation; /** * @type {Float32Array} */ sampleData; /** * @param name {string} * @param rate {number} * @param pitch {number} * @param pitchCorrection {number} * @param loopStart {number} sample data points * @param loopEnd {number} sample data points * @param data {Float32Array} * @param sampleDbAttenuation {number} in db */ constructor( name, rate, pitch, pitchCorrection, loopStart, loopEnd, data, sampleDbAttenuation ) { super( name, rate, pitch, pitchCorrection, 0, 1, loopStart, loopEnd ); this.sampleData = data; this.sampleDbAttenuation = sampleDbAttenuation; } getAudioData() { return this.sampleData; } getRawData() { if (this.isCompressed) { if (!this.compressedData) { throw new Error("Compressed but no data?? This shouldn't happen!!"); } return this.compressedData; } return super.getRawData(); // const uint8 = new Uint8Array(this.sampleData.length * 2); // for (let i = 0; i < this.sampleData.length; i++) // { // const sample = Math.floor(this.sampleData[i] * 32768); // uint8[i * 2] = sample & 0xFF; // lower byte // uint8[i * 2 + 1] = (sample >> 8) & 0xFF; // upper byte // } // return uint8; } }