summaryrefslogtreecommitdiff
path: root/src/mml_composemusic_mcp/synthesizer.py
AgeCommit message (Collapse)Author
2026-09-13feat: return composed WAV as MCP audio contenttanaka takashi
Replace the server-local wav_path result with a protocol-native multimedia response. - Split internal composition execution from MCP ToolResult serialization so filesystem paths never enter public payloads. - Return every successfully composed WAV as AudioContent with the audio/wav MIME type, regardless of file size. - Keep structured audio metadata, duration, note sequence, and validation details alongside the multimedia content. - Use CallToolResult.isError as the authoritative MCP execution status while retaining compose success and validate valid as domain fields. - Treat invalid compose/API requests and runtime failures as tool errors, while invalid MML discovered by validate remains a successful validation operation. - Sanitize synthesis, file-write, audio-serialization, and unexpected failure responses so internal paths and exception details are not exposed. - Add protocol-level coverage for base64 round trips, content block types, error semantics, ResourceLink absence, and path non-disclosure. - Update existing tests for the separated execution layer and path-free result contract. - Document AudioContent and isError behavior in the README, MCP schema, and design specification. - Require the tested FastMCP 3.4.4 API line and exclude the incompatible 4.x major version. Verification: 487 tests passed; ruff check passed; git diff --check passed; uv lock --check passed; and a manual MCP call returned TextContent plus AudioContent with no wav_path.
2026-07-15test: MML音階と2A02波形出力の適合テストを追加tanaka takashi
- C4〜C5のMIDI音番号とtimer値を検証 - Pulse、TriangleのPCM・WAV周波数測定を追加 - Noise periodとLFSRの適合テストを追加 - 2A02 timerのclamp・mute境界を検証 - Noise計算をテスト可能な純粋関数へ分離 - 音階テスト資料を実装クロックへ同期
2026-07-12feat: MML拡張合成とNTSC 2A03準拠のIR v2音源を実装tanaka takashi
- エンベロープ、LFO、ビブラート、グライドのグローバル定義表を追加 - ppmckおよびPyxelの拡張コマンドを音声合成へ反映 - 2A03のPulseデューティ列、Triangle DAC、Noise LFSR、Sweepを実装 - APUタイマーに基づく周波数量子化と非線形ミキサを追加 - 途中テンポ変更、拡張コマンドの検証、トラック外定義に対応 - APU規格、拡張合成、IR v2のテストを追加 - プロジェクト独自のppmck拡張仕様と対応範囲を文書化
2026-07-12MML構文解析処理を追加tanaka takashi
2026-07-11ドキュメントとコメント一部更新tanaka takashi
2026-07-11feat: implement Famicom-style MML composer MCP servertanaka takashi
- Add FastMCP server with compose_mml tool - Support ppmck and pyxel MML syntax - Add lexer and parsers for both formats - Add NES APU-style synthesizer (pulse/triangle/noise) to WAV - Add MML templates (basic/melody/chord/drum/empty) for both modes - Add tests for lexer, parser, and server - Support stdio, http, sse, streamable-http transports - Update README, pyproject.toml, and .gitignore