2011/02/27

続:CADisplayLink

そこはかとなく解決。

処理を最適化して、無駄な処理を極限まで省いても、
CADisplayLinkの発火が遅すぎる。

NSTimerに変更してもさほど変化なし。


NSRunLoop管理の使ったタイマーは、
iOSだと150msec~200msecの精度しかなさそう。


これでは無理だな。
MacOSX関係の資料みてると代替案もありそうだけど、
なんかタッチイベント系に弊害でそうだな。
ちょっとこの機能は、ソースコードだけコメントして塩漬けにしよう。


なにやってたかっていうと、


初音ミクさんによるLipSync機能
一文字毎の発音タイミングテキストを用意して、
口の変化のコードとか色々丁寧に実装したんだけど、
Timerが回ってきやしない。


(Runloopの)調子がいいときはきっちり歌ってくれるんですが、
他の描画処理でRunloopの中の人が忙しい時は、
ミクさんはお休みしちゃいます



これは、あれだね。

真面目に、メイン機能作れと、そういうことだね。





行頭タグ機能くらいならまったく問題ないから、
行頭歌詞機能だけを残して、
カラオケ機能
LipSync機能
にはお休みしていただこう。

ミクさんおやすみー。


CADisplayLink

 60FPSでコールバックが来る関数に、
むちゃくちゃなコード突っ込んだら、
画面更新されなく。


負荷が高すぎて、RunLoop 側で詰まったんかな。

CADisplayLinkを2個RunLoopに追加するようにしたら、
どちらかしか動かなくなった。それはそうか。

LAYER更新時にTransaction切ってるところを、
負荷減らすかな。

2011/02/25

ぷろなみ!

新MacBookPro

なにか来てる!
FullHDの17インチ、値段が高くなってる!




LightPeakポート来ましたワー!


そうすると3/2発表のiPad2もUSB2.0でなくLightPeakポートか。



オマケ
いつでも、どこでもアクセスできる。
新しいMacBook Proは、
お使いのiPhone 4の3G接続を共有できるので、必要な時に、必要な場所でインターネットにアクセスできます。詳しくは、通信事業者にお問い合わせください。





iPhoneも公式にテザリングOKかー。


これはソフトバンクの回線の中の小人が死ぬな。

2011/02/23

むったんぷ

Fender Mustangといえば、言わずと知れたショートスケールギターですが、
最近は同名のアンプがあります。

こんな感じの。

エントリーのSDシリーズと、
PC接続ツールFUSEでカスタマイズ可能なG-DECシリーズを
足して2で割ったような感じ。


エフェクターやアンプシミュレーターがなくても、
ある程度音作りができるのは便利そうですね。
値段もお手頃。


Mustangっていう言葉のイメージからコンパクトだけと思いきや

キャビネットもだすのか。でけぇぇぇぇぇ。


ちょっと欲しいけど、シミュレーターの音ならAmpliutubeで良いし、
コンパクトはSDR-15CEあるしなー。

すでに部屋にアンプが4個もあって置き場所がないというのも本音。


「バネのないSpringReverbなんて偽物だよ!」

と負け惜しみを言っておくか。


2011/02/22

曲画面調整

週末だけで、歌詞ファイルを94個打ち込んで、
少し疲れたので、プログラミングの方を進めよう。


リピートと時間表示を調整して、歌詞を限界まで文字数を稼いだり。
ヒラギノフォントなら26文字はこれでOKと。

あ、歌詞の打ち直しが少しでるなこれ。。。
改行削除するだけだけど、チェックが面倒だー、あ"ー。

ま、いいか。


ついでに、画面モードを1個追加。 
まぁ作りかけなので配置チェックだけ。

あんまり変な位置にすると、アニメーションさせたときに、
画面モード遷移で、目がシパシパするので、
そこが調整のポイントですね。



合わせてジェスチャーコマンドの一部調整。

3本指タップと時計回りローテーション(2本指回転)は、
あまりにも反応が悪いので、更迭。

スワイプモードの動的変更も、便利と思ったけど、
モードがどっちか意識しないといけないし、
マーカーも邪魔臭いので削除。

2011/02/20

TypeS リアスポイラー

そういえば、
ここはと、車載コンピューターのプログラムブログでした。
今、思い出しました。


年末に1週間ほど外注作業で預かっていただき、
S2000後期型のTypeS専用リアスポイラーを取り付けてもらいました。
サボっていて写真が撮れなくて、今頃まとめています。



TypeSウイングは、ホンダ純正なので、
・適法ながら、法律ギリギリの大型スポイラーによるリアダウンフォース
・社外GTウイングほど「大人げない」感じがない
・3次元形状で、中央部が窪んでいるので、後方視界が比較的良好
ということでTypeSリアウイング取り付けを決断しました。


純正なのでポン付かと思いきや、
問題点が結構あり、

・穴あけ加工が必要
・トランクが耐えられないので補強が必要
・ホンダ外装は塗装済みだけれでも、後期型(AP2:2200cc)用で、
 AP1の初期に無くなった、モンテカルロブルーパールの色は当然ない。


ということでウイング自体の全面塗装も含めて、板金屋さんへ依頼。

ウイング塗装になるので、モンテカルロブルーパールがパール色であることもあり、
色が合わないことを覚悟の上でした。


ところが、
ジェバンニが一晩で、板金屋さんが一週間でやってくれました。

  ロケ地:オランダ

 凄く、、、自然です、、、。

 これはS2000オーナーでないと、純正と思う素晴らしい出来。

 青空保管でないので、色焼けしてないっていうのもあるはあるのですが、
 実車合わせでよく、ここまで綺麗に合わせてくれたものです。多謝。




斜め前から全景

ウイング拡大x4





 普段ブログにS2000検索関連で飛んでいただいてきてる方々に、
 今回は写真多めです。

  こんなサービスめったにしないんだからねっ
  


  
  ウイング追加の時に、TypeSエンブレムを追加しましたが、
これはS2000純正ではないです。

S2000純正TypeSエンブレムはこんなの。
  実車はもっと真っ黒で線も見えない感じです。
  
   後期型のTypeS専用のバケツ青色などの、
 明るい色では目立っていいかもですが、
 
 濃い目のモンテカルロブルーパールだと、
 埋もれてしまいますし、サイドエンブレムや、
 フロント・リアのホンダエンブレムとも質感が合わないですね。


 最初は純正TypeSエンブレムを買って、
 真空蒸着メッキをしてもらおうと考えたのですが、
 枠の部分だけ残してメッキは難しいというかできない上に、
 おそらく筆塗りで枠を書いたらガタガタになるので、
 純正エンブレムを改造するのは諦め。


ホンダのTypeS設定車種のエンブレムも
Sの部分だけ赤文字なものがほとんど。
ホンダマークの時にも書きましたが、
はあわないんですよね。自分の主観ですが。

諦めて黒エンブレムを買うか、メッキをチャレンジしてみるかと、
考えていたときに。
たまたま巡回していたページで存在を思い出したのが、 

 NSX TypeS

 エンブレムを調べると結構いい感じ。
  (若干チタン色入ってますが)

 S2000純正TypeSエンブレムの2倍しますが(3800円)
  
  貼ってみました。ペタ。

リヤのAP1(2000cc)前期にのみ採用されている、
NSXと同様のボディーカラー別ホンダエンブレム、
(前期色なので当然モンテカルロブルーパールもあり)
  
   とメタル調で丁度いい感じかも。
  

   サイドエンブレムも最初からメタル調なんですが、
  欧州出荷モデルだけに追加されている、【HONDAロゴ】を追加。
 
   ペタ。


   エンブレムは自己満足な部分が大きいんですが、
気持ちも乗り味ということで。


   ウイングは65km/hくらいから違いがわかり、
85km/h以上からハンドルに伝わるくらいリアの挙動が変わりました。
結構いい値段ではあるのですが、
対費用効果はとても良かったと思います。

2011/02/19

歌詞ウインドウ調整中

 ・プレーンテキスト(.txt)=歌詞を表示するだけ
 ・歌詞ファイル(.lrc)=行単位で歌詞を表示


ここまでコーディング終了。



lrcの
基本仕様は、
http://hp.vector.co.jp/authors/VA023256/
こちらで言うところの行頭タイムタグ

lrcファイルは行頭タイムタグ([00:00:00]みたいの)があった場合、
その行の白表示と行スクロールを行う。

 (これだけ読めなくしておけば、どこかの偉い人も怒らないであろう)


ただちょっと問題があって、
上の曲みたいに、行と行の無歌詞時間が多い曲は、
行頭タグだけだと、空白を入れないといけない。

空白だらけになると、どこがAメロでどこがBメロでどこがサビなのか、
さっぱりわからなくなる。

なので、
行末タグが存在した場合は、スクロールを止めて、
白表示だけ行末タグを参照するようにする。

行末タグがなければ、基本通り、次の行の行頭タグを参照。


スクロールするとき、空白行の部分で、暗黙のアニメーションで、
気持ち悪い動きになるので、空白行周りに制御を入れて終了。



2011/02/17

CATextLayer 特盛り

 ググる先生でCATextLayer検索時、5位、6位、7位記念

   (このサイトにはiPhone開発であまり有益な情報はありません。ご了承ください)


 CATextLayerを10個→210個に増やしてみたり

  歌詞タグ対応中


   MPMusicPlayerControllerでは、
 同期後一度はiPodアプリで再生しないと、
 MediaItemの歌詞プロパティが空で帰ってくるので。

   理由はわからなくもないけど、直してもいいような気がする。
   AVURLassetで回避できるけど、それもなー。

  だからいっそのこと歌詞ファイルは自前で用意すればいいかなと。
  序にWinAmpの世代からGeekな人たちに脈々と伝えられてきた、
  歌詞タグに対応しようかなと。 


  自分以外の人が簡単に使うため。
  ・プレーンテキスト(.txt)=歌詞を表示するだけ
   ・歌詞ファイル(.lrc)=行単位で歌詞を表示
  ・カラオケファイル(.kra)=文字単位で歌詞を表示可能
  ・独自フォーマット(.未定)=拡張表示制御可能
  な感じにしようかな。基本は歌詞ファイルかカラオケタグのタイムタグなので、
  汎用のエディタが使えるし。


   ところで歌詞画面を表示するのに、JASRAC非管理曲を探すのに手間取った。
  初音さんも結構JASRAC管理曲が多いなぁ。

  自分のプログラムという著作を説明する上で、
  著作権法上の引用表示】にあたると考えられるので、
  JASRAC管理曲でも問題ないとは思うんだけど、
  利権団体は対個人だと強気にでてくるしね。怖い怖い。

2011/02/15

ここまでの記録を冒険の書に記録しますか?

 スレッドとメモリ周りの修正に3-4時間かかってしまったので、
本日は画面系は半分しか直せず。


Photoshopで画面を書いて終わり。

2本指回転は、車載用途だと使いづらいので、
使用頻度が低いのに振りなおしかな。

そろそろUIGestureRecognizerでなく、
自前で実装したほうがいい気がしてきた。

明日ちょっと考えてみよう。

2011/02/14

合法改良(リミッター解除) 【まとめページ】

このカテゴリはどこまで手を入れたかさっぱりわからなくなった合法改良の記録を綴ります。


まえがき


[純正部品流用]CR オーディオリッド
[純正部品流用]CR/TypeS フロント/リアストレーキ
[純正部品流用]初期型エンブレム
[純正部品流用]サテライトスピーカー(リアスピーカー)
[純正部品流用]Lexusワイパー
[純正部品流用]無段階簡潔ワイパースイッチ
[純正部品流用]後期用フロアマット

【自作(他作)】スイッチ類LED化
【自作(他作)】オーディオリモコン連動
【自作(他作)】LEDフットランプ
【自作(他作)】LEDルームランプ
【自作】オーディオデッキ 背景変更


【取り付け】TypeSリアウイング <<NEW

[開発中]
iPodTouch テレメーター


【調査中】
サブフレームリジッドカラー


【計画中止】
後期イモビライザー基板流用、キーシリンダー照明
北米輸出用 拡散ウォッシャーノズル

objective-C

安西先生、やっとわかったよ。
EXC_BAD_ACCESSを食らう理由。

ObjectiveCのAtomicってそういう意味だったのね。

まぁ基本はCってことか。
static関数とどっちが実装スマートなんだろうなこれ。


とりあえず、歌詞ファイルの読み込み排他制御終了。
中身がないし、画面も変わらないので省略。

2011/02/13

過去ページを少し更新

S2000の記事内容で、アクセスされる方が多いので、
完成写真を載せてなかったのを少し更新。


[純正部品流用]サテライトスピーカー(リアスピーカー)


あきはばーら

土曜日。ハード担当の偉い人と秋葉原へ。

TPMSの無線受信モジュールに使えそうな部品をゲットが主目的。
雪なので遠出したくなるというのが副目的。



お昼ごはんはちょっと足を伸ばして御茶ノ水駅まで。


雪の中移動も辛かったんですが、
有名店のようで、お客も多くて少し躊躇するくらい人が。


雪の中再度放浪も嫌なので、並ぶことに。
美味しいというか、独特の味でしたが、
再度あの行列に並ぶかと言われると、
ちょっと遠慮したい感じかな。


豚丼なんですが、厚みがあって炭火焼してあり、
チャーシューのような食感でしたね。
豚丼の薄い肉が載っているって、
イメージが少し変わったかも。


お昼をすませて、目的のユニットと、
序に会社のお使いをすませて、帰途へ。

帰りに高速の雪がたいしたことないという理由で、
わざわざ雪の深い峠道を選んで帰ったのは、
きっとドライバーの人がスキーをしたかったんでしょう。

車で。

2011/02/11

HELP -HellSide-

 ジェスチャーコマンドが複雑になってきたので、
 ヘルプ画面を作ってみたりして。

 シングルタップで呼び出すようにしたけど、
 見事にダブルタップと誤検出率が高い。


車載考えるとあんまり複雑なモーション(ひねり系)
はあまりよろしくないので、少し考えようっと。


ヘルプの画面も、あと1歩見にくいので、
もう少しフォトショップでブラッシュアップしようかな。

UDP導通テスト

タイヤ空気圧監視用の変数を入れたので、
iPod側のアプリを変更。


 最終8バイトの

 Byte               Flag
 unsigned Short FuelPress
 unsigned Short OilPress
 unsigned Short OilTemp
  

 FLAGまでは正しく入るんだが、
 それ以降がずれる。

 んー、構造体アライメントが2バイトなのか?

 送信元VC++は構造体で送ってないので、
 iPhone側しかありえんような。


 とりあえず、今日の所は
 使わないから切っておくけど、
 これは気持ち悪いので明日調べよう。

2011/02/07

まったり

今週はスローペースで。

音楽画面のレイアウト変更をちまちま。



ピンチイン・ピンチアウトだと、車載で操作しづらいので、
コントロールモードを色々わけようかな。

2011/02/06

ちょうしにのっちゃだめー

気になったら、寝られなくなくなることってあるでしょう?>挨拶



XCode 4 GM Seedが出ていたので、ダウンロード。
GMというのは、
開発者用製品版直前(GM=GoldenMaster)のことらしいです。

ダウンロードして寝ようと思ったのですが、
3.6Gのダウンロードがサックリ終わってしまったので、
インストール開始。

触った感じ、

・UIが変更されている、デバック開始と終了のシンクロが取れてない。

・上記を含めて、UIに余計な変更がされている。

・落ちにくくはなった、のかな。


割とOSを巻き込んで死にやすいXCode4ですが、
2時間使ってみた所、1度も落ちませんでしたね。
そのあたりは少しはマシになったのかな。






さて、XCodeのテストがてら、無駄機能を追加

誰のために作ったんでしょう一体












   にくきゅう追加

   2時間もかけて一体何をしているんだ>自分


   フォントで作るか、レイヤーで作るか迷ったところ、
   他のフォーメーションや、必要ない曲(殆どだが)との協調性を考えて、
   レイヤーを別で1個作成。

 
   特殊レイヤーなので、iPodライブラリ更新直後の、
   「名前は取れるけど、再生停止している」
   裏でライブラリ整理スレッドが動いている間は、
   表示停止にしなければいけない。 


   全部2段組なら良いんだけど、1曲そうではないので、

   タイトルマッチングをかけて、トランスフォームで位置調整。


 なんという無駄な努力でしょうか




 そしておそらく、世界で唯一

 『はっぴぃにゅぅにゃあ
 
 表示対応iPhone/iPodアプリ

 



 よし、書いてて疲れたので寝よう。ああ、5時ですよ。


  デバッグとはいえ、これ、5曲連続でずっと回してると、



 脳みそが蕩けて零れ落ちる





※)翌朝追記

   この日も寝るまで幻聴が、、、

CATextLayer あんど MusicView

前回のエントリを書き込んだ後、
寝る間際に、鏡の国のアリスというか、西洋のお伽話の様な幻聴が聞こえました。
人生初経験です。
きっと作業BGMとして聞いていたconnectの所為だな。

昨晩は、さすがに怖くなったので休息ということでゆっくり寝ました。

良い子のみんな、
全力モードでの連続作業は程々にね!
休憩を取りたくなったら会社でゆっくり仕事するんだ!


閑話休題



さてさて、3日くらいかけて、CATextLayerを弄っていたのですが、

今回の作業は、タイトル名とアーティスト名の横幅の長さ調整です。




CATextLayerのエントリにもあるように、
フォントのサイズを縮めていくことで、
どんな長さが来ても、一定の幅に収めることはできるんですが、
文字の大きさが長さに反比例してしまいます。

とくにiPhone/iPodは画面がそれほど大きいわけではないので、
一定以上のタイトルや、複数人アーティストの場合は、
車載用途ではほとんど読み取れない。
という状況になってしまいます。これはマズイですね。



本題。

先日から弄っていたのは、タイトルとアーティストのCATextLayerの上に、
クリアバックグラウンド(背景透明)のCATextLayerを置いて、
CATextLayerの1段/2段切り替え表示
が出来るようにしていました。


そう、これがやりたかったんです。


ただ、2段にした場合は、
歌詞ウインドウと、先日作った大きいジャケットウインドウへ、
フォーメーション変更する場合

あと、先日実装した
次の曲へ移動する場合のアニメーション表示

すべて直さなければ、スムーズに繋がらなくなってしまうので、

楽曲ウインドウ周りを大工事していました。




以下相変わらず特定の人たち向けのサンプル画像








何気に、2行にするロジックに梃子摺りました。

洋楽、邦楽、アニソンジャンルによって、
曲のタイトル表記も色々で、
簡単には切らせてくれない。



()とかは良いんですが、とかは上手く切らないと、
特に曲名は~を使われることがたまにあるので、失敗する。

NSStringは検索すると一々NSRangeという範囲で返してくるので、
扱いにくい。

あとはアーティスト名が1人でなく、複数の場合は切っているのですが、
偶数人と奇数人で上下段の割り振りを変えなくてはなりません。

これはデリミタを指定した上で、Arrayに突っ込んでから、
ObjectiveCの裏技で、小数点for文で解決。

良い子は真似しちゃダメだよ。



ここ数日CATextLayerと幻聴と格闘した上、
なんとか仲直りすることができた気がします。




余談ですが、曲表示関連のViewクラスのコードサイズが、
他のクラス全部足したより大きいくらいになってました。



76kByte、1616行か...




そろそろ、車載モニター系のビューを拡充しようと考えてますが、
デザインがイマイチ思いつかないのでもう少し保留かな。


きっと次回のエントリも、楽曲関連でお送りしマース。

2011/02/04

そしてCATextLayerの無駄遣い

最近はハイペースで、
帰宅してから7時間くらい(19:00~26:00)コーディングしてるのですが、

あれ、これは会社より作業量多くない?

会社はずっとコード書いてるわけではないんですけど、
キーボードは叩いてるので、1日16時間もキー叩いてるのか。
これは引篭もりネトゲユーザーさんといい勝負だ。
最近、妙に疲れるわけだ。

まぁ、頭にやりたい事と手段が浮かんでる状況だと、
(忘れる前に)早く帰ってコード化したいって感じなので、
辛いというわけではないんですが。

さて、本題。

先のエントリでもありますが、
今日はずっとCATextLayerの整理と追加。

テキストに、レイヤアニメーションが適用できるにが、
とても出来るのが便利なんですが、
暗黙のアニメーションが適用されるので、
多少でもズレると目立つのも難しいところ。

特にフォントサイズは内容が可変だと結構ずれやすいので、
不可視レイヤーを使ったりして、色々ゴニョゴニョと。

テキストレイヤーを追加して、
関連アニメーションの協調と、フォント調整を作ってましたが、
久々に7時間も打って、直せなかった。口惜しや。


画面は、アニメーションの推移を確認するために、
CATextLayerだけ着色してある状態です。

ここまでに7時間、
座標情報をCONSTにして、
CATextLayer自体は分かりやすく管理してるんですが、
これだけ入れ替えが激しいと、頭がごちゃごちゃに。

ああ、今日も2時半回った。。。寝よう。。。お休みなさい