★★★★★
最終作 The Power To Believeに先駆けてのミニアルバム。30分程度と非常に短いが、5曲目Eyes Wide Openが透明さの際立つ名曲、6曲目Shouganaiもよい。ちなみに日本版タイトルはなぜか「しょうがない」。そしてこのアルバムの目玉は9曲目Larks’ Tongues In Aspic (Part IV)。なんだよ前作の再録かよ〜と思ったら、ドス重さが5倍、ギターの爆裂度合いも激しく増し、前回のへぼいFuckin電子ドラムもなくなり重厚ドラムに切り替わっており、2000年代のクリムゾンでは最高の曲なのではないか。あとはThe Power To Believeのみ。期待膨らむ。
作者別: rokujo
The Rough Guide to the Music of Kenya and Tanzania(1996)
★★★★★
前半がケニア音楽と思われる。4小節程度の繰り返しをベースに、暑い国特有の雰囲気ののんびりした曲調が中心。どの曲もベースが上手い。標準的なロックミュージシャンやジャズミュージシャンより遥かに上手い。これはケニアという土地のせいなのか?マラソン速いのと関係あるのか?低音は体全体に響くので、非常に心地よい。後半がタンザニアと思われる、8曲目Tanzania Yetuでやられた!木のポコポコで萌え!激萌え!そこでさらにタンザニアヘイヘヘーーーイーーホワワワワーーーキリマンジャローーンゴロンゴローーウォォセレンゲーティーーーーヨロレイヒーーーと言われたら燃えるに決まってるではないですか!9曲目Wagogo Initiation Danceも曲名通り激アツの儀式音楽!最高!
緯度と経度の算出方法再考
Google MAPS APIで円を描きたい
によれば、経度1度と緯度1度あたりの距離は、異なる(当たり前か)。現在、x-y軸方向に同一倍率で路線図を描いている。つまり、xyどちらかが圧縮された路線図になってしまっている。七面倒臭いけどxy両方の倍率を用意して、それぞれ別個に単位当たりの長さを算出、xy別々に掛け算をしないといけない、ということか。
これも当然なんだろうけど、北緯・東経が変われば、単位当たりの長さも変わる。これは参った。単位当たりの長さが一定ならば、北緯・東経さえわかってれば、緯度・経度の差に倍率掛けるだけである基準点に対する絶対位置を一意に決められる。でも単位当たりの長さが変わるのであれば、
経度1度あたりの長さ(m) = (π * ER * (1 – e2)) / (180 * (1 – e2 sin2(θ))3/2)
緯度1度あたりの長さ(m) = (π * ER * cos(θ)) / (180 * (1 – e2 sin2(θ))1/2)
こんなの積分できないっす。。
θはほとんど変動しないと考えて、2点の単位当たりの長さの平均で近似しようかねぇ。まずは誤差がどのくらいになるかの調査をしなければいかん。
Ahmad Jamal – It’s Magic(2008)
★★★☆☆
Disques Dreyfus | Dreyfus Jazz – 20 Years の2枚目。うーん、これも微ハズレか?大丈夫かこのシリーズ。
古株のピアニストAhmad Jamalさんのかなり新しいアルバム。80歳を過ぎた今でも積極的にアルバムをリリースしているのはすごいです。でも、1,2,3曲目がひどい!リズム感なさすぎ!決めなきゃいけないところで全然決まらないよ!ピアノも時々バカみたいな大きな音を出すし!もう聞くのをやめようかと思った。4曲目からピアノソロになり、(リズム隊が目立たないから)若干持ち直すも、7曲目Arabesqueもまた8分音符連発が決まらない。ベターっとしたフレーズになってしまう。たぶんジャマルさんが年配特有?の演歌調のずれをやってしまうんだろう。8,9曲目が良かったので、最後まで聞いてよかったけれど、もっと高揚させてくれよぉ。
平日・休日ダイヤに対応、行先表示の省略に対応、DBの整備
六帖webアプリ
kickzone/TrainNavi2 · GitHub
DBを整備したら千代田線の行先表示の「代々木上原」の文字がでかくてそれがずっと動き回って怖いので、「代」の1文字だけ表示するモードを作成した。
次は拡大縮小とスクロール。仕事と並行して作業していたので2倍の労力が必要になった。もう疲れたので、平日はしばらく大きな更新はやめる。集中力もガタ落ち、勉強も身が入らずよくない。日曜日まで待とう。
Sonny Rollins – Saxophone Colossus(1956)
Beethoven, Friedrich Gulda(pf): Piano Sonata No. 30-32(CD12)
★★★★★∩(・ω・∩) (∩・ω・)∩
名曲しかない。。
まず切ない切ないメロディーで始まる30番。第1楽章、中盤からは曲調が変わり実質の2楽章目、いつものベートーヴェン節が大炸裂し、チャーラチャンチャンとダサさも完備。第2楽章は長大で10分超、しかも曲調がコロコロ変わる。しっとりとした前半から打って変わって後半は押し寄せる渓流奔流、まるで木曽川。7分半くらいでまた変わり、対位法堅苦しいゾーン+ダサゾーンを抜けて長大階段へ、、美しい。
31番は第1楽章がフラペチーノ、いやキャラメルマキアートか?というくらい甘い。後味を残したまま、またまた超ダサの第2楽章スケルツォ。マイムマイムみたい。繰り返しと謎のメロディー、激しいのかそうでないのか掴みきれない変わった曲。第3楽章は暗い歌風味のメロディーからフーガで盛り上がった後また歌、そして感動のラストへ。ラストがオケもびっくりの壮大さ。
32番は前評判通り、最高傑作といっていいと思う。第1楽章は原点回帰かと思うような激しい曲、俺たちのベートーヴェン的ダサメロ、無限回廊、激情、爆音、強烈テクニック、いままでのベートーヴェンの総結集といった曲になっている。そしてベートーヴェンが新世界の神となった第2楽章、なんとこの曲には、中盤にスウィングが登場する!!この曲ができたのは1821年なので、文字通り100年早い!しかも天にも昇るような完璧な曲で!信じられない。ウソだろって思った。マジであんたすげぇよ。スウィング地帯を抜けた後は、高音とトリルを主体とした気持ちの高揚をずーっと保つかのような流れが続いて、11分過ぎにトリルが途切れ、着地する。この着地した、と思われる感覚が、並じゃない。ラストの静寂にも驚く。この曲は、他のピアノソナタのどの曲とも違う。でも、ベートーヴェンの曲とすぐに分かる。
wikipediaを見たら参考文献に「『ジャズの起源はベートーベンにある』(田幸正邦 / 東京図書出版会 / ISBN-10: 4434020315 / ISBN-13: 978-4434020315 2002年)」って出てるし!!
グルダさんもずるいです。初期中期は、わざとなのか、爆音演奏を量産していたというのに、後期になったらタッチに憂いをもたせるのだもの。引き込まれるに決まっている。ピアノソナタを全部聞いてみて、ベストはこの、最後の1枚。時点で最後から2番目。とにかく後期の演奏が素晴らしい。前半はやや誇張しすぎなのではないかというくらい、派手でダイナミクスつけすぎだったけど、特に最後の3枚の演奏は意図的なのかバランスが取れておりしっくりくるし感動する演奏だった。
残りはピアノコンチェルト3枚。しかしこの演奏と量で3000円台ってのは出血大プライスだな。
行先表示
六帖webアプリ
kickzone/TrainNavi2 · GitHub
祝日なのでゆっくり仕事しながらちょこちょこと行先表示を実装、と思ったら、夜に仕事がどっと来て涙目。行先表示まで実装はできた。これで、ある程度見た目がよくなった。
列車の行先名を普通の順序で並べる(相模大野)か、逆順で並べる(野大模相)かの境目を、線路が右下45度の直線より下になるかどうか、にした。
野大模相\相模大野
文字は逆に、右上45度の直線より下になるかどうかが分かれ目。実装をけちって、駅停車時の状態の2駅間の表示を基準に、線路上はその中間になるようにしたら、藤沢や片瀬江ノ島あたりの線路がちょうどそのくらいの角度だったので、意図せず駅名が反転アニメーションするようになった。これはこれで面白いかも。
ところどころ連絡する列車の参照が取れてないのかDBが間違ってるのか、行先表示が間違っているところがある。次回はこのデバッグからか。
javascriptでべき乗
javascriptで ^ という演算子はべき乗には使えない。XORの意味しかない。
Math.pow(底、指数)
で計算するしかない。二次元ベクトルの長さを求めるには
var nrmp1p2 = Math.sqrt(Math.pow(p1p2.x, 2) + Math.pow(p1p2.y, 2));
と書く必要がある。面倒。。関数を作った方がよさそうだ。
デバッグと今後の予定
六帖webアプリ
kickzone/TrainNavi2 · GitHub
用事を済ませてからデバッグ。一応、動作するようになった。今回のデバッグで、よーく覚えておかなければいけないことは、
・EaselJSでテキストオブジェクトを扱う際は、オブジェクト自体の大きさに気を付けること。点と点を結んだ直線と比べると、同じ座標にオブジェクトを置いても、getMeasuredWidth()/2, getMeasuredHeight()/2の分だけ、右下にずれる。これは、四角形などのShapeにも言えること。
・さらに、右下、ということに気が付いてなかった。そう、パソコンのXY軸は、ふつーの数学で使うXY座標軸とは違う。Y軸が180度反転している。ここでハマった。左90度回転のベクトルを作ろうと思ったら、通常の座標系でいう、右90度回転と同じ計算をしなければいけない。ベクトルの計算例で作成したコードを載せておきます。
//ベクトルの長さを計算 function norm(p){ return Math.sqrt(Math.pow(p.x, 2) + Math.pow(p.y, 2)); } //p1p2, p3p2の角の二等分線を単位ベクトルで得る function calcBisectUnitVector(p1, p2, p3) { //単位ベクトル同士を足すと出来上がり var p1p2 = {x: p2.x - p1.x, y: p2.y - p1.y}; var nrmp1p2 = norm(p1p2); var p3p2 = {x: p2.x - p3.x, y: p2.y - p3.y}; var nrmp3p2 = norm(p3p2); var bisect = {x: p1p2.x/nrmp1p2 + p3p2.x/nrmp3p2, y: p1p2.y/nrmp1p2 + p3p2.y/nrmp3p2}; if(bisect.x == 0 && bisect.y == 0){ //1直線上に3点があった場合、打ち消しあって0になってしまう //このときはp1p2の法線をリターン return calcNormalUnitVector(p1, p2); } var nrmBisect = norm(bisect); bisect.x /= nrmBisect; bisect.y /= nrmBisect; //p1p2の左側に二等分線が来るようにしたい //p1p2と外積をとって、正なら反転させる var cp = p1p2.x * bisect.y - p1p2.y * bisect.x; if(cp > 0){ bisect.x = -bisect.x; bisect.y = -bisect.y; } return bisect; } //p1p2の法線単位ベクトルを得る //左90度回転 function calcNormalUnitVector(p1, p2) { //(x, y)の左90度回転ベクトルは(-y, x) //しかしながら、PCの座標系はyが反転しているので、(y, -x)にしないといけない var normalVec = {x: p2.y - p1.y, y: p1.x - p2.x}; var nrmNormal = norm(normalVec); normalVec.x /= nrmNormal; normalVec.y /= nrmNormal; return normalVec; }
前回のTrainNaviと比べると、JSONをやめて、サーバーとの通信の冗長性をひたすらなくしたことで、ローカルでさえ10秒ほどかかっていたローディングが、無料サーバー経由でもほんの1秒ほどで済むようになった。自分でもびっくり。一方、描画はのろい。行先表示もまだ未実装だというのに、15fpsでもCPU使用率が20%台をキープしている。非常に簡単なオブジェクトしか描画してないんだから、もっと軽くできるはずだ。例えば列車はテキストじゃなくてShapeにした方がいいかも。キャッシュ機能も使うべきかもしれない。
今後の予定:(優先順)
- 行先表示
- 拡大縮小、スクロール
- DB拡充
- 駅名表示(どこに表示するかが問題)
- パッケージファイルの読み込み
- 動作速度の改善
追加したい機能(優先順)
- スクロールに合わせた画面表示をする。画面にないオブジェクトを削除して動作を軽くする。スクロールして画面内に入ってきたところではじめて表示する。
- 通過点のエディット機能、ベジェ曲線で完璧な線路を引くためのGUI作成。ベジェ曲線 – diary 六帖
- GoogleMapと連携する。地図上を列車が走る。
- スキン機能。あらゆる路線図を作れるようにする。
- ターゲットとなる列車を決めて、強調表示する。今どのあたりを走っているかが分かる。
- 駅をクリックしたら情報を表示する。あと何分で電車が来るとか、目的地を決めたらそこまでかかる時間とか。
- 列車をクリックしたら情報を表示する。現在速度とか表定速度とか、次はどこに止まるかとか。
- 運賃を表示できるようにする。FareMap(自作)の機能を全部移植する。
- 時刻表を自動生成する。
- この際、NAVITIMEみたいな最短経路・最安経路生成機能も付けてしまう。