日曜日, 8月 02, 2015

Link list 2015-07

なぜモバイル技術が世界のノマド民に重要なのか

http://magazine.good.is/articles/nomadic-technology-herding-urbanization-mongolia
モバイルでの法律相談やデジタルマネーなど、遊牧生活の質を上げ、実行可能にする技術が整いつつある。友人が仕事でケニアに行くそうなので、現地の様子を教えてもらいたい。

思想としてのインターネットとネット原住民のたそがれ

http://wirelesswire.jp/2015/07/44145/

【高城剛氏トークライブ】旅は、人を幸せにするのか?イベント書き起こし

http://miraie-future.net/feature/tsuyoshi-takashiro/
ブルックリンの話が面白い。クロアチアは本当に最高(海行ってないけど)。大移動の時代はエネルギー資源がどうなるかによると思う。

On Wax

https://onwax.co/
HipHopに特化したProduct Hunt的な音楽サイト。Apple Musicの銀河系からどうやって出るかというのは日々考えるようになった。

BLTをマスターする! その1 - 食パンで作る基本のサンドイッチ講座

http://panjyoshi.jp/sandwich/lesson/lesson01.html
BLTの挟む順番はBTLだった。

Oh-My-ZshとZでコマンドラインを使い倒す

http://www.smashingmagazine.com/2015/07/become-command-line-power-user-oh-my-zsh-z/
Oh-My-Zshはずっと使ってる。Zはこの記事を読んで入れたのだけど便利。cdを記録して重み付けし、フォルダ名からパスを一発で呼び出してくれる。

フヅクエ

http://www.fuzkue.com/
行ってみたいお店。記事が面白い。

出演情報

https://www.youtube.com/watch?v=AJK-BWOXwW0
池田晶紀さん監督作。撮る準備してると思ったらもう撮られてた。流石。

https://www.youtube.com/watch?v=iI8KrpkkWo4
面白いアプリ(というかサービス)になったと思います。とはいえ実際に使えるかどうかはこれから次第なので、運用方法や開発体制含めて考えていきたい。

水曜日, 7月 01, 2015

Link list 2015-06

赤塚不二夫とトンデモない仲間達!!

https://www.youtube.com/watch?v=apTgGZ6JmQ8
ほんとにすごい。ちばてつや先生が怪我で入院して原稿落ちそうになった時に、トキワ荘のメンバーが引き継いで仕上げたんだけど、周りの反対を押し切って「やる」と決めたのが赤塚不二夫らしい。

Nadège Abadie Les Passagers

http://nadegeabadie.fr/wp-content/uploads/2014/06/les_passagers_2.jpg
実家の車がTOYOTAで、後部座席に揺られて眠るあの安心感と郷愁が込み上げてきた。

まこみな

http://mixch.tv/u/44841
MixChannelのカリスマ女子高生とのこと。ミクチャのある高校時代。カップル動画に落ち込む自分を想像する。avexが目敏くキャッチしてて、ちゃっかりAWAの宣伝もさせて(?)て、偉いなと思った。

Superhypercube for Project Morpheus brings the puzzle game into virtual reality

http://boingboing.net/2015/06/18/superhypercube-morpheus.html
美術の文脈でゲームを作るKOKOROMI CollectiveがProject Morpheus向けに作品を出すみたい。2016年はfunomenaの新作Wattamも出る。

remote year

http://www.remoteyear.com/
リモートワークしながら旅ができる。途中で仕事なくなった場合でもコンサルティングしてくれるっぽい。

URL is the new MP3

http://blog.cubic.fm/url-is-the-new-mp3/
直近ではHTML5 Experts.jpでもそういうことが言われてるし、細金くんもそういう話してる。藤幡さんはもっと前から言ってるんだけど。

KOLLECT.FMてのもあって、これもいい感じ。サブスクリプション型の方がメジャーにはなりそうだけれども。

Algorithmic Music Generation with Recurrent Neural Networks

https://www.youtube.com/watch?v=0VTI1BBLydE
持ってる音楽のコレクションから抽出されてできた音楽

p5/D3 Cookbook

http://sciutoalex.github.io/p5-D3-cookbook/

書評:ハリー・G・フランクファート『ウンコな議論』、山形浩生訳・解説、筑摩書房

http://www2.ipcku.kansai-u.ac.jp/~tsina/shohyo060317.htm

集団的自衛権と集団安全保障

http://blog.livedoor.jp/hosoyayuichi/archives/1906036.html

マクドナルドの失敗が告げる「戦後モデル」の終わり(前篇)

http://wedge.ismedia.jp/articles/-/5020

月曜日, 6月 29, 2015

iOS開発再入門 4 pd-for-iosをSwiftで使う

AudioKitやめる

AudioKit、忙しさにかまけているうちに2.1までバージョンが進み、軽い気持ちでアップデートしたらAPIが変わっていて、最新版に合わせて書き直したんだけど音が変に割れてしまうようになったので、使うのをやめた。

Pure Data for iOS

pd-for-iosはご存知Pure DataをiOSで使えるようにしたもので、Pure Dataの資産がそのままiOSで活かせるめちゃめちゃGame changingなライブラリ。デスクトップで使えるPd-extendedとは違うので、gateがないとか諸々注意する点はあるけれども、試した範囲ではパフォーマンスも問題なく、非常に便利。音の生成は全部Pure Dataに任せてしまって、XcodeではUIの部分だけ書けばいい。

  1. githubからcloneなりダウンロードなりで入手。
  2. Xcodeプロジェクトを作成(言語はSwift)し、プロジェクトファイルにFinderからlibpd.xcodeprojをドラッグ&ドロップ。
  3. プロジェクトファイルを選択し「TARGETS」の「Build Settings」にある「Search Paths」の「User Header Search Paths」にlibpdまでのパスを追加(検索窓で「user header」と入力すると早い)。$(SRCROOT)がプロジェクトファイルがあるフォルダを表す変数なので、そこから相対パスで指定するといい。ドロップダウンは「recursive」にする。
  4. 「Build Phases」にある「Link Binary With Libraries」の+ボタンを押して「libpd-ios.a」を追加(赤いままだが問題ないらしい)。

pd-for-iosはObjective-Cで書かれているので、Swiftで使うにはブリッジが必要。(プロジェクト名)-Bridging-Header.hというファイルを作成し、

#import "PdAudioController.h"
#import "PdDispatcher.h"
と書く。

「TARGETS」の「Build Settings」に「Objective-C Bridging Header」という項目があるので、ブリッジングヘッダファイルのパスを追記する。これ忘れがち。

正しく設定するとオブジェクト名やメソッド名がSwiftに変換された形で補完候補に出てくるようになる。enumがそのままだと受け取れないみたいだけど、いったん放置。

クラス変数として

var audioController: PdAudioController!
を宣言し、

AppDelegate.swiftの最初に呼ばれるメソッド内でサンプリングレートなどを設定。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    self.audioController = PdAudioController()
    self.audioController.configureAmbient(withSampleRate: 44100, numberChannels: 2, mixingEnabled: true)
    
    return true
}

アプリがアクティブでなくなった場合と、

func applicationWillResignActive(application: UIApplication) {
    self.audioController.isActive = false
}
アクティブになった場合の状態を切り替える。
func applicationDidBecomeActive(application: UIApplication) {
    self.audioController.isActive = true
}

ViewController.swiftでは、viewDidLoadメソッド内などで

    let dispatcher = PdDispatcher()
    PdBase.setDelegate(dispatcher)
    PdBase.openFile("dropophone.pd", path: NSBundle.mainBundle().resourcePath)
    PdBase.sendBangToReceiver("start")
とすれば、pd側のstartという名前のreceiveオブジェクトでBangを受け取れる。

お互いのやり取りはここを参考にする。

「readsf~」などでサウンドファイルを読み込む場合は、Xcodeでのリソースパスに準じる。wavじゃないと駄目だったり、afconvertで作ったwavだとヘッダが不正とか言われて再生できなかったのでiTunesで作り直したりして、情弱な感じのはまり方をした。

Dropophoneの音を鳴らす仕組み自体はpdで簡単に実装できた。あとはレイアウトとアニメーションなんだけど、これがまた曲者。

参考

Making Musical Appsという本を読んだ。Safari Books Onlineにもある。

YouTubeでLearning libPD for iOSというチュートリアルがあって、親切。インストールの手順など多少違うので後で確認する。