Fix VOLUMES/TIMBRE/FM placement: variation properties, not instrument-level

Per RFC §3.2.1.3, VOLUMES, TIMBRE and FM are variation properties. The
previous exporter incorrectly appended them to the first ATTR variation;
they now go into a synthetic root variation (no ATTR) as required.
variationLines() handles these fields directly.

Fix test-parser.mjs fixture paths for standalone execution from repo root.
This commit is contained in:
c0dev0id
2026-06-22 19:30:45 +02:00
parent 17f4529658
commit f318b155cc
2 changed files with 30 additions and 30 deletions

View File

@@ -1,15 +1,12 @@
#!/usr/bin/env node
// Fixture-based compliance test for ast-parser.js + exporter.js
// Run: node score_editors/vue3_neusik/test-parser.mjs
// Run: node test-parser.mjs
import { readFileSync } from 'fs';
import { parseAstLog, buildModel } from './static/ast-parser.js';
import { exportInstrument, patchScore } from './static/exporter.js';
const FIXTURE = new URL(
'../../PLAN/vue3js-app-proposal-for-sdk-claude/fixtures/ast.log',
import.meta.url
);
const FIXTURE = new URL('./fixtures/ast.log', import.meta.url);
const text = readFileSync(FIXTURE, 'utf8');
let pass = 0, fail = 0;
@@ -191,10 +188,7 @@ if (alpha) {
// ── patchScore ─────────────────────────────────────────────────────────────
section('patchScore');
const SCORE_FIXTURE = new URL(
'../../PLAN/vue3js-app-proposal-for-sdk-claude/fixtures/pathetique.spls',
import.meta.url
);
const SCORE_FIXTURE = new URL('./fixtures/pathetique.spls', import.meta.url);
const rawScore = readFileSync(SCORE_FIXTURE, 'utf8');
// pathetique.spls contains alpha and ki; dev/piano is a linked instrument not embedded.