@open-audio-stack/core 0.0.1

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 (51) hide show
  1. package/LICENSE +121 -0
  2. package/README.md +43 -0
  3. package/build/Config.d.ts +39 -0
  4. package/build/Config.js +93 -0
  5. package/build/FileSystem.d.ts +33 -0
  6. package/build/FileSystem.js +201 -0
  7. package/build/Registry.d.ts +22 -0
  8. package/build/Registry.js +98 -0
  9. package/build/index-browser.d.ts +21 -0
  10. package/build/index-browser.js +27 -0
  11. package/build/index.d.ts +22 -0
  12. package/build/index.js +28 -0
  13. package/build/types/Architecture.d.ts +12 -0
  14. package/build/types/Architecture.js +29 -0
  15. package/build/types/Config.d.ts +2 -0
  16. package/build/types/Config.js +1 -0
  17. package/build/types/File.d.ts +13 -0
  18. package/build/types/File.js +1 -0
  19. package/build/types/FileFormat.d.ts +15 -0
  20. package/build/types/FileFormat.js +47 -0
  21. package/build/types/FileType.d.ts +10 -0
  22. package/build/types/FileType.js +17 -0
  23. package/build/types/License.d.ts +56 -0
  24. package/build/types/License.js +293 -0
  25. package/build/types/Package.d.ts +38 -0
  26. package/build/types/Package.js +6 -0
  27. package/build/types/Plugin.d.ts +11 -0
  28. package/build/types/Plugin.js +1 -0
  29. package/build/types/PluginFormat.d.ts +20 -0
  30. package/build/types/PluginFormat.js +77 -0
  31. package/build/types/PluginType.d.ts +13 -0
  32. package/build/types/PluginType.js +35 -0
  33. package/build/types/Preset.d.ts +15 -0
  34. package/build/types/Preset.js +1 -0
  35. package/build/types/PresetFormat.d.ts +13 -0
  36. package/build/types/PresetFormat.js +35 -0
  37. package/build/types/PresetType.d.ts +9 -0
  38. package/build/types/PresetType.js +12 -0
  39. package/build/types/Project.d.ts +15 -0
  40. package/build/types/Project.js +1 -0
  41. package/build/types/ProjectFormat.d.ts +17 -0
  42. package/build/types/ProjectFormat.js +59 -0
  43. package/build/types/ProjectType.d.ts +15 -0
  44. package/build/types/ProjectType.js +47 -0
  45. package/build/types/Registry.d.ts +10 -0
  46. package/build/types/Registry.js +1 -0
  47. package/build/types/System.d.ts +6 -0
  48. package/build/types/System.js +1 -0
  49. package/build/types/SystemType.d.ts +11 -0
  50. package/build/types/SystemType.js +23 -0
  51. package/package.json +64 -0
@@ -0,0 +1,20 @@
1
+ export declare enum PluginFormat {
2
+ AudioUnits = "component",
3
+ AvidAudioExtension = "aax",
4
+ CleverAudioPlugin = "clap",
5
+ RealTimeAudioSuite = "rta",
6
+ LADSPAVersion2 = "lv2",
7
+ SoundFont2 = "sf2",
8
+ SFZ = "sfz",
9
+ TimeDivisionMultiplexing = "tdm",
10
+ VSTLinux = "so",
11
+ VSTMac = "vst",
12
+ VSTWin = "dll",
13
+ VST3 = "vst3"
14
+ }
15
+ export interface PluginFormatOption {
16
+ description: string;
17
+ value: PluginFormat;
18
+ name: string;
19
+ }
20
+ export declare const pluginFormats: PluginFormatOption[];
@@ -0,0 +1,77 @@
1
+ export var PluginFormat;
2
+ (function (PluginFormat) {
3
+ PluginFormat["AudioUnits"] = "component";
4
+ PluginFormat["AvidAudioExtension"] = "aax";
5
+ PluginFormat["CleverAudioPlugin"] = "clap";
6
+ PluginFormat["RealTimeAudioSuite"] = "rta";
7
+ PluginFormat["LADSPAVersion2"] = "lv2";
8
+ PluginFormat["SoundFont2"] = "sf2";
9
+ PluginFormat["SFZ"] = "sfz";
10
+ PluginFormat["TimeDivisionMultiplexing"] = "tdm";
11
+ PluginFormat["VSTLinux"] = "so";
12
+ PluginFormat["VSTMac"] = "vst";
13
+ PluginFormat["VSTWin"] = "dll";
14
+ PluginFormat["VST3"] = "vst3";
15
+ })(PluginFormat || (PluginFormat = {}));
16
+ export const pluginFormats = [
17
+ {
18
+ description: "Apple's proprietary plugin format for macOS and iOS.",
19
+ value: PluginFormat.AudioUnits,
20
+ name: 'Audio Units',
21
+ },
22
+ {
23
+ description: "Avid's plugin format for Pro Tools, offering deep integration.",
24
+ value: PluginFormat.AvidAudioExtension,
25
+ name: 'Avid Audio Extension',
26
+ },
27
+ {
28
+ description: 'Modern open-source plugin format designed for performance and flexibility.',
29
+ value: PluginFormat.CleverAudioPlugin,
30
+ name: 'Clever Audio Plugin',
31
+ },
32
+ {
33
+ description: "Real-time plugin format used in Avid's Pro Tools.",
34
+ value: PluginFormat.RealTimeAudioSuite,
35
+ name: 'Real-Time AudioSuite',
36
+ },
37
+ {
38
+ description: 'Linux-friendly plugin format primarily used in open-source environments.',
39
+ value: PluginFormat.LADSPAVersion2,
40
+ name: 'LADSPA Version 2',
41
+ },
42
+ {
43
+ description: 'Widely used format for sound samples in musical instruments.',
44
+ value: PluginFormat.SoundFont2,
45
+ name: 'SoundFont 2',
46
+ },
47
+ {
48
+ description: 'An open standard for defining instrument patches and sound samples.',
49
+ value: PluginFormat.SFZ,
50
+ name: 'SFZ',
51
+ },
52
+ {
53
+ description: 'Legacy plugin format used in early Pro Tools systems.',
54
+ value: PluginFormat.TimeDivisionMultiplexing,
55
+ name: 'Time-Division-Multiplexing',
56
+ },
57
+ {
58
+ description: 'Linux version of the VST plugin format for audio effects and instruments.',
59
+ value: PluginFormat.VSTLinux,
60
+ name: 'Virtual Studio Technology (Linux)',
61
+ },
62
+ {
63
+ description: 'Mac version of the VST plugin format used in DAWs like Logic and Ableton.',
64
+ value: PluginFormat.VSTMac,
65
+ name: 'Virtual Studio Technology (Mac)',
66
+ },
67
+ {
68
+ description: 'Windows version of the VST plugin format for digital audio workstations.',
69
+ value: PluginFormat.VSTWin,
70
+ name: 'Virtual Studio Technology (Win)',
71
+ },
72
+ {
73
+ description: 'Third-generation VST format, offering better performance and features.',
74
+ value: PluginFormat.VST3,
75
+ name: 'Virtual Studio Technology 3',
76
+ },
77
+ ];
@@ -0,0 +1,13 @@
1
+ export declare enum PluginType {
2
+ Effect = "effect",
3
+ Generator = "generator",
4
+ Instrument = "instrument",
5
+ Preset = "preset",
6
+ Tool = "tool"
7
+ }
8
+ export interface PluginTypeOption {
9
+ description: string;
10
+ value: PluginType;
11
+ name: string;
12
+ }
13
+ export declare const pluginTypes: PluginTypeOption[];
@@ -0,0 +1,35 @@
1
+ export var PluginType;
2
+ (function (PluginType) {
3
+ PluginType["Effect"] = "effect";
4
+ PluginType["Generator"] = "generator";
5
+ PluginType["Instrument"] = "instrument";
6
+ PluginType["Preset"] = "preset";
7
+ PluginType["Tool"] = "tool";
8
+ })(PluginType || (PluginType = {}));
9
+ export const pluginTypes = [
10
+ {
11
+ description: 'Digital signal processing based on an existing audio signal.',
12
+ value: PluginType.Effect,
13
+ name: 'Effect',
14
+ },
15
+ {
16
+ description: 'Generates midi patterns or samples which can be fed into other instruments/effects.',
17
+ value: PluginType.Generator,
18
+ name: 'Generator',
19
+ },
20
+ {
21
+ description: 'Sound synthesis or sample playback based on audio or midi input.',
22
+ value: PluginType.Instrument,
23
+ name: 'Instrument',
24
+ },
25
+ {
26
+ description: 'Preset containing predefined settings for an instrument or effect.',
27
+ value: PluginType.Preset,
28
+ name: 'Preset',
29
+ },
30
+ {
31
+ description: 'Helper tool which provides automations and other useful functions for music.',
32
+ value: PluginType.Tool,
33
+ name: 'Tool',
34
+ },
35
+ ];
@@ -0,0 +1,15 @@
1
+ import { FileInterface } from './File.js';
2
+ import { PackageVersion } from './Package.js';
3
+ import { PresetFormat } from './PresetFormat.js';
4
+ import { PresetType } from './PresetType.js';
5
+ export interface PresetInterface extends PackageVersion {
6
+ files: PresetFile[];
7
+ plugins: PresetPlugins;
8
+ type: PresetType;
9
+ }
10
+ export interface PresetFile extends FileInterface {
11
+ formats: PresetFormat[];
12
+ }
13
+ export interface PresetPlugins {
14
+ [slug: string]: string;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ export declare enum PresetFormat {
2
+ AU = "aupreset",
3
+ NativeInstruments = "nksf",
4
+ VST = "fxp",
5
+ VSTLegacy = "fxb",
6
+ VST3 = "vstpreset"
7
+ }
8
+ export interface PresetFormatOption {
9
+ description: string;
10
+ value: PresetFormat;
11
+ name: string;
12
+ }
13
+ export declare const presetFormats: PresetFormatOption[];
@@ -0,0 +1,35 @@
1
+ export var PresetFormat;
2
+ (function (PresetFormat) {
3
+ PresetFormat["AU"] = "aupreset";
4
+ PresetFormat["NativeInstruments"] = "nksf";
5
+ PresetFormat["VST"] = "fxp";
6
+ PresetFormat["VSTLegacy"] = "fxb";
7
+ PresetFormat["VST3"] = "vstpreset";
8
+ })(PresetFormat || (PresetFormat = {}));
9
+ export const presetFormats = [
10
+ {
11
+ description: "Apple's proprietary plugin format for macOS and iOS.",
12
+ value: PresetFormat.AU,
13
+ name: 'Audio Unit preset',
14
+ },
15
+ {
16
+ description: 'Used by Native Instruments for their software instruments and effects.',
17
+ value: PresetFormat.NativeInstruments,
18
+ name: 'Native Instruments preset',
19
+ },
20
+ {
21
+ description: 'Standard preset format for VST plugins, allowing users to save and load settings.',
22
+ value: PresetFormat.VST,
23
+ name: 'VST preset',
24
+ },
25
+ {
26
+ description: 'Legacy preset format for older versions of VSTs.',
27
+ value: PresetFormat.VSTLegacy,
28
+ name: 'VST Legacy preset',
29
+ },
30
+ {
31
+ description: 'Preset format for VST3 plugins including new features.',
32
+ value: PresetFormat.VST3,
33
+ name: 'VST3 preset',
34
+ },
35
+ ];
@@ -0,0 +1,9 @@
1
+ export declare enum PresetType {
2
+ Sound = "sound"
3
+ }
4
+ export interface PresetTypeOption {
5
+ description: string;
6
+ value: PresetType;
7
+ name: string;
8
+ }
9
+ export declare const presetTypes: PresetTypeOption[];
@@ -0,0 +1,12 @@
1
+ export var PresetType;
2
+ (function (PresetType) {
3
+ PresetType["Sound"] = "sound";
4
+ })(PresetType || (PresetType = {}));
5
+ // TODO define preset types.
6
+ export const presetTypes = [
7
+ {
8
+ description: 'Preset for sounds',
9
+ value: PresetType.Sound,
10
+ name: 'Sound',
11
+ },
12
+ ];
@@ -0,0 +1,15 @@
1
+ import { FileInterface } from './File.js';
2
+ import { PackageVersion } from './Package.js';
3
+ import { ProjectFormat } from './ProjectFormat.js';
4
+ import { ProjectType } from './ProjectType.js';
5
+ export interface ProjectInterface extends PackageVersion {
6
+ files: ProjectFile[];
7
+ plugins: ProjectPlugins;
8
+ type: ProjectType;
9
+ }
10
+ export interface ProjectFile extends FileInterface {
11
+ formats: ProjectFormat[];
12
+ }
13
+ export interface ProjectPlugins {
14
+ [slug: string]: string;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ export declare enum ProjectFormat {
2
+ AbletonLive = "als",
3
+ Bitwig = "bwproject",
4
+ Cubase = "cpr",
5
+ DAWproject = "dawproject",
6
+ FLStudio = "flp",
7
+ Logic = "logic",
8
+ ProTools = "ptx",
9
+ Reaper = "rpp",
10
+ Sonar = "cwp"
11
+ }
12
+ export interface ProjectFormatOption {
13
+ description: string;
14
+ value: ProjectFormat;
15
+ name: string;
16
+ }
17
+ export declare const projectFormats: ProjectFormatOption[];
@@ -0,0 +1,59 @@
1
+ export var ProjectFormat;
2
+ (function (ProjectFormat) {
3
+ ProjectFormat["AbletonLive"] = "als";
4
+ ProjectFormat["Bitwig"] = "bwproject";
5
+ ProjectFormat["Cubase"] = "cpr";
6
+ ProjectFormat["DAWproject"] = "dawproject";
7
+ ProjectFormat["FLStudio"] = "flp";
8
+ ProjectFormat["Logic"] = "logic";
9
+ ProjectFormat["ProTools"] = "ptx";
10
+ ProjectFormat["Reaper"] = "rpp";
11
+ ProjectFormat["Sonar"] = "cwp";
12
+ })(ProjectFormat || (ProjectFormat = {}));
13
+ export const projectFormats = [
14
+ {
15
+ description: 'Used to store all information about a Live set.',
16
+ value: ProjectFormat.AbletonLive,
17
+ name: 'Ableton Live Set',
18
+ },
19
+ {
20
+ description: 'Containing all Bitwig project-related information.',
21
+ value: ProjectFormat.Bitwig,
22
+ name: 'Bitwig Project',
23
+ },
24
+ {
25
+ description: 'Used to save Steinberg Cubase arrangements and settings.',
26
+ value: ProjectFormat.Cubase,
27
+ name: 'Cubase Project',
28
+ },
29
+ {
30
+ description: 'Open standard for storing various audio project settings.',
31
+ value: ProjectFormat.DAWproject,
32
+ name: 'Generic DAW Project',
33
+ },
34
+ {
35
+ description: 'Used for saving FL Studio compositions and arrangements.',
36
+ value: ProjectFormat.FLStudio,
37
+ name: 'FL Studio Project',
38
+ },
39
+ {
40
+ description: "Containing all Apple's Logic Pro audio, MIDI, and arrangement data.",
41
+ value: ProjectFormat.Logic,
42
+ name: 'Logic Pro Project',
43
+ },
44
+ {
45
+ description: 'Used for Avid Pro Tools audio recording and production.',
46
+ value: ProjectFormat.ProTools,
47
+ name: 'Pro Tools Project',
48
+ },
49
+ {
50
+ description: 'Containing Reaper tracks, arrangements, and settings.',
51
+ value: ProjectFormat.Reaper,
52
+ name: 'Reaper Project',
53
+ },
54
+ {
55
+ description: 'Used for Cakewalk Sonar music production and audio editing.',
56
+ value: ProjectFormat.Sonar,
57
+ name: 'Sonar Project',
58
+ },
59
+ ];
@@ -0,0 +1,15 @@
1
+ export declare enum ProjectType {
2
+ Audiobook = "audiobook",
3
+ DJSet = "dj",
4
+ Performance = "performance",
5
+ Podcast = "podcast",
6
+ Remix = "remix",
7
+ Song = "song",
8
+ Score = "score"
9
+ }
10
+ export interface ProjectTypeOption {
11
+ description: string;
12
+ value: ProjectType;
13
+ name: string;
14
+ }
15
+ export declare const projectTypes: ProjectTypeOption[];
@@ -0,0 +1,47 @@
1
+ export var ProjectType;
2
+ (function (ProjectType) {
3
+ ProjectType["Audiobook"] = "audiobook";
4
+ ProjectType["DJSet"] = "dj";
5
+ ProjectType["Performance"] = "performance";
6
+ ProjectType["Podcast"] = "podcast";
7
+ ProjectType["Remix"] = "remix";
8
+ ProjectType["Song"] = "song";
9
+ ProjectType["Score"] = "score";
10
+ })(ProjectType || (ProjectType = {}));
11
+ export const projectTypes = [
12
+ {
13
+ description: 'Spoken audio for books or literature.',
14
+ value: ProjectType.Audiobook,
15
+ name: 'Audiobook',
16
+ },
17
+ {
18
+ description: 'Live DJ performances, often including mixes of various tracks.',
19
+ value: ProjectType.DJSet,
20
+ name: 'DJ Set',
21
+ },
22
+ {
23
+ description: 'Solo or ensemble musical performance, showcasing artistic expression.',
24
+ value: ProjectType.Performance,
25
+ name: 'Performance',
26
+ },
27
+ {
28
+ description: 'Discussions, interviews, or other content for audio broadcast.',
29
+ value: ProjectType.Podcast,
30
+ name: 'Podcast',
31
+ },
32
+ {
33
+ description: 'Reworking or improving an existing song or track to create a new version.',
34
+ value: ProjectType.Remix,
35
+ name: 'Remix',
36
+ },
37
+ {
38
+ description: 'Composing, recording, and producing original songs with multiple instruments and vocals.',
39
+ value: ProjectType.Song,
40
+ name: 'Song',
41
+ },
42
+ {
43
+ description: 'Composing and producing music for film, TV, video games, or other visual media.',
44
+ value: ProjectType.Score,
45
+ name: 'Score',
46
+ },
47
+ ];
@@ -0,0 +1,10 @@
1
+ import { PackageInterface } from './Package.js';
2
+ export interface RegistryInterface {
3
+ name: string;
4
+ packages: RegistryPackages;
5
+ url: string;
6
+ version: string;
7
+ }
8
+ export interface RegistryPackages {
9
+ [slug: string]: PackageInterface;
10
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { SystemType } from './SystemType.js';
2
+ export interface System {
3
+ max?: number;
4
+ min?: number;
5
+ type: SystemType;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ export declare enum SystemType {
2
+ Macintosh = "mac",
3
+ Linux = "linux",
4
+ Windows = "win"
5
+ }
6
+ export interface SystemTypeOption {
7
+ description: string;
8
+ value: SystemType;
9
+ name: string;
10
+ }
11
+ export declare const systemTypes: SystemTypeOption[];
@@ -0,0 +1,23 @@
1
+ export var SystemType;
2
+ (function (SystemType) {
3
+ SystemType["Macintosh"] = "mac";
4
+ SystemType["Linux"] = "linux";
5
+ SystemType["Windows"] = "win";
6
+ })(SystemType || (SystemType = {}));
7
+ export const systemTypes = [
8
+ {
9
+ description: 'Open-source operating system. One of the most widely used for IT computers and servers.',
10
+ value: SystemType.Linux,
11
+ name: 'Linux',
12
+ },
13
+ {
14
+ description: 'Operating system designed and sold by Apple, and is known for its ease of use.',
15
+ value: SystemType.Macintosh,
16
+ name: 'Macintosh',
17
+ },
18
+ {
19
+ description: 'Most popular home operating system, preloaded on most new personal computers.',
20
+ value: SystemType.Windows,
21
+ name: 'Windows',
22
+ },
23
+ ];
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@open-audio-stack/core",
3
+ "version": "0.0.1",
4
+ "description": "Open-source audio plugin management software",
5
+ "type": "module",
6
+ "main": "./build/index.js",
7
+ "exports": {
8
+ "node": "./build/index.js",
9
+ "default": "./build/index-browser.js"
10
+ },
11
+ "types": "./build/index.d.ts",
12
+ "files": [
13
+ "build"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc -p tsconfig.json",
17
+ "dev": "tsx ./src/index.ts",
18
+ "format": "prettier . --write",
19
+ "lint": "eslint .",
20
+ "start": "node build/index.js",
21
+ "test": "vitest run --config vitest.config.ts",
22
+ "test:watch": "vitest ./tests"
23
+ },
24
+ "author": "kmturley",
25
+ "license": "cc0-1.0",
26
+ "keywords": [
27
+ "open",
28
+ "audio",
29
+ "stack",
30
+ "plugin",
31
+ "package",
32
+ "manager"
33
+ ],
34
+ "engines": {
35
+ "node": ">=18"
36
+ },
37
+ "devDependencies": {
38
+ "@eslint/js": "^9.12.0",
39
+ "@types/adm-zip": "^0.5.5",
40
+ "@types/fs-extra": "^11.0.4",
41
+ "@types/js-yaml": "^4.0.9",
42
+ "@types/node": "^22.7.8",
43
+ "@types/semver": "^7.5.8",
44
+ "@vitest/coverage-v8": "^2.1.3",
45
+ "eslint": "^9.12.0",
46
+ "globals": "^15.2.0",
47
+ "prettier": "^3.2.5",
48
+ "tsx": "^4.10.1",
49
+ "typescript": "^5.6.3",
50
+ "typescript-eslint": "^8.9.0",
51
+ "vitest": "^2.1.3"
52
+ },
53
+ "dependencies": {
54
+ "adm-zip": "^0.5.16",
55
+ "fs-extra": "^11.2.0",
56
+ "glob": "^11.0.0",
57
+ "js-yaml": "^4.1.0",
58
+ "semver": "^7.6.3"
59
+ },
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "git+https://github.com/open-audio-stack/open-audio-stack-core.git"
63
+ }
64
+ }