music-metadata 7.12.1 → 7.12.4
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/LICENSE.txt +9 -9
- package/README.md +434 -434
- package/lib/ParserFactory.d.ts +48 -48
- package/lib/ParserFactory.js +252 -252
- package/lib/aiff/AiffParser.d.ts +14 -14
- package/lib/aiff/AiffParser.js +84 -84
- package/lib/aiff/AiffToken.d.ts +22 -22
- package/lib/aiff/AiffToken.js +43 -43
- package/lib/apev2/APEv2Parser.d.ts +30 -30
- package/lib/apev2/APEv2Parser.js +164 -161
- package/lib/apev2/APEv2TagMapper.d.ts +4 -4
- package/lib/apev2/APEv2TagMapper.js +86 -86
- package/lib/apev2/APEv2Token.d.ts +100 -100
- package/lib/apev2/APEv2Token.js +126 -126
- package/lib/asf/AsfObject.d.ts +319 -319
- package/lib/asf/AsfObject.js +381 -381
- package/lib/asf/AsfParser.d.ts +17 -17
- package/lib/asf/AsfParser.js +135 -135
- package/lib/asf/AsfTagMapper.d.ts +7 -7
- package/lib/asf/AsfTagMapper.js +95 -95
- package/lib/asf/AsfUtil.d.ts +13 -13
- package/lib/asf/AsfUtil.js +38 -38
- package/lib/asf/GUID.d.ts +84 -84
- package/lib/asf/GUID.js +121 -121
- package/lib/common/BasicParser.d.ts +17 -17
- package/lib/common/BasicParser.js +18 -18
- package/lib/common/CaseInsensitiveTagMap.d.ts +10 -10
- package/lib/common/CaseInsensitiveTagMap.js +21 -21
- package/lib/common/CombinedTagMapper.d.ts +19 -19
- package/lib/common/CombinedTagMapper.js +51 -51
- package/lib/common/FourCC.d.ts +6 -6
- package/lib/common/FourCC.js +28 -28
- package/lib/common/GenericTagMapper.d.ts +51 -51
- package/lib/common/GenericTagMapper.js +55 -55
- package/lib/common/GenericTagTypes.d.ts +33 -33
- package/lib/common/GenericTagTypes.js +131 -131
- package/lib/common/MetadataCollector.d.ts +76 -76
- package/lib/common/MetadataCollector.js +275 -275
- package/lib/common/RandomFileReader.d.ts +22 -22
- package/lib/common/RandomFileReader.js +34 -34
- package/lib/common/RandomUint8ArrayReader.d.ts +18 -18
- package/lib/common/RandomUint8ArrayReader.js +25 -25
- package/lib/common/Util.d.ts +57 -57
- package/lib/common/Util.js +157 -157
- package/lib/core.d.ts +48 -48
- package/lib/core.js +90 -90
- package/lib/dsdiff/DsdiffParser.d.ts +14 -14
- package/lib/dsdiff/DsdiffParser.js +143 -143
- package/lib/dsdiff/DsdiffToken.d.ts +9 -9
- package/lib/dsdiff/DsdiffToken.js +21 -21
- package/lib/dsf/DsfChunk.d.ts +86 -86
- package/lib/dsf/DsfChunk.js +54 -54
- package/lib/dsf/DsfParser.d.ts +9 -9
- package/lib/dsf/DsfParser.js +56 -56
- package/lib/flac/FlacParser.d.ts +28 -28
- package/lib/flac/FlacParser.js +175 -175
- package/lib/id3v1/ID3v1Parser.d.ts +13 -13
- package/lib/id3v1/ID3v1Parser.js +134 -134
- package/lib/id3v1/ID3v1TagMap.d.ts +4 -4
- package/lib/id3v1/ID3v1TagMap.js +22 -22
- package/lib/id3v2/AbstractID3Parser.d.ts +17 -17
- package/lib/id3v2/AbstractID3Parser.js +60 -60
- package/lib/id3v2/FrameParser.d.ts +31 -31
- package/lib/id3v2/FrameParser.js +329 -329
- package/lib/id3v2/ID3v22TagMapper.d.ts +9 -9
- package/lib/id3v2/ID3v22TagMapper.js +55 -55
- package/lib/id3v2/ID3v24TagMapper.d.ts +14 -14
- package/lib/id3v2/ID3v24TagMapper.js +193 -193
- package/lib/id3v2/ID3v2Parser.d.ts +28 -28
- package/lib/id3v2/ID3v2Parser.js +182 -182
- package/lib/id3v2/ID3v2Token.d.ts +73 -73
- package/lib/id3v2/ID3v2Token.js +106 -106
- package/lib/iff/index.d.ts +33 -33
- package/lib/iff/index.js +19 -19
- package/lib/index.d.ts +45 -45
- package/lib/index.js +74 -74
- package/lib/lyrics3/Lyrics3.d.ts +3 -3
- package/lib/lyrics3/Lyrics3.js +17 -17
- package/lib/matroska/MatroskaDtd.d.ts +8 -8
- package/lib/matroska/MatroskaDtd.js +279 -279
- package/lib/matroska/MatroskaParser.d.ts +37 -37
- package/lib/matroska/MatroskaParser.js +235 -235
- package/lib/matroska/MatroskaTagMapper.d.ts +4 -4
- package/lib/matroska/MatroskaTagMapper.js +35 -35
- package/lib/matroska/types.d.ts +175 -175
- package/lib/matroska/types.js +32 -32
- package/lib/mp4/Atom.d.ts +16 -16
- package/lib/mp4/Atom.js +70 -70
- package/lib/mp4/AtomToken.d.ts +395 -395
- package/lib/mp4/AtomToken.js +406 -406
- package/lib/mp4/MP4Parser.d.ts +30 -30
- package/lib/mp4/MP4Parser.js +511 -511
- package/lib/mp4/MP4TagMapper.d.ts +5 -5
- package/lib/mp4/MP4TagMapper.js +115 -115
- package/lib/mpeg/ExtendedLameHeader.d.ts +27 -27
- package/lib/mpeg/ExtendedLameHeader.js +31 -31
- package/lib/mpeg/MpegParser.d.ts +49 -49
- package/lib/mpeg/MpegParser.js +524 -524
- package/lib/mpeg/ReplayGainDataFormat.d.ts +55 -55
- package/lib/mpeg/ReplayGainDataFormat.js +69 -69
- package/lib/mpeg/XingTag.d.ts +45 -45
- package/lib/mpeg/XingTag.js +69 -69
- package/lib/musepack/index.d.ts +5 -5
- package/lib/musepack/index.js +32 -32
- package/lib/musepack/sv7/BitReader.d.ts +13 -13
- package/lib/musepack/sv7/BitReader.js +54 -54
- package/lib/musepack/sv7/MpcSv7Parser.d.ts +8 -8
- package/lib/musepack/sv7/MpcSv7Parser.js +46 -46
- package/lib/musepack/sv7/StreamVersion7.d.ts +28 -28
- package/lib/musepack/sv7/StreamVersion7.js +41 -41
- package/lib/musepack/sv8/MpcSv8Parser.d.ts +6 -6
- package/lib/musepack/sv8/MpcSv8Parser.js +55 -55
- package/lib/musepack/sv8/StreamVersion8.d.ts +40 -40
- package/lib/musepack/sv8/StreamVersion8.js +80 -80
- package/lib/ogg/Ogg.d.ts +72 -72
- package/lib/ogg/Ogg.js +2 -2
- package/lib/ogg/OggParser.d.ts +23 -23
- package/lib/ogg/OggParser.js +126 -126
- package/lib/ogg/opus/Opus.d.ts +48 -48
- package/lib/ogg/opus/Opus.js +28 -28
- package/lib/ogg/opus/OpusParser.d.ts +25 -25
- package/lib/ogg/opus/OpusParser.js +56 -56
- package/lib/ogg/speex/Speex.d.ts +36 -36
- package/lib/ogg/speex/Speex.js +31 -31
- package/lib/ogg/speex/SpeexParser.d.ts +22 -22
- package/lib/ogg/speex/SpeexParser.js +35 -35
- package/lib/ogg/theora/Theora.d.ts +20 -20
- package/lib/ogg/theora/Theora.js +23 -23
- package/lib/ogg/theora/TheoraParser.d.ts +28 -28
- package/lib/ogg/theora/TheoraParser.js +44 -44
- package/lib/ogg/vorbis/Vorbis.d.ts +69 -69
- package/lib/ogg/vorbis/Vorbis.js +78 -78
- package/lib/ogg/vorbis/VorbisDecoder.d.ts +12 -12
- package/lib/ogg/vorbis/VorbisDecoder.js +32 -32
- package/lib/ogg/vorbis/VorbisParser.d.ts +36 -36
- package/lib/ogg/vorbis/VorbisParser.js +128 -128
- package/lib/ogg/vorbis/VorbisTagMapper.d.ts +7 -7
- package/lib/ogg/vorbis/VorbisTagMapper.js +132 -132
- package/lib/riff/RiffChunk.d.ts +16 -16
- package/lib/riff/RiffChunk.js +32 -32
- package/lib/riff/RiffInfoTagMap.d.ts +10 -10
- package/lib/riff/RiffInfoTagMap.js +37 -37
- package/lib/type.d.ts +592 -592
- package/lib/type.js +5 -5
- package/lib/wav/BwfChunk.d.ts +17 -17
- package/lib/wav/BwfChunk.js +29 -28
- package/lib/wav/WaveChunk.d.ts +64 -64
- package/lib/wav/WaveChunk.js +65 -65
- package/lib/wav/WaveParser.d.ts +24 -24
- package/lib/wav/WaveParser.js +158 -156
- package/lib/wavpack/WavPackParser.d.ts +14 -14
- package/lib/wavpack/WavPackParser.js +99 -99
- package/lib/wavpack/WavPackToken.d.ts +64 -64
- package/lib/wavpack/WavPackToken.js +76 -76
- package/package.json +150 -150
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
import { IGetToken } from 'strtok3/lib/core';
|
|
2
|
-
/**
|
|
3
|
-
* WavPack Block Header
|
|
4
|
-
*
|
|
5
|
-
* 32-byte little-endian header at the front of every WavPack block
|
|
6
|
-
*
|
|
7
|
-
* Ref:
|
|
8
|
-
* - http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 "Block Header")
|
|
9
|
-
*/
|
|
10
|
-
export interface IBlockHeader {
|
|
11
|
-
BlockID: string;
|
|
12
|
-
blockSize: number;
|
|
13
|
-
version: number;
|
|
14
|
-
blockIndex: number;
|
|
15
|
-
totalSamples: number;
|
|
16
|
-
blockSamples: number;
|
|
17
|
-
flags: {
|
|
18
|
-
bitsPerSample: number;
|
|
19
|
-
isMono: boolean;
|
|
20
|
-
isHybrid: boolean;
|
|
21
|
-
isJointStereo: boolean;
|
|
22
|
-
crossChannel: boolean;
|
|
23
|
-
hybridNoiseShaping: boolean;
|
|
24
|
-
floatingPoint: boolean;
|
|
25
|
-
samplingRate: number;
|
|
26
|
-
isDSD: boolean;
|
|
27
|
-
};
|
|
28
|
-
crc: Uint8Array;
|
|
29
|
-
}
|
|
30
|
-
export interface IMetadataId {
|
|
31
|
-
/**
|
|
32
|
-
* metadata function id
|
|
33
|
-
*/
|
|
34
|
-
functionId: number;
|
|
35
|
-
/**
|
|
36
|
-
* If true, audio-decoder does not need to understand the metadata field
|
|
37
|
-
*/
|
|
38
|
-
isOptional: boolean;
|
|
39
|
-
/**
|
|
40
|
-
* actual data byte length is 1 less
|
|
41
|
-
*/
|
|
42
|
-
isOddSize: boolean;
|
|
43
|
-
/**
|
|
44
|
-
* large block (> 255 words)
|
|
45
|
-
*/
|
|
46
|
-
largeBlock: boolean;
|
|
47
|
-
}
|
|
48
|
-
export declare class WavPack {
|
|
49
|
-
/**
|
|
50
|
-
* WavPack Block Header
|
|
51
|
-
*
|
|
52
|
-
* 32-byte little-endian header at the front of every WavPack block
|
|
53
|
-
*
|
|
54
|
-
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 "Block Header")
|
|
55
|
-
*/
|
|
56
|
-
static BlockHeaderToken: IGetToken<IBlockHeader>;
|
|
57
|
-
/**
|
|
58
|
-
* 3.0 Metadata Sub-Blocks
|
|
59
|
-
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 "Metadata Sub-Block")
|
|
60
|
-
*/
|
|
61
|
-
static MetadataIdToken: IGetToken<IMetadataId>;
|
|
62
|
-
private static isBitSet;
|
|
63
|
-
private static getBitAllignedNumber;
|
|
64
|
-
}
|
|
1
|
+
import { IGetToken } from 'strtok3/lib/core';
|
|
2
|
+
/**
|
|
3
|
+
* WavPack Block Header
|
|
4
|
+
*
|
|
5
|
+
* 32-byte little-endian header at the front of every WavPack block
|
|
6
|
+
*
|
|
7
|
+
* Ref:
|
|
8
|
+
* - http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 "Block Header")
|
|
9
|
+
*/
|
|
10
|
+
export interface IBlockHeader {
|
|
11
|
+
BlockID: string;
|
|
12
|
+
blockSize: number;
|
|
13
|
+
version: number;
|
|
14
|
+
blockIndex: number;
|
|
15
|
+
totalSamples: number;
|
|
16
|
+
blockSamples: number;
|
|
17
|
+
flags: {
|
|
18
|
+
bitsPerSample: number;
|
|
19
|
+
isMono: boolean;
|
|
20
|
+
isHybrid: boolean;
|
|
21
|
+
isJointStereo: boolean;
|
|
22
|
+
crossChannel: boolean;
|
|
23
|
+
hybridNoiseShaping: boolean;
|
|
24
|
+
floatingPoint: boolean;
|
|
25
|
+
samplingRate: number;
|
|
26
|
+
isDSD: boolean;
|
|
27
|
+
};
|
|
28
|
+
crc: Uint8Array;
|
|
29
|
+
}
|
|
30
|
+
export interface IMetadataId {
|
|
31
|
+
/**
|
|
32
|
+
* metadata function id
|
|
33
|
+
*/
|
|
34
|
+
functionId: number;
|
|
35
|
+
/**
|
|
36
|
+
* If true, audio-decoder does not need to understand the metadata field
|
|
37
|
+
*/
|
|
38
|
+
isOptional: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* actual data byte length is 1 less
|
|
41
|
+
*/
|
|
42
|
+
isOddSize: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* large block (> 255 words)
|
|
45
|
+
*/
|
|
46
|
+
largeBlock: boolean;
|
|
47
|
+
}
|
|
48
|
+
export declare class WavPack {
|
|
49
|
+
/**
|
|
50
|
+
* WavPack Block Header
|
|
51
|
+
*
|
|
52
|
+
* 32-byte little-endian header at the front of every WavPack block
|
|
53
|
+
*
|
|
54
|
+
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 "Block Header")
|
|
55
|
+
*/
|
|
56
|
+
static BlockHeaderToken: IGetToken<IBlockHeader>;
|
|
57
|
+
/**
|
|
58
|
+
* 3.0 Metadata Sub-Blocks
|
|
59
|
+
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 "Metadata Sub-Block")
|
|
60
|
+
*/
|
|
61
|
+
static MetadataIdToken: IGetToken<IMetadataId>;
|
|
62
|
+
private static isBitSet;
|
|
63
|
+
private static getBitAllignedNumber;
|
|
64
|
+
}
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WavPack = void 0;
|
|
4
|
-
const Token = require("token-types");
|
|
5
|
-
const FourCC_1 = require("../common/FourCC");
|
|
6
|
-
const SampleRates = [6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100,
|
|
7
|
-
48000, 64000, 88200, 96000, 192000, -1];
|
|
8
|
-
class WavPack {
|
|
9
|
-
static isBitSet(flags, bitOffset) {
|
|
10
|
-
return WavPack.getBitAllignedNumber(flags, bitOffset, 1) === 1;
|
|
11
|
-
}
|
|
12
|
-
static getBitAllignedNumber(flags, bitOffset, len) {
|
|
13
|
-
return (flags >>> bitOffset) & (0xffffffff >>> (32 - len));
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.WavPack = WavPack;
|
|
17
|
-
/**
|
|
18
|
-
* WavPack Block Header
|
|
19
|
-
*
|
|
20
|
-
* 32-byte little-endian header at the front of every WavPack block
|
|
21
|
-
*
|
|
22
|
-
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 "Block Header")
|
|
23
|
-
*/
|
|
24
|
-
WavPack.BlockHeaderToken = {
|
|
25
|
-
len: 32,
|
|
26
|
-
get: (buf, off) => {
|
|
27
|
-
const flags = Token.UINT32_LE.get(buf, off + 24);
|
|
28
|
-
const res = {
|
|
29
|
-
// should equal 'wvpk'
|
|
30
|
-
BlockID: FourCC_1.FourCcToken.get(buf, off),
|
|
31
|
-
// 0x402 to 0x410 are valid for decode
|
|
32
|
-
blockSize: Token.UINT32_LE.get(buf, off + 4),
|
|
33
|
-
// 0x402 (1026) to 0x410 are valid for decode
|
|
34
|
-
version: Token.UINT16_LE.get(buf, off + 8),
|
|
35
|
-
// 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)
|
|
36
|
-
totalSamples: /* replace with bigint? (Token.UINT8.get(buf, off + 11) << 32) + */ Token.UINT32_LE.get(buf, off + 12),
|
|
37
|
-
// 40-bit block_index
|
|
38
|
-
blockIndex: /* replace with bigint? (Token.UINT8.get(buf, off + 10) << 32) + */ Token.UINT32_LE.get(buf, off + 16),
|
|
39
|
-
// 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)
|
|
40
|
-
blockSamples: Token.UINT32_LE.get(buf, off + 20),
|
|
41
|
-
// various flags for id and decoding
|
|
42
|
-
flags: {
|
|
43
|
-
bitsPerSample: (1 + WavPack.getBitAllignedNumber(flags, 0, 2)) * 8,
|
|
44
|
-
isMono: WavPack.isBitSet(flags, 2),
|
|
45
|
-
isHybrid: WavPack.isBitSet(flags, 3),
|
|
46
|
-
isJointStereo: WavPack.isBitSet(flags, 4),
|
|
47
|
-
crossChannel: WavPack.isBitSet(flags, 5),
|
|
48
|
-
hybridNoiseShaping: WavPack.isBitSet(flags, 6),
|
|
49
|
-
floatingPoint: WavPack.isBitSet(flags, 7),
|
|
50
|
-
samplingRate: SampleRates[WavPack.getBitAllignedNumber(flags, 23, 4)],
|
|
51
|
-
isDSD: WavPack.isBitSet(flags, 31)
|
|
52
|
-
},
|
|
53
|
-
// crc for actual decoded data
|
|
54
|
-
crc: new Token.Uint8ArrayType(4).get(buf, off + 28)
|
|
55
|
-
};
|
|
56
|
-
if (res.flags.isDSD) {
|
|
57
|
-
res.totalSamples *= 8;
|
|
58
|
-
}
|
|
59
|
-
return res;
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* 3.0 Metadata Sub-Blocks
|
|
64
|
-
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 "Metadata Sub-Block")
|
|
65
|
-
*/
|
|
66
|
-
WavPack.MetadataIdToken = {
|
|
67
|
-
len: 1,
|
|
68
|
-
get: (buf, off) => {
|
|
69
|
-
return {
|
|
70
|
-
functionId: WavPack.getBitAllignedNumber(buf[off], 0, 6),
|
|
71
|
-
isOptional: WavPack.isBitSet(buf[off], 5),
|
|
72
|
-
isOddSize: WavPack.isBitSet(buf[off], 6),
|
|
73
|
-
largeBlock: WavPack.isBitSet(buf[off], 7)
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WavPack = void 0;
|
|
4
|
+
const Token = require("token-types");
|
|
5
|
+
const FourCC_1 = require("../common/FourCC");
|
|
6
|
+
const SampleRates = [6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100,
|
|
7
|
+
48000, 64000, 88200, 96000, 192000, -1];
|
|
8
|
+
class WavPack {
|
|
9
|
+
static isBitSet(flags, bitOffset) {
|
|
10
|
+
return WavPack.getBitAllignedNumber(flags, bitOffset, 1) === 1;
|
|
11
|
+
}
|
|
12
|
+
static getBitAllignedNumber(flags, bitOffset, len) {
|
|
13
|
+
return (flags >>> bitOffset) & (0xffffffff >>> (32 - len));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.WavPack = WavPack;
|
|
17
|
+
/**
|
|
18
|
+
* WavPack Block Header
|
|
19
|
+
*
|
|
20
|
+
* 32-byte little-endian header at the front of every WavPack block
|
|
21
|
+
*
|
|
22
|
+
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 "Block Header")
|
|
23
|
+
*/
|
|
24
|
+
WavPack.BlockHeaderToken = {
|
|
25
|
+
len: 32,
|
|
26
|
+
get: (buf, off) => {
|
|
27
|
+
const flags = Token.UINT32_LE.get(buf, off + 24);
|
|
28
|
+
const res = {
|
|
29
|
+
// should equal 'wvpk'
|
|
30
|
+
BlockID: FourCC_1.FourCcToken.get(buf, off),
|
|
31
|
+
// 0x402 to 0x410 are valid for decode
|
|
32
|
+
blockSize: Token.UINT32_LE.get(buf, off + 4),
|
|
33
|
+
// 0x402 (1026) to 0x410 are valid for decode
|
|
34
|
+
version: Token.UINT16_LE.get(buf, off + 8),
|
|
35
|
+
// 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)
|
|
36
|
+
totalSamples: /* replace with bigint? (Token.UINT8.get(buf, off + 11) << 32) + */ Token.UINT32_LE.get(buf, off + 12),
|
|
37
|
+
// 40-bit block_index
|
|
38
|
+
blockIndex: /* replace with bigint? (Token.UINT8.get(buf, off + 10) << 32) + */ Token.UINT32_LE.get(buf, off + 16),
|
|
39
|
+
// 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)
|
|
40
|
+
blockSamples: Token.UINT32_LE.get(buf, off + 20),
|
|
41
|
+
// various flags for id and decoding
|
|
42
|
+
flags: {
|
|
43
|
+
bitsPerSample: (1 + WavPack.getBitAllignedNumber(flags, 0, 2)) * 8,
|
|
44
|
+
isMono: WavPack.isBitSet(flags, 2),
|
|
45
|
+
isHybrid: WavPack.isBitSet(flags, 3),
|
|
46
|
+
isJointStereo: WavPack.isBitSet(flags, 4),
|
|
47
|
+
crossChannel: WavPack.isBitSet(flags, 5),
|
|
48
|
+
hybridNoiseShaping: WavPack.isBitSet(flags, 6),
|
|
49
|
+
floatingPoint: WavPack.isBitSet(flags, 7),
|
|
50
|
+
samplingRate: SampleRates[WavPack.getBitAllignedNumber(flags, 23, 4)],
|
|
51
|
+
isDSD: WavPack.isBitSet(flags, 31)
|
|
52
|
+
},
|
|
53
|
+
// crc for actual decoded data
|
|
54
|
+
crc: new Token.Uint8ArrayType(4).get(buf, off + 28)
|
|
55
|
+
};
|
|
56
|
+
if (res.flags.isDSD) {
|
|
57
|
+
res.totalSamples *= 8;
|
|
58
|
+
}
|
|
59
|
+
return res;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* 3.0 Metadata Sub-Blocks
|
|
64
|
+
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 "Metadata Sub-Block")
|
|
65
|
+
*/
|
|
66
|
+
WavPack.MetadataIdToken = {
|
|
67
|
+
len: 1,
|
|
68
|
+
get: (buf, off) => {
|
|
69
|
+
return {
|
|
70
|
+
functionId: WavPack.getBitAllignedNumber(buf[off], 0, 6),
|
|
71
|
+
isOptional: WavPack.isBitSet(buf[off], 5),
|
|
72
|
+
isOddSize: WavPack.isBitSet(buf[off], 6),
|
|
73
|
+
largeBlock: WavPack.isBitSet(buf[off], 7)
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
};
|
package/package.json
CHANGED
|
@@ -1,150 +1,150 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "music-metadata",
|
|
3
|
-
"description": "Music metadata parser for Node.js, supporting virtual any audio and tag format.",
|
|
4
|
-
"version": "7.12.
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Borewit",
|
|
7
|
-
"url": "https://github.com/Borewit"
|
|
8
|
-
},
|
|
9
|
-
"funding": {
|
|
10
|
-
"type": "github",
|
|
11
|
-
"url": "https://github.com/sponsors/Borewit"
|
|
12
|
-
},
|
|
13
|
-
"keywords": [
|
|
14
|
-
"music",
|
|
15
|
-
"metadata",
|
|
16
|
-
"meta",
|
|
17
|
-
"audio",
|
|
18
|
-
"tag",
|
|
19
|
-
"tags",
|
|
20
|
-
"duration",
|
|
21
|
-
"MusicBrainz",
|
|
22
|
-
"Discogs",
|
|
23
|
-
"Picard",
|
|
24
|
-
"ID3",
|
|
25
|
-
"ID3v1",
|
|
26
|
-
"ID3v2",
|
|
27
|
-
"m4a",
|
|
28
|
-
"m4b",
|
|
29
|
-
"mp3",
|
|
30
|
-
"mp4",
|
|
31
|
-
"Vorbis",
|
|
32
|
-
"ogg",
|
|
33
|
-
"flac",
|
|
34
|
-
"Matroska",
|
|
35
|
-
"WebM",
|
|
36
|
-
"EBML",
|
|
37
|
-
"asf",
|
|
38
|
-
"wma",
|
|
39
|
-
"wmv",
|
|
40
|
-
"ape",
|
|
41
|
-
"MonkeyAudio",
|
|
42
|
-
"aiff",
|
|
43
|
-
"wav",
|
|
44
|
-
"WavPack",
|
|
45
|
-
"Opus",
|
|
46
|
-
"speex",
|
|
47
|
-
"musepack",
|
|
48
|
-
"mpc",
|
|
49
|
-
"dsd",
|
|
50
|
-
"dsf",
|
|
51
|
-
"mpc",
|
|
52
|
-
"dff",
|
|
53
|
-
"dsdiff",
|
|
54
|
-
"aac",
|
|
55
|
-
"adts",
|
|
56
|
-
"length",
|
|
57
|
-
"chapter",
|
|
58
|
-
"info",
|
|
59
|
-
"parse",
|
|
60
|
-
"parser",
|
|
61
|
-
"bwf"
|
|
62
|
-
],
|
|
63
|
-
"main": "lib/index.js",
|
|
64
|
-
"types": "lib/index.d.ts",
|
|
65
|
-
"files": [
|
|
66
|
-
"lib/**/*.js",
|
|
67
|
-
"lib/**/*.d.ts"
|
|
68
|
-
],
|
|
69
|
-
"scripts": {
|
|
70
|
-
"clean": "del-cli lib/**/*.js lib/**/*.js.map lib/**/*.d.ts src/**/*.d.ts test/**/*.js test/**/*.js.map test/**/*.js test/**/*.js.map doc-gen/**/*.js doc-gen/**/*.js.map",
|
|
71
|
-
"compile-src": "tsc -p lib",
|
|
72
|
-
"compile-test": "tsc -p test",
|
|
73
|
-
"compile-doc": "tsc -p doc-gen",
|
|
74
|
-
"compile": "npm run compile-src && npm run compile-test && npm run compile-doc",
|
|
75
|
-
"eslint": "eslint lib/**/*.ts --ignore-pattern lib/**/*.d.ts example/typescript/**/*.ts test/**/*.ts doc-gen/**/*.ts",
|
|
76
|
-
"lint-md": "remark -u preset-lint-recommended .",
|
|
77
|
-
"lint": "npm run lint-md && npm run eslint",
|
|
78
|
-
"test": "mocha --require ts-node/register --require source-map-support/register --full-trace test/test-*.ts",
|
|
79
|
-
"build": "npm run clean && npm run compile && npm run doc-gen",
|
|
80
|
-
"start": "npm-run-all compile lint cover-test",
|
|
81
|
-
"test-coverage": "nyc npm run test",
|
|
82
|
-
"send-coveralls": "nyc report --reporter=text-lcov | coveralls",
|
|
83
|
-
"send-codacy": "nyc report --reporter=text-lcov | codacy-coverage",
|
|
84
|
-
"doc-gen": "node doc-gen/gen.js"
|
|
85
|
-
},
|
|
86
|
-
"dependencies": {
|
|
87
|
-
"@tokenizer/token": "^0.3.0",
|
|
88
|
-
"content-type": "^1.0.4",
|
|
89
|
-
"debug": "^4.3.
|
|
90
|
-
"file-type": "16.5.3",
|
|
91
|
-
"media-typer": "^1.1.0",
|
|
92
|
-
"strtok3": "^6.
|
|
93
|
-
"token-types": "^4.2.0"
|
|
94
|
-
},
|
|
95
|
-
"devDependencies": {
|
|
96
|
-
"@types/chai": "^4.3.
|
|
97
|
-
"@types/debug": "^4.1.7",
|
|
98
|
-
"@types/file-type": "^10.9.1",
|
|
99
|
-
"@types/mocha": "^9.1.0",
|
|
100
|
-
"@types/node": "^
|
|
101
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
102
|
-
"@typescript-eslint/parser": "^5.
|
|
103
|
-
"chai": "^4.3.6",
|
|
104
|
-
"coveralls": "^3.1.1",
|
|
105
|
-
"del-cli": "4.0.1",
|
|
106
|
-
"eslint": "^8.
|
|
107
|
-
"eslint-config-prettier": "^8.
|
|
108
|
-
"eslint-import-resolver-typescript": "^2.
|
|
109
|
-
"eslint-plugin-import": "^2.
|
|
110
|
-
"eslint-plugin-jsdoc": "^
|
|
111
|
-
"eslint-plugin-node": "^11.1.0",
|
|
112
|
-
"eslint-plugin-unicorn": "^
|
|
113
|
-
"mime": "^3.0.0",
|
|
114
|
-
"mocha": "^9.2.
|
|
115
|
-
"npm-run-all": "^4.1.5",
|
|
116
|
-
"nyc": "^15.1.0",
|
|
117
|
-
"remark-cli": "^
|
|
118
|
-
"remark-preset-lint-recommended": "^6.1.2",
|
|
119
|
-
"source-map-support": "^0.5.21",
|
|
120
|
-
"ts-node": "^10.
|
|
121
|
-
"typescript": "^4.
|
|
122
|
-
},
|
|
123
|
-
"engines": {
|
|
124
|
-
"node": ">=10"
|
|
125
|
-
},
|
|
126
|
-
"repository": {
|
|
127
|
-
"type": "git",
|
|
128
|
-
"url": "git+https://github.com/borewit/music-metadata.git"
|
|
129
|
-
},
|
|
130
|
-
"license": "MIT",
|
|
131
|
-
"bugs": {
|
|
132
|
-
"url": "https://github.com/Borewit/music-metadata/issues"
|
|
133
|
-
},
|
|
134
|
-
"nyc": {
|
|
135
|
-
"exclude": [
|
|
136
|
-
"test/**/*.ts",
|
|
137
|
-
"src/**/*.js"
|
|
138
|
-
],
|
|
139
|
-
"extension": [
|
|
140
|
-
".ts"
|
|
141
|
-
],
|
|
142
|
-
"sourceMap": true,
|
|
143
|
-
"instrument": true,
|
|
144
|
-
"reporter": [
|
|
145
|
-
"lcov",
|
|
146
|
-
"text"
|
|
147
|
-
],
|
|
148
|
-
"report-dir": "coverage"
|
|
149
|
-
}
|
|
150
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "music-metadata",
|
|
3
|
+
"description": "Music metadata parser for Node.js, supporting virtual any audio and tag format.",
|
|
4
|
+
"version": "7.12.4",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Borewit",
|
|
7
|
+
"url": "https://github.com/Borewit"
|
|
8
|
+
},
|
|
9
|
+
"funding": {
|
|
10
|
+
"type": "github",
|
|
11
|
+
"url": "https://github.com/sponsors/Borewit"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"music",
|
|
15
|
+
"metadata",
|
|
16
|
+
"meta",
|
|
17
|
+
"audio",
|
|
18
|
+
"tag",
|
|
19
|
+
"tags",
|
|
20
|
+
"duration",
|
|
21
|
+
"MusicBrainz",
|
|
22
|
+
"Discogs",
|
|
23
|
+
"Picard",
|
|
24
|
+
"ID3",
|
|
25
|
+
"ID3v1",
|
|
26
|
+
"ID3v2",
|
|
27
|
+
"m4a",
|
|
28
|
+
"m4b",
|
|
29
|
+
"mp3",
|
|
30
|
+
"mp4",
|
|
31
|
+
"Vorbis",
|
|
32
|
+
"ogg",
|
|
33
|
+
"flac",
|
|
34
|
+
"Matroska",
|
|
35
|
+
"WebM",
|
|
36
|
+
"EBML",
|
|
37
|
+
"asf",
|
|
38
|
+
"wma",
|
|
39
|
+
"wmv",
|
|
40
|
+
"ape",
|
|
41
|
+
"MonkeyAudio",
|
|
42
|
+
"aiff",
|
|
43
|
+
"wav",
|
|
44
|
+
"WavPack",
|
|
45
|
+
"Opus",
|
|
46
|
+
"speex",
|
|
47
|
+
"musepack",
|
|
48
|
+
"mpc",
|
|
49
|
+
"dsd",
|
|
50
|
+
"dsf",
|
|
51
|
+
"mpc",
|
|
52
|
+
"dff",
|
|
53
|
+
"dsdiff",
|
|
54
|
+
"aac",
|
|
55
|
+
"adts",
|
|
56
|
+
"length",
|
|
57
|
+
"chapter",
|
|
58
|
+
"info",
|
|
59
|
+
"parse",
|
|
60
|
+
"parser",
|
|
61
|
+
"bwf"
|
|
62
|
+
],
|
|
63
|
+
"main": "lib/index.js",
|
|
64
|
+
"types": "lib/index.d.ts",
|
|
65
|
+
"files": [
|
|
66
|
+
"lib/**/*.js",
|
|
67
|
+
"lib/**/*.d.ts"
|
|
68
|
+
],
|
|
69
|
+
"scripts": {
|
|
70
|
+
"clean": "del-cli lib/**/*.js lib/**/*.js.map lib/**/*.d.ts src/**/*.d.ts test/**/*.js test/**/*.js.map test/**/*.js test/**/*.js.map doc-gen/**/*.js doc-gen/**/*.js.map",
|
|
71
|
+
"compile-src": "tsc -p lib",
|
|
72
|
+
"compile-test": "tsc -p test",
|
|
73
|
+
"compile-doc": "tsc -p doc-gen",
|
|
74
|
+
"compile": "npm run compile-src && npm run compile-test && npm run compile-doc",
|
|
75
|
+
"eslint": "eslint lib/**/*.ts --ignore-pattern lib/**/*.d.ts example/typescript/**/*.ts test/**/*.ts doc-gen/**/*.ts",
|
|
76
|
+
"lint-md": "remark -u preset-lint-recommended .",
|
|
77
|
+
"lint": "npm run lint-md && npm run eslint",
|
|
78
|
+
"test": "mocha --require ts-node/register --require source-map-support/register --full-trace test/test-*.ts",
|
|
79
|
+
"build": "npm run clean && npm run compile && npm run doc-gen",
|
|
80
|
+
"start": "npm-run-all compile lint cover-test",
|
|
81
|
+
"test-coverage": "nyc npm run test",
|
|
82
|
+
"send-coveralls": "nyc report --reporter=text-lcov | coveralls",
|
|
83
|
+
"send-codacy": "nyc report --reporter=text-lcov | codacy-coverage",
|
|
84
|
+
"doc-gen": "node doc-gen/gen.js"
|
|
85
|
+
},
|
|
86
|
+
"dependencies": {
|
|
87
|
+
"@tokenizer/token": "^0.3.0",
|
|
88
|
+
"content-type": "^1.0.4",
|
|
89
|
+
"debug": "^4.3.4",
|
|
90
|
+
"file-type": "16.5.3",
|
|
91
|
+
"media-typer": "^1.1.0",
|
|
92
|
+
"strtok3": "^6.3.0",
|
|
93
|
+
"token-types": "^4.2.0"
|
|
94
|
+
},
|
|
95
|
+
"devDependencies": {
|
|
96
|
+
"@types/chai": "^4.3.1",
|
|
97
|
+
"@types/debug": "^4.1.7",
|
|
98
|
+
"@types/file-type": "^10.9.1",
|
|
99
|
+
"@types/mocha": "^9.1.0",
|
|
100
|
+
"@types/node": "^18.0.0",
|
|
101
|
+
"@typescript-eslint/eslint-plugin": "^5.30.4",
|
|
102
|
+
"@typescript-eslint/parser": "^5.30.4",
|
|
103
|
+
"chai": "^4.3.6",
|
|
104
|
+
"coveralls": "^3.1.1",
|
|
105
|
+
"del-cli": "4.0.1",
|
|
106
|
+
"eslint": "^8.19.0",
|
|
107
|
+
"eslint-config-prettier": "^8.5.0",
|
|
108
|
+
"eslint-import-resolver-typescript": "^2.7.1",
|
|
109
|
+
"eslint-plugin-import": "^2.26.0",
|
|
110
|
+
"eslint-plugin-jsdoc": "^39.3.3",
|
|
111
|
+
"eslint-plugin-node": "^11.1.0",
|
|
112
|
+
"eslint-plugin-unicorn": "^42.0.0",
|
|
113
|
+
"mime": "^3.0.0",
|
|
114
|
+
"mocha": "^9.2.2",
|
|
115
|
+
"npm-run-all": "^4.1.5",
|
|
116
|
+
"nyc": "^15.1.0",
|
|
117
|
+
"remark-cli": "^11.0.0",
|
|
118
|
+
"remark-preset-lint-recommended": "^6.1.2",
|
|
119
|
+
"source-map-support": "^0.5.21",
|
|
120
|
+
"ts-node": "^10.8.1",
|
|
121
|
+
"typescript": "^4.7.4"
|
|
122
|
+
},
|
|
123
|
+
"engines": {
|
|
124
|
+
"node": ">=10"
|
|
125
|
+
},
|
|
126
|
+
"repository": {
|
|
127
|
+
"type": "git",
|
|
128
|
+
"url": "git+https://github.com/borewit/music-metadata.git"
|
|
129
|
+
},
|
|
130
|
+
"license": "MIT",
|
|
131
|
+
"bugs": {
|
|
132
|
+
"url": "https://github.com/Borewit/music-metadata/issues"
|
|
133
|
+
},
|
|
134
|
+
"nyc": {
|
|
135
|
+
"exclude": [
|
|
136
|
+
"test/**/*.ts",
|
|
137
|
+
"src/**/*.js"
|
|
138
|
+
],
|
|
139
|
+
"extension": [
|
|
140
|
+
".ts"
|
|
141
|
+
],
|
|
142
|
+
"sourceMap": true,
|
|
143
|
+
"instrument": true,
|
|
144
|
+
"reporter": [
|
|
145
|
+
"lcov",
|
|
146
|
+
"text"
|
|
147
|
+
],
|
|
148
|
+
"report-dir": "coverage"
|
|
149
|
+
}
|
|
150
|
+
}
|