| Age | Commit message (Collapse) | Author |
|
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.
|
|
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.
|
|
|
|
- C4〜C5のMIDI音番号とtimer値を検証
- Pulse、TriangleのPCM・WAV周波数測定を追加
- Noise periodとLFSRの適合テストを追加
- 2A02 timerのclamp・mute境界を検証
- Noise計算をテスト可能な純粋関数へ分離
- 音階テスト資料を実装クロックへ同期
|
|
- ppmckの終端分岐付きリピートとL制御トラックを実装
- case、構文構造、音長、エフェクト値域の検証を強化
- Pyxel拡張コマンドのarityと参照検証を追加
- リピート展開上限と構文・意味エラー時の合成停止を追加
- BNF、設計書、適合監査、回帰テストを更新
|
|
|
|
mmlファイルをwaveファイルと一緒に出力するように変更
サンプルデータ追加
|
|
- ppmck/pyxel向けに表現力のある作曲テンプレートを追加
- エンベロープ、ビブラート、音程変化の使用例を追加
- テンプレートの検証・IR・音声合成テストを追加
- README、設計書、MCP仕様書を現行実装に合わせて更新
|
|
- エンベロープ、LFO、ビブラート、グライドのグローバル定義表を追加
- ppmckおよびPyxelの拡張コマンドを音声合成へ反映
- 2A03のPulseデューティ列、Triangle DAC、Noise LFSR、Sweepを実装
- APUタイマーに基づく周波数量子化と非線形ミキサを追加
- 途中テンポ変更、拡張コマンドの検証、トラック外定義に対応
- APU規格、拡張合成、IR v2のテストを追加
- プロジェクト独自のppmck拡張仕様と対応範囲を文書化
|
|
- @をデューティ比、qをクオンタイズに修正(mckc原本準拠)
- ^タイ、Dディチューン、sスイープ、v+/v-相対音量を追加
- @v/@@/@MP/@EP/@EN エンベロープ・LFO系を構文解析してIR保持
- 上記IR保持コマンドは合成未対応を SEMANTIC_UNSUPPORTED_FEATURE で警告
- Design.md / MML_BNF.md を更新
- 全200テスト + ruff チェック通過
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
修正とトラック外コマンド警告の追加
|
|
|
|
レビュー指摘事項の修正(エラー戻り値統一、タイ延長、ネストリピート、専用エラーコード)
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
|
|
|
|
|
|
- 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
|
|
|