mirror of
https://github.com/scratchfoundation/scratch-audio.git
synced 2025-01-09 06:12:20 -05:00
Merge pull request #182 from scratchfoundation/renovate/eslint-config-scratch-9.x
chore(deps): update dependency eslint-config-scratch to v9
This commit is contained in:
commit
0b7a877949
10 changed files with 7687 additions and 3567 deletions
11153
package-lock.json
generated
11153
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -28,11 +28,11 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"babel-core": "6.26.3",
|
||||
"babel-eslint": "7.2.3",
|
||||
"babel-eslint": "10.1.0",
|
||||
"babel-loader": "7.1.5",
|
||||
"babel-preset-env": "1.7.0",
|
||||
"eslint": "3.19.0",
|
||||
"eslint-config-scratch": "3.1.0",
|
||||
"eslint": "8.0.1",
|
||||
"eslint-config-scratch": "9.0.3",
|
||||
"json": "9.0.6",
|
||||
"tap": "12.7.0",
|
||||
"web-audio-test-api": "0.5.2",
|
||||
|
|
|
@ -89,7 +89,7 @@ class ADPCMSoundDecoder {
|
|||
* Decode an ADPCM sound stored in an ArrayBuffer and return a promise
|
||||
* with the decoded audio buffer.
|
||||
* @param {ArrayBuffer} audioData - containing ADPCM encoded wav audio
|
||||
* @return {AudioBuffer} the decoded audio buffer
|
||||
* @return {Promise.<AudioBuffer>} the decoded audio buffer
|
||||
*/
|
||||
decode (audioData) {
|
||||
|
||||
|
@ -99,7 +99,7 @@ class ADPCMSoundDecoder {
|
|||
const riffStr = stream.readUint8String(4);
|
||||
if (riffStr !== 'RIFF') {
|
||||
log.warn('incorrect adpcm wav header');
|
||||
reject();
|
||||
reject(new Error('incorrect adpcm wav header'));
|
||||
}
|
||||
|
||||
const lengthInHeader = stream.readInt32();
|
||||
|
@ -110,7 +110,7 @@ class ADPCMSoundDecoder {
|
|||
const wavStr = stream.readUint8String(4);
|
||||
if (wavStr !== 'WAVE') {
|
||||
log.warn('incorrect adpcm wav header');
|
||||
reject();
|
||||
reject(new Error('incorrect adpcm wav header'));
|
||||
}
|
||||
|
||||
const formatChunk = this.extractChunk('fmt ', stream);
|
||||
|
@ -120,7 +120,7 @@ class ADPCMSoundDecoder {
|
|||
this.bytesPerSecond = formatChunk.readUint32();
|
||||
this.blockAlignment = formatChunk.readUint16();
|
||||
this.bitsPerSample = formatChunk.readUint16();
|
||||
formatChunk.position += 2; // skip extra header byte count
|
||||
formatChunk.position += 2; // skip extra header byte count
|
||||
this.samplesPerBlock = formatChunk.readUint16();
|
||||
this.adpcmBlockSize = ((this.samplesPerBlock - 1) / 2) + 4; // block size in bytes
|
||||
|
||||
|
@ -168,7 +168,7 @@ class ADPCMSoundDecoder {
|
|||
const available = compressedData.getBytesAvailable();
|
||||
const blocks = (available / blockSize) | 0;
|
||||
// Number of samples in full blocks.
|
||||
const fullBlocks = blocks * (2 * (blockSize - 4)) + 1;
|
||||
const fullBlocks = (blocks * (2 * (blockSize - 4))) + 1;
|
||||
// Number of samples in the last incomplete block. 0 if the last block
|
||||
// is full.
|
||||
const subBlock = Math.max((available % blockSize) - 4, 0) * 2;
|
||||
|
@ -216,7 +216,7 @@ class ADPCMSoundDecoder {
|
|||
// read 4-bit code and compute delta from previous sample
|
||||
lastByte = compressedData.readUint8();
|
||||
code = lastByte & 0xF;
|
||||
delta = DELTA_TABLE[index * 16 + code];
|
||||
delta = DELTA_TABLE[(index * 16) + code];
|
||||
// compute next index
|
||||
index += INDEX_TABLE[code];
|
||||
if (index > 88) index = 88;
|
||||
|
@ -230,7 +230,7 @@ class ADPCMSoundDecoder {
|
|||
// use 4-bit code from lastByte and compute delta from previous
|
||||
// sample
|
||||
code = (lastByte >> 4) & 0xF;
|
||||
delta = DELTA_TABLE[index * 16 + code];
|
||||
delta = DELTA_TABLE[(index * 16) + code];
|
||||
// compute next index
|
||||
index += INDEX_TABLE[code];
|
||||
if (index > 88) index = 88;
|
||||
|
|
|
@ -95,7 +95,6 @@ class ArrayBufferStream {
|
|||
*/
|
||||
set position (value) {
|
||||
this._position = value + this.start;
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -218,7 +218,7 @@ class AudioEngine {
|
|||
*/
|
||||
decodeSoundPlayer (sound) {
|
||||
return this._decodeSound(sound)
|
||||
.then(([id, buffer]) => new SoundPlayer(this, {id, buffer}));
|
||||
.then(([id, buffer]) => new SoundPlayer(this, {id, buffer}));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -44,9 +44,9 @@ class Loudness {
|
|||
this.mic.connect(this.analyser);
|
||||
this.micDataArray = new Float32Array(this.analyser.fftSize);
|
||||
})
|
||||
.catch(err => {
|
||||
log.warn(err);
|
||||
});
|
||||
.catch(err => {
|
||||
log.warn(err);
|
||||
});
|
||||
}
|
||||
|
||||
// If the microphone is set up and active, measure the loudness
|
||||
|
|
|
@ -150,7 +150,7 @@ class SoundBank {
|
|||
this.soundEffects.forEach(effects => effects.dispose());
|
||||
this.soundEffects.clear();
|
||||
for (const soundId in this.soundPlayers) {
|
||||
if (this.soundPlayers.hasOwnProperty(soundId)) {
|
||||
if (Object.prototype.hasOwnProperty.call(this.soundPlayers, soundId)) {
|
||||
this.soundPlayers[soundId].dispose();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* An effect on an AudioPlayer and all its SoundPlayers.
|
||||
*/
|
||||
class Effect {
|
||||
/**
|
||||
/**
|
||||
* @param {AudioEngine} audioEngine - audio engine this runs with
|
||||
* @param {AudioPlayer} audioPlayer - audio player this affects
|
||||
* @param {Effect} lastEffect - effect in the chain before this one
|
||||
|
|
|
@ -118,7 +118,7 @@ class PitchEffect extends Effect {
|
|||
if (!players) return;
|
||||
|
||||
for (const id in players) {
|
||||
if (players.hasOwnProperty(id)) {
|
||||
if (Object.prototype.hasOwnProperty.call(players, id)) {
|
||||
this.updatePlayer(players[id]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -157,51 +157,51 @@ tap.test('SoundPlayer', suite => {
|
|||
audioContext.$processTo(audioEngine.DECAY_DURATION);
|
||||
|
||||
return Promise.resolve()
|
||||
.then(() => {
|
||||
.then(() => {
|
||||
|
||||
t.equal(soundPlayer.outputNode.$state, 'PLAYING');
|
||||
t.equal(soundPlayer.outputNode.$state, 'PLAYING');
|
||||
|
||||
soundPlayer.play();
|
||||
soundPlayer.finished().then(() => log.push('play 2 finished'));
|
||||
soundPlayer.play();
|
||||
soundPlayer.finished().then(() => log.push('play 2 finished'));
|
||||
|
||||
// wait for a micro-task loop to fire our previous events
|
||||
return Promise.resolve();
|
||||
})
|
||||
.then(() => {
|
||||
// wait for a micro-task loop to fire our previous events
|
||||
return Promise.resolve();
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
t.equal(log[0], 'play 1 finished');
|
||||
t.notEqual(soundPlayer.outputNode, firstPlayNode, 'created new player node');
|
||||
t.equal(log[0], 'play 1 finished');
|
||||
t.notEqual(soundPlayer.outputNode, firstPlayNode, 'created new player node');
|
||||
|
||||
t.equal(help.engineInputs.length, 2, 'there should be 2 players connected');
|
||||
t.equal(firstPlayNode.$state, 'PLAYING');
|
||||
t.equal(soundPlayer.outputNode.$state, 'PLAYING');
|
||||
t.equal(help.engineInputs[0].gain.value, 1, 'old sound connectect to gain node with volume 1');
|
||||
t.equal(help.engineInputs.length, 2, 'there should be 2 players connected');
|
||||
t.equal(firstPlayNode.$state, 'PLAYING');
|
||||
t.equal(soundPlayer.outputNode.$state, 'PLAYING');
|
||||
t.equal(help.engineInputs[0].gain.value, 1, 'old sound connectect to gain node with volume 1');
|
||||
|
||||
const {currentTime} = audioContext;
|
||||
audioContext.$processTo(currentTime + audioEngine.DECAY_WAIT + 0.001);
|
||||
t.notEqual(help.engineInputs[0].gain.value, 1,
|
||||
'old sound connected to gain node which will fade');
|
||||
const {currentTime} = audioContext;
|
||||
audioContext.$processTo(currentTime + audioEngine.DECAY_WAIT + 0.001);
|
||||
t.notEqual(help.engineInputs[0].gain.value, 1,
|
||||
'old sound connected to gain node which will fade');
|
||||
|
||||
audioContext.$processTo(currentTime + audioEngine.DECAY_WAIT + audioEngine.DECAY_DURATION + 0.001);
|
||||
t.equal(soundPlayer.outputNode.$state, 'PLAYING');
|
||||
t.equal(firstPlayNode.$state, 'FINISHED');
|
||||
audioContext.$processTo(currentTime + audioEngine.DECAY_WAIT + audioEngine.DECAY_DURATION + 0.001);
|
||||
t.equal(soundPlayer.outputNode.$state, 'PLAYING');
|
||||
t.equal(firstPlayNode.$state, 'FINISHED');
|
||||
|
||||
t.equal(help.engineInputs[0].gain.value, 0, 'faded old sound to 0');
|
||||
t.equal(help.engineInputs[0].gain.value, 0, 'faded old sound to 0');
|
||||
|
||||
t.equal(log.length, 1);
|
||||
audioContext.$processTo(currentTime + audioEngine.DECAY_WAIT + audioEngine.DECAY_DURATION + 0.3);
|
||||
t.equal(log.length, 1);
|
||||
audioContext.$processTo(currentTime + audioEngine.DECAY_WAIT + audioEngine.DECAY_DURATION + 0.3);
|
||||
|
||||
// wait for a micro-task loop to fire our previous events
|
||||
return Promise.resolve();
|
||||
})
|
||||
.then(() => {
|
||||
// wait for a micro-task loop to fire our previous events
|
||||
return Promise.resolve();
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
t.equal(log[1], 'play 2 finished');
|
||||
t.equal(help.engineInputs.length, 1, 'old sound disconneted itself after done');
|
||||
t.equal(log.length, 2);
|
||||
t.equal(log[1], 'play 2 finished');
|
||||
t.equal(help.engineInputs.length, 1, 'old sound disconneted itself after done');
|
||||
t.equal(log.length, 2);
|
||||
|
||||
t.end();
|
||||
});
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
|
||||
suite.end();
|
||||
|
|
Loading…
Reference in a new issue