{"id":43473175,"url":"https://github.com/cat2151/mml2abc","last_synced_at":"2026-02-03T07:19:53.526Z","repository":{"id":212280984,"uuid":"731120070","full_name":"cat2151/mml2abc","owner":"cat2151","description":"A library transpiles Music Macro Language into ABC music notation.","archived":false,"fork":false,"pushed_at":"2026-01-17T09:46:09.000Z","size":139,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-17T20:33:40.781Z","etag":null,"topics":["abc-music-notation","abcjs","music-macro-language"],"latest_commit_sha":null,"homepage":"https://cat2151.github.io/mml2abc/dist/","language":"PEG.js","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cat2151.png","metadata":{"files":{"readme":"README.ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-13T11:57:28.000Z","updated_at":"2026-01-17T09:46:12.000Z","dependencies_parsed_at":"2024-04-15T14:31:43.166Z","dependency_job_id":"ad792c6e-52e2-4fa5-985b-6a6d4f145fc3","html_url":"https://github.com/cat2151/mml2abc","commit_stats":null,"previous_names":["cat2151/mml2abc"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/cat2151/mml2abc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cat2151%2Fmml2abc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cat2151%2Fmml2abc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cat2151%2Fmml2abc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cat2151%2Fmml2abc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cat2151","download_url":"https://codeload.github.com/cat2151/mml2abc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cat2151%2Fmml2abc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29037178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T06:39:36.383Z","status":"ssl_error","status_checked_at":"2026-02-03T06:39:32.787Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abc-music-notation","abcjs","music-macro-language"],"created_at":"2026-02-03T07:19:50.775Z","updated_at":"2026-02-03T07:19:53.521Z","avatar_url":"https://github.com/cat2151.png","language":"PEG.js","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mml2abc\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"README.ja.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/🇯🇵-Japanese-red.svg\" alt=\"Japanese\"\u003e\u003c/a\u003e\n  \u003ca href=\"README.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/🇺🇸-English-blue.svg\" alt=\"English\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://deepwiki.com/cat2151/mml2abc\"\u003e\u003cimg src=\"https://deepwiki.com/badge.svg\" alt=\"Ask DeepWiki\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://cat2151.github.io/mml2abc/dist/\"\u003e\u003cimg src=\"https://img.shields.io/badge/🌐-Live%20Demo-green.svg\" alt=\"Live Demo\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nA library transpiles Music Macro Language into ABC music notation.\n\n# Demo\nhttps://cat2151.github.io/mml2abc/dist/\n\n# Features\n- text to textのシンプルなJavaScriptライブラリ\n- MML から [abcjs](https://github.com/paulrosen/abcjs) 用の ABC music notation を生成\n  - abcjsは、ブラウザで五線譜を描画しつつSoundFont GM音源ソフトシンセを鳴らすライブラリです\n- mml2abcの用途は？\n  - ブラウザで音を鳴らす用\n    - MMLを書いてabcjsを鳴らす用\n  - ObsidianでMMLを書いて音を鳴らす用\n\n# Requirement\n- ブラウザで鳴らす場合\n  - index.htmlをちょっと書けば音が鳴ります\n- Obsidianで鳴らす場合\n  - 開発中です\n- Windows上のコマンドラインで鳴らす場合\n  - 未調査です。\n    - スコープ外とします。「ObsidianでMMLを書いて音を鳴らす」を優先します。\n      - abcjsがObsidianつまりChromiumで音を鳴らせるため、なんらかの方法はありそうです。未調査です。\n      - abcjsに限らず、ABC music notationを入力としてaudioを出力できる、コマンドラインのソフトシンセがあるか？未調査です。\n\n# Installation\n- mml2abcをwebpageで使う手順は？\n  - サンプルを用意しました。[easymmlabc](https://github.com/cat2151/easymmlabc/)を参照ください\n- ObsidianでMMLで音を鳴らす手順は？\n  - 開発中です。mml2abcを [Obsidian ABC.JS plugin](https://github.com/abcjs-music/obsidian-plugin-abcjs)のforkに組み込む予定です\n\n# Usage\n- mml2abcをimportして、関数に引数を渡します\n- 具体例は[easymmlabc](https://github.com/cat2151/easymmlabc/)を参照ください\n\n# Note\n## このprojectが優先すること\n- 概念実証\n  - 高機能、高性能、高信頼性、拡張性、安定性、バージョン互換性よりも、概念実証を優先します\n- 鳴ること\n  - 最低限の音が鳴る状態の維持をできるだけ優先します\n- 関数に`MML文字列`を与えて、`abcjsが演奏可能な文字列`を取得できること\n  - それ以上複雑な機能にせず、シンプルさの維持を優先します\n- 「ObsidianでMMLを書いて音を鳴らす」のを実現すること\n  - より具体的には、[Obsidian ABC.JS plugin](https://github.com/abcjs-music/obsidian-plugin-abcjs) に関連します\n    - 今後 Obsidian ABC.JS plugin をforkし、mml2abcを組み込む予定です\n- MMLフォーマットはシンプル、既存スタンダードのサブセット継承、を優先します\n  - [SiON](https://keim.github.io/SiON/mmlref/sion_mml_reference.html)のサブセット（和音はZ-MUSICのサブセット）とします\n  - 方言の名前は `mmlabc` としました\n\n## 分担\n- `mml2abc.pegjs を作ること`\n  - が、このリポジトリの担当です。\n  - [mml2abc.pegjs](peggyjs/mml2abc.pegjs) は、このプロジェクトの中核を担うファイルであり、SSOT（Single Source of Truth：信頼できる唯一の情報源）です。\n    - MMLからABC music notationへの変換の文法の全てがこのファイルに記述されています。\n- `easyにmml2abcを使える仕組み を作ること`\n  - は、[easymmlabc](https://github.com/cat2151/easymmlabc/)で担当します。\n- `Obsidianでmml2abcを使える仕組み を作ること`\n  - は、別リポジトリで担当します。今後作成予定です。\n\n## mml2abcそのものの開発手順は？\n- MMLパーサを peggyjs + Jest でTDDすると楽です。なにかの参考にでもなれば幸いなので、できればそのうちもう少し詳しく書いていきます\n- TDDにはJestを使用\n  - VSCodeのJest拡張を使用\n    - テストやpeggyjsを書くだけで自動testが走ってredやgreenができて楽\n- peggyjsとJestの接続には、chokidar を使用\n  - peggyjsを更新すれば、自動でES modules（ブラウザ用）とCommonJS（TDD用 \u0026 サーバ用）を生成し、Jestの自動テストが動くので楽\n- peggyjsのprintfデバッグには、Jestのsilentとverboseを制御（VSCodeのJestターミナルでconsole.logを確認できるようになる）\n  - printfデバッグは稀に必要になるので、使えるようにしておくと楽\n- ブラウザpageのライブリロード（ホットリロード）には、webpack-dev-serverを使用\n  - ブラウザで実際に鳴らすことで発覚する問題がある（abcjsの想定外の挙動など）ので、ライブリロードできるようにしておくと楽\n- cloneしたら最初に環境構築。\n  - Node.js関連のinstallや、`npm install`や、VSCodeとVSCodeのJest拡張を入れる等\n- 日々の開発をスタートする手順は、以下だけでOK：\n  ```\n  code .\n  npm run watch\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcat2151%2Fmml2abc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcat2151%2Fmml2abc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcat2151%2Fmml2abc/lists"}