YMZ294+A tiny MML parserのラッパー的なライブラリ(暫定版)

絶対どこかにバグがあると思いますし、機能も不十分なのですが、とりあえず音は鳴りましたのでなんとなく公開してみます。
mmlPSG library
A tiny MML parserMetroライブラリを入れないと動きません)

mmlPSGライブラリのPSG_advance関数内でMetroとtiny MML周りの処理をするようにしたので、スケッチはかなり短くなります。
YMZ294のRESET(9番ピン)はArduinoのRESET(3.3Vの隣)につないでおくと、Arduino側のリセットのタイミングで同時にリセットされます。
音は前のスケッチと同じで、ファイナルファンタジーIの「プレリュード」です。


#include <mmlPSG.h>
#include <Metro.h>
#include <mml.h>

// YMZ294 defines
const byte WRCS_PIN = 8;
const byte A0_PIN = 9;

char *text[2] = {
  "o5 l16 b-cdf b->cdf b->cdf b->cdf b-fdc< b-fdc< b-fdc< b-fdc gab-d gab->d gab->d gab->d gd<b-a gd<b-a gd<b-a gdb-a",
  "o5 l16 b-a b-cdf b->cdf b->cdf b->cdf b-fdc< b-fdc< b-fdc< b-fdc gab-d gab->d gab->d gab->d gd<b-a gd<b-a gd<b-a gd"
};

void setup() {
  DDRD = 0b11111111;
  pinMode(WRCS_PIN, OUTPUT);
  pinMode(A0_PIN, OUTPUT);

  PSG_init(WRCS_PIN, A0_PIN);
  PSG_setup(text[0], text[1]);
}

void loop() {
  PSG_advance();
}

このスケッチでは2音しか鳴らしていませんが、PSG_setup関数にmmlもう1個渡せば、3音鳴ります。
ボリュームとかテンポとかはいまのところ固定になっています。おいおい追加していくということで。


コメントを残す