iPad」カテゴリーアーカイブ

12月20日は大垣・名古屋でMIRAレクチャー

Cycling’74でMIRAを開発しているSam Tarakajian氏が来日中で、IAMASでMIRAやMaxに関するレクチャーをしていただくことになりました。MIRAはMaxと連携してiPadをコントローラとして活用するアプリで、Maxでボタンやスライダーを置けば、そのままiPadで動作します。同じネットワークに繋ぐだけの手間要らず、呆気ないくらい簡単なので、OSC云々だった人は脱力間違いなし。あまりにもシンプルなので、この機会に周辺情報を深く尋ねようと思っています(笑)。

さらに同じ日の夜に開催されるSC名古屋勉強会でもMIRAのプレゼンテーションがあります。こちらはHTML5版のSuperColliderであるCoffeeColliderの開発者mohayonao氏のレクチャーがメインなので、MIRAに関しては短時間になる見込みです。ご興味のある方は、どちらかにご参加いただければ幸いです。

MIRA

MIRA & Max レクチャー
 講師:Sam Tarakajian (Cycling’74)
 日時:2013年12月20日(金)15:00〜16:30
 会場:IAMAS 本校舎3F 小ホール
参加費:無料(要事前申込)

CoffeeColliderがやってくる!〜SC名古屋特別編〜
 講師:mohayonao
 日時:2013年12月20日(金)19:00~21:00
 会場:カフェパルル
参加費:800円(1ドリンク付き)
【詳細・申込】

11月29日は東京で展示

招待者のみのイベントでしたので事前告知はしませんでしたが、去る11月29日はフランス大使公邸でARART作品を展示しました。今回のイベント向けの新作とともにモナ・リザなどの名画を並べて、あわよくばルーブルでAR美術館を開いていただこうという魂胆。大使からは褒め言葉をいただき(社交辞令?)、他の参加者からも人が人を呼んで大好評でした。美術に詳しい人が多く、名画の背景にあるストーリーを読み取る方もいて、オリジナルと変容現実(拡張現実)を結ぶフレンチ・コネクションができたかもしれませんね。

French_ARART

展覧会「French ARART」
会期:2013年11月29日(金)
会場:在日フランス大使館・フランス大使公邸

9月6日より大垣で展示&イベント

2年に1度開催される岐阜おおがきビエンナーレ、今回はabs()なるユニットでイベントと展示を行います。イベントでは映像を撮影するデバイスを取り付けてサイクリングを行い、その映像がインスタレーションに取り込まれるようになっています。イベントはご自分の自転車で2時間ほどのサイクリングができる方ならどなたでも歓迎、参加をお待ちしています。

biennale13_banner

メディア・イベント「FESTAVITA」
 日時:2013年9月7日(土)09:00〜12:00
 会場:IAMAS 他
 定員:10名(予約制)
 出演:abs()〈 赤松正行 + 朴永孝+白鳥啓 〉

▶FESTVITAサイクリング・ガイド

メディア・インスタレーション「TRAVITA」
 会期:岐阜おおがきビエンナーレと同じ
 会場:IAMASマルチメディア工房
 制作:abs()〈 赤松正行 + 朴永孝+白鳥啓 〉

岐阜おおがきビエンナーレ
 会期:2013年9月6日(金)〜9月16日(月)
    平日  13:00-19:00
    土・日 11:00-19:00
    最終日 11:00-18:00
    水曜休
 会場:情報科学芸術大学院大学[IAMAS]
    大垣市多目的交流イべントハウス
    IAMAS OS
    ちょいみせ
入場料:無料

意思決定はフリーに

ウィトゲンシュタインの「論理哲学論考」、有名な最後の命題は「語りえぬものについては、沈黙しなければならない」だ。これにチューリングらの計算可能性やゲーテルの不完全性定理などを付け加えても良いが、日常生活においては「判断できないことについては、沈黙しなければならない」と言い換えることができるだろう。彼らが示したように、判断できないことは確かに存在する。

だが、僕たちは常に判断することを求められる。しかも「よく考えて後悔しないように正しく判断しなさい」と子供の頃から言われ続けている。判断できないことを判断するプレッシャーは、ますます判断を困難にする。その袋小路から逃れられないので、人は優柔不断になって停滞したり、付和雷同して判断から逃げたりする。やがては前例主義や教条主義が便利なツールとして幅を利かせる。その結果として社会は中庸になって停滞し、時には声高な意見が声高であるという理由だけでまかり通る。

では、積極的に「判断できないことを判断する」には、どうすれば良いか? もちろん、それは本質的に無理無茶だ。不可能であり、理不尽でもある。ただし、唯一と思える解決策があり、それは「ランダム」に選択することだ。何かを決めななければならない時、何かを選ばなければならない時、どうすべきか考えても分からないなら、コインを投げれば良い。「下手の考え休むに似たり」と言うように、それ考えても無駄なのだから。

コインでもいいが、同じことをワン・タップで得られるのが「Yes|No Free」だ。このアプリを起動するとYesかNoかが表示される。ただそれだけだ。公衆の面前でコイン投げが憚られる時でも、何食わぬ顔をして判断を下すことができる。最初期から(それこそJailbreakしかなかった頃から)提供している、もっともシンプルにして、もっと有益なアプリだと信じて止まない。

Yes-and-No-500

Yes|No Freeで複数の選択肢から選ぶ時は、ステップ数を増やすだけだ。ただ、これは面倒であるので、もうひとつ作ったのが「意思決定 Free」だ。こちらは2から20までの範囲で選択肢の数を設定して、ルーレットのようなホイールを回す。回転が止まった時に上部のマークが示す数値が結果だ。数値をゼロ始まりにして選択肢を10個(0から9まで)にすれば、複数回数値を得ることで任意の桁数の選択肢にも対応できる。

Decisions-500

Yes|No Freeも意思決定 Freeも無償であり、ファイル・サイズも小さいので、是非ともインストールして常備して欲しい。繰り返そう。「判断できないものについては、沈黙しなければならない」が、それでも判断する必要があれば、Yes|No Freeや意思決定 Freeを使おう。これであなたは優柔不断でも付和雷同でもなくなる。選ばれた結果に従って堂々と行動すれば良い。理由を尋ねられれば、「神託です」と答えるだけで十分だ。

コイン投げ、サイコロ、くじ、占い、これらはすべて古くから伝わる叡智であり、現代においても有効だ。もっとも、宗教や科学はしばしばランダムを否定してきた。しかし、中世の宗教社会と近代の科学社会が何をもらたらしたかを考えてみよう。ランダムは決定論と自由意志を超越する手段であり、ランダムは最速の判断手法でもある。Yes|No Freeと意思決定 Freeはそれをスマートに実行する。

誤解のないように付記しておくと、ここではあらゆる判断をランダムに委ねることを提案していない。判断可能であり、判断に責任を持てるなら、あなたは自分の意志(意思)で判断するだろう。それは私の知ったことじゃない。そうではなく「判断できないこと」に思い悩む愚行を避けるためにランダムが使えるということだ。サクっと決めてサクっと進む、それが最適解だと思う。

アクセスガイドで行こう!

iOS 6の隠れた目玉機能ナンバー・ワンは何と行っても「アクセスガイド」で決まり。アクセスガイドって言葉はイマイチだけど、要は特定のアプリだけを動作させて、他のことはさせない専用機モード。展覧会や店舗などで一般のお客さんに使ってもらう用途に最適ね。これでまたiOSデバイスの商用利用がグンと進むこと間違い無し。

で、アクセスガイドの使い方は簡単。

  1. 「設定」アプリで「一般」の「アクセシビリティ」の「アクセスガイド」を選ぶ。
  2. アクセスガイドをオンに設定。パスコード(4桁の数字)も設定する。
  3. 使いたいアプリを起動する。
  4. ホーム・ボタンをトリプル・プッシュする(3回押す)。
  5. アクション・シートの「アクセスガイド」を選ぶ。
  6. アクセスガイドが表示されれば「開始」ボタンをタップする。

これでアクセスガイドが機能した状態になり、ホーム・ボタンを押してもアプリが終了しない。ステイタス・バーをドラッグしても通知センターが表示されない。さらに、スリープ・ボタンを長押ししも電源が切れない。スリープ・ボタンとホーム・ボタンを同時に長押ししても再起動後はそのアプリに戻っちゃう。さらにさらに、ですよ、無理矢理に異常終了するアプリを作って試したら、一瞬ホーム画面が表示されるものの、次の瞬間にはそのアプリが起動される。つまり、万が一にもお馬鹿なバグがあっても何とかなる(かもしれない)。最高でしょ?

ちなみに、設定で「画面のスリープを許可」をオフにしておけば、スリープ・ボタンを押してもスリープしない。アクセスガイド開始時には、画面のタップを無効にする範囲が指定できて、オプションではタッチ自体や加速度センサーも無効にできるね。

アクセスガイドから抜けるのも簡単。

  1. ホーム・ボタンをトリップル・プッシュする(3回押す)。
  2. パスコードを入力する。
  3. アクセスガイドが表示されれば「終了」ボタンをタップする。

パスコードは4桁の数字だから、そのうち破られちゃうんじゃないかとの心配も(ほぼ)無用。パスコードを間違えると10秒間はパスコードの再入力ができない。さらに間違えると60秒間、180秒間と入力できない時間が延びて行く。よくできています。

ちなみに、iOS 6以前からApple Storeに展示されているデモ機には同様の機能があって、ズルい!と思ったものでしたけど、これでOKですね。もっと、Apple Storeのデモ機にはホーム・ボタンを押すと「スタッフを呼ぶ」ボタンが表示されたりして、もう一歩先行く機能がありますけどね。

「iPhoneアプリが奏でる音楽の未来」リンク集

最近発売された雑誌「アルテス 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 3.1.3をサポートする方法

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プロパティの説明を追加しました。併せてテスト用プロジェクトも更新しました。

iSuperColliderのビルド方法

先日のワークショップで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日に再度手順を検証して記事を書き換えました。