Skip to content

YSFCforge/ysfc-forge

YSFC Forge

🇸🇪 Svenska: README_sv.md

License: MIT Status: Active Engines: 4/4 Test files: 2010+

Open-source browser-based tools for Yamaha MODX M / ESP Plugin / Montage M performance files.

Reverse-engineered from scratch through binary analysis of Yamaha's undocumented .Y2L / .Y2U file format. Open the HTML files in any modern browser — no installation, no cloud upload, everything runs locally.

A hobby project that started as a way to merge .Y2L libraries without endless clicking on the hardware, and grew into an in-depth mapping of the format.

Forge Performance Merger screenshot


Table of Contents


Features

  • Merge performances from multiple .Y2L / .Y2U files
  • Edit FM-X, AWM2 and AN-X parameters in the browser
  • No installation — works in Chrome, Firefox and Safari
  • No telemetry — everything runs locally
  • Plus experimental tools/utilities — see Experimental / Extra Tools

Quick Start

Merge performances

  1. Download tools/ysfc_forge_performance_merger_v1_19.html
  2. Open it in your browser
  3. Drag and drop .Y2L or .Y2U files
  4. Select the performances you want
  5. Click Save as Y2L or Save as Y2U
  6. Import the exported file in MODX M / ESP plugin / Montage M

Merge performances including dependencies

  1. Download tools/ysfc_forge_library_builder_v13_17.html
  2. Open it in your browser
  3. Drag and drop .Y2L or .Y2U files
  4. Select the performances you want
  5. Click Save as Y2L or Save as Y2U
  6. Import the exported file in MODX M / ESP plugin / Montage M

Edit a performance

  1. Download tools/ysfc_forge_performance_editor_v5_1.html
  2. Open it in your browser
  3. Click Open Y2L and choose a file
  4. Adjust parameters with sliders
  5. Click Export Y2L to save

Tools

Core Tools

Tool What it does
Performance Merger Merge performances from multiple Y2L/Y2U files
Library Builder Merge performances from multiple Y2L/Y2U files including dependencies
Performance Editor Edit FM-X, AWM2 and AN-X parameters in the browser

Experimental / Extra Tools

⚠️ These are convenience and approximation tools — not held to the same binary-verified standard as the core tools above.

Tool What it does
Smart Name Compressor Standardized naming for performances

Screenshots

Performance Editor Library Builder
Performance Editor — FM-X operator editor Library Builder — performance list with engine detection

Status

All four synthesizer engines have every known user-editable parameter binary-verified through systematic A/B diff analysis across 2010+ test exports on real MODX M hardware. File-level structures such as Smart Morph and Scene snapshots are mapped separately — see Known Limitations.

Engine UI fields Internal/firmware constants Status
AWM2 128 8 ✅ Verified
AN-X 171 458 ✅ Verified
FM-X 141 863 ✅ Verified
Drum 54 4934 ✅ Verified

Mapping reflects all parameters observed across the 2010+ test exports. The format is undocumented, so it's possible a rarely-used parameter exists that hasn't appeared in testing yet — if you find one, a test file showing it is the single most useful thing you can contribute.

"Internal/firmware constants" counts the bytes in each engine's data block that are not user-editable — firmware constants, lookup tables and padding that stay identical regardless of UI settings. A high number isn't a gap: it means the entire block was mapped and every byte accounted for, not just the parameters. (Drum keys, for example, are a deliberately sparse structure — only a handful of bytes per key are active.)

Supported file types

Type Description Support
.Y2L Library file
.Y2U User file (identical to Y2L, just different extension)
Multi/GM 16-part 16 parts (15 AWM2 + 1 Drum on Part 10)

Hardware compatibility

Hardware Support
MODX M ✅ Primary target
ESP plugin
Montage M ⚠️ Likely compatible — not fully tested
MODX (non-M) ❌ Different format

Test corpus

2010+ binary-verified test files generated through systematic parameter changes on real MODX M hardware. Every documented offset is backed by at least one A/B binary diff.

Engine Files
AN-X 799
AWM2 408
FM-X 425
Drum 84
Other 294

See docs/REVERSE_ENGINEERING.md for detailed methodology, coverage tables and field-level documentation.


Documentation

Document Contents
docs/REVERSE_ENGINEERING.md Methodology, coverage tables, technical highlights
docs/YSFC_FORGE_REFERENCE.md Compact reference manual
docs/YSFC_FORGE_FULL_CONTEXT.md Complete technical reference (all field positions, evidence)
serializer/ysfc_serializer.py Python parameter constants — useful if you want to build your own tools

Verification levels

Throughout the documentation, fields are rated by evidence:

  • ★★★★★ — Binary-verified with one or more test files
  • ★★★★☆ — Derived from official source data, highly confident
  • ★★★☆☆ — Likely correct, not binary-verified
  • [INTERN] — MODX-internal firmware constant, not user-editable

Known Limitations

  • Performance Editor currently shows only the first part's engine; full 16-part editing is on the roadmap
  • Smart Morph interpolation tables are not yet mapped
  • Scene snapshots — structure verified, but only ~10 fields per scene have UI-confirmed mappings
  • No undo/redo in Performance Editor yet — keep backups of your originals

See docs/REVERSE_ENGINEERING.md for the full list.


Contributing

Bug reports, test files and reverse engineering findings are very welcome.

The most valuable contributions right now: test files for Smart Morph, Scene snapshots, and verification on real Montage M hardware.


Disclaimer

This project is not affiliated with, endorsed by, or sponsored by Yamaha Corporation. MODX M, ESP plugin, Montage M and related product names are trademarks of Yamaha Corporation. The file format was reverse-engineered for interoperability purposes. Use at your own risk and always keep backups of your original files.


Data Attribution

Some reference tables in the Python enum package are derived from Yamaha's publicly published MODX M Data List (© Yamaha Corporation). Only functional facts have been extracted, solely to enable interpretation of the undocumented .Y2L / .Y2U file format for interoperability purposes. Other reference tables in the Python enum package are based on the project's own binary-verified observations of the MODX M and ESP Plugin interface.

Yamaha's document is not redistributed in this repository. The original is available from Yamaha (search for "MODX M Data List").


License

MIT — see LICENSE