最新のリンク集はこちら!

http://spresense.livedoor.blog/archives/35066691.html

リンクの不足などあれば、お気軽に返信してくださいね!
※更新しないとなあ…。

また、マニアックなstackoverflowはこちら。

http://spresense.livedoor.blog/archives/21045225.html

2020年10月18日 02:02

ダイエット用ウォークマンを作ってみる その3

状態によって再生する音楽を変更するとしたら、一番簡単なのは複数のプレイリストを持って切り替えるのが良いだろうということで、今日は複数のプレイリストを生成して、それを切り替えることができるか?を確認してみます。

もともとは、

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つのインスタンスを生成するようにし、

static void list()
static bool next()
static bool prev()

の中の

thePlaylist.



thePlaylist->

に変更。

void setup()

の中の

  thePlaylist.



  thePlaylist0.
  thePlaylist1.
  thePlaylist2.

の3つに、

例えば、initだったら、

  success = thePlaylist.init(playlist_dirname);



  success = thePlaylist0.init(playlist_dirname);
  success = thePlaylist1.init(playlist_dirname);
  success = thePlaylist2.init(playlist_dirname);
※エラーチェックはちゃんとやったほうがいい。苦笑。

のように、すべての初期化と設定は、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 できりかえられるコードができた。

multilist





コメントする

名前
 
  絵文字
 
 
ギャラリー
  • 土壌センサーを使ってみる!
  • KiCADを使ってみよう! その3
  • KiCADを使ってみよう! その3
  • 小型AIカメラを作ろう! その2
  • KiCADを使ってみよう! その2
  • 小型AIカメラを作ろう! その1
  • KiCADを使ってみよう! その1
  • KiCADを使ってみよう! その1
  • Spresense 向けWiSUNボードを使ってみよう
記事検索
Twitter プロフィール
楽天市場
  • ライブドアブログ