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