SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|

2018-10-21(Sun) タイヤローテーションほか

  10000km走ったということで、ロードスターのタイヤのローテーションを行った。

  最近のクルマにはジャッキやスペアタイヤが搭載されておらず、普通は自分でできないのだが、軽自動車のジャッキと、オークションで落とした適当なテンパータイヤを駆使して、自分でやるのであった。

  画像の説明

  ひとつ外しては、タイヤの状態を見つつ、溝にハサまった小石を除去し、場所を入れ替える、というのをやったんだが、それなりの重労働である。完了後、空気圧を調整しなおしたら、1時間強もかかった。明日、筋肉痛だな、これは。

  その後、ディーラーでオイルとエレメント交換を依頼。作業中に新しい1.5のガソリンのデミオにカミさんを試乗させる。普段が古いミラココアなんで、静かさやしっとりした乗り味に感動していたが「買うならMT」と断言したのには驚いた。しかし、車格にしてはダントツのデキのクルマだよなぁ、デミオ。でも、ちょっとスーパーに行くだけのために買うには、もったいなすぎるんだよなぁ。


2018-10-16(Tue) メトロノームを立体化する

  先日、思ったとおりにメトロノームを完成することができた。で、実際、それを使って歌う練習をしてみると、普通にカラオケの伴奏に合わせて歌うより上手く歌えているような気がした。おそらく、伴奏がないぶん、自分の声がよく聴こえること、好きなキーで歌えること、リズム音が単純なのでリズムが取りやすいこと、などに起因する結果なのではないかと思う。

  逆に言えば、伴奏のキーを適切に変更するか、自分が伴奏にキーを合わせること、伴奏からキチンとリズムを聴き取ること、ができれば、より上手く歌えるということになるわけだ。なるほど。

  んが、またもや、性格的に意識をテクノロジカルな方向に向ける人であるところの自分は、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ビデオ形式に変換する。

  こんな感じに仕上がった。悪くない。パッケージを置いておく。

 

  スプライトを実装したことで、ちょっとしたゲームも作れるプラットフォームになり、そのプレイを録画することもできる。我ながら、よく手に馴染むライブラリができ上がり、とても気分がいい。

  ……しかし、やりたくなったからやっちゃったが、元はといえば、メトロノームを作ったのは、ボーカルの練習の際のリズムをなんとかするためだったワケで、こんなことで気分をよくしているのは目的外なのであった。

  とはいえ、練習もしていて、着実に進捗している。例えば腹式呼吸ならば、腹式呼吸を必要以上に意識した練習を繰り返すと、いつの間にか無意識に行うクセがついてくる。すると、意識を他に向けられるようになるので、鼻腔共鳴や、課題曲中の修正すべき歌唱を意識した練習ができるようになり、それもいつの間にか無意識に行えるようになってくる。

  そうなると、サビに思い切った声を張り上げつつも、伴奏からリズムを聴き取ることに意識を向けられるようになって、いつしかリズムも多少は改善してきたのであった。

  というわけで、先に「ボーカルはスポーツに近く、ボイストレーニングとは『発声器官』を鍛えることだ」と書いたが、さらに「歌うという運動を繰り返すことで、小脳に学習を促す、つまり反復練習が効果的」という面でも、やっぱりボーカルはスポーツなんだなぁ、と気がついた次第である。


2018-10-09(Tue) 肘置きアルカンターラ化

  いまさらながら、ロードスターのサイドブレーキレバーを交換するため、整備書を片手にセンタコンソール付近をバラしてみた。

  とりあえず、偵察のためで、輪止めとかの準備はしていなかったので、サイドブレーキレバーは交換しなかったが、内装をバラすための知見が得られたことは収穫だった。

  画像の説明

  ちなみに、運転席側シートとセンタコンソールとの間に内張りがベロベロしている部分があるのだが、実はそれはサイドブレーキレバーを固定しているネジへアクセスするためのものなのであった。ま、剥がしたところで、ギリギリラチェットが入る程度で、作業性は悪いのだが。

  今回、センタコンソールをバラしたついでに、小物入れのフタを、事前に買っておいたアルカンターラバージョンに交換した。標準のものはクッション性がゼロなので、長く運転していると肘が痛くなるのだが、これで解決だな。


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をレンダリングする。こんな感じ。

  画像の説明

  完全に8ビットワールド全開である。だが、コレがイイ。

  速いテンポにしても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-09-30(Sun) 卓上カレンダ定期保守

  そろそろ、ということで、4ヶ月ぶりに、またもや自作の卓上カレンダを印刷する。思い返せば、自作のカレンダを使うようになって、もう丸2年が経つのか。今期は「エイリアンシンドローム」「ホッピングマッピー」「レイフォース」「Mr.Do」モチーフである。

  画像の説明

  生成されたPDFを置いておく。

  フォント形状が独特であることを優先して選択しているので、今回は各ゲームへの思い入れはそれほどでもない。

  それでも「エイリアンシンドローム」は好きで4面ボスくらいまではやったかな。「ホッピングマッピー」はお試し程度で数回。「レイフォース」は結構やって5面の道中くらい。「Mr.Do」は……実はこれ隠れた名作なんだよね。なにせすべてにおいてテンポが軽快で爽快感があり、パターンにハマらず、実に飽きがこないのだ。

  デザイナ自身が「『ディグダグをパクれ』という上からの指示で作った」と言っているらしいが、完全に別の作品に昇華しているといえよう。快作である。

本日のツッコミ(全1件) [ツッコミを入れる]

nekosan [3月の図柄でグッときました。 あのゲーム、ゲーム性自体もよかったですし、いろいろ裏技が発見されているのもよかったな..]


2018-09-25(Tue) 秋月の彼岸花、咲いた

  先日咲いた白い彼岸花に続き、赤い彼岸花も咲いた。

  画像の説明

  去年は二輪が咲いたが、今年は一輪だけ。それにしても正確な時期に咲くものだな。

  実は、先日には、この向かいの花壇に赤い彼岸花が一輪だけ咲いていたりする。彼岸花は球根で増え、種子は飛ばないはずなのだがナゼ? 咲く時期が違うことから、無関係な個体だとは思うのだが。

  誰か勝手に植えたとも思えんが……まぁ、楽しみが増えるのは結構なのだけれど。


2018-09-22(Sat) チープなDTMアプリを修正

  最近、カラオケというか、ロックなボーカルへの興味が閾値を超えてしまい、本格的に練習を始めつつあったりする。

  が、これまで自分の音楽に対する意識は、エモーショナルな方向というよりは、音楽的文法や、空気の波形としての音など、テクノロジカルな方向を向いていたので、イザ始めるとなるとわからないことだらけ。なんとなくわかったのは、ボーカルはスポーツに近いということ。ボイストレーニングというのは、文字通り、トレーニング、主に「発声器官」を鍛えること、なんだな、と。

  などと知りつつも、性格的に意識をテクノロジカルな方向から外すのは難しく、ボーカルの音を採るツールを作ったり、解析したくなってしまうのであった。で、取り出したのが、つい先日も、体操するための楽曲を作るのに利用した自作のDTMスイートである「cuickdtm」

  とりあえず、俗に言う「hiA」と呼ばれる、男性のカラオケにおいて、音の高さがひとつの壁となる音階「440Hz/A4」を出してみようと「melod/konk」を立ち上げてみた……が、謎すぎるキーボードへの音域の割り当てと、謎のオクターブ表記に、過去の自分の音楽知識のなさを実感することになる。

  つうわけで、キーボードへの音域の割り当ては、一般的なボーカルの音域に合わせた「F2/lowF〜A#5/hihiA#」に変更、オクターブ表記も、数字を後付けする形に是正した。パッケージを置いておく。

  画像の説明

  以前は、キートップのプラスチックの黄ばみを利用して半音キーを識別できるようにしていたのだが、いつしか全部が黄ばんでしまい、識別できなくなってしまっているので、とりあえずシールを貼ってみる……が、ダメだな、コレ、すぐに取れてしまう。

  画像の説明

  ちなみに、実際に出ている音が正しいことの確認のため、PCからのライン出力をライン入力につっこみ、自身で再生した音を自身で録音、wavファイルとして保存、audacityでスペクトル解析してみたところ、ちゃんと、440Hzにピークが来ていた。よっしゃよっしゃ。

  画像の説明

  で、リニューアルしたcuickdtmのお試しとして、レミオメロンの粉雪という曲の音を採ってみる。なんでも、この曲、サビに例の「hiA/440Hz/A4」が出てくることで有名らしい。konkではちょうど「Y」のキーが「hiA」になる。弾いてみるとこんな感じ

  メジャーな曲だし、練習の課題曲にしようかとも思ったが、歌詞にイラッときてヤメた。なんじゃ、この甘ったるいのはッ! ラララィラララィてッ!オレは「テトラポット・メロン・ティ」みたいなじゃなく「デトロイト・メタル・シティ」みたいのを歌いたいのだッ! 同じラララィなら、ラィラィラィ、ララ、ララララーィ、ロシアンルーレット、マイライフどわッ!


2018-09-06(Thu) 古典的ボーカルキャンセラで掛け合いカラオケ

  先に、カラオケ音源の入手方法に際して「古典的なボーカルキャンセラ装置を通す方法があるが、それを通したら極端に音質が落ちた記憶がある」などと書いたが、それは往年の「メガCDカラオケ」に搭載されていた機能に基づいた記憶だったりする。

  件の装置は、結構なレアモノな気がするが、当時、何故か持っていた。結局、お試し程度にしか使わなかったのだが、どういう経緯で買ったのかもよく覚えていない。ただし、定価で買うほど、熱心な気持ちではなかったことに間違いはない。

  でもって「メガCDカラオケ」には、歌入りCDをセットして、ボーカルキャンセルボタンを押すと、ボーカルが消えるという機能があったのだ。しかし、それを使うと、確かにボーカルパートは小さくなるものの、全体としてかなりコモった音になった記憶がある。おそらく、センタパートのキャンセルとイコライザによる特定音域の音量抑制の複合効果と推測する。

  んが、時は過ぎ、今やアナログ処理でなく、wavファイルをラクラクとデジタル処理することが可能な時代、自分でボーカルキャンセルフィルタを書いてしまうことは容易ではないのか? ちょうどいいことに、自分はcccdctを作る過程でlibwav.rbという自製のwavファイル操作ライブラリを書いていることだし、それを使えば数行で書けてしまうのではないのか?

require 'libwav'
ARGV.size < 1 and (warn('Usage: vocal_cancel target.wav > karaoke.wav'); exit)
wav = WavFile.new(ARGV[0])
wav.save_phrase_filter {|gain|
    gain[1] = gain[2] = gain[1] - gain[2]
	gain
}

  わっ、ホントに数行で書けてしまった。肝心のフィルタ処理なんてたった1行だ。まぁ、実際にはlibwav.rbの側にsave_phrase_filterメソッドやencode_gainメソッドを追加しているし、オーバフローの処理も必要なのでガチで1行というわけではないが。本質的にはコレだけだ。

  で、フィルタを通してみる……

$ ./vocal_cancel kumono_ito.wav > kumono_ito_vc.wav

  ……おおおぉおぉッ! 消えたッ! 思った以上にシッカリと消えたぞッ!こんなフザけたような1行のコードなのに、素晴らしい仕事っぷりである。性質上、モノラルになってしまうので、音の広がりはなくなってしまうが、コモった音になった感じはしない。

  サンプルとして、筋肉少女帯の「蜘蛛の糸」の一部を上げてみる。元の音フィルタ後の音。「笑ってろ、見てろよ」は、原曲で左右にパンしているので残っているが、その前の「大丈夫、大丈夫」はキレイに消えている。

  ということはだ、だから、アレだ。「ハッピーアイスクリーム」を食わせれば、女子の合いの手の部分だけ、キレイに残るんじゃないだろうか……元の音フィルタ後の音。残ってるーッ!

  スイッチのカラオケでは、サブのボーカルまでカラなので、筋少の曲だと、ひとりで歌うとカッコのつかない曲が多くなるんだよな。しかし、このフィルタで消せば問題ない。それより、スイッチのカラオケだと、オケのイメージが原曲とかなり異なるものも多いが、それを回避できるのもイイ。筋少の曲は、ボーカルの音消えた時、やっとオケの凄さに気づくのさ。

  まてよ、ならば「221B戦記」もどうにかしたいところだ。普通にフィルタをかければ、神谷明も宮村優子も水木のアニキもいなくなってしまう。だが、こちとらには波形を見聴きしながら自在に編集できるcccdctと、さっき作ったばかりのボーカルキャンセルスクリプトがあるんだからッ!それをくっつけちゃえばいいのよーッ!

  というわけで、新たにcccdctにマーク箇所毎にボーカルキャンセルのオンオフを切り替えて出力する機能を実装してみた。

  画像の説明

  元の音フィルタ後の音。音の切り替わりに多少の違和感があるものの、ちゃんと掛け合いカラオケになっているんじゃないだろうか。パッケージを置いておく。

  まぁ、実際、そんなに「221B戦記」を歌いたいかと言ったら、まぁ、別に、そうでもないんだが……。


2018-09-05(Wed) 秋月の彼岸花、白い花の咲く頃

  一昨年に植えたものの、昨年咲かなかった白い彼岸花の球根だが、気がつくと咲いていたが、運悪く猛烈な台風によりイキナリの横倒し。

  画像の説明

  仕方ないのでサッサと花瓶に移したが、一応は立派に咲けたのでよかったかな。

  画像の説明

  来年も頑張ってくれよ。


2018-09-02(Sun) シャウト・カラオケ・オン・ザ・カー

  もうだいぶ前からなのだが、筋肉少女帯が好きだ。

  出会いは対戦格闘ゲーム「ストリートファイターII」のCMソング「バトル野郎~100万人の兄貴~」のシングルCDの購入だった。そしてしばらくして、なんとなく「筋少の大水銀」を買って、本格的に気に入ってしまうのだ。

  CDを買う前は「ガンガンとやかましいパンクロック&コミックソング」というネガティブイメージだったのだが「君よ!俺で変われ!」を聴いて気がついたのだ。こりゃ、単なるウケ狙いの歌詞なんかじゃなく、ヒネって一回りした直球のラブソングなんじゃないかと。

  気に入ると歌ってみたくなる、が、基本がシャウト系ボーカル。普通の歌い方しても意味がない。しばらく遠慮していたのだが、とあるカラオケでヤケクソ状態に陥り「君よ!俺で変われ!」を歌ってみたところオオウケ(ある意味で、だが)。

  その後、カラオケに行く機会は激減したが、いつか歌いこなしたいと思って、ちょいちょいシャウトを練習しつつ……あれ? 本当にあとからジワジワと来てしまったぞ。今さらだが「心の折れたエンジェル」「踊る赤ちゃん人間」とか曲も歌詞もいいなぁ。

  しかし、大槻ケンヂのボーカルはヘタウマのようでそうでもないのだ。もちろん、普通に歌うのも簡単ではないのだが、シャウトにはまた別の難しさがある。オマケにどうしても声量が上がるので、自宅での練習はしにくい。かといって、カラオケボックスに通えば金がかかる……となれば、クルマがベストなわけだ。愛車がオープンなだけに渋滞中にシャウトしてたらヤバい人だが、田舎道を走行中なら思い切りシャウトしても特に問題ない。

  というわけで、曲を流して一緒にシャウトしていたのだが……ボーカル入りだとどうしても耳がそっちを拾ってしまって、練習にならないんだな、これが。ここは、絶対にカラオケを流すべきなのだ。つまり、カラオケ・オン・ザ・カー。

  さて、そうなると、次はどうやってカラオケ音源を入手するのかということになる。ひとつは、古典的なボーカルキャンセラ装置を通す方法があるが、それを通したら極端に音質が落ちた記憶がある……ん? そういえば、以前にNintendoのWiiUでちょっとカラオケやった気がする。今だとスイッチ版が出ているんじゃないだろうか? そいつを録音してしまえばいいではないか。

  と、ネットで調べると……あるッ! しかも「夏の大型リニューアル記念キャンペーン」とやらで、無料開放デーがあるらしい! いつ!? って、今でしょ!! って、残り15分じゃねぇかよ、気づくの遅えよ……と、いうのが昨18日の夕方の話。カラオケアプリ本体をダウンロードして、1曲試したところで終了してしまった。なんつぅタイミング。

  画像の説明

  しかし、通信カラオケだけあって、曲のカバー率はスゴいな。筋肉少女帯だけでも百曲以上ある……というわけで、日を改め、イザ録音するのであった。チケットは3時間をチョイスして324円。基本的な手口はコレ。今回は、テレビのライン出力をLinuxノートのマイク入力に挿し、GUI上で「サウンドの設定」の「入力」の「入力レベル」を調整してから「$ rec -c 2 -r 44100 karaoke01.wav」という感じで録音。録音したらcccdctでチョキチョキ切ってlameでmp3化。

  画像の説明

  cccdctは、実に14年前に作ったプログラムだが、我ながら使えるヤツだ。今回、曲を自動分割するサポートプログラムauto_splitを作りつつ、分割マーカを目視できる機能を追加してみた。

  改めて、スイッチ版のアプリも通信カラオケだけあって、カラオケボックスの操作とそう変わりないのね。人気ランキングも出る。筋肉少女帯だと「機械」「君よ!俺で変われ!」「混ぜるな危険」「ゾロ目」「バトル野郎~100万人の兄貴~」「そして人生は続く」あたりが上位を占めている。自分の好きな曲とほぼ一致しているなぁ。しかし、どんな人が歌っているのだろう。シャウトも再現してんのかなぁ。

  しかし、当然ながらシャウトはノドに悪い。どうしたって悪い。やりすぎれば声がガラガラになって、職場で怪訝に思われるので注意が必要だ……っていうか、クルマでカラオケ気分の人って、別に珍しくないよね? ……思いっきりシャウトしてる人も、しかもオープンカーで……そ、それほど珍しくないよね? ……ねぇッ?