🎹

Pyxel を利用して MML を mp3 にして返すコンテナの実装をしてみた

に公開

2025/11/06 Pyxel 2.5.9 時点の内容です

承前

少し前にこんな記事を書きました
https://zenn.dev/sharl/articles/613efc4e830340
しかし slackbot 自体に変換部分を実装してしまったためいろいろな問題が発生
(※例外をキャッチできない)

問題解決に向けて

変換部分を docker コンテナに分離して

  • bottle で API もどきを作成
  • slackbot から変換をリクエスト

のように変更してみました

その結果……
MML は某 S 氏に書いてもらいました!!

$ jo mml="MML#0 T90 L4 o4 v100 @2 >g<a+>f2ffd+2
MML#1 T90 L4 o4 v100 @1 rg>d4.<f8a+a+g2
MML#2 T90 L4 o4 v100 @1 >r8d+d+a+4.&a+8g<a+2&a+8>" | \
curl -s --json @- localhost:15678/mml | \
jq -r .data | \
base64 -d | \
ffprobe -hide_banner -
Input #0, mp3, from 'fd:':
  Metadata:
    encoder         : Lavf61.7.100
  Duration: 00:00:05.41, start: 0.050113, bitrate: N/A
  Stream #0:0: Audio: mp3, 22050 Hz, mono, fltp, 32 kb/s
  • jo で json を作成
  • curl でその json を使ってリクエスト
    • base64 エンコードされた mp3が返ってくる
  • jq でレスポンスから生データを取り出し
  • base64 でデコード
  • ffprobe で素性を確認

エラーが発生しても例外処理で握りつぶせるようになったため、(今のところ)問題がなくなりました

成果物

https://github.com/sharl/docker-pyxel-mml
まだまだ実験段階です

最後に

MML やっぱり楽しい!!

Enjoy!!

Discussion