smaf825
SMAFフォーマットの着メロを Arduino + YMF825Board でそれなりに再生するプレイヤーです。
- macOS Sierraで動作確認しています。
v1.0.1
にてWindows 10でも動作確認できましたが、もたつきが激しく、I/O周りのwarningが発生しています。あしからず、ご了承ください。
準備 (1/2)
以下のいずれかの手順で、CLIコマンド smaf825
をインストールしてください。
macOS+Homebrew でのインストール
brew tap but80/tap
brew install smaf825
自前でインストール
- Releases からアーカイブをダウンロードしてください。
- アーカイブに含まれるバイナリを適当な場所に置き、パスを通してください。
Go 1.8 でのインストール(開発者向け)
- Go 1.8 をインストール してください。
go get -u github.com/but80/smaf825
にて、当プロジェクトをcloneしてください。
注意:こちらの手順でインストールされた smaf825
は、バージョン番号を表示しません。
準備 (2/2)
-
以下のようにして、お手元のMMFファイルが正しくダンプされるかを確認してください。
smaf825 dump music.mmf
smaf825 dump -j music.mmf # JSON形式でもダンプできます
-
以下の記事を参考にハードウェアを用意し、まずは記事通りに公式サンプルを鳴らしてみてください。
-
無事動作したら、当プロジェクトの bridge/bridge.ino を参考記事と同様の方法でArduinoに転送してください。
SMAFの再生
以下のようにして再生できます。
Arduinoを接続しているシリアルポートのデバイス名を指定する必要がありますので、スケッチの転送時に指定したデバイス名をここでも指定してください。
# macOS
smaf825 play /dev/tty.usbserial-xxxxxxxx music.mmf
# Windows
smaf825 play comX music.mmf
以下のようにオプションを与えることで、音量を調整できます。
# -g: Gain (0..3, default=1)
# -v: Analog Volume (0..63, default=48)
smaf825 play -g 3 -v 63 /dev/tty.usbserial-xxxxxxxx music.mmf
YMF825用トーンデータの抽出
smaf825 dump -v music.mmf
で、MMFやSPFからトーンデータのみを抽出できます。
SMF825用に変換されたデータ列は、JSON形式の出力中の .voices[].ymf825_data
に含まれます。
jq を用いると以下のように取り出せます。
smaf825 dump -Q -v -j music.mmf | jq -crM '.voices[].ymf825_data'
参考情報
注意点
- すべてのSMAFファイルに対応しているわけではありませんので、本ツールを用いて特定のSMAFファイルを再生するために
Arduino や YMF825Board を購入しようとしている方は、ご理解の上でお試しください。
また、本ツールで読み込み・ダンプできるMMFであっても、以下のような制限により正しく再生されない場合があります。
- 内蔵波形を用いたFM音色以外(PCMのドラムやユーザ波形等)は再生されません。
- 1チャンネル内で和音を使用している場合、正しく再生されません。
- 16和音を超えたチャンネルや、16音色を超えた音色を使用するノートは再生されません。
- MA-7用に作成されたSMAFファイルには未対応です。
- シリアルポート経由でリアルタイムにレジスタへの書き込みを行っています。
smaf825
を実行中のマシンで他のプロセスによる負荷がかかっている場合、再生がもたつく場合があります。
- 再生中に
Ctrl+C
で停止後、再度再生しようとすると応答がなくなる不具合が確認されています。
このような場合、 Ctrl+C
での停止後にArduinoを接続しているUSB端子をいったん抜き差ししてみてください。
v1.1.0
にて ボーレートを変更しました 。以前のバージョンから使用している場合は、スケッチを転送し直す必要があります。