@map-audio/pam-mcp-server 1.18.1 → 1.21.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.
- package/README.md +5 -3
- package/dist/drumSynth.d.ts +96 -0
- package/dist/drumSynth.js +193 -0
- package/dist/drumSynth.js.map +1 -0
- package/dist/drumSynthEngines.json +1360 -0
- package/dist/generated/variationSnapshot.d.ts +31 -0
- package/dist/generated/variationSnapshot.js +62 -0
- package/dist/generated/variationSnapshot.js.map +1 -0
- package/dist/manifest-cell1.json +297 -2
- package/dist/manifest-mfx.json +687 -8
- package/dist/manifest.d.ts +12 -0
- package/dist/manifest.js +54 -5
- package/dist/manifest.js.map +1 -1
- package/dist/manifest.json +1509 -35
- package/dist/mixAssist.js +5 -0
- package/dist/mixAssist.js.map +1 -1
- package/dist/server.js +480 -113
- package/dist/server.js.map +1 -1
- package/dist/variationSessionKeys.json +110 -0
- package/package.json +4 -2
package/dist/manifest.d.ts
CHANGED
|
@@ -23,11 +23,23 @@ export interface Manifest {
|
|
|
23
23
|
bundleId: string;
|
|
24
24
|
pluginCode: string;
|
|
25
25
|
parameters: ManifestParameter[];
|
|
26
|
+
/** Non-automatable state (effect enables, sequence lanes, router vars). */
|
|
27
|
+
stateVariables?: ManifestParameter[];
|
|
26
28
|
window: {
|
|
27
29
|
width: number;
|
|
28
30
|
height: number;
|
|
29
31
|
};
|
|
30
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Cell effect names for THIS product, derived from the manifest's
|
|
35
|
+
* `cell1_<name>Enabled` keys.
|
|
36
|
+
*
|
|
37
|
+
* Hardcoding the list is what let three catalogs drift apart: the overview
|
|
38
|
+
* listed 8 effects, the mutation schema 12, and neither knew about `limiter`,
|
|
39
|
+
* `qverb`, or MFX's `wavefold`/`resonator`. The manifest is the artifact both
|
|
40
|
+
* the UI and C++ already agree on, so it is the projection source.
|
|
41
|
+
*/
|
|
42
|
+
export declare function cellEffectNames(manifest: Manifest): string[];
|
|
31
43
|
export declare function setActiveProductHint(product: string | undefined): void;
|
|
32
44
|
export declare function loadManifest(productOverride?: string): Promise<Manifest>;
|
|
33
45
|
export declare function getParameterIndex(): Promise<Map<string, ManifestParameter>>;
|
package/dist/manifest.js
CHANGED
|
@@ -2,6 +2,30 @@ import { readFile, readdir, stat } from "node:fs/promises";
|
|
|
2
2
|
import { resolve, dirname, join, basename, extname, sep } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
|
+
/** Sync toggles share the `…Enabled` suffix but are not effects. */
|
|
6
|
+
const NON_EFFECT_ENABLED = /^(delay|flanger|gate|retrigger|stretch)Sync$/;
|
|
7
|
+
/**
|
|
8
|
+
* Cell effect names for THIS product, derived from the manifest's
|
|
9
|
+
* `cell1_<name>Enabled` keys.
|
|
10
|
+
*
|
|
11
|
+
* Hardcoding the list is what let three catalogs drift apart: the overview
|
|
12
|
+
* listed 8 effects, the mutation schema 12, and neither knew about `limiter`,
|
|
13
|
+
* `qverb`, or MFX's `wavefold`/`resonator`. The manifest is the artifact both
|
|
14
|
+
* the UI and C++ already agree on, so it is the projection source.
|
|
15
|
+
*/
|
|
16
|
+
export function cellEffectNames(manifest) {
|
|
17
|
+
const all = [...(manifest.parameters ?? []), ...(manifest.stateVariables ?? [])];
|
|
18
|
+
const names = new Set();
|
|
19
|
+
for (const p of all) {
|
|
20
|
+
const m = /^cell1_([A-Za-z0-9]+)Enabled$/.exec(p.paramId ?? "");
|
|
21
|
+
if (!m)
|
|
22
|
+
continue;
|
|
23
|
+
if (NON_EFFECT_ENABLED.test(m[1]))
|
|
24
|
+
continue;
|
|
25
|
+
names.add(m[1]);
|
|
26
|
+
}
|
|
27
|
+
return [...names].sort();
|
|
28
|
+
}
|
|
5
29
|
let cachedManifest = new Map();
|
|
6
30
|
let paramIndex = new Map();
|
|
7
31
|
const DISCOVERY_FILE = resolve(homedir(), ".pam-mcp-bridge.json");
|
|
@@ -115,15 +139,40 @@ export async function getGlobalParameters() {
|
|
|
115
139
|
const manifest = await loadManifest();
|
|
116
140
|
return manifest.parameters.filter((p) => !p.cell);
|
|
117
141
|
}
|
|
118
|
-
|
|
142
|
+
// C++ namespaces the preset directory by PLUGIN_NAME (PluginUtils::getBasePath),
|
|
143
|
+
// so each product owns a sibling tree under "MAP Audio". Hardcoding "PAM" here
|
|
144
|
+
// pointed MFX's list_presets / read_preset at PAM's presets.
|
|
145
|
+
const PRESET_FOLDER_BY_PRODUCT = {
|
|
146
|
+
pam: "PAM",
|
|
147
|
+
cell1: "CELL1",
|
|
148
|
+
mfx: "MFX",
|
|
149
|
+
};
|
|
150
|
+
// Factory trees shipped in the repo. Router products keep their own — an MFX
|
|
151
|
+
// patch is meaningless to the sampler and vice versa.
|
|
152
|
+
const REPO_PRESET_DIR_BY_PRODUCT = {
|
|
153
|
+
pam: ["installer", "prepared-presets", "Presets"],
|
|
154
|
+
cell1: ["installer", "prepared-presets", "Presets"],
|
|
155
|
+
mfx: ["installer", "mfx-factory-presets", "Presets"],
|
|
156
|
+
};
|
|
157
|
+
function getUserPresetsDir(product) {
|
|
158
|
+
const folder = PRESET_FOLDER_BY_PRODUCT[product] ?? PRESET_FOLDER_BY_PRODUCT.pam;
|
|
119
159
|
if (process.platform === "win32") {
|
|
120
|
-
return resolve(process.env.APPDATA ?? homedir(), "MAP Audio",
|
|
160
|
+
return resolve(process.env.APPDATA ?? homedir(), "MAP Audio", folder, "Presets");
|
|
121
161
|
}
|
|
122
|
-
return resolve(homedir(), "Library", "Application Support", "MAP Audio",
|
|
162
|
+
return resolve(homedir(), "Library", "Application Support", "MAP Audio", folder, "Presets");
|
|
163
|
+
}
|
|
164
|
+
/** The product the offline tools should read, resolved exactly like the manifest. */
|
|
165
|
+
async function resolveActiveProduct() {
|
|
166
|
+
const envProduct = process.env.PAM_MANIFEST_PRODUCT ??
|
|
167
|
+
process.env.PAM_PRODUCT ??
|
|
168
|
+
process.env.PAM_MCP_PRODUCT;
|
|
169
|
+
return normalizeProduct(envProduct ?? activeProductHint ?? (await discoverProductFromBridge()));
|
|
123
170
|
}
|
|
124
171
|
export async function findPresetDirs() {
|
|
172
|
+
const product = await resolveActiveProduct();
|
|
125
173
|
const dirs = [];
|
|
126
|
-
const
|
|
174
|
+
const repoSegments = REPO_PRESET_DIR_BY_PRODUCT[product] ?? REPO_PRESET_DIR_BY_PRODUCT.pam;
|
|
175
|
+
const repoPresets = resolve(getProjectRoot(), ...repoSegments);
|
|
127
176
|
try {
|
|
128
177
|
await stat(repoPresets);
|
|
129
178
|
dirs.push(repoPresets);
|
|
@@ -132,7 +181,7 @@ export async function findPresetDirs() {
|
|
|
132
181
|
// not available
|
|
133
182
|
}
|
|
134
183
|
try {
|
|
135
|
-
const userPresets = getUserPresetsDir();
|
|
184
|
+
const userPresets = getUserPresetsDir(product);
|
|
136
185
|
await stat(userPresets);
|
|
137
186
|
dirs.push(userPresets);
|
|
138
187
|
}
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|