alphatheta-connect 0.15.0 → 0.18.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.
Files changed (44) hide show
  1. package/README.md +29 -3
  2. package/lib/artwork/index.d.ts +2 -1
  3. package/lib/cli.js +1122 -1332
  4. package/lib/cli.js.map +1 -1
  5. package/lib/constants.d.ts +7 -1
  6. package/lib/db/getArtworkFromFile.d.ts +2 -0
  7. package/lib/db/getFile.d.ts +7 -2
  8. package/lib/db/getMetadata.d.ts +3 -2
  9. package/lib/db/getTrackAnalysis.d.ts +28 -0
  10. package/lib/db/index.d.ts +8 -8
  11. package/lib/entities.d.ts +13 -111
  12. package/lib/index.d.ts +10 -2
  13. package/lib/index.js +1356 -1352
  14. package/lib/index.js.map +1 -1
  15. package/lib/localdb/database-adapter.d.ts +2 -47
  16. package/lib/localdb/index.d.ts +1 -1
  17. package/lib/localdb/onelibrary/adapter.d.ts +110 -0
  18. package/lib/localdb/onelibrary/connection.d.ts +8 -0
  19. package/lib/localdb/onelibrary/encryption.d.ts +10 -0
  20. package/lib/localdb/onelibrary/index.d.ts +5 -0
  21. package/lib/localdb/onelibrary/types.d.ts +67 -0
  22. package/lib/localdb/onelibrary.d.ts +3 -181
  23. package/lib/localdb/rekordbox/anlz-parsers.d.ts +37 -0
  24. package/lib/localdb/rekordbox/entity-creators.d.ts +27 -0
  25. package/lib/localdb/rekordbox/hydrator.d.ts +20 -0
  26. package/lib/localdb/rekordbox/index.d.ts +13 -0
  27. package/lib/localdb/rekordbox/table-mappings.d.ts +10 -0
  28. package/lib/localdb/rekordbox/types.d.ts +118 -0
  29. package/lib/localdb/rekordbox.d.ts +6 -110
  30. package/lib/logger.d.ts +13 -0
  31. package/lib/metadata.d.ts +45 -0
  32. package/lib/network.d.ts +25 -0
  33. package/lib/nfs/index.d.ts +35 -10
  34. package/lib/nfs/index.test.d.ts +1 -0
  35. package/lib/nfs/programs.d.ts +10 -1
  36. package/lib/passive/index.d.ts +1 -1
  37. package/lib/passive/remotedb.d.ts +12 -1
  38. package/lib/remotedb/queries.d.ts +2 -2
  39. package/lib/types.d.ts +55 -78
  40. package/lib/types.js +21 -38
  41. package/lib/types.js.map +1 -1
  42. package/lib/utils/index.d.ts +9 -0
  43. package/lib/virtualcdj/index.d.ts +7 -1
  44. package/package.json +23 -2
package/README.md CHANGED
@@ -15,14 +15,18 @@
15
15
 
16
16
  ---
17
17
 
18
- This library implements the Pioneer PROLINK network protocol + additional
18
+ This library implements the AlphaTheta PROLINK network protocol + additional
19
19
  functionality to interact with the prolink network. This library is used as
20
- part of [Prolink Tools](https://prolink.tools/).
20
+ part of [Now Playing](https://nowplayingapp.com/).
21
21
 
22
22
  Alternative implementations of the Prolink protocol: [Java](https://github.com/Deep-Symmetry/beat-link), [golang](https://github.com/evanpurkhiser/prolink-go).
23
23
 
24
24
  ## Features
25
25
 
26
+ - **Streaming Service Detection** *(new)* - Detect when tracks are loaded from
27
+ streaming services (Beatport, Streaming Direct Play, TIDAL, Apple Music) via
28
+ `MediaSlot` enum. Supports CDJ-3000X CloudDirectPlay streaming features.
29
+
26
30
  - **Support for AlphaTheta Opus Quad, XDJ-RX3, XDJ-RX2, XDJ-RX, and XDJ-XZ** *(new)* -
27
31
  Passive mode monitoring via pcap-based packet capture for all-in-one controllers
28
32
  where traditional virtual CDJ connection isn't possible.
@@ -46,10 +50,23 @@ Alternative implementations of the Prolink protocol: [Java](https://github.com/D
46
50
  sequence for better compatibility with certain device configurations.
47
51
  See [FULL_STARTUP.md](docs/FULL_STARTUP.md) for details.
48
52
 
53
+ - **Metadata Extraction via NFS** *(new)* - Extract complete track metadata (title,
54
+ artist, album, BPM, key, artwork) directly from audio files on connected media
55
+ using partial file reads — only file headers are downloaded, not entire files.
56
+
57
+ - **3-Band Waveforms & Vocal Detection** *(new)* - Parse `.2EX` analysis files for
58
+ 3-band color waveform preview (PWV6), 3-band color detail waveform (PWV7), and
59
+ vocal detection config (PWVC).
60
+
61
+ - **Track Analysis API** *(new)* - Unified `getTrackAnalysis()` method that retrieves
62
+ all analysis data (extended cues, song structure, waveforms, 3-band waveforms,
63
+ vocal config) from both EXT and 2EX files in a single call.
64
+
49
65
  - **Extended ANLZ Support** - Full support for rekordbox analysis files including:
50
66
  - Extended cues with RGB colors and comments (PCO2)
51
67
  - Song structure / phrase analysis for CDJ-3000 (PSSI)
52
- - Multiple waveform formats (PWAV, PWV2, PWV3, PWV4, PWV5)
68
+ - Multiple waveform formats (PWAV, PWV2, PWV3, PWV4, PWV5, PWV6, PWV7)
69
+ - Vocal detection config (PWVC)
53
70
  - See [EXTENDED_ANLZ.md](docs/EXTENDED_ANLZ.md) for details
54
71
 
55
72
  - **CDJ-3000 Features** - Complete support for CDJ-3000 specific features:
@@ -164,3 +181,12 @@ async function main() {
164
181
  - [Deep Symmetry](https://github.com/Deep-Symmetry) - For [crate-digger](https://github.com/Deep-Symmetry/crate-digger) and maintaining comprehensive Pro DJ Link protocol documentation
165
182
  - [@henrybetts](https://github.com/henrybetts) and [@flesniak](https://github.com/flesniak) - For reverse-engineering the rekordbox database format
166
183
  - [@GreyCat](https://github.com/GreyCat) - For Kaitai Struct expertise and guidance
184
+
185
+ ## Related Projects
186
+
187
+ - [stagelinq](https://github.com/chrisle/stagelinq) — Denon StageLinq protocol integration
188
+ - [metadata-connect](https://github.com/chrisle/metadata-connect) — Audio metadata extraction with partial file reads
189
+ - [rekordbox-connect](https://github.com/chrisle/rekordbox-connect) — Rekordbox database integration
190
+ - [serato-connect](https://github.com/chrisle/serato-connect) — Serato DJ integration
191
+
192
+ These libraries power [Now Playing](https://nowplayingapp.com) — a real-time track display app for DJs and streamers.
@@ -1,3 +1,4 @@
1
+ import { type Logger } from "../logger";
1
2
  import { NfsMediaSlot } from "../nfs";
2
3
  import { Device } from "../types";
3
4
  import { ExtractedArtwork, FileReader } from './types';
@@ -6,4 +7,4 @@ export type { ExtractedArtwork, FileReader } from './types';
6
7
  export { PictureType } from './types';
7
8
  export declare function isArtworkExtractionSupported(extension: string): boolean;
8
9
  export declare function extractArtwork(reader: FileReader): Promise<ExtractedArtwork | null>;
9
- export declare function extractArtworkFromDevice(device: Device, slot: NfsMediaSlot, filePath: string): Promise<ExtractedArtwork | null>;
10
+ export declare function extractArtworkFromDevice(device: Device, slot: NfsMediaSlot, filePath: string, logger?: Logger): Promise<ExtractedArtwork | null>;