● 実験テーマ42
「スクロール表示と、256曲MAXのループ再生音楽プレーヤの実験」
■ 2013.10.21
・今迄の実験で、SDカードに収録されている音楽ファイルのリスト表示と、その中の
曲を選択して、その曲のみの再生終了後、トップ画面に戻るところまで出来たので
今回は、1画面に表示きれる8曲を超えた場合に必要になる「スクロール表示」の
実験と、256曲MAXのループ再生音楽プレーヤの実験を行ってみたいと思う。
・まず手始めに、スクロール表示の実験を効率よく行うために、最大曲数を、2画面分
の16曲として基本動作を確認しようと思う。
また、その時に使う音楽ソースも長い再生時間の曲は非効率なので、極短いソース
として、オーディオ・テクニカの、オーディオ・チェック・ソース(左右CHの確認等)
を使うことにした。
これだと再生時間が長くて、1分位なので効率的にチェックが進められる。
・始める前に、16曲MAXのスクロール表示の方法を考えることにした。
この辺の情報を、WEB検索してみたが、有用な情報を見つけることが出来なかった
ので、自力で考えることにしました。
→ いろいろ考えた結果、せっかくファイル名バッファを用意してあるので、最初の
スクロール(9曲目)から、バッファの読出し先のポインタを1つずつずらして
表示する方法にしました。
具体的な例を下表のように、まとめてみましたので参照してください。
■ 2013.10.22〜 2013.10.25
・前日の構想で、まず、SKIP SW機能無しで、16曲MAXのスクロール+ループ再生の
プログラムを書き上げ動作チェックを行った。
→ 最初なので、無駄な記述の多いプログラムになってしまったが、何とか基本動作は
OKなようだ。
■ 2013.10.26〜 2013.11.01
・次に、上記プログラムに、SKIP SWの機能を追記し、SWが押された時は、その曲の
再生を中断し、次の曲の再生に移行するスキップ再生を追記し実験を行った。
→ SKIP SWの状態を読込むのに最初、外部割込みを使って記述したが、何故か
16曲目の再生中に、SKIP SWを押しても、トップ画面(初期画面)に戻らない現象
が起きた。
細かくこの現象を観察すると、どうも再生が途中で中断しないで(途切れるような音
が一瞬する)継続再生し、その後SKIP SWを押さなければ、通常再生に戻り、再生
が終わるとトップに戻るというような動きうぃしていることが判った。
ということは、完全に暴走しているわけではないようで、SW割込み処理終了後、
メインには戻っているが、戻っている場所が、この現象から察すると、VS1053bへ
音楽データを転送中の所へ戻っているようである。
■ 2013.11.2
・昨日の現象は、たぶん割込み内で、実施している処理が長く、メインにリターンして
来る場所が定まらないような感じに思えてならない。
それを実証したいところだが、ICEデバッガーがあるわけでもなし、ロジアナも無い
ので、それは断念して、次の方法を試してみることにした。
※ SWセンスの方法を、割込みから、メインでのエッジセンスに変更してみること
にした。
センスする場所は、VS1053bへの、32バイト毎のデータ転送が終了してから
次の32バイト転送を始めるまでの間にいれる。
ただ今回はメイン内でセンスするので必ず、SWセンスの判断の後、シーケンシャル
に、32バイト転送が行われるので、上手く行くはずである。
→ 結果、16曲目でのSKIP動作もうまく行くようになった。
※ 以下に、その時のソースファイルを貼り付けておきます。
→ SD_File_List_LoopPlayer16_TEST.C
※ スクロール表示の感じは以下の写真のようになります。
静止画なので分かりにくいですが・・・
■ 2013.11.3〜 2013.11.4
・次に、MAXの曲数を増やしてみたいと思い256曲MAXのループプレーヤを考えた。
256MAXにしたのは、1GのSDカードを使用した場合、MP3ファイルを約250曲収録
できるからです。(再生時間にもよりますが、MP3ファイルの1曲分の平均容量は、
約4M位なので、4M*250= 1000M= 1G)
・今回は、SDに収録の総曲数も表示できるようにしました。
それに対し、今何曲目を再生しているか判るように、従来ファイル番号を表示して
いたのを、曲番に変更しました。
※ 以下に、ソースファイルを貼り付けておきます。
→ SD_File_List_LoopPlayer256_TEST.C
※ 液晶の表示例はトップの、131104付の写真を見てください。
■ 2013.11.5
・最終的な目標にしてきた、1台のハードウエアで、
実験テーマ41の「テンポ可変式MIDプレーヤ」と、今回の「256MAXループ音楽プレーヤ」(MP3・WAV・MID等再生可)
の機能を合わせ持つプログラムも考えてみた。
プログラムの切替は、電源ON時のSKIP SWの状態により切替えることにした。
SWを押さないで通常通り、電源をONした場合は、「256MAXループ音楽プレーヤ」のプログラムがRUNし、
SKIP SWを押しながら、電源をONした場合は、「テンポ可変式MIDプレーヤ」がRUNするようにした。
※ 以下に、ソースファイルを貼り付けておきます。
→ LoopPlayer256_and_VarTempoMID.C
← 実験テーマ1に戻る TOP PAGEに戻る 実験テーマ43へ →