summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2026-09-13chore(release): prepare version 0.3.0HEADv0.3.0maintanaka takashi
Bump the project and package versions to 0.3.0 and expose the same version through FastMCP server metadata. Add a regression test that keeps pyproject, package, and MCP server versions aligned. Add a 0.3.0 changelog covering the AudioContent migration, wav_path removal, isError semantics, security hardening, and other breaking changes. Update README links so project documentation and samples remain accessible from the rendered PyPI description. Declare MIT and project URLs in package metadata, and restrict source distributions to release documentation, source code, and tests so generated audio, caches, local plans, and unrelated working files cannot leak into published artifacts. Release verification completed with Ruff, 488 passing tests, uv lock validation, wheel CLI smoke testing, sdist content auditing, and twine checks for both wheel and sdist.
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-15feat: MMLパーサーと意味解析を厳格化tanaka takashi
- ppmckの終端分岐付きリピートとL制御トラックを実装 - case、構文構造、音長、エフェクト値域の検証を強化 - Pyxel拡張コマンドのarityと参照検証を追加 - リピート展開上限と構文・意味エラー時の合成停止を追加 - BNF、設計書、適合監査、回帰テストを更新
2026-07-12waveファイルの出力先変更tanaka takashi
mmlファイルをwaveファイルと一緒に出力するように変更 サンプルデータ追加
2026-07-12feat: 合成機能テンプレートの拡充とドキュメントの更新tanaka takashi
- ppmck/pyxel向けに表現力のある作曲テンプレートを追加 - エンベロープ、ビブラート、音程変化の使用例を追加 - テンプレートの検証・IR・音声合成テストを追加 - README、設計書、MCP仕様書を現行実装に合わせて更新
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-12feat(ppmck): mckc準拠の構文拡張とIR保持コマンド追加tanaka takashi
- @をデューティ比、qをクオンタイズに修正(mckc原本準拠) - ^タイ、Dディチューン、sスイープ、v+/v-相対音量を追加 - @v/@@/@MP/@EP/@EN エンベロープ・LFO系を構文解析してIR保持 - 上記IR保持コマンドは合成未対応を SEMANTIC_UNSUPPORTED_FEATURE で警告 - Design.md / MML_BNF.md を更新 - 全200テスト + ruff チェック通過
2026-07-12MML構文解析処理一部修正。ドキュメント最新化tanaka takashi
2026-07-12MML構文解析処理を追加tanaka takashi
2026-07-12waveファイル名可変対応tanaka takashi
2026-07-11ドキュメントとコメント一部更新tanaka takashi
2026-07-11fix: stdio transport 起動時の TypeError ↵tanaka takashi
修正とトラック外コマンド警告の追加
2026-07-11fix: ↵tanaka takashi
レビュー指摘事項の修正(エラー戻り値統一、タイ延長、ネストリピート、専用エラーコード) High severity: - compose action エラー戻り値の validation キー統一(server.py) - ppmck/pyxel タイ & の duration 延長修正(_tie_pending フラグ導入) - pyxel ネストリピート対応(RepeatFrame + イベントスナップショット方式) Medium severity: - 専用エラーコード追加: VALIDATION_MISSING_PARAMETER, VALIDATION_INVALID_MODE, VALIDATION_INVALID_ACTION - SYSTEM_INTERNAL_ERROR キャッチ範囲拡大(compose/validate全体をtry/except) Low severity: - 設計書 line/column を1始まりに明記、APIレベルエラーコード追記 テスト: 129 passed, ruff: All checks passed
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
2026-07-11First Commit.tanaka takashi