2020年10月18日 02:02
ダイエット用ウォークマンを作ってみる その3
状態によって再生する音楽を変更するとしたら、一番簡単なのは複数のプレイリストを持って切り替えるのが良いだろうということで、今日は複数のプレイリストを生成して、それを切り替えることができるか?を確認してみます。
もともとは、
と1つのインスタンスを生成しているところを
もともとは、
Playlist thePlaylist("TRACK_DB.CSV");
と1つのインスタンスを生成しているところを
Playlist thePlaylist0("TRACK_DB0.CSV");
Playlist thePlaylist1("TRACK_DB1.CSV");
Playlist thePlaylist2("TRACK_DB2.CSV");
Playlist* thePlaylist = &thePlaylist0;
というように3つのインスタンスを生成するようにし、
の中の
thePlaylist.
を
thePlaylist->
に変更。
の中の
thePlaylist.
を
というように3つのインスタンスを生成するようにし、
static void list()
static bool next()
static bool prev()
の中の
thePlaylist.
を
thePlaylist->
に変更。
void setup()
の中の
thePlaylist.
を
thePlaylist0.
thePlaylist1.
thePlaylist2.
の3つに、
例えば、initだったら、
を
success = thePlaylist0.init(playlist_dirname); success = thePlaylist1.init(playlist_dirname);
thePlaylist1.
thePlaylist2.
の3つに、
例えば、initだったら、
success = thePlaylist.init(playlist_dirname);
を
success = thePlaylist0.init(playlist_dirname);
success = thePlaylist2.init(playlist_dirname);
※エラーチェックはちゃんとやったほうがいい。苦笑。
のように、すべての初期化と設定は、3つのインスタンスに行う。
※presetの値を3つ持たせて、それぞれで設定したほうがいいだろうが今はしない。
void loop()
の中の
thePlaylist.
は、
thePlaylist->
に変更し、
switch/caseに、x/y/z でプレイリストを切り替えるコードを追加。
このコードをコンパイル&実行すると、x/y/z できりかえられるコードができた。
のように、すべての初期化と設定は、3つのインスタンスに行う。
※presetの値を3つ持たせて、それぞれで設定したほうがいいだろうが今はしない。
void loop()
の中の
thePlaylist.
は、
thePlaylist->
に変更し、
switch/caseに、x/y/z でプレイリストを切り替えるコードを追加。
case 'x': // change list
if (s_state == Active) {
stop();
s_state = Ready;
}
thePlaylist = &thePlaylist1;
break;
case 'y': // change list
if (s_state == Active) {
stop();
s_state = Ready;
}
thePlaylist = &thePlaylist2;
break;
case 'z': // change list
if (s_state == Active) {
stop();
s_state = Ready;
}
thePlaylist = &thePlaylist0;
break;
このコードをコンパイル&実行すると、x/y/z できりかえられるコードができた。