5/12日記 ===== プログラム ===== * Tab5についてプログラムを書いてた。 * M5Unifiedというライブラリ使っている。 * https://github.com/m5stack/M5Unified * で、このライブラリはM5公式になったライブラリをベースにしてる。 * https://github.com/M5Stack/M5GFX * 更にいうとこのライブラリは個人作成のライブラリがベースになってる。(制作者は同じみたいだけど) * https://github.com/lovyan03/LovyanGFX * これらにはほぼ互換性があるので、サンプルが不足しているなら引っ張ってくればだいたい同じように動く。 * 問題なければ移植したサンプルをどっかに公開しようかと思うが、まぁ公開するまでもなく移植はできるでしょと思う。 * ただ注意なのが、どうも色深度や容量の扱いが違うときがあるみたいで、場合によっては想定どおりに動かない。 * 特にまだTab5対応は正確に言うと「していない」ので、今のところ少しおかしい動作もある。まぁそこは自分でカバー。 * とりあえず現状でも問題なく動作しているのでこれでOKとする。 ---- * Tab5の解像度は1280*720。M5Stackが320*240なので、長いほうが4倍、短い方が3倍。トータル12倍の画面サイズになる。 * 1ピクセルの大きさはM5StackCoreよりは小さいので注意。 * 画性能についてはそれに追従するかというと微妙かもしれない。とは言うものの答えは出てない。 * まず、メモリアクセスが大変に遅いらしく、領域の描画について大量のメモリにアクセスしようとすると遅い。 * よって、全画面描画と比較して、小さいスプライトを描画しそれを並べる方が(GPUで言うところの)フィルレートは早くなる。 * また、スプライトを最終的なディスプレイに乗せるときに遅いだけで、裏画面扱いで描画を追加することについてはほぼコストなし。 ---- * CPU演算については余裕がありすぎる。先ほどのスプライト上に描画する処理もそうだし、オブジェクトを大量に動かす際も描画に影響は殆どなし。(500個程度を動かしておくなら問題ない) * タイマ割り込みについてもかなり余裕で動かすことができ、1秒あたり1000回程度の処理がぶん回る。 * これならシンセサイザーを作ってもいい気がした。 * 音の読み取りはジャックがないので、まず音声を出力するところを優先する。 * 描画が間に合わないので、まずは線だけで波形を表現するということはできそう。 * まずタッチで動くシンセサイザーだとUIを作り込まないでよさそう。 ---- * ちなみにタイマ割り込みについては、デバイスのロック状況やアクセスタイミングが関連するらしく、デバイスの状態に関する関数や値を読み取ろうとするとリセットがかかる。メモリ違反とかの可能性がありそう。 * ということでタイマで実行するのは自分で確保した変数の処理がメインになる。 * タッチしたときの情報読み取りとかは、メイン関数経由での実行が間違いない。