メトロノームを自作する例のボーカルの練習のため、ちょくちょくひとりでカラオケに行っては、自分の歌を録音しては、ヘコみまくる毎日なのだが、例によって、音程もダメだが、リズムもダメなワケだ。リズムをなんとかするにはどうするかというと、メトロノームを使って練習する方法があるらしい。なると、性格的に意識をテクノロジカルな方向に向ける人であるところの自分は、メトロノームを作ってしまいたくなってしまうワケだ。んが、イマドキだと「メトロノームを自作」するなどというと、その実現方法は無数に考えられる。メトロノームの「コッ、コッ、コッ、チーン」をプリセットのリズムパターンに追加、それを指定し、ひたすらダミーのコードを並べる。:これで、テンポごとに複数バージョンのmp3を作り、PSPに入れれば......と、ここでフト思いついた。PSPのミュージックプレイヤは再生速度固定なのだが、ビデオプレイヤは上下ボタンにより0.5倍〜2.0倍まで0.1刻みで再生速度可変なのだ。いうことは、mp3でなくmp4を作れば、テンポごとに複数バージョンを作る必要がなくなる。なりゃ、ffmpegでmp3をmp4に変換すればいい、ということになる。んが、せっかくビデオ形式であるmp4にするなら、映像の方もどうにかしたい。いや、この時点で「できるだけラクに」ではなくなっているような気がするが......まぁ、やりたくなったらやっちゃうわ。アニメーションgifは作ったことがあるが、mp4ビデオを作ったことはない。んが、似たようなもんだろう。ビデオのソースは......自分が指揮棒を振ってるのを実写撮影してもいいのだが、ここはCGで行こう。レイトレーシングで......はなく、いつものTrueLegacyGraphicsCairoを使ってpngをレンダリングする。完全に8ビットワールド全開である。速いテンポにしても10分以上は連続して使いたいということで、テンポ120で1600秒分のpng画像をレンダリングすることにした。24fpsなので38400枚。これにさっきcuickdtmで生成した1600秒分のwav音声をくっつけて、ffmpegでPSPで再生可能なmp4ビデオ形式に変換する。metronome120_psp.mp4こんな感じに仕上がった。ところで、メトロノームとは関係ないが、前回のmelodにはちょっと問題があって、音が切れ切れになっていたのも修正した。メトロノーム生成スクリプト込みで、cuickdtmのパッケージを置いておく。肘置きアルカンターラ化いまさらながら、ロードスターのサイドブレーキレバーを交換するため、整備書を片手にセンタコンソール付近をバラしてみた。偵察のためで、輪止めとかの準備はしていなかったので、サイドブレーキレバーは交換しなかったが、内装をバラすための知見が得られたことは収穫だった。ちなみに、運転席側シートとセンタコンソールとの間に内張りがベロベロしている部分があるのだが、実はそれはサイドブレーキレバーを固定しているネジへアクセスするためのものなのであった。ま、剥がしたところで、ギリギリラチェットが入る程度で、作業性は悪いのだが。今回、センタコンソールをバラしたついでに、小物入れのフタを、事前に買っておいたアルカンターラバージョンに交換した。標準のものはクッション性がゼロなので、長く運転していると肘が痛くなるのだが、これで解決だな。メトロノームを立体化する先日、思ったとおりにメトロノームを完成することができた。実際、それを使って歌う練習をしてみると、普通にカラオケの伴奏に合わせて歌うより上手く歌えているような気がした。伴奏がないぶん、自分の声がよく聴こえること、好きなキーで歌えること、リズム音が単純なのでリズムが取りやすいこと、などに起因する結果なのではないかと思う。逆に言えば、伴奏のキーを適切に変更するか、自分が伴奏にキーを合わせること、伴奏からキチンとリズムを聴き取ること、ができれば、より上手く歌えるということになるわけだ。んが、またもや、性格的に意識をテクノロジカルな方向に向ける人であるところの自分は、TrueLegacyGraphicsシリーズを使いながら、サクッとそれの3D版が作れないことにイライラきてしまった。んなことにイライラきてないで、当初の目的である歌の練習をすべきなのはもっともなのだが、自宅で大声を出すわけにもいかず、意識がそっちに向いてしまったのだから仕方がない。基本、TrueLegacyGraphicsシリーズは、最初にrequireするライブラリを入れ替えるだけで、描画エンジンを「curses」「Tk」「GTK2」「cairo」「OpenGL」の5種から選べる仕様になっていて、それに応じた描画結果が得られるようになっている。実際、深さ方向の指定だけちょいと追加し「OpenGL」に入れ替えれば、即座にこのような結果が得られる。んが、動かす、つまり、3Dアニメーションをさせるに当たって、考え込んでしまったのであった。いう形で実装したらよいのだろうと。考えてみれば、LINE文を筆頭とした「イニシエのグラフィック描画関数」とは「画面上に描画をする関数」である。それでアニメーションを生成したい場合、画面の全クリアによる何もない状態に線などを描画して画像として保存、画面の全クリアによる何もない状態に「少しずらして」線などを描画して画像として保存......を繰り返し、最後に画像をアニメ化するわけだ。3Dアニメーションを生成する場合、フレーム毎に画面の全クリアによる何もない状態から始めるわけにはいかない。フレーム毎にすべての形状データをGPUに送り直していては重すぎるからだ。よって、最初に画面の全クリアによる何もない状態に形状を配置したら、以降はフレーム毎に「一部の形状のみ消去してから」少しずらして形状を配置して......を繰り返す必要が生じる。実はこの「消去」という概念が「イニシエの描画関数」には存在しないために、実装に当たって途方に暮れてしまったわけだ。一部のマシンの「イニシエの描画関数」には「形状を動かす」という概念を持ったものがあったのだ。それは「スプライト」である。描画の際、必ず過去の自分の消去が伴い、他の「イニシエの描画関数」の描画とも干渉しない。スプライトという概念を導入すればいいのだ。メトロノームの場合、本体の多角形はこれまで通りに描画、動く腕の部分だけスプライトでの描画、という扱いにすればいいのだ。これを思いつくのには時間が要ったが、その実装に当たっても、相当に頭をヒネることになった。各種形状を描画する関数は書いてあるので、同じような処理は絶対に書きたくない......が、結局はうまくいった。クラスの内部構造のみ、関数の分割位置を変えただけで、ほぼ完璧に必要最小限の差分だけコードを書く形で実装できた。我ながら興奮に値するdiffが仕上がって、脳内麻薬が出たわ。後は「表示内容を画像として保存する」関数を実装し、コールバック関数からフレーム毎に呼んでやり、テンポ120で1600秒分のpng画像をレンダリング、cuickdtmで生成した1600秒分のwav音声をくっつけて、ffmpegでPSPで再生可能なmp4ビデオ形式に変換する。こんな感じに仕上がった。パッケージを置いておく。スプライトを実装したことで、ちょっとしたゲームも作れるプラットフォームになり、そのプレイを録画することもできる。我ながら、よく手に馴染むライブラリができ上がり、とても気分がいい。......しかし、やりたくなったからやっちゃったが、元はといえば、メトロノームを作ったのは、ボーカルの練習の際のリズムをなんとかするためだったワケで、こんなことで気分をよくしているのは目的外なのであった。いえ、練習もしていて、着実に進捗している。腹式呼吸ならば、腹式呼吸を必要以上に意識した練習を繰り返すと、いつの間にか無意識に行うクセがついてくる。すると、意識を他に向けられるようになるので、鼻腔共鳴や、課題曲中の修正すべき歌唱を意識した練習ができるようになり、それもいつの間にか無意識に行えるようになってくる。なると、サビに思い切った声を張り上げつつも、伴奏からリズムを聴き取ることに意識を向けられるようになって、いつしかリズムも多少は改善してきたのであった。いうわけで、先に「ボーカルはスポーツに近く、ボイストレーニングとは『発声器官』を鍛えることだ」と書いたが、さらに「歌うという運動を繰り返すことで、小脳に学習を促す、つまり反復練習が効果的」という面でも、やっぱりボーカルはスポーツなんだなぁ、と気がついた次第である。タイヤローテーションほか10000km走ったということで、ロードスターのタイヤをローテーションすることにした。ディーラーに依頼してもいいんだが、どうしても自分でやってみたかったので、これまでアレコレと考え、準備を積み重ねての実施である。いうのも、最近のクルマにはジャッキもスペアタイヤも搭載されていないのだ。ジャッキは軽自動車に搭載されているものを流用するとしても、スペアタイヤの流用までは無理。タイヤサイズの違い以前に、ある程度以上の大きさのホイールでなければ内径が足りず、ブレーキキャリパに当たって装着できない。ブレーキディスクが大径なので、ホイールは16インチ以上である必要があるのだ。一応、裏返しにして装着するという裏ワザも思いつきはしたが、ハブボルト痛めたら元も子もないのでやめといた。オークションで適当な16インチのテンパータイヤを落札。トヨタのbB用らしき105/70D16というモノ。んが......ブレーキキャリパに当たるやんけ......ホイールの内側には凹凸があり、内径の大きい部分ならば、わずかにキャリパにコスりつつもハマるので、タイヤのローテーション用には使えないことはないが、テンパータイヤとして走行に供することはできない。ひとつ外しては、タイヤの状態を見つつ、溝にハサまった小石を除去しては、場所を入れ替える、というのを繰り返す。それなりの重労働である。ローテーションの完了後、空気圧を調整しなおしたら、1時間強もかかってしまった。明日、筋肉痛だな、これは。最後、左前のテンパータイヤを外したら、わずかにコスったキャリパのカドに、ホイールの内側の黒い塗装が付いてしまっていた。ほぅ、これが噂のキャリパペイントというヤツだな(違)。大丈夫、すぐに剥がれるらしいし(大違)。その後、カミさんの運転でディーラーまで行ってオイルとエレメントの交換を依頼。作業中に、新しい1.5リッターのガソリンエンジンのデミオにカミさんを試乗させる。普段、古いミラココアに乗っているんで、静かさやしっとりした乗り味にひとしきり感動しつつ、AT車に試乗しながらも「買うならMT」と断言したのには驚いた。もって、デキすぎな傾向である。こんなことになろうとは。車格にしてはダントツのデキのクルマだよなぁ、デミオ。スーパーに行くだけの用途に買うには、もったいなすぎるんだよなぁ。[>「買うならMT」と断言したのには驚いた。ブラザーミュージアム再びネットニュースで「110周年企画展」「ブラザー製品をモチーフにしたノートをプレゼント」と聞いて、再びブラザーミュージアムを訪れることにした。「ブラザー製品のモチーフ」には、あの「TAKERU」が含まれている。ウチのガキに「ノートを200円で買い取る」という協力(?)を願って、イザ2冊ゲットするのである。「JOYSOUNDモチーフ」ならわからんでもないが......まーしゃーないか。展示室に入ると、TAKERUの実機の展示場所にサンプルとしてのノートが置いてあった。ドット絵っぽくて、なかなか秀逸なデザイン。結局、少し展示を見て回った後、ガキはタイプライターモチーフ、自分はラベルライターモチーフのノートをもらって帰った。ちなみに、ガキはタイプライターモチーフのノートが気に入って、買い取りを拒否。気に入ったなら、いいんじゃないかと。1.8.7-p357。