AR, オトカメラ, Core Audio, AS3, デザイン, ユメみるiPhone

Posted in Codex on 5月 15th, 2009 by Norihisa Nagano – 2 Comments

4月以来、Blogをあまり更新できませんでしたが、いろいろやっておりました。
東京に戻ってきてIAMAS在籍時よりいろんなことにチャレンジしております。

AR

ARToolkitを少々やりました。
少々というか、iPhoneに勝手に移植して動かしました。
そこそこ動いています。
Audible Realitiesのコンセプトが音中心なので忘れていましたが、最初のアプリケーションがMonalisaであったように、自分の興味が音と映像だったのをARやって思い出しました。
原点に戻ってきた感じがしております。

ARが面白いかと言われれば、iPhoneだと画面が小さいので、仮想物体がiPhone上に映ってもさっぱり面白くありません。しかし、iPhoneの他の機能と組み合わせればきっと面白くなるはず。ということでいろいろ実験中。

オトカメラ

音と映像と言えば、オトカメラ。
あまり考えてなかったのですが、これも音と映像(画像)の同居。
これまた原点に戻ってきた感じがしております。

オトカメラは機能はシンプルですが、iPhoneのCore Audio APIをほぼ全て使っています。
version 1.0〜1.1
AVAudioPlayer (AVFoundation.framework)
Audio Session, Audio Queue, Audio File, Ext Audio File Services (AudioToolbox .framework)

version 2.0〜
Audio Unit、AUGraph (AudioUnit.framework)

使ってないのはAudio Converter, Audio Stream Servicesだけか。

新バージョンの2.0では、録音中のモニタリングが可能になりました。
あと、レベル(自動)調整機能なんかが付いています。
こんな感じ。

phonocam20

現在審査中ですが、問題なければあと2・3日ぐらいで出ると思います。

オトカメラの開発で、iPhone Core Audio APIの全体がだいたいつかめました。
この成果を何かの形でぼちぼち公開していきます。
Core Audio、いろいろありすぎて分からん・・・とユメみるiPhoneの最後の対談にも書いてあったし。

AS3

オトカメラでは、撮(録)ったファイルをBlogに貼ったり友達に見せたりしたい、という声があります。
実際、自力で音と画像を編集して公開されている方が既にいらっしゃいます。

その場合、特に問題なのがブラウザでの表示です。
考えた結果、選択肢が他にないので、Flash嫌いなのですがAction Script 3.0でプレーヤーを書くことにしました。
iPhone内でAAC、MP3が作れないのでオトカメラはAIFFを使っているのですが、そこで問題なのが

・FlashはAIFFが埋め込みじゃないと再生できない
・AIFFに埋めている画像を取り出さないといけない

というわけで、AS3から導入されたByteArrayという、バイナリファイルを読み書きできるクラスを使って
・AIFFの再生
・画像を取り出して表示
するコードを昨日・今日で書きました。
Flash嫌いですが(2回目)ByteArrayで動的なサウンド再生・シンセシスができるので、ちょいと面白くなってきました、というか、AS3、なんでもできるな。すごすぎる・・。
試しにまたりさまBinaryでも移植してみようかな。

そんなわけで、近いうちにオトカメラはネットワーク対応すると思います。

デザイン

オトカメラをネットワーク対応させると、Webページを作らないといけません。
このように、iPhoneアプリをほぼ一人でやっていると特に問題になるのがデザインです。
デザインといっても
・そもそも何作るかという意味でのプロダクト・デザイン
・システム設計という意味でのデザイン
・Web・デザイン
・アイコンなどのグラフィック・デザイン

等、いろいろありますがここでのデザインは最後の2つです。
人にはキャパシティというものがあるので、全部やるのは無理だ、という立場でこの二個のデザインは避けてきたのですが、ついにそうも行かなくなってきたのでWebデザインをまじめに勉強することにしました。
やってみたら面白くて、アイディアがはまってそこそこ見れるページができると、コードが動いたときとは違う感動があります。World 9などで協力してもらってるIAMASの筒井師匠に送ったら、よくできてると言ってもらえたので調子にのって頑張っていきます。

ユメみるiPhone

もう一つのグラフィックデザイン、といえば5/11に出た徳井さんの「ユメみるiPhone」。
この本の面白いところは、とてもiPhoneプログラミングを扱う本に見えないところ。
表紙だけを見るとなんの本だかさっぱり分かりません。
Flash系だとやたら見栄えの凝ったプログラミング本があったりしますが、この本はそれとも違う新ジャンルという感じがします。

で、当然、内容も他の本とは違います。ともかく楽しく遊んで覚えようというコンセプトと、だがしかし、その先に進めるように、土台を固めて、という同居しずらい相反するコンセプトがしっかり同居できていると思います。
後者の部分は、ちょっとだけお手伝いさせてもらいました。
「ここでこれを書いておかないと、他の本を読んだときに分からないんじゃ?」
といった議論にかなりの時間を使いました。
あとは重箱の隅をこれでもかと突っ込む役をやりました。

なので、楽しい中にも必要な情報が厳密に記載されていると思います。

僕が勧める読者は
・いろいろ試してみたけど、ともかくコードが呪文にしか見えない人
・コンソールに何か文字が出るだけのプログラム例に耐えられない人
・ProsessingやMax/MSPなどのちょっとライトな開発環境で1つでも何か作ったことがあるけど、その先に進めない人
・Audiblesが出しているような、これまでのアプリケーションとは一味違うもの(自画自賛失礼)を作ってみたい人

です。
僕の感想としては、面白いアプリケーションを作って欲しい、という思いが込められているな、と思いました。そんなわけで何か作りたい人、そのとっかかりが欲しい人におすすめします。

めずらしく日記っぽいことを書きましたが、この辺で。

オトカメラ(PhonoCam) (3) 1.1 Update

Posted in iPhone on 4月 8th, 2009 by Norihisa Nagano – Be the first to comment

オトカメラをUpdateしました。(version 1.1)

App StoreへのLink

変更点は4つです。
1. iPhone OS 2.1に対応しました。

2. http://localIP:8080/new
コマンドでまだバックアップしていないファイルのみをダウンロード(PCに転送)できるようになりました。

3. 撮影時にプレビューする
シャッターを押した後、プレビュー画面で確認するかどうかを設定できるようになりました。

4. 起動が若干速くなりました。

そ、し、て、 今なら115円です!!

内蔵ビュワー内で音の再生終了時に再生ボタンに戻らない問題がありました。
すでに修正版1.1.1を申請済みですので、少々お待ちください。

開発者向け情報

MainWindow.xibを使わないようにして、起動を若干速くしたんですが、カメラの初期化があるので時間かかるときはかかってしまうという。

オトカメラでやっている処理はAudio Queue Servicesだけでできるのに、試しにAVFoundation Framework(AVAudioPlayer)を使っていました。
しかし、iPhone2.2〜対応だと、ユーザーの母数が少なくなるので、AVAudioPlayerを廃止して2.1〜対応にしまました。
具体的には、Audio Queue ServicesでAVAudioPlayerと同じインターフェイスのクラスを実装しました。ちょっとめんどくさかったけど、おかげでコードの変更は少なく済みました。Core Audioやっててよかった :)

しかし、2〜10秒の記録時間を設定している場合のオーディオファイルの切り出しにExtended Audio Fileを使っているので、2.1までしか対応できず。
Extended Audio FileはAudio File Servicesのラッパーなので、Audio File Servicesを使うように書き換えることができる。けど、2.0はさすがにサポートきついなということで2.1〜対応ぐらいでいいかなと。

というわけで、iPhone OSはCore Audio FrameworkがiPhone OS 2.0〜2.2.1の間に相当変わっているので注意が必要デス!

RjDj Album & Shake が期間限定無料

Posted in iPhone,そして「いつか音楽と呼ばれるもの」 on 4月 3rd, 2009 by Norihisa Nagano – Be the first to comment

icon_rjdjalbum

iPhone x Music -iPhoneが予言するいつか音楽と呼ばれるものでも
レビュー・コラム・インタビューと大フューチャーした、RjDjのAlbum & Shakeが期間限定無料になっています。
まだの方は、是非お試しあれ。

App Storeへのリンク

Help spread RjDj to the world

For a limited time, we have made the RjDj Album and RjDj Shake free in the iTunes App Store, so that you can share the wonders of RjDj with more people. This is a great time to tell some friends to check out RjDj.

kAudioServicesPropertyCompletePlaybackIfAppDies

Posted in iPhone, iPhone Core Audio on 4月 3rd, 2009 by Norihisa Nagano – Be the first to comment

System Sound Servicesを調べていて、謎なPropertyがあることを知りました。

AudioServicesSetPropertyで
Property : kAudioServicesPropertyCompletePlaybackIfAppDies
value : 1
をセットすると、アプリが終了した後も音を鳴らし続けることができます。
System Sound Servicesは最大で30秒の長さのサウンドファイルが扱えるので
最大で30秒、アプリを終了しても音が鳴り続けます。

これは何のために存在するのだろう。
警告音が途中で終わらないためか?
アラーム系アプリを開発する人は使えるかもですね。(どんなアプリだ)

こんな感じで動かします。お試しあれ。

Example

NSString *path = [[NSBundle mainBundle] pathForResource:@"FM" ofType:@"aif"];
NSURL *fileURL = [NSURL fileURLWithPath:path];

OSStatus err;
err = AudioServicesCreateSystemSoundID((CFURLRef)fileURL, &systemSoundID);
if(err){
    NSLog(@"AudioServicesCreateSystemSoundID err = %d",err);
    exit(1);
}

UInt32 flag = 1;
err = AudioServicesSetProperty(kAudioServicesPropertyCompletePlaybackIfAppDies,
                               sizeof(UInt32),
                               &systemSoundID,
                               sizeof(UInt32),
                               &flag);
if(err){
    NSLog(@"AudioServicesSetProperty err = %d",err);
}

AudioServicesPlaySystemSound(systemSoundID);
exit(0);

iPhone x Music「iPhoneが予言するいつか音楽と呼ばれるもの」(2)

Posted in iPhone x Music on 3月 31st, 2009 by Norihisa Nagano – Be the first to comment

iPhone x Music -iPhoneが予言するいつか音楽と呼ばれるもの
発売から一ヶ月がたちました。

おかげさまで、いろんな方に読んでいただけているみたいです。
[「iPhone x Music」いろいろなサイトでご感想をいただいております]

さて、この本のきっかけともなった「いつか音楽と呼ばれるものを考える」Podcastの「iPhone x Music」特集を公開しております。

この本の概要と、1〜4章の内容について、コンパクトに話しました。
まだ、本をご覧になっていない方も、既に読まれた方も楽しんでいただける内容になっていると思います。

「いつか音楽と呼ばれるものを考える」第15回(前半)
本の概要と第一章について。

「いつか音楽と呼ばれるものを考える」第15回(後半)
後編は第2章〜第4章について。

扉絵の元画像をおまけで公開してあります。

[生態系図 原板]

これだけでも実はアプリケーションを作るヒントになるはず、といった内容などを話してあります。
是非お聞きください & ご感想お待ちしております!

read more »

オトカメラ(PhonoCam) (2)

Posted in iPhone on 3月 29th, 2009 by Norihisa Nagano – Be the first to comment

App StoreへのLink

オトカメラ、発売になってから、いくつかのサイトで紹介いただきました。
ありがとうございます!

音も記録するiPhoneカメラ「オトカメラ」 (PBWEB.jp)

iPhoneで音と一緒に写真を撮ることができる「オトカメラ」 (キタミテレビ)

写真というものは、過去のことを思い出すことに必須のものと言えます。
それが音と一緒に記録できたとすると過去の思い出も格段に思い出しやすくなるでしょう。

PhonoCam | iPhone 3G Wiki blog

iPhoneではビデオ録画できませんが、周囲の音が入るだけでその写真を見たときに様々な記憶がよみがえるかもしれません。

App Storeでも予想以上に高評価をいただいております。

Twitterでもいくつかコメントをいただきました。
反映したアップデートを考え中です。

Mac/PCへの転送方法が分からないというコメントがあったので、チュートリアルを書きました。
PhonoCam File Backup Tutorial
ご参照ください。

もちろん、WindowsのiTunesでも同様にCoverFlowできます!

現在の状況はというと、ミュージックカテゴリでは最高9位まで行きましたが、総合TOP100に入るのはやっぱり難しいですね。
3万もアプリあるしなぁと。
20090326-2000

オトカメラ(PhonoCam)リリース!

Posted in iPhone on 3月 25th, 2009 by Norihisa Nagano – 1 Comment

本日、オトカメラ(PhonoCam)がリリースされました。

App StoreへのLink

PhonoCam -Record an ambient image.
オトカメラは音も記録するカメラ・アプリケーションです。

シャッターを押すまでの数秒間を記録します。 時間は2秒~10秒まで設定できます(無制限もあり)。
記録したファイルをコンピューターのiTunesに読み込むと、カバーフローを使って音を聞きながら写真をブラウズできます(CDジャケットの部分が撮影した画像になります)。
コンピューターへはiPhoneからWi-Fi経由で転送できます。

アイディア自体は去年からあったのですが、いろいろ合間を縫っての制作になってしまって、少々時間がかかりました。
音も記録する、というアイディアはまぁ、誰でも思いつきそうですが、記録したとして、どのメディア・プレーヤーで再生するのか?というのが問題になります。iPhotoのPluginを書くのも可能だったのですが、それじゃPluginのインストールが必要になるし・・・。
そこで、音はiTunesで管理したい、じゃぁジャケット部分を画像にしようということで、このアプリケーションが完成しました。

こんな感じでブラウズできます。

PCへの転送は、ファイル一つ一つもできますが、全部のファイルをまとめて転送もできるようになっております。
http://****(localhostIP):8080/backup というコマンドで全部のファイルをまとめたZIPファイルがdownloadできます。
ZIPファイルを解凍して(Safariなら自動で解凍されますが)、フォルダをiTunesの左側、プレイリストの部分にDropすれば、それだけでスライドショーの出来上がり!。CoverFlowが勝手にスライド再生してくれます。
録音時間が設定できるので、例えば5秒に設定しておけば、最大5秒の音付きスライドショーが完成です。

Audible Realitiesのアプリケーションとしては、初?日常的に使えるものになったと思います。

App Storeで購入いただけますので、よろしくお願いします!

ご意見・ご感想、是非是非およせください。

アイコンはWorld 9のウェブデザインも担当してもらったIAMASの筒井くん(Ryota Tsutsui)によるものです。多謝。

read more »

class_replaceMethod (Objective-C 2.0)

Posted in iPhone on 3月 21st, 2009 by Norihisa Nagano – Be the first to comment

Objective-C 2.0で(instance)methodを書き換えたい.
そんな時は,Objective-CのRuntime関数をいろいろ使えばできます.
Objective-C 2.0なので,当然iPhoneでも動きます.

method書き換えには,class_replaceMethodを使います.

@interface HogeA : NSObject{
}
@end

@implementation HogeA
-(void)print{
    NSLog(@"Hoge A!");
}
@end

@interface HogeB : NSObject{
}
@end

@implementation HogeB
-(void)print{
    NSLog(@"Hoge B!");
}
@end

というクラス2個があるとして

    //#import <objc/runtime.h>が必要

    HogeA*   hogeA = [[HogeA alloc]init]; //これは別に必要なし.imp(hogeA, selector);用
    SEL  selector = @selector(print);

    IMP imp = class_getMethodImplementation([HogeA class], selector);
    Method method = class_getInstanceMethod([HogeA class], selector);
    struct objc_method_description *desc = method_getDescription(method);
    char *types = desc->types;

    HogeB*   hogeB = [[HogeB alloc]init];
    [hogeB print];

    class_replaceMethod([HogeB class], selector, imp, types);

    [hogeB print];

    [hogeA release];
    [hogeB release];

こういうコードを実行すると,[hogeB print];[hogeB print];と実行しているのに

Hoge B!
Hoge A!

とprintされます.
class_replaceMethodでHogeBのprintをHogeAのprintに置き換えています.
その前の段階で,class_replaceMethodに必要なHogeAのIMPとMethodからtypesを取得しております.

MethodとかIMPの詳細については,ダイナミックObjective-Cが詳しい.
この辺の話は本にも載るのだろうか.

いろいろHackに使える(はずな)のでお試しあれ.

ちなみに,この辺のRuntime関数をばりばり使えば,Objective-C(の[ ])を使わないでCocoaTouchレイヤーが叩けるはず.いじでもC++でやる人等は要チェックです.
たとえば,上記例だと,IMP取得後に,imp(hogeA, selector);を実行すればHogeA :: printが実行できます.

iPhone x Music「iPhoneが予言するいつか音楽と呼ばれるもの」

Posted in iPhone, iPhone x Music on 2月 10th, 2009 by Norihisa Nagano – 3 Comments

2009 2/27 本が出ます.

iPhone x Music -iPhoneが予言するいつか音楽と呼ばれるもの

徳井さん金子さんと3人で書きました.

最初に書いておくと,プログラミング本ではありません!
まさか,最初の著書が技術本じゃないとは思いもしませんでした.

内容は,iPhoneを通して音楽の「いまとこれから」を考える,というものです.

本の流れとしては
1章. iPhoneがなぜ音楽を変えるのか,なぜiPhoneなのか
2章. 実際にApp Storeではどういうアプリケーションが登場しているのか
3章. それらをふまえ,最近の音楽の流れと合わせ,どういうことが起ころうとしているのか
4章. インタビュー集
となっています.

僕は主に2章を担当しました.(1章もちょっと書きました + コラム2個)

1章. iPhoneがなぜ音楽を変えるのか,なぜiPhoneなのか
ということで,背景について.

2章はミュージックカテゴリのアプリケーションのレビューです,
「iPhone,そしていつか音楽と呼ばれるもの」で書いてきたレビュー(論考?試論?)のスタイルで,ほかのアプリケーションにも言及しています.
というか,実は「iPhone,そしていつか音楽と呼ばれるもの」はこの本を書くにあたって,試しに書きはじめたものなのですが,RjDjの記事が結構評判がよかったので,同じスタイルで書きました.
つまり,(技術的に)どういう設計がなされていて,それがどういう可能性をもっていて,今度どういうことが起こるのか,もしくは,どういう意味を持ちうるのか,を明らかにすることを目指す,という書き方です.

この,2章のかなりの部分は金子さんとの共同作業で仕上げました.
そのための議論は数十時間に及びました.

3章は主に徳井さんによる,音楽のこれから話がぎっしりです.
どんな立場の人(レコード会社の人,リスナー,音楽家,プログラマー,etc)でも,これから音楽をどうとらえ,どう実践していくのか,という指針をそれぞれに考えていける,そんな内容になっています.
加えて,Audible Realitiesの活動についても書いてあります.
(最近アプリケーションを出せてませんが,近々出します)

4章はインタビュー集です.
「音楽未来形」の著者の谷口 文和さん
だれが音楽を殺すのか」等の著者,音楽ジャーナリストの津田大介さん
RjDjの開発者

にインタビューしています.
どれも非常に濃い内容になっております.

その他,城さんとアスキーの伊藤さんのコラムも掲載されております.
どれも面白いです.
僕はiPhoneアプリケーションの開発環境についてとRjDjについてのコラムを書きました.

というわけで,iPhoneで,いやiPhoneにかかわらず,これからどういうことができるか,というアイディア満載の本になっています(& 目指して書きました).
ぜひぜひ,お手に取ってみてください or 予約してください!
Blog等で宣伝していただけるとうれしいです.

追記:徳井さんによる解説

次は技術本を書くぞー

高円寺salon

Posted in Codex on 2月 4th, 2009 by Norihisa Nagano – Be the first to comment

イベントのご案内をいただきました.
movalprocessを使った作品もリリースされているdaisuke miyataniさんの新ユニットが東京上陸.
「音楽の未来を実装するということ」でご一緒させてもらった,vvvv使いの大山さんのユニット,voice.zeroがVJ.
で,なんと,いつか〜#002に出てもらったAsianDynasty Recordsのjunichi watanabe氏も!

東京復帰一発目におじゃまするイベントになりそうです.
必見ということで.

3/6でIAMASを卒業(予定)して,東京戻ります.
そろそろご案内できると思うのですが,そのころには,ここ半年やってたものが出ます.
そちらのお話もしましょうということで,イベントで見かけたら声かけてください.

09.03.13(fri.)
高円寺salon by marbletron
http://www.marbleweb.net/salon/

open 18:00

LIVE: 
Po[k]hara
Naoto Taguchi
miyachan akichan
Fugenn
Taishin Inoue
junichi watanabe
Yukitomo Hamasaki

VJ:
voice.zero