utaformatix3-ts-plus は、VSQX と MusicXML の相互変換を行う TypeScript 実装です。
開発者が変換機能を組み込み・検証しやすいように、双方向 API と report API(警告/エラー収集)を提供します。
utaformatix3-ts-plus は、utaformatix3-ts を出発点として開発する派生プロジェクトです。
実装言語は TypeScript です。
utaformatix3-ts は utaformatix3 (主に Kotlin で記述されたもの) を TypeScript に移植したものです。
本プロジェクトの MusicXML 入出力は、mikuscore の一部機能に依存しています。
実装寄りの旧 README は README_IMPLEMENTATION_ARCHIVE.md に退避しています。
VSQX -> MusicXMLMusicXML -> VSQX- 変換時の warning / error を report として取得
- MusicXML 変換時の調号制御(固定・トラック別・小節別・推定)
前提:
- Node.js 18+
- npm
依存関係のインストール:
npm installimport {
convertVsqxToMusicXml,
convertMusicXmlToVsqx,
convertVsqxToMusicXmlWithReport,
convertMusicXmlToVsqxWithReport,
} from "./src/index.ts";
const musicXml = convertVsqxToMusicXml(vsqxText);
const vsqx = convertMusicXmlToVsqx(musicXmlText);
const vsqxToMusicXmlReport = convertVsqxToMusicXmlWithReport(vsqxText);
const musicXmlToVsqxReport = convertMusicXmlToVsqxWithReport(musicXmlText);# 全体チェック
npm run check:all
# VSQX -> MusicXML の簡易変換
node scripts/quick-convert-vsqx-to-musicxml.mjs <input.vsqx> <output.musicxml> [defaultLyric] [keyFifths]
# VSQX -> MusicXML の簡易検証
node scripts/validate-vsqx-to-musicxml.mjs <input.vsqx> [defaultLyric]-
convertVsqxToMusicXml(vsqxText, options?): 変換結果の MusicXML 文字列を返します。失敗時はErrorを throw します。 -
convertMusicXmlToVsqx(musicXmlText, options?): 変換結果の VSQX 文字列を返します。失敗時はErrorを throw します。 -
convertVsqxToMusicXmlWithReport(vsqxText, options?):{ musicXml, issues }を返します。issuesに warning / error を収集します。 -
convertMusicXmlToVsqxWithReport(musicXmlText, options?):{ vsqx, issues, retainedExtras? }を返します。未対応記譜はretainedExtrasに退避されます。
convertVsqxToMusicXml(..., { musicXml: ... }) で制御できます。
keyFifths: number: 全トラック共通の固定調号keyFifths: number[]: トラック別調号keyFifthsByMeasure: number[][]: トラック x 小節別調号estimateKeyFifthsByMeasure: boolean: 小節別の推定調号を有効化preferProjectExtras: boolean:project.extras優先を切り替え
- MusicXML の一部記譜(例:
slur/ ornaments / articulation)は完全保持ではありません。 MusicXML -> VSQXでsyllabic種別は保持しません(歌詞テキストは保持)。- roundtrip はテキスト完全一致ではなく semantic 一致を重視します。