と
http://veadardiary.blog29.fc2.com/blog-entry-4587.html
を参考にして、AppleScriptで、シャッフルをONにしてランダムに選曲したものを指定した間隔で再生し続けていくものを作ってみました。
変数のplayTimeが再生時間、skipTimeは頭から何秒スキップして再生開始するか指定できるようにしてあります。依頼のあったリクエストの場合はplayTimeが2でskipTimeが0というようなことになります。
Mac OS X 10.7+日本語環境+iTunes 11.0.4
でしか確認していないです。英語環境だとうまく動かないかも。iTunesが11以外のバージョンでもうまく動かないかも。
使ってみると、iTunesの中で埋もれていた曲が色々とみつかって、けっこう面白いです。
]]>まず、ハードウェア構成ですが、2台のYAMAHA MIDI PIANO、8台のMusikelectronic RL906スピーカー、各ピアノに仕込んだAMCRON PCC-160バウンダリーマイク、RME Fireface 800オーディオインターフェイス、そしてApple MacBook Proから構成されています。ソフトウェア的には、MacBook Pro上でMax6とともにLaserコントロール用のプログラムが動いています。僕は、Max6を利用しMIDIピアノの制御、並びにMIDIピアノに仕込んだマイクから来た音の音響処理、そしてその出力の制御を担当していました。Laserパートはsine wave orchestraの古舘さんが担当しています。
「collapsed」は3つのテキストをもとに動作しています。テキストはプラトンの「国家」の洞窟の比喩の部分、ダニエル・クインの「イシュマエル」、そしてウィリアム・バトラー・イェイツの「自我と魂の対話」の3つを利用しています。3つのテキストはランダムに選ばれ処理されていきます。
テキストのデータは、それぞれ行単位、単語単位でデータベースに保持されています。データベースエンジンは、Max6からJavaScript経由で扱えるということでsqlite3を使っています。
テキストが選ばれると、テキストから順番に1行取り出されます。ここで、2台のピアノのうちどちらがプライマリでどちらがセカンダリか、ランダムに選択されます。ピアノの関係性が決まると、続いてその行に含まれている単語が順番に取り出されます。
単語はさらに音素(phoneme)に分解されます。今回は、音素の辞書としてカーネギーメロン大学のPronouncing Dictionaryを利用しています(http://www.speech.cs.cmu.edu/cgi-bin/cmudict)。この辞書は、125,000の単語についてそれぞれ音素に分解したデータを持っています。この辞書を、同じくsqlite3形式に変換して、Max6の中からJavaScriptで呼び出しています。選択された単語を元に辞書を検索し、合致すると音素に分解された文字列が得られるようになっています。
今回利用した辞書には84種類の音素が使われていました。それぞれの音素に対して、MIDIピアノで利用している88鍵の範囲のMIDIノートナンバーをあらかじめ固定で割り当ててます。4鍵盤分足りてはいませんが、アルファベットを鍵盤にマップしようとした場合26種類しかなく、また統計的に"e"の文字が最も多く出現するなど傾向がわかっているため、テキストからMIDIへ変換した際に多様性が出てこないということで今回の変換要素には利用しませんでした。
単語の音素が得られると、先ほどのMIDIノートの割り当てでまず音程が決まり、それぞれの音素に対して音の長さ(ゲートタイム)と音の大きさ(ベロシティー)が、指定された範囲の中からランダムに選ばれ設定されます。開発段階では、各音素でそれぞれゲートタイムもベロシティーも固定で割り振っていたのですが、その場合特定の単語は特定のフレーズとして表現されるため、どの単語がMIDIで演奏されているかがわかるようになります。坂本さんとしては可能な限り判別できる要素は省きたいとのことで、ゲートタイムもベロシティーもランダムに割り振ることになりました。
MIDIデータが決まると、それぞれMIDIピアノに送られます。プライマリピアノへは即時送信されますが、セカンダリピアノへは1分後にデータが送られるようになっています。2台のピアノが対話、輪唱しているような状況になるわけです。実際、演奏されているのは各単語の発音が変換されたものなので。
同時に、レーザーのプログラム側に送るデータも準備され、送信されます。レーザー側には単語そのものと、各音素のゲートタイムがOpenSoundControlプロトコルで送られます。各音素のゲートタイムは、レーザー側で壁面に文字が投影される際のタイミングに利用されています。
ひとつの単語が処理されると、次の単語について同様に処理が行われます。そして一行分のデータが処理されると、テキスト内から次の行が取得され、同様に処理が繰り返されていきます。
MIDIピアノで単語が演奏されると、ピアノ内に仕込まれたマイクで音が拾われ、Max6の中で音響処理されます。具体的にはEQとリバーブで音を可能な限りぼかすようにしています。処理された音は、天井付近に設置されている8台のスピーカーへ送られ、再生されます。この時、プライマリピアノの音はプライマリピアノに最も近いスピーカーから順に音が出力され、セカンダリピアノの音はセカンダリピアノに最も近いスピーカーから順に音が再生されるようになっています。もともと展示スペース自体にかなり長めの残響特性があるのですが、その後に微かにモワッとした音が空間を駆け巡ります。
以上のような仕組みで、あのスペースに置かれている2台のピアノはコントロールされています。一見、ランダムに演奏されているだけ、と感じられるかもしれませんが、上記のように全て選択されたテキストに基づいて演奏されています。
この説明を読んでから再度会場に足を運んでいただき、1、2時間ほどソファーに座って体験すると、あるいは関係性がより明確になるかもしれません。
昨日はご本人がいらっしゃって、パッチを動かしながら色々と確認。ちょっと認識の違う部分があり、そこがそこそこインパクトのある部分だったので、ほぼ徹夜で改修してみているんだけど、どうもうまくいかない...。jsオブジェクトがハングするときになにもエラーを残してくれないので、そこが一番つらい...。
すでにtwitterの方に画像を流した通り、99年のオペラLIFEで使用したヤマハのカスタムメイドMIDIピアノが2代届く。このMIDIピアノをMaxから制御して色々とやるわけだけど、今日はこの調律から始まって、MIDIの制御ができるかどうかの確認、実際にプログラムを動かして音の感じとか微調整していくことになりそう。
明日、高谷さんチームの古舘さんがいないので、今日はかなり遅くまでレーザー側との調整作業になりそう。
http://twitpic.com/b6dgr0/full
http://www.mot-art-museum.jp/music/
昨日の作業で高谷さんパートでどういう情報が必要なのかを確認したんだけど、変換するマップが決まらないと生成ができないので、とりあえずDBのスキーマ変更やマップのためのテーブルを用意したり、マップさえ決まれば各ノートのdurationを計算してDBに投入するためのスクリプトを書いたりして終わる。
今日はいよいよご本人が会場入りするので、ネット周りの環境とか電源関係とか、昨日実際に会場に入ってみて足りていないものを用意しつつ、自分の作業用にやはりFireface UCXを持って行くことに。午前中になんとか会場入りして、音だけで自走できるところまで仕上げつつ、ピアノとご本人の到着を待つ感じになりそう。
ちなみに、今回の展覧会のサイトなどにLIFE-fiiの画像が使われているけど、LIFE-fiiの展示は行なわれません(^^;;)。「collapsed」と「silence spins」は新作で画像がなかったんでいつの間にかLIFE-fiiの画像が使われていたとのこと(^^;;;)。紛らわしくてすみません...。
]]>パッチは本当は9月中に仕上げるつもりだったのが、こんなギリギリまで作業することになってしまいそこそこ焦っているんだけど、なかなかのらない時に画面に向かっていても作業は進まないもので、そのあたり集中力とかほんと散漫...。どうしたものか...。
]]>早朝6時から都内某所の林の中でデバイスのテストをしてきました。こんな感じ。備えなしに乗り込んだら蚊に刺されまくって大変...。耐えられなくて途中で虫よけスプレーを調達してきてもらったりしていました。
arudino用のシールドには新たにopenlog(http://www.switch-science.com/products/detail.php?product_id=389)をのせて、RS-422と両方出記録できるかどうかを試していたんだけど、どうも422の方がうまく出力されてこない。OS側もFedora、Mac OS X Lion、Windows XPと試したけどなぜかなにもデータが流れてこない。色々と手を尽くしても改善しないので、持ち帰って再検証ということに。
ちなみに、openlogの方は、商品ページで謳っているような57600なんてスピードは出ず19200で利用している状況。かなりギリギリではあるけど、一応書き損じは起していないみたい。
いずれにしても、このあたりの問題は連休中になんとかしないと間に合わない...。
ちなみに、前にテストしていたperlでのデータロガーは取りこぼしもなく問題なく利用できることがわかったので、これを少々いじって本番で利用する予定。
それよりも大きな問題は台風。実際の現場は宮崎の諸塚村の山の中なんだけど、羽田から飛び立てるんだろうか...。
]]>来週から某所で森林の中の樹の生体電位を測定する、という作業を行なう。ここしばらくその準備を進めているんだけど、予算が大幅カットされたこともあって色々と準備が追いついていない状況。その予算もようやく先週末に目処がついて、色々と動き出しているんだけど、特に、記録した生体電位を音響化する部分について、まだなかなかこれだ!というものが出てきていない。
そこでもんもんとしていても先に進まないので、ひとまず記録のための環境をまずはしっかり準備していくことに。Sensignalの宇野君が作ってくれた、試作のarduinoシールドを使って、いまはシリアルポートからのデータを取りこぼしなくMac OS Xで取得できるかテストしているところ。なんでテストしているかというと、Perlでやっているから(^^;)。ちょっと心配なんだよね。これで問題がなければ機材的にだいぶ楽になる。おそらく問題ないと思うんだけど...。
]]>先日、USでGoogleの純正android携帯端末、Nexus Sが発売された。Nexus One発売の時はGoogle自身が販売していたんだけど、今回は販売はアメリカの大手量販店BestBuyにまかせるような形になった。で、このBestBuy、そのTOPページに「国外には発送しないけど海外からの注文はOK」というスタンスであることが書かれている。12/27現在はなぜか日本からアクセスできなくなっているけど...。Nexus Sの販売で海外からの注文が殺到しているのかな。
いずれにしても、海外からでも注文受け付けてくれることがわかったので、早速以前手続きをしていたスピアネット(https://spearnet-us.com/move/)という個人輸入、転送サービスを使ってみることに。
まず、スピアネットにアカウントを作って割り当てられた住所と番号を取得しておく。それをもってBestBuy.comにアクセスしてNexus Sの購入手続きを進める。この際、発送先住所としてスピアネットから割り当てられた住所を入力。電話番号も同じ。Billing Addressは本来は日本の住所を書かないといけないのかもしれないけど、スピアネットの住所をそのまま使った。クレジットカードは日本のカード番号を入れてそのまま問題なく決済された。
決済が完了して注文が確定したら、今度はスピアネットの方に転送依頼を出す。アカウントを使ってログインしたあとに、「転送依頼」のボタンをクリックし、日本への発送方法等を入力する。今回は宅配便を選んでみた。「購入先」は「BestBuy」と入力し、「商品金額の合計」には、送料、税金込みの金額、今回は「$581.66」と入力する。「eBayアイテムID」は今回は関係ないので空欄のまま。「クーポン番号」も特に何もないのでこちらも空欄。その次の「依頼商品商品名称 」には2つテキストフィールドがあるけど、最初のところには商品の詳細とbestbuyのオーダー番号を書いておく。今回の場合は「Google-Nexus S Mobile Phone-Black-BBYM08EG BBY01-374*********」というような感じに。二つ目のフィールドには商品の単価を書いておく。今回の場合は「$529.99」だったかな?
これで依頼を出しておけばひとまずあとはbestbuyからスピアネットの倉庫に配送されるのを待つ。荷物がスピアネットに届くとメールで連絡がきて、その中に日本への発送料決済のためのURLが含まれている。今回の場合は送料+手数料合わせて$32。安い...。決済完了後数日すると発送の連絡がきて荷物のtracking numberと追跡するためのURLが送られてくる。今回は日通のサービスで配送された。
追跡サービスで色々とみつつようやく12/26の昼過ぎにnexus sが届く。関税は取られず、消費税の1,200円のみ請求されて受け取ることができた。最終的にかかった費用は、
本体+加州消費税:$581.66($1=85円で49,441円)
US->日本送料:$32($1=85円で2,720円)
税関での消費税:1,200円
となって合計で53,361円。安いだろう、これは(^^;)。円高ってのももちろん大きな要因だけど。
]]>先日、予約していたiPad WiFi 16GBモデルが家に届いてから、ずっとこれで遊んでいる。やはりちょっと重いけど、画面が大きいというのは全然違う。
そんなiPadでSuperColliderが動くのかどうか試してみることに。まず、SDKは3.2のものが必要なので、最新版をインストールしておく。その後に、ターミナルでsvnを使って最新版ソースコードをcheckout。
svn co https://supercollider.svn.sourceforge.net/svnroot/supercollider/trunk SuperCollider3
現時点でのリビジョンは 10138。
A SuperCollider3/windows/sc3-win-installer-template.wxs
A SuperCollider3/windows/Win32Tests.sc
A SuperCollider3/windows/distrowin.py
A SuperCollider3/windows/WindowsReleaseHowTo.txt
A SuperCollider3/windows/compat_stuff
A SuperCollider3/windows/compat_stuff/getopt.c
A SuperCollider3/windows/compat_stuff/WSA-pthread-compat-stuff.cpp
A SuperCollider3/windows/compat_stuff/getopt.h
A SuperCollider3/windows/compat_stuff/stdbool.h
A SuperCollider3/windows/scsynth.vcproj
A SuperCollider3/README LINUX
U SuperCollider3
Checked out revision 10138.
iPhone/iPad関係のファイルは、以前と同じように「iphone」フォルダの中に収められている。
まずは、「iPhone_Synth.xcodeproj」を開く。開いたら、プロジェクトウィンドウの左上の「概要」ポップアップメニューから以下の項目を選択する。
・アクティブSDKを「iPhone Device 3.2」
・アクティブターゲットを「libscsynth」
続いて、「プロジェクト」メニューから「プロジェクト設定を編集」を選んで設定画面を開く。
コードサイニングの中の「コード署名ID」で自分のIDを選んでから、以下の設定を変更する。
・DeploymentのTarget Device Familyを「iPad」
・DeploymentのiPhone OS Deployment Targetを「iPhone OS 3.2」
・アーキテクチャのベースSDKを「iPhone デバイス 3.2」
設定ができたら設定画面を閉じて「ビルド」メニューから「ビルド」を実行する。手元では警告が11ほど出たが、このままで問題ない。
続いて、「iPhone_Language.xcodeproj」を開く。
まずは、先ほどの「iPhone_Synth.xcodeproj」の設定と同じように、左上の「概要」ポップアップメニューから以下の項目を選択する。
・アクティブSDKを「iPhone Device 3.2」
・アクティブターゲットを「SuperCollider」
続いて、「プロジェクト」メニューから「プロジェクト設定を編集」を選んで設定画面を開く。
先ほどと同じように、コードサイニングの中の「コード署名ID」で自分のIDを選んでから、以下の設定を変更する。
・DeploymentのTarget Device Familyを「iPad」
・DeploymentのiPhone OS Deployment Targetを「iPhone OS 3.2」
・アーキテクチャのベースSDKを「iPhone デバイス 3.2」
設定ができたら設定画面を閉じて、「グループとファイル」の中の「Resources」を展開する。
「Resources」の中にある「SuperCollider_MainWindow.xib」をダブルクリックする。すると、Interface Builderが立ち上がり、iPhoneサイズの「Tab Bar Controller」ウィンドウが表示される。ここで、「File」メニューから「Create iPad Version Using Autosizing Masks」を選ぶ。
すると、iPadサイズの「Tab Bar Controller」ウィンドウが表示され、「Untitled」というプロジェクトウィンドウが作られる。
「Untitled」のウィンドウを最前面に持ってきて、「File」メニューから「Save」を選択する。保存する際には、ソースコードの「iphone」フォルダの中の「iPhone Resources」フォルダの中に「SuperCollider_MainWindow.xib」として保存する。
上書き保存(Replace)するかどうか聞かれるので、「Replace」ボタンをクリックして保存する。
保存できたらウィンドウを全て閉じる。
Xcodeに戻って、先ほどの「グループとファイル」の中の「Resources」には他に「SuperCollider_FileTransfer.xib」と「SuperCollider_BrowserPage.xib」というファイルがあるので、これも同様にそれぞれ開いて、「Create iPad Version Using Autosizing Masks」でiPad番のものを生成し、それぞれ同じファイル名で保存する。
Interface Builderのファイルを変更できたら、ビルドを実行する。いくつか警告が表示されるが問題なく完了する。
あとは、アプリをXcodeのオーガナイザを使って自分のiPadに転送する。「グループとファイル」の中の「Products」の中を展開すると「SuperCollider.app」というファイルがあるので、これをDragしてオーガナイザのiPadの項目にDropする。
転送が完了したら、早速iPadで起動してみる。特にエディタ画面が、画面が広くなった+iPadのまともなキーボードで入力できる、ということで使い物になるレベルになったのではないかなぁ、と。
]]>うちの会社でアプリの制作を担当した、国立西洋美術館のiPhone/iPod touch用作品ガイド「Touch the Musem」がリリースされました。先ほどからダウンロードできるようになりました。
コンテンツは、NHKエデュケーショナルさんが制作しています。
なお、アプリの制作にあたっては、株式会社センシグナルさん、そして比嘉了さんに大変お世話になりました。ありがとうございます!
http://www.sensignal.co.jp/
http://structor.jp/
アプリは無償でダウンロードできるので是非お試しください。ダウンロードはこちらから。500MBあるので、実機の場合はWiFiでの接続が必要です。
http://itunes.apple.com/jp/app/touch-the-museum/id362693348
また、4月1日(木曜)の16:00からAppleStore銀座にて「iPhoneアプリで楽しむ国立西洋美術館」というイベントが開催されます。
]]>今回はAbleton Liveでやったんだけど、どうしてもwarpかけた音は時々おかしい。まあ、テンポ強引に合わせるよう処理しているんである程度はしかたないけど。Audio HijackでLiveの出力を奪って録音していたので音源もあるんだけど、自分のWEBに載せた時点でそれは著作権的にアウトなのでできません...。こっそり個別に...。
というわけで、以下にリストを。
artist / track name / album
-----
Alvin Lucier/WIRE I/Music on a Long Thin Wire
Kenji Yasaka/live control of BugBrand Postcard Weevil
Kenji Yasaka/drone-1
Kenji Yasaka/icetest-20090407-3.1
Curtis Roads/Now/Point Line Cloud. Electronic Music 1999-2003.
Mangurekan, Elodie Bouchez/Auraton/Replay Debussy
Kenji Yasaka/weevil noise collage
Brian Eno/Three Variations On The Canon In D Major: (i) Fullness Of The Wind/Discreet Music
Ambarchi,Fennesz,Pimmon,Rehberg,Rowe/track 2/Afternoon Tea
hoon/ジムノペディ第3番 エリック・サティ/Cd Baby Love
Glenn Gould/ゴルトベルク変奏曲~アリア/commmons: schola vol.1 [J.S.Bach] Ryuichi Sakamoto Selections
Global Communication/7'39 (Link and E621 Appliance of Science Mix)/Maiden Voyage
Aphex Twin/On/On
System 7/Alpha Wave (Plastikman Acid House Mix)/Alpha Wave
Adam Beyer/Simulated Usage
Angelo Badalamenti & Orbital/Beached (Long Version)/Beached
Orbital/Doctor?/Halcyon
The Advent, Industrialyzer/Terra Nosa
詳細はこちら。
http://sites.google.com/site/prestosoundz/
サイト上のフォームに登録するとゲストリストに登録され、入場料が1,500円から1,000円にディスカウントされるようです。
Warp20の方は、お目当てがLFO以外いないなぁ、と、かなりモチベーション低い状態で向かったんだけど、ついてちょうどWarpのレーベルオーナー、Steve Beckettがまわし始めた頃で、いきなりGalaxy 2 GalaxyのAmazonをかけていて(確かそうだったはず...)つい反応してしまった。そのあとも、Warpのアーティスト中心に比較的古い曲中心にかけてくれていたので、思いのほか楽しめた:)。
そのあとのBattlesは、CDで音を聴いても会場で演奏を聴いてもやはりなんでWarpにいるんだろう、と思ってしまう。悪くないけど、なぜWarp?
O.N.OのDJになってトイレに向かったんだけど、会場に3つしかトイレがなく、どれも男女とも行列状態...。最悪。だいたい10分待ちくらいか。あと、バーカウンターもそこそこ待たされる。ビール売ってるんだけど、缶ビールをコップに入れただけのもの。缶を会場に持ち込ませたくないのはわかるんだけどかなりダメな感じ。それだったら、樽とビアサーバ用意して生ビールにして欲しい...。
Chris Cunninghamは会場内に入るタイミングをのがし入り口付近でスクリーンだけみていたけど、Aphex TwinのPVで使っていた素材+新しいものを使ってかなり激しく展開していた。映像素材も放送禁止系のがいくつかあったり...。
Rei Harakamiは元々は聴くつもりなかったんだけど、そのあとのLFOの場所取りのために潜り込む。PA卓の横あたりを確保できたのであとはのんびりしていようと思ったんだけど、CDとは違って意外と固い音が多いのに驚いて聴いてしまう。ただ、delayのfeedbackがかかりすぎて歪んでいた音がかなり耳への刺激が強く、耐えられずに耳を塞ぐこともしばしば。それ以外の音はけっこう良かったんだけど。MCも、なんかいい感じのおっさん丸出しな雰囲気で面白かった:)。
そして、LFO。いつ以来だかもう覚えていないけど、やはりいいね。PA卓のレベルメーターはほとんど天井に張り付いたまま動いていなかった(^^;)。そのくらいずっとアッパーな感じのまま1時間。個人的には、L.F.O.とTied Upが聴けた時点で大満足。
翌日のliquidroomでの the orb は、その直前までAXISであった多摩美情報デザイン学科情報芸術コースの展覧会レセプションパーティーがあって、既にだいぶ酔った状態でliquidroom入り。だいぶ早く入ったおかげで、ステージ正面のスツールがあるところにすわれたのが救いか。でも、かなり眠くて最初のDJの途中で寝てしまい、次に起きた時は既にThomas Fehlmannが回していた...。そこに途中からAlex Patersonが入ってきて、ベーシックなトラックをThomas FehlmannのMacから、上にかぶせる音ネタをAlex PatersonがレコードやCDなどから出してくる、という構成で展開。the orb's adventures beyond the ultraworldからのトラックを中心に最新アルバムの中の曲などをやっていたけど、little fluffy cloudsをやった時点でもう大満足。あとはもうどうでもいい。ライブ全体としてはかなりフロアよりなアレンジ。固いリズムトラックに有名なフレーズがかぶさってきて、Alex Patersonがいろんなネタをかぶせてくる。けっこう楽しめました。
で、最後はthis is it。2回目だけど十分楽しめた。今週金曜までだから、あともう1回夜中にいってくるかなぁ。
ちなみに、2つのライブの方はチケット2枚ずつ購入したにもかかわらず、結局一緒にいける人を誘うことができず悲しいことに...。人望ないね...。
]]>