2007年12月29日土曜日

TTAを聞くための環境構築

前回、開発者的な視点での切り出しから、TTAを紹介しました。
今回はデータ作成から、データ再生までを紹介したいと思います。
まず、TTAファイルを作成するためのソフトウェアが必要です。
公式サイトにTau Producerというツールがあります。
ここにプレーンなWavファイルを指定することでTTAファイルを作ることが出来ます。
次に再生ソフトですが、これも公式サイトにプラグインがあります。
プラグインはいくつかの再生ソフトに向けて作られています。
当方は、QCDことQuintessential Playerを使っています。
NDSで鳴らせる音楽フォーマットですが、NDSでしか聞けないのでは不便ですのでPCにも再生環境はあったほうがいいと思います。

追記 ... 確認のため、QCD+TTAプラグインで再生した場合、先の32768hzと16384Hzのデータは正しく再生できませんでしたorz

NDSでのTTA再生 - ステレオ対応の巻き

とりあえずスムーズに鳴った先日からちょっと進歩しました。
ステレオのファイルが鳴らせるようになりました。
次は16ビット再生かな。

[追記...2007/12/29 12:12]
実行ファイルとソースをアップしました。
TTATest 2007.Dec.27(Zip形式/1.18MB)

2007年12月28日金曜日

次の10年に向けて(2)

自分の会社に期待をかけて裏切られた人が抱くねじ曲がった考え。その2。

自己負担も含めて、いつか会社がクリーンな経営を行うとずいぶん長い間信じていた
アホみたいに期待しつづけて、結局変わらなかったワケだけど、世の中そういうものなのか。
諸先輩がヘドロの河にどっぷり浸かっているところに救いの手を差し伸べてくれたのも振り払っていた自分が如何に間違っていたか。
さて、そんな会社や自分のDQNっぷりや痛い思い出をだらだら書き連ねることが目的では無いので本題に。
古い言葉に「十年一昔」という言葉がある。
プログラマに憧れて、仕事にして十年ぐらいになる。
たくさんの先輩、後輩、同期のエンジニアに出会って勉強させてもらった。
自分のよいところを認めてもらえたこともあれば、悪いところを指摘され何も言えなかったこともあった。
自分の考えでは絶対に間違っているとしか思えないのに、立場やルールに護られた人や組織をたくさん見てきた。
逆に、自分の正義が周囲も認める正義で「この人のようになりたい」と頷かされる社外の営業の人とかもいる。
自分の会社にいなくなってしまった(*1)のが残念。と言うか、その人を知ってる人はみんな早い段階で辞めていっている。それぐらい勢いのあるカリスマだった。
これからも勉強することは多いし、納得できないものに葛藤すると思う。
ただ、それだけでは無いと思う。
先輩や同期、ネット上でしか交流の無い人たちがいろいろ教えてくれたことを教えて、伝えていかなければならない。
そのためには、リアルな意味で倒れるわけにはいかない。死ぬわけにはいかない。
ここまで書いていて思い出したことだが、プログラマをやっていて悔しかった言葉のひとつにこんなものがある。
「こんな儲からない仕事辞めなさい」
仕事だったか、会社だったかは忘れてしまった。
自分のいた会社は、拘束時間が長い割に残業手当もボーナスも無いワケだけど、それを見て「プログラマ=薄給、過労死」みたいなイメージしかもっていない母親に言われた。
「好きな仕事なんだけどね」と浅めの反論をしたんだけど、まぁ、ね。
前回書いた先輩方のオファーと比較すると、そんなことを言われても仕方ない。
ネットで同年代の人を見てると、社長になったり本書いたり、コミュニティの勉強会でスピーカをやったり活躍してる。
好きな分野、得意な分野で活躍したい。活躍した結果を評価されたい。そういう欲求は自分にもある。
これ以上、馬鹿で幼稚な会社で理不尽な思いはしたくない。
次の十年もそんなところに時間と神経を捧げる気は無い。
そんなわけで、届くかわからん理想や泥臭い事情にまみれた決心をここに残しときます。

(*1)
自分の会社にも、正義感溢れる営業がいました。Hという人です。
実質、その人が営業部を引っ張っていました。
が、いつの間にやら辞めていました。
その人が辞めてから、営業部は覇気が無くなり、技術者を駒のように扱いだしました。
そのころから自分を採用してくれた営業部長も悪い意味で人が変わってしまいました。
この会社の裏の歴史だと思うなー。

2007年12月27日木曜日

libttaをNDS向けにポーティングする

とりあえず最低限のフォーマットが鳴ったぞうれしいなと浮かれているワケですが、興奮が冷めないうちにいろいろメモを残そうかと思います。

TTAは、The True Audioという名前の音楽フォーマットです。詳しい解説は、wikipediaに任せます。
公式サイトは、true-audio.comです。各種ファイルはここから取ってきます。
wikipediaの記事にもあるのですが、FLACやMonkey's Audioと比較されていますが、TTAはビルドが楽です。
(試していないので)Monkey's Audioはさておき、FLACは通せませんでしたorz
ライブラリの規模も小さく、扱いやすい印象を受けました。
公式サイトのファイル置き場から、
"Download TTA library version 1.2 for hardware players (Source code)"(ttalib-hwplayer-1.2.tgz)
をダウンロードします。
展開したファイルを、以下のような配置にします。

ルートである./libttaには、makefileがあります。
# devkitProのサンプルにあるexamples/nds/templates/arm9libを使ってもいいようです
これをmakeすれば、もれなく完成なわけですが、少しだけ追記する箇所があります。
int check_tta_file( tta_info *info, unsigned int data_offset )
{
(略)
    // check for player supported formats
    if (ttahdr.AudioFormat != WAVE_FORMAT_PCM ||
        ttahdr.NumChannels > MAX_NCH ||
        ttahdr.BitsPerSample > MAX_BPS ||(
        ttahdr.SampleRate != 16000 &&
        ttahdr.SampleRate != 16384 && // NDS Native
        ttahdr.SampleRate != 22050 &&
        ttahdr.SampleRate != 24000 &&
        ttahdr.SampleRate != 32000 &&
        ttahdr.SampleRate != 32768 && // NDS Native
        ttahdr.SampleRate != 44100 &&
        ttahdr.SampleRate != 48000 &&
        ttahdr.SampleRate != 64000 &&
        ttahdr.SampleRate != 88200 &&
        ttahdr.SampleRate != 96000)) {
        info->CALLBACK.close_func (info->HANDLE);
        info->STATE = FORMAT_ERROR;
        return -1;
    }
太字の部分を追記します。
この周波数(16384Hzと32768Hz)は、NDSで再生するうえで相性のよい数字のようです。
と、言うことで、エラーにしないようにします。
makeが通った後は、次のディレクトリをdevkitproのルートウィンドウにコピーします。
./libtta
./libtta/include
./libtta/lib
devkitproのルートウィンドウがD:/devkiProだとすると、ヘッダファイルがあるところは、"D:/devkitPro/libtta/include"になります。
ライブラリ構築手順は以上です。

NDSでのTTA再生

去年の今頃も同じようなことをやっていて挫折していたと思うのですが、なんとかプチノイズが目立たなくなるとことまでこぎつけました。
TTATest 2007.Dec.27(Zip形式/1.18MB)
以下説明。

[操作]
A ... TTA再生
XY ... 某効果音サンプル
再生するTTAのデータは、32768Hz(約32kHz)/8ビット/モノラルです。
時間が取れれば、ソースも公開して(おこがましいのを覚悟で)解説をしたいのですが、取り急ぎ実行バイナリと要点をまとめておきます。
- ダブルバッファリングは必須なのだけれど、再生するチャンネル(L/R)ひとつに対して、NDSのハードウェア上のチャンネルふたつを割り当てる必要がある。
- このふたつのチャンネルをリピートモードではなくワンショットモードで使いまわす。
- チャンネルのスワップやバッファの更新は、タイマで周期的に行うことが理想。
- デコードにはlibttaを手を加えずにビルド。バッファサイズを4KBに設定。組んでる時に早送り状態になったので、CPU(ARM9)にはまだ余裕がありそう。
そんな感じでとりあえず寝ます。

2007年12月26日水曜日

次の10年に向けて(1)

このたび、5年半勤めた会社を辞めることにした。
2002年06月中旬入社で2007年12月末退社なので、約5年半ということになる。
5年間で会社は大きくなって、昨年には東京進出を果たした。

しかし、自分は規模が大きくなるにつれ社員を蔑ろ(ないがしろ)に扱う会社に疑問を持ち続けていた。
人に話せば労働基準法に抵触していないのか? と心配される待遇や、諸問題を報告しても口約束だけで実際に対処しない事務部署。
経費になるハズのものを「立て替えてくれ、後日請求書をまわしてくれれば支払いをする」と言われ払われなかったこともあった。
納得できないことで、明らかに会社が間違っている。
ずいぶんしつこく喰らいついた時期もあった。組織は変わる。悪いものは正しくなる。そう思っていた。
が、それが無駄だと気持ちの面で気づきだしていたのを抑えられなくなってあきらめてしまった。
あきらめてしまってから、会社は後ろ盾にならないと気づいてからの働きぶりは自分で振り返っても情けなくなる。
メンヘルの諸症状によくある居眠りをはじめ、それまで気を許せた相手にすら何も話せなくなるほどの落ち込み、それを助けてくれないのだから困ってしまう。
もうシニカルに笑うしかない。
経済的にも会社は助けてくれなかった。
生活残業が非難される風潮が強い昨今にもかかわらず、それ無しでは生活できない待遇で苦しい暮らしを強いられた。
それでも何度となくいつか報われる、と思っていた。
過去に会社の劣悪さを批判し、自分を評価していただき、評価にふさわしい待遇のオファーまで下さった諸先輩が何人もいた。
お誘いを受けるたびに「もう少し信じてみたい」とそれを断り続けた。
批判はうれしい反面、悔しかった。
「自分のいる会社はひどくない」と、反発したかった。
# 真理を突かれていたので当然そんなことは無理だった
先輩方に負けないだけの力で改革を起こしたかった。
しかし、それは最後まで叶わなかった。会社の根幹には敵わなかった。
もうやめよう、このままでは生活できない。
そう思ったときには既に家計に余裕が無かった。ダメもとで救済措置はあるか、と確認してみた。
問い合わせはメールで行ったのだが、その際に「返答しだいで会社を辞める用意をします」と付け加えた。
特に返事は無かった。救済措置が"ある"とも"無い"ともいわず、返事をしなかった。
こういう返事か。決心は付いた。
「今から会社を辞める場合、返却物とかは、どうしたらいいですか」
辞める用意の宣言から二週間ほど経ってから、そう問い合わせてみた。
問い合わせを受けた会社は驚いていた。事前に伝えてあることなのにどうしてそんなに驚くのかわからない。
後からの話し合いで聞いた言い分だが、こういうことは一番に所属元に教えてもらわないと困る、とのこと。
真っ先に伝えたはずだが・・・。
他にもこの会社らしい悪ふざけを聞かされたのだが、いちいち噛み付いてスルーされることに疲れてしまった。
一刻も早くこの会社から離れたい、そう思った。
この会社に足元を握られることが如何に経済的にマイナスであることか。
この会社の低レベルな悪ふざけに付き合うことが如何に憂鬱であることか。
諸先輩は間違っていなかった。
意識的に冷徹ではなく、純粋に子供で、幼稚ゆえの残酷さに苦しめられてきた。
もうこれ以上、それに耐えることは無いと思った。

2007年12月20日木曜日

笑えない話、その後

完結:ブラック会社に勤めてるんだが、もう俺は限界かもしれない:ハムスター速報 2ろぐ
以前は、Part.2までの時点でだったんだけど、完結偏(ナンバリングするとPart.6)まで続いてました。
とりあえず完結偏だけ斜め読みしました。
親族が倒れるのは、究極のバス問題だなーと書いてしまうと、怒られそうですが、超がつくほど困ると思う。そして泣く。
ma2は親と仲が悪いので、不順な理由ですが勘弁して欲しい。
あと、いい話だけど、上昇志向は必要。
カリスマのある人に惹かれて不遇なところに留まるということはありうるし、自分も去年まで目が覚めなかった。
泥臭い仕事を和気藹々、ってところに長くいるべきではないな、と思う。
>>1を見ていると、仕事自体はこれからも熱意を持ってやっていきそうな印象はあるけど。
Part.3から5までも時間があれば読みたいな。登場人物増えてるし。

2007年12月19日水曜日

メガドラの自作ゲーム

Pringles Game for SEGA Genesis
トップページなんだけど、大丈夫かな。
Genesisってのはいわゆるメガドライブ。
情報元が正直日記なんだけど、devkitGenて。
devkit*って名称は世界的に市民権を得てる気がする。

2007年12月17日月曜日

アーカイブにするとき消していいファイル

あるとき(もしかしたら今日かも!!)、過去のソースをくれと言ったら中間ファイルやら出力ファイルやらごっちゃになったアーカイブがメッセンジャー経由で飛んできました。
ギガクラスの容量のほとんどが不要ファイルなので、検索で篩い(ふるい)にかけて削除しました。
今後も忘れないようにメモっときます。
ほとんど不要。

*.vcproj.*.user *.pch *.sbr *.obj *.scc *.ncb *.suo *.res *.exp *.pdb *.ilk *.idb *.asp *.opt
純粋なソースのみのリリースならこれも。
*.exe *.dll *.lib
VisualStudioが作るファイルとコンパイラが吐き出すファイルがごっちゃですが。
VisualStudioの作るファイルは説明とか無いのかな。

2007年12月16日日曜日

Logicool MX Revolution

Logicool > マウス&トラックボール > マウス > MX™ Revolution(以下、MX-R)
グッドウィルの数量限定品でお安く買えました。

昨日、ノート用にVX Revolution(以下、VX-R)が欲しかったんですが、買いに行ったら値引き無し。
で、がっくりしてたら明日のセール品にMX-Rが出るらしい。限定5個で。
これは買いだなと思って早起きして並ぶ。
早起きの甲斐あって買うことができたので、軽くレビュー。
最近、マウスは見本を置いて触り心地を試せる売り場が多いのですが、このマウスは、モックを軽く触っただけだと本当の良し悪しがつかめない。
特にモックだとMicroGearの切り替えができないので、切り替え仕様そのものに気づけなかった。
# VX-Rは底面のスイッチで切り替えるらしい
あと、ノートでも電源がある場所ならば、十分使えると思う。
移動中の新幹線で使うとかそういうシーンがなければ選んでもいい気がする。
MX-Rでも底面に電源スイッチがあるので待機じゃなくて明確に電源OFFにできる。
あと、MicroGearは喜んで回してるとうるさく感じるようになってくる。
親指で操作するホイール(サムホイール?)にCtrl+Tab(逆方向にShift+Ctrl+Tab)を割り当ててみたら・・・意外に使えなかった。
IE7はよかったんだけど、VisualStduio2005だと微妙でした。
メニューとか出ないMDIやタブ使用アプリなら使えるかも。

2007年12月14日金曜日

XNA2.0正式版リリース

Xbox.comの公式発表
あーもうノート新調してぇ!! コタツで開発してぇwww

マウスレイ

方法: ユーザーのクリック 3D オブジェクトかどうか検出
なんと、マウスレイについての解説。
・・・解説はありがたいけれど、座標変換がAPI一発で処理されててそれを展開しないとOpenGLでは使えない。
XNAだったら全力で参考にしますが:D

2007年12月13日木曜日

VS2005SP1が必要

VS2005で、エラーコード0xc0150002のマニフェスト絡みのエラーが出たら、SP1へのアップグレードでなおる話。 - かせいさんとこ
まったく同じ件。
某コンポーネントを使ってるプロジェクトをビルドしたら意味のわからんエラーが出て起動しない。
同じようなエラーが別件でも起きてました。
そのときは、実行ファイルをVSSに置いていたので、VSSに置くとダメ、みたいな結論を出してしまったのですが、間違ってた模様。
毎度ながら、VS2005SP1のインストールは440MBもあるので地獄だぜorz
SP適用済みXPみたいなCD作れませんかね。

勘違いしてた事と、「Cじゃダメなの?」って思ったこと

以下2件、MSDNより。
セキュリティ保護されたテンプレート オーバーロード
CRT のセキュリティ強化
_CRT_SECURE_NO_DEPRECATE と _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES の意味みたいなものを勘違いしていました。
前者は、warning抑止をするだけで、*_s関数に置き換えてはくれない。後者は置き換えてくれる。
で、後者はC++でしか使えない。
_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES については今回初めて見つけた・・・orz
というか、lstrcpyとか使うよ。wsprintfの書式が充実してないのでそのときは、_stprintf_sにするようにしないと。

2007年12月12日水曜日

テクスチャのバッファオーダについてハマる

某勉強会で元気をもらって、ガラにも無く張り切ってるのに仕事は納品直後でまったりしてる。
というのも、燃え尽きた感があったり、次の案件を進めてるチームになかなか馴染めなかったり、自覚できるほど元気が無い。
先の燃え尽きた感も手伝って暇プロも手に付かない。
でも、ぬぼーっとしてるのは確実に印象が悪いのでネタを探してみました。
ずいぶん前からOpenGLをいじってるな、ということを思い出し、見直してみる。
ビルボードとなんちゃって残像をつけて、そこで止まってる状態。
ビルボードでフォント表示がしたいんだったよな、たしか(自分のことなんだけど)。
てことで着手。
Windowsのビットマップは、内容がボトムアップで格納されているんですが、OpenGLのテクスチャはトップダウンだということに気づかずに結構な時間を潰せました。
DirectDrawのサーフェイスも同じ形式だったなーそういえば。
そんなわけで、この画像が出来たわけです。
これ系のTipsもきちんと整理して公開したいなー。
ゆくゆくはデモが作りたいんで。

2007年12月11日火曜日

[捏造画像]PSP版ペーパーロックマン(たまにやるOpenGL日記前振り)

この画像の正体です。
なんとなくプログラム組んでキャプしてみようかと思ってから半年ぐらい経ちます。
無駄に時間がかかるのでいつまで経っても完成しないと思うので、公開します。
空間のゆがみを作り出すメカとか出てきても、ロックマンなら問題ない世界観だと思うので、誰か作りませんかね。

こんな写真





詳しくは後で。

2007年12月10日月曜日

机の広さで能率が変わる

机の上に紙とペンを広げられるかで勝負が決まる - ひげぽん OSとか作っちゃうかMona-
デュアルディスプレイと紙の違いには同意。
Office関連の文書作成でもページを往復するような仕事をする時は、分割表示でもサブモニタでViewer表示でもなく印刷物を参照することが多いし。
紙とサブモニタを比較するとアンチっぽい感じがするけど、デュアルにしてくれるならしてください。お願いえらい人。

2007年12月9日日曜日

バーチャファイター5が気になる件、と周辺機器

昨日、某コミュニティの懇親会でXbox360の話題になりました。
エースコンバット6がハード購入のトリガーになった人とか、うっかりロストオデッセイ買っちゃった人とか。
んで、バーチャファイター5気になる、という話になりました。

過去に鉄拳5がPS2で発売された時、DualShock2でまともに技が出せなくて、RAPを買ったことがありました。
同じことにならんかと心配しているんですが、一緒に話していたりょーさんは「サターン時代にやってたんで」と標準パッドで対応できそうな印象を持っているようでした。
鉄拳は、右パンチと左パンチを交互に連打するコマンドとかあって、これを親指一本で高速に入力するのは確かにキツイわけですが、バーチャはPPPKで交互にパンチ→まわし蹴りとか、なので楽かも。
にしてもXbox360は、ハードとソフトは好調なのに周辺機器がおとなしい。
アーケードスティックもバーチャ5にあわせて発売されたモデルは品薄で、過去に発売されたモデルはもう作ってない。
需要はあるはずなので出して欲しい。USBなんだから、ボタン数とか同じ仕様のものは使えるようにして欲しい。
なんで、こんなに周辺機器に消極的なんだろうか・・・と思っていたらこんな記事を見つけました。
マイクロソフト、Xbox 360の周辺機器メーカーからロイヤリティ徴収へ:ニュース - CNET Japan
この年貢制度があるせい? もしそうだとしたら、ユーザも増えたし状況は変わるかも。

んで、りょーさんはこの記事を書いている今頃帰路についていると思うんですが、「ふらりと立ち寄ったソフマップでうっかり購入www」とかって話になってなければいいけど・・・自分のガードが崩されてしまうのでw

2007年12月3日月曜日

最近になって気づいたこと

【軍曹が】携帯電話開発の現状【語る】(笑わないプログラマ)
先日のブラックといい、ちょっと前まで一緒に仕事して振り回された人といい、XPとかOOPとか工法モデル(V字とかスパイラルとかプロトタイピングとか)とかを「なにそれ?」って言っちゃう会社はまだまだあるのかも。
こんなヤバイのがゴロゴロあるんじゃ学生にも人気無いね。至極当然、至極真っ当。
今年いっぱいまでいる会社も(悪い意味の)クールなハートレスな守銭奴なのでやっつけたいですけど、上述の記事はお金の話も垣間見れて勉強になった気がする。
# お金に関しては、もともと不勉強なので自分が悪いorz
にしても、オチが爽やか。
携帯をうるさく感じてどうにかしたくなることはたまにある。軍曹の選択には惚れます。

The Orange Boxがおもしろい件

twitterにもチラッと書いたんですが、それらをさらに加筆。
The Orange Box - 5 Games. One Box.
ハーフライフ2 OrangeBox【日本語版】
とはいえ、買ったのはXbox360版ですけど。

はじめに気になったのは、Team Fortress 2(以下、TF2)のトレーラー。
XBLAのマケプレに出てたのを見て、Orange BoxとTF2のふたつの名前。どっちがナニなんだ? と思って調べてみた。そこで初めてタイトル5本パックということを知るわけですが。
PC版Half-Life2(以下、HL2)をやってる人が身近にいて、話は聞いたことある。
なので、やってみたいタイトルではあった。
さらに、FPSのシステムでパズルゲーム的なことをする「Portal」というタイトルもある。
どんなゲームなんだろう。少しぐらい高くても欲しいなー、と思い始めた。
先月から大須で売ってないかなと思い探していたんだけど、無い。
その話を先の友達にしてみたら、「今度、東京に出張することがあったら押さえておくよ」とのこと。
で、押さえてくれた少し後に中京マイコンに入荷してましたorz
値段は、東京も大須も同じでした。\7,000-
HL2シリーズは英語がわからん。放置。
Portalをとりあえずクリアした。答えがちょっとズルいかな。
どうしても進み方がわからんところは、YouTubeで答えみました。
Team Fortress 2は1日1ゲームでいいストレス発散になりそう。スカウトの足の早さに笑った。
当分、TF2で遊べる予感。
というか、Vistaが安定してきたらHL2本編のためにPC向け日本語版を買いそうです。
SP1で変わるといいな。HL2のために。

2007年12月2日日曜日

12月のWii/バーチャルコンソール

[ファミコン]
- ダウンタウン熱血行進曲 それゆけ大運動会
- スーパーマリオブラザーズ3
- メタルスレイダーグローリー
[スーパーファミコン]
- スーパーストリートファイターII
11月のときにスーパースト2が12月に配信される説をひとり唱えていたんですが・・・実現した!!
実現しないと思っていたことが意外にもあっさり実現すると高望みしたくなる。
てことでXboxクラシックスでハイパースト2が正月あたりに出ないかな。