5/16は中部学院大学の現代産業研究という講座で講演をさせていただきます。無料の公開講座でどなたでも参加可能とのことですので、お近くの方、ご興味をお持ちの方がいらっしゃいましたら、どうぞお越しください。本来は大学2年生向けの授業らしいので、私の日頃の活動や制作を平易にご紹介しようと思っています。
中部学院大学・現代産業研究
講演「モビリティとリアリティの彼方へ」
日時:2012年5月16日 10:50〜12:20
会場:中部学院大学・各務原キャンパス 1101大講義室
5/16は中部学院大学の現代産業研究という講座で講演をさせていただきます。無料の公開講座でどなたでも参加可能とのことですので、お近くの方、ご興味をお持ちの方がいらっしゃいましたら、どうぞお越しください。本来は大学2年生向けの授業らしいので、私の日頃の活動や制作を平易にご紹介しようと思っています。
中部学院大学・現代産業研究
講演「モビリティとリアリティの彼方へ」
日時:2012年5月16日 10:50〜12:20
会場:中部学院大学・各務原キャンパス 1101大講義室
最近発売された雑誌「アルテス VOL.02」に佐藤薫さんとの対談「iPhoneアプリが奏でる音楽の未来」が掲載されています。とてもディープでマニアックな内容ですが、これまで表立って書いたことがない事柄にも触れていますので、ぜひお読みになってください。
ところで、この対談の註釈に入れたURLのいくつがが省略されていますが、逐一URLを掲載しても煩雑なので、この編集方針は妥当かと思います。そこで、WEB検索の手間を省くためにも、以下にリンクされた註釈項目を入れました。誌面を読みながら気になった事柄があれば、クリックしていただければ幸いです。
1 Oscillator | Chaotic Audio Oscillator for iPhone, 2008
2 Palm
3 PDA
4 App Store
5 ギーク
6 Treo
7 Visor
8 ザウルス
9 Snappy
10 ライフログ
11 DSPBox
12 あけおめバルス
13 AR
14 セカイカメラ
15 脱獄
16 GIS
17 API
18 UDID
19 FingerPiano
20 MiniPiano
21 PocketGuitar
22 Ocarina
23 Core Audio
24 Android
25 iOS 5
26 米本電音研究所
27 下村音響
28 Echochops
29 Frippertronics
30 Discreet Music
31 Echoplex
32 Gangsa
33 MINI-COMPOSER | 小さな作曲家の物語
34 Sync for Japan
35 Okeanos Okeanos Buoys
36 iOSの教科書
37 この演奏の…
38 iDonation
39 ハッキング
40 ベンディング
41 OSC
42 Max
43 SuperCollider
44 XYパッド
45 LFO
46 ノード
47 GPS
48 Biophilia
49 プロモーション・アプリ
50 DAW
51 OOPS
52 Xcode
53 ファイヤー・サイド
以上、紙雑誌とWEBのハイブリッドでした。
iOS SDKは年々進化を続けているのはイイんだけど、後方互換性は一部犠牲になっている。他のプラットフォームに比べると数倍マシだとは思うけどね。ともあれ、最新OS最新モデルに対応しつつも、以前のOSや機種を切り捨てられない場合も少なくない。しかも初期のSDKで作成したプロジェクトをアップデートし続けるのもスッキリしないので、最新SDKから新しいプロジェクトを作ったりすると、それなりに問題が発生する。
そこでiOS SDK 5.1 (Xcode 4.3.2)で作ったプロジェクトを初代iPhoneの最終OSであるバージョン3.1.3に対応させる方法を書いておくね。ここではテンプレートとしてUtility Applicationを用い、iPhone/iPad両用のユニバーサル・アプリを作ることにします。もちろん、ARCはオフ、Storyboardも使えませんよ。
まず、何はともあれDeploymentを3.1に設定する。
■ プロジェクトのiOS Deployment Targetを 3.1 に設定。

次いで、初代iPhone、iPhone 3G、iPod touch(第1世代と第2世代)のCPUであるarmv6でも動作するように指定する。
■ プロジェクトのBuild SettingsのArchitecturesのArchitecturesに armv6 を追加。

■ プロジェクトのBuild SettingsのArchitecturesのBuild Active Architecture Onlyを NO に設定。

■ ウィンドウの下部にあるValidate Settingsをクリックし、Perform Changesを実行。

■ Info.plistにある Required device capabilities を削除。

Blocksを使う場合には以下の設定も必要。
■ プロジェクトのBuild SettingsのLinkingのOther Linker Flagsに -weak-lSystem を追加。

次に、テンプレートが生成するコードはiOS 3では存在しないクラスやメソッドを使っているので、iOS 3でも動作するように変更する。
まず、テンプレートはiPad用にUIPopoverControllerを使っているので、UIKitのリンクを弱める。
■ ターゲットのBuild PhasesのLink Binary With LibrariesにあるUIKit.frameworkを Optional に設定。

また、デバイスの判断にuserInterfaceIdiomメソッドもiOS 3では使えない。そこで汎用的に利用できるマクロを用意して、ソースコードを書き換える。
■ 〜-Prefix.pchに以下のマクロを定義。
#define UI_USER_INTERFACE_IDIOM() ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
■ ソースコードの該当箇所を書き換える。AppDedegateに1ヵ所、MainViewControllerに3ヵ所、FlipsideViewControllerに1ヵ所あるはず。
[[UIDevice currentDevice] userInterfaceIdiom]
を
UI_USER_INTERFACE_IDIOM()
また、UIWindowのrootViewControllerプロパティもiOS 3では使えない。
■ AppDedegate の application:didFinishLaunchingWithOptions: の、
self.window.rootViewController = self.mainViewController;
を
if([self.window respondsToSelector:@selector(rootViewController)])
self.window.rootViewController = self.mainViewController;
else
[self.window addSubview:self.mainViewController.view];
同じく、UIViewControllerのcontentSizeForViewInPopoverプロパティもiOS 3では使えない。
■ FlipsodeViewController.m の initWithNibName:bundle: の、
self.contentSizeForViewInPopover = CGSizeMake(320.0, 480.0);
を
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) self.contentSizeForViewInPopover = CGSizeMake(320.0, 480.0);
以上の作業でiOS 3.1.3からiOS 5.1までのすべてのデバイスで動作するユニバーサル・アプリになったハズ。お疲れさまでした。
このようにして作ったテスト用のプロジェクト一式も入れておきますね。
Download RunOnOS3Test.zip
【追記】最後のcontentSizeForViewInPopoverプロパティの説明を追加しました。併せてテスト用プロジェクトも更新しました。
3/24はNxPC.LIVE vol.12なるイベントでThe Breadboard Bandのメンバーとして演奏します。The Breadboard Bandは2005年に結成した4人組で、ブレッドボードに組んだ電子回路で演奏します。とは言え、7年後の今日としての演奏は意味として音楽としても、また違ったものになると思います。
このイベントは間もなく消滅するIAMASのDSPコース出身のアーティストを中心とした多彩な面々の演奏&映像が満載ですので、ご都合がつきましたら、ぜひお越し下さい。The Breadboad Bandはトップを飾って21:30過ぎに登場の予定です。
NxPC.LIVE vol.12 IAMAS WAREHOUSE PARTY
日時:2012年3月24日(土)21:00〜
会場:SECO(東京都渋谷区)
料金:2,000円(1ドリンク付)
先日のワークショップでiOS用のSuperColliderを紹介したことで、その入手方法の問い合わせが何度かあったので、ビルド方法のメモを書いておきます。ただし、これは2012年3月7日時点のレポジトリでの作業方法です。その後にソースコードが変更されることもあるでしょうから、同じように作業してもビルドできるとは限らないです。従って、質問されてもお答えできないってことでご了承願います。
How to build SuperCollider for iOS (March 7th, 2012)
Don’t ask me any questions
Getting source codes
(1) Open Terminal
git clone git://supercollider.git.sourceforge.net/gitroot/supercollider/supercollider isc cd isc git checkout 3.5 git submodule init && git submodule update
Building SuperCollider.app (Language)
(1) Open isc/platform/iphone/iPhone_Language.xcodeproj
(2) Set Scheme to ‘SuperCollider > iOS Device’
(3) Set Build Configuration to ‘Release’
(4) Click iPhone_Language in the navigator area
Click SuperCollider in TARGETS
Click Build Settings
Scroll down to Search Paths and open Header Search Paths
Change ../../external_libraries/yaml-cpp-0.2.6/include to ../../external_libraries/yaml-cpp-0.3.0/include
(5) Open externals/yaml group of iPhone_Language in the navigator area
Remove src group
Add isc/external_libraries/yaml-cpp-0.3.0/src into externals/yaml group
(6) Click iPhone_Language in the navigator area
Click SuperCollider in TARGETS
Click Build Phases
Remove libsndfile_iphone.a from Link Binary With Libraries
Add isc/platform/iphone/lib/ libsndfile_iphone.a to Link Binary With Libraries
(7) Connect your iOS device and run
Building iscsynth.app (Synth)
(1) Open isc/platform/iphone/iPhone_Language.xcodeproj
(2) Set Scheme to ‘iscsynth > iOS Device’
(3) Set Build Configuration to ‘Release’
(4) Open Resources group in iPhone_Synth.xcodeproj in the navigator area
Click iscsynth_MainWindow.xib
Remove Dir Browser View Controller from Tab Bar Controller in Objects
(5) Click iPhone_Language in the navigator area
Click iscsynth in TARGETS
Click Build Phases
Remove scUBlibsndfile.a from Link Binary With Libraries
Add isc/platform/iphone/lib/ libsndfile_iphone.a to Link Binary With Libraries
(6) Connect your iOS device and run
以上です。
なお、このビルド作業ではFredrik Olofsson氏にヘルプしていただきました。感謝!(でも彼にも迷惑をかけないようにお願いしますね〜)
また、ワークショップで使用したiSuperColliderは、スリープを自動禁止にしたり、スピーカー選択のコードを修正したり、といった変更を少々加えています。
【追記】本記事初出時には2012年1月末時点のレポジトリでのビルド方法を記載しましたが、2012年3月7日に再度手順を検証して記事を書き換えました。
3月5日は名古屋で開催されるスマートフォンITSセミナーで講演をさせていただきます。お題としてはコンシューマ視点でのスマートフォンITSだそうです。偶然にも最近新しいクルマを買ったこともあってネタは多く、ガラパゴス化しているクルマ&ITSはツッコミどころ満載。ご興味がありましたら、お越しいただけると幸いです。よろしくお願いします。

スマートフォンITSセミナー
講演「スマートフォンITSがもらたらす世界:コンシューマの視点から」
日時:2012年3月5日(月)14:00〜16:00
会場:ダイテックサカエ 6F クリエイトホール 【地図】
参加:無料(要申し込み)
2月29日はSuperCollider for iOSのワークショップを渋谷のWOMB LOUNGEで行わせていただきます。本日!なのですが、すでにワークショップは満員御礼とのことなので、事前の告知を控えさせていただいていました。受講される方はよろしくお願いします。
SuperCollider Workshop at WOMB LOUNGE
第4回「愛のSuperCollider」
日時:2012年2月29日(水) 19:00〜22:00
会場:WOMB LOUNGE(渋谷)
なお、3/3に開催される受講者の方々による作品発表会は当日参加可能とのことなので、ご興味のある方にお勧めします。
SuperCollider Workshop at WOMB LOUNGE 発表会
日時:2012年3月3日(土) 19:00~22:00
出演:SuperCollider Workshop at WOMB LOUNGE受講者のみなさま
ゲスト:Craftwife+Kaseo+
参加料:2,000円(1ドリンクつき)
会場: WOMBLOUNGE(渋谷)