« ポポーに実 | トップページ | キノコのBBQ »

2018年7月14日 (土)

TRONで音楽 #3

Nucleoボード、STM32F401RET6でMusicDriverを作っている。
リアルタイムにMMLを解析しながら演奏するのではなく、
MMLを解析していったん曲データをバイナリデータに変換してメモリに配置する。
それを別の関数で再生するという方法を取る。
まあ、関数名だけでわかると思う。

int setTrack(int track, char *mml);
int bgmSet(int ch, int track);
int bgmPlay(int ch);
int bgmStop(int ch);
int sePlay(int track);

同時に3chをON/OFFできる。三重和音すべてを演奏するならbgmPlay(7)を指定。
sePlay()は効果音を演奏する。ch.2を停止して効果音を演奏する。
データフォーマットはこんな感じにした。

//    ----------------------------------------
//    MMLをバイナリに変換
//    c4=ドの四分音符, b8=レの♪
//    MMLについては以下を参照
//    http://www15.big.or.jp/~annex-hp/anxmid/nyumon.html
//    ┌──┬──┬──┬──┐
//    │ffnn│nnnn│cccc│cccc│
//    └──┴──┴──┴──┘
//    f=func, n=note, c=count(length=1-192)
//    ----------------------------------------

以前、同じことをPICマイコンでやろうとしたことがある。
が、メモリが少なくて、MMLをリアルタイムに変換するのはできなかった。
arduinoでも同じことを経験した。
今回のSTM32は三度目の正直である。
続きはお盆明けの予定。

« ポポーに実 | トップページ | キノコのBBQ »

電子工作」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/24707/74002519

この記事へのトラックバック一覧です: TRONで音楽 #3:

« ポポーに実 | トップページ | キノコのBBQ »

最近のトラックバック