続・Max7日記 (8)

長嶋 洋一


→ Max7日記

→ 続・Max7日記(1)

→ 続・Max7日記(2)

→ 続・Max7日記(3)

→ 続・Max7日記(4)

→ 続・Max7日記(5)

→ 続・Max7日記(6)

→ 続・Max7日記(7)

2018年9月18日(火)

ここはポーランドのボズナン(Poznan)のPoznan University of Technologyのホールのロビーである。 続・Max7日記(7) に出発の頃から書かれているように、今日で20日間の欧州ツアー2018の16日目、国際会議ICEC2018のセッション初日となった。 同時進行でWebに上げている フォトレポート にも情報があるが、昨日はlost baggage(Poznan空港に着いたらスーツケースが消えていた)などあれこれあったが、無事に以下のTutorialを成功裏に終えたところである。

今年のICECは、どうやら上部組織のIFIPの他の国際会議まで合体で「WCC」(World Computer Congress)としてここポズナン工科大学で開催しているようで、規模的には、僕がこれまで参加した国際会議の中で最大、という感じだ。 とりあえず冒頭のOpeningの合間に、プログラムからコピペで以下のように並べてみたが、かなり充実の内容だし、タイトルだけで僕の研究にモロ関係している注目の研究もあった。 ICEC2018の論文集は今時まだ「紙」で、Springerの重いものが配られたが、出来れば電子化されたものだけを身軽に持ち帰りたい。 オンライン版(PDF) のProceedingsもあるとのことだったが、何故かうまくダウンロード出来なかった。 こうなると、VS-Games2018の時のようにProceedingsから図をコピペしてこのページに置けないので、文字ばかりのレポートになるかもしれない。

Tuesday, 18 Sept, 2018
	09:30 – 10:00	OPENING, Prof. Artur Lugmayr
	10:00 – 11:00	IFIP-ICEC KEYNOTE, Prof. Ellen Yi Luen Do
				From Design Computing to Creating Unique Technologies for Everyone
	11:30 – 12:00	WCC 2018 Opening
	12:00 – 13:00	WCC 2018 Keynote, Prof. Wil van der Aalst
				Responsible Data Science in a Dynamic World
	14:30 – 16:00	Session 1: Human-Computer-Interaction
				Dynamic Projection Mapping on Multiple Non-Rigid Moving Objects for Stage Performance Applications
				Applying Designing Thinking techniques for prototyping a universal game controller
				Intimate Information Access through Virtual Creatures
				Validating the Creature Believability Scale for Videogames
				Dance Dance Gradation: a generation of fine-tuned dance charts
	16:30 – 18:00	Session 2: Entertainment Systems & Technology
				Diminishing Reality
				Live Probabilistic Editing for Virtual Cinematography
				The Programmable Drone for STEM Education
				A Taxonomy of Synchronous Communication Modalities in Online Games
				The influence of digital convergence/divergence on digital media business models
	18:00 – 19:30	ICEC Reception + Posters + Demos + Art Exhibits
				Data Reduction of Indoor Point Clouds
				Designing ‘Wall Mounted Level’ - A Cooperative Mixed-Reality Game about Reconciliation
				Automatic Generation of the Periodic Hair Motion of 3D Characters for Anime Production
				An iTV prototype for content unification
				Content unification: a trend reshaping the iTV ecosystem
				Creating art installation in Virtual Reality. The Stilleben Project
				A mixed-reality serious game to tackle a public health problem
				Converging Data Storytelling and Visualisation
				A systematic mapping on game-related methods to tackle a public health problem
				NOVELICA: A Visual Novel System to Make People Forget Their Negative Feelings on Mathematics
				Imperceptible Art Aleksandra Vasovic (Art Exhibit)
				Tappetina: an Ecosystem of Art, Software, and Research

Wednesday, 19 Sept, 2018
	09:30 – 11:00	Session 3: VR and AR
				Mixed Reality Cycling in an Infinite Procedurally Generated City
				Aspects that need to be addressed during the development of location-based games Jacques
				Circus Noel: A case study on natural user interface design for VR
				Reorientation Method to Suppress Simulator Sickness in Home VR Contents Using HMD
				A.R.M. - Augmented Reality Muscularity
	11:30 – 12:30	WCC 2018 Keynote
				The Pros and Cons of Blockchain for Privacy
	14:00 – 15:00	IFIP-ICEC KEYNOTE, Prof. Aisling Kelliher
				KEYNOTE: Aspirational Cyber Human Systems 
	15:00 – 15:30	Panel Discussion: Robot Competitions
	16:00 – 17:30	Session 4: Digital Games
				Games That Make Curious: An Exploratory Survey into Digital Games That Invoke
				Learning to Identify Rush Strategies in StarCraft
				Virtual Reality as e-Mental Health to Support Starting with Mindfulness-Based Cognitive Therapy
				Engagement in Interactive Digital Storytelling: Sampling without spoiling
				Playing with Empathy through a Collaborative Storytelling Game
	18:00 – 19:00	Doctoral Consortium
				Affecting Well-Being Through Digital Games
				A Game-Based Plattform to Tackle a Public Health Problem

Thursday, 20 Sept, 2018
	09:30 – 11:00	Session 5, Storytelling, Narrative, and Behaviours
				Design and evaluation of a fall prevention multi-player game for senior care centres
				Comedy in the Ludonarrative of Video Games
				Construction of mixed reality story environment based on real space shape
				Digital Therapies
	11:30 – 12:30	WCC 2018 Keynote
				What Needs to be Added to Machine Learning?, Prof. Leslie Valiant
	14:00 – 15:30	Session 6, Entertainment Business, Information Systems, and Media Studies
				Physiological Affect and Performance in a Collaborative Serious Game between Humans and an Autonomous
				Analysis of the effect of number of players on the excitement of the game with respect to fairness 
				Sensor Ball Raffle – gamification of billboard advertising: How to engage the audience?
				Realtime Musical Composition System for Automatic Driving Vehicles
	16:00 – 16:30	KEYNOTE, Nikolay Nikolov
				KEYNOTE: AR and VR Near You
	16:30 – 17:00	CLOSING SESSION, Best Papers, IFIP-Award

そして「IFIP-ICEC KEYNOTE, Prof. Ellen Yi Luen Do」ということで、「From Design Computing to Creating Unique Technologies for Everyone」というタイトルだったが、あまりに流暢・高速な英語で、昨日も7時間、英語でTutorialをやったぐらいに慣れてきたものの、僕の英語力では追いついていけなかった。 話としては「Now is an exciting time to engage in creative design computing, to implement physically and computationally enhanced environment, to explore experience media and interactive computing projects, towards a smart living environment. Advancing technology offers new ways to solve problems, discover opportunities, and create new objects and experience that delight our senses and improve the way we live and work. With a spark of creativity and enthusiasm, followed up with design and computational thinking, we can explore the goal of “creating unique technology for everyone” through the use of connective, ubiquitous technology for embodiments, in three themes: Tangible Interaction, Augmented Learning, and Embodied Experience.」ということらしい。
「ピアノ練習のためのグローブ」というのが紹介されていた。 ミスタッチをすると振動して知らせてくれるらしいが、ヘタするとちょっと「いじめ」にも見えた。 ヤマハに依頼されて研究開発した?らしい。 また 「tangible Intercation」というのに惹かれていたのだが、個々のブツにRFIDを入れて認識することで、「手で並べる」というものだった。 そして、最後に分かったが、Prof. Ellen Yi Luen Doは この大学 の教授になったということで、 このあたり に厖大な事例があるようなので、いずれ時間があったら見てみよう。

そしてここは立派で巨大なメインホールである。 IFIPのイベント「World Computer Congress」ということで、ICECだけでなく10ぐらいの国際会議の参加者が皆んな集まってきたが、まだまだ客席が多いのでスカスカというのが凄い。 そして、 WCCのプログラム というのが紹介されたので見てみると、16ぐらいの会議が同時進行で進んでいる中に、上のように僕のTutorialもバーンと出ていたのに驚いた。
WCC全体のKeynoteはProf. Wil van der Aalst(Technische Universiteit Eindhoven)の「Responsible Data Science in a Dynamic World」というタイトルで、アブストラクトが長かったので省略するが、 このページ に載っている。 ビッグデータ/AIの時代の可能性と課題(危険性)についての、まさに「データサイエンティスト」の講演で、イラストの多いプレゼンで、僕にもよく中身が分かった。 やっぱり、データサイエンスには未来があるのかなぁ。

午後の最初のセッションは「Session 1: Human-Computer-Interaction」という、まぁICECでは王道のテーマである。 1件目の「Dynamic Projection Mapping on Multiple Non-Rigid Moving Objects for Stage Performance Applications」は、何故か中津先生が現れずにキャンセルとなった。 2件目の「Applying Designing Thinking techniques for prototyping a universal game controller」は、もろゲーム機のコントローラのデザイン/試作を効率的に進めるための手法(モジュール化して組み合わせる)、というようなテーマだった。 思わず、上のような このページこのページ を思い出した。 市販のゲーム機用コントローラは、Max7では「hi」というオブジェクトで簡単に使えるようになるのだ。

3件目の「Intimate Information Access through Virtual Creatures」は何故かタイトルが変わっていたが、早稲田大のグループの発表だった。 ゲームに登場するキャラクターとかアバターとかのインタラクションのモデルを実世界/VR世界などを区別して検討したらしいが、裏で明後日の発表のプレゼンを作っていたのでちゃんと聞けなかった。(^_^;)

4件目の「Validating the Creature Believability Scale for Videogames」は僕と同じショートペーバーのカテゴリで、ここで「Shortはプレゼンが15分+質疑5分」というのを確認できた。 しかし肝心の発表については、図でなく文字ばかりのプレゼンなのでピンと来なかった。 被験者実験をして統計的な処理をしているようだが、元々、ゲームについては強烈に疎いので、これはアウェーだぁ。

5件目の「Dance Dance Gradation: a generation of fine-tuned dance charts」は立命館大学のクループで、タイトルからもろリズムゲームの話題なのだろう。 発表者の学生はダンスダンスレボリューションみたいなゲーム大会で自分が優勝したビデオを見せてスタートしたが、この研究はもっと初心者向けのものらしい。 元々は音楽のビートとconvolutionをとって「正解ピート」のタイミングを生成していたらしいが、この研究ではさらに同じ音楽に対して難易度を自在に設定した「正解ピート」のゲームパターンを機械学習によって生成するらしい。 結果として、BeginnerとMediumの間にEasyというレベルを自動生成していた。

ここでCoffee Breakになったが、通りかかったArtur Lugmayr氏(ICEC2018大会委員長。昨日の僕のTutorialにも来てくれた)に教わった方法を確認していて気付いた。 僕のMacのFirefoxには、「uBlock Origin」というアドオンを入れていて、あちこち広告サイトに飛んだり、画面に他サイトのCMが表示されるのを自動でカットしている。 それが、SpringerのサイトのPDFを取りに行くリンクを止めていたのだった。 これを「このサイトではOFF」としてリロードすると、無事に上のICEC2018 Proceedingsが全部、ゲットできた。 せっかくなのでここに置くと、 ICEC2018プログラムICEC2018論文集 と、さらにWCC全体(他のカンファレンスも全て入っている。僕のTutorialも(^_^))のプログラムが これ ということになる。 さらに僕のPaperの最終版も ここ に置いた。 これで、VS-Gamesと同様に、Proceedingsに図があればそれをこの日記の中にさりげに活用できる。

午後の2番目のセッションは「Entertainment Systems & Technology」というタイトルで、1件目の発表は「Diminishing Reality」というタイトルだった。 だいたいVRの世界は「あれこれ足しまくる」のに対して、このアプローチは「いかに消すか」というものだった。 上のサンプルでその方向性がわかるだろう。

2件目の発表「Live Probabilistic Editing for Virtual Cinematography」も発表者が現れずにキャンセルとなった。 3件目の発表は「The Programmable Drone for STEM Education」というタイトルで、上の写真を見れば一目瞭然、ドローンを組み立てて、さらにその操縦用アプリのブログラミングまで子供に対して教育としてやってしまう、という凄いものである。 まぁ、Scratchみたいに部品を並べて繋げば出来る(最近はあらゆるものがMaxライクだ(^_^;))という時代なので、これもお手軽なのだろう。

4件目の発表は「A Taxonomy of Synchronous Communication Modalities in Online Games」というタイトルで、オンラインゲームの色々なコミュニケーションのモダリティについて分析した・・・というものらしい。 オンラインゲームなんてまっく無縁の僕にはなかなか理解しにくいが、インタラクティビティのタイプ(モダリティ)だけで6週類もあるらしい。 この6種類のモダリティを、5種類のアピリティのグラフで分類している、というのはなかなか論理的だ。 ゲームのデザインというとどうしても感覚的(直感的)に好きなことに進んでしまうが、こういう風に分析して「何かやられていない新しいアプローチ」などを探す、というのも面白いかもしれない。

今日の最後、5件目の発表は「The influence of digital convergence/divergence on digital media business models」というタイトルだったが、Proceedingsに図がまったく無くて(上の「表」だけはかろうじて理解できる)、デジタルメディアのビジネスモデルなんていう僕がもっとも苦手な話で、ちょっと苦しかった。 「B to B」とか「C to C」とかの、ああいう話である。
この日の様子については、 フォトレポート も参照されたい。

そしてその後、他の会議とは別に、ICEC2018だけの企画として「ポスター+デモ+ワイン(どこかスポンサーを獲得したのだろう)」という晩になって、ザッとposterとdemoを眺めて、ワインを軽く3杯ほどいただいてホテルに帰還した。 さらにようやく、ホテルの数軒隣りにコンビニみたいなお店(Kiosk?)があると判明して、ワインを仕入れてこの日は「部屋飲み」の晩となって、今日は無事に終了である。

2018年9月19日(水)

ICEC2018も後半となって残り2日、しかし僕の発表は明日の午後のClosingセッションの直前、という「トリ」なので(参加者が減ってくるが)、まだまだ気を抜けない。 Poznanに来てからというもの、ICEC2018に完全に没頭していて、ホステルとポズナン工科大学との往復(トラムで電停3つ分)だけで、観光の「か」の字も無い。 ホステルから徒歩1分の「旧市民広場」のカフェ/レストランで夕食をとった以外、街中に一歩も出ず、ひたすら精進あるのみである。 既に出張スタートから2週間以上が経って、起床時刻もだいたい普通の朝になってきたが、それでも身体の奥底には日本時間の体内時計が残っていて、午後のセッション中にちょっと油断すると睡魔が襲ってくる。 この、身体のどこかに残っている日本の体内時計が、帰国後の時差ぼけ解消の唯一の拠り所となる。

そしてここはICEC2018のセッション会場である。 持参しているトラックボールの底にあった滑り止めのゴムが欠落して、昨日はテーブルの上を滑って何度も落っこちたが、今日はブルノでスーツケースの補修のために買っていた粘着テープを持ってきたので、これで固定して安定の操作環境となった。 昨日の合間には、明日の僕の発表のためのプレゼンを作っていたが、音楽情報科学研究会の発表のために作ったKeynoteから大幅にシートを減らして、さらに日本語を適宜、英語に直して、なんとか このように 出来た。 ところが、今日のセッションchairは「shortはプレゼン10分と質疑」みたいな事を言っていたので、これでも長過ぎる、と気付いた。 そこで今日のセッションの内職で、DEMO用(トヨタ中研に納品したもの)Maxパッチに手を加えて、説明しやすいものを新たに作ることにした。

ところでその内職と並行して始まった2日目の午前のセッションは「Session 3: VR and AR」である。 1件目の発表は「Mixed Reality Cycling in an Infinite Procedurally Generated City」というタイトルで、HMDをかぶって上のような自転車インターフェースを「運転」して、VR内の街並みを疾走する・・・というようなもの?だった。 これはフィットネスジムあたりで流行るのかもしれない。

2件目の発表は「Aspects that need to be addressed during the development of location-based games Jacques」というタイトルで、残念ながらProceedingsに図が無かったので、AbstractをGoogle君に翻訳してもらうと「ロケーションベースのゲームの開発を支援するためのソフトウェア開発手法(SDM)の適合性を判断するには、SDMが、ロケーションベースのゲームを開発する過程で対処する必要がある特定の側面にどの程度対応するかを判断する必要があります。これらの側面は、モバイルアプリケーション開発プロセス、ゲーム開発プロセス、モバイルゲーム開発プロセスに必要な側面に焦点を当てたリテラルレビューで収集された情報に基づいて特定されます。 これは、これらの側面が位置情報ベースのゲームを開発するニーズをよりよく表すことを確実にするために行われます。これらの側面は、開発プロセスにおける重要性を測る調査を用いて評価され、また、見過ごされた側面があるかどうかを判断するために評価されます」とのことだった。 そしてその合間に、上のように、明日の発表でチラッと見せる「自動運転車のための自動作曲システムとして、駄目なマッピングの例」のDEMO用Maxパッチが出来てしまった。

3件目の発表は「Circus Noel: A case study on natural user interface design for VR」というタイトルで、残念ながらProceedingsに図は無かったものの、YouTubeに 紹介ムービー が上がっていて、そこから上のような写真もゲット出来た。 要するにHDMを装着して「サーカス」をVR体験する、というようなものらしい。 定番の「綱渡り」では、体験者はただ床上の棒の上を歩いているのに、HMDで自分の足元にたった1本の綱と、その遠い下に下界が見える空中にいる・・・と感じると、人間は赤ん坊でも本能的に恐怖を感じる、というアレである。

4件目の発表は筑波大の星野先生のところの「Reorientation Method to Suppress Simulator Sickness in Home VR Contents Using HMD」というタイトルで、HMDをかぶってVR空間を歩き回る際の「映像酔い」を低減させる手法についての提案だった。AbstractをGoogle君に翻訳してもらうと、「現在、Oculus Riftを含む家庭用HMDが普及しているが、主に視覚情報と体感の違いによるシミュレータ病が問題となっている。実際の物理的な動きをVR空間に反映させることでシミュレータの病気が軽減されていることが証明されているにもかかわらず、提案されたアプローチの多くはシミュレータの病気を引き起こしやすい様々な制限とメカニズムを持っていた。現在の研究では、シミュレータの病気を引き起こす可能性が低い家庭用HMDのために、VR空間内を移動するためのこのようなアプローチが提案されている」となった。
また、最後のConclusionをGoogle君に翻訳してもらうと、「本研究では、向きを変えて静的な背景を表示することにより、ユーザに正しい回転角度を知覚させるリダイレクト方法を提案し、その有効性を実験で明らかにした。この実験により、自宅で用意した経験空間内でVR病を抑えることができる走行方法が可能になることが示されている。しかし、両方の方法の方向を変えるたびに、メインのVR体験を停止する必要がある。したがって、適時性の観点から、これらの方法は他の走行方法に劣る可能性があり、これらの方法は、行動要素の少ないゲームや、売り物ではない、または限定されていないアイテムを扱うVRショールームにおけるショッピング体験に使用することが好ましい」であった。

5件目の発表は「A.R.M. - Augmented Reality Muscularity」というタイトルで、「増強現実筋」というか、要するにAR環境内で筋肉ムキムキな自分の腕を見ると、ラバーハンド錯覚と同様に自分の筋肉がムキムキに感じるのでは・・・というようなアプローチらしい。 発表者の彼女は初日の僕のTutorialに全参加してくれていたのだが、なるほど、PAWセンサ(触覚/触感)に興味を持ったのも関係していそうである。 「海外ではPAWセンサが買えないのでまず日本人の友人を作って日本で買ってもらって」と話していたが、なんと彼女はPAWセンサを2個、発注したとのことで、遂に海外でも買えるようになったようだ。 発表後に「内需要感覚(interoception)って知ってる?」と聞いたら、もちろんもちろん、と強烈に返ってきた。 僕のTutorialに全参加してくれたのも、案内の中に内需要感覚の重要性をアピールしていたのをキャッチしてくれたからだそうで、彼女のチーム(オランダの研究グループ)のテーマとしても内需要感覚を重視しているとのことだった。(^_^)

CoffeeBreakを経てまたまたWCC2018の大会場である。今日の「WCC 2018 Keynote」は「The Pros and Cons of Blockchain for Privacy」というタイトルで、「プライバシーのためのブロックチェーンの長所と短所」という事らしい。 僕はまったくビットコインとかに興味がないのでWikipedia(せっかく今年も寄付したし)に聞いてみると、「ブロックチェーン(英語: Blockchain、ブロックチェインとも)とは、分散型台帳技術、または、分散型ネットワークである。ビットコインの中核技術(サトシ・ナカモトが開発)を原型とするデータベースである。ブロックと呼ばれる順序付けられたレコードの連続的に増加するリストを持つ。各ブロックには、タイムスタンプと前のブロックへのリンクが含まれている。理論上、一度記録すると、ブロック内のデータを遡及的に変更することはできない。ブロックチェーンデータベースは、Peer to Peerネットワークと分散型タイムスタンプサーバーの使用により、自律的に管理される。フィンテックに応用されるケースでは独占や資金洗浄の危険が指摘されることもある」とのことだった。
今日のこのKeynoteだけは一般に公開しているらしい。 まったく僕はきちんとは知らない世界だったが、当初は内職しようかなと思っていたものの、基本的な用語をWikipediaで調べつつ、ついつい話に聞き入ってしまった。 決して中身を理解しているわけではないのだが、例えば「ブロックチェーン」とか「モノのインターネット(IoT)」とかをWikipediaで眺めていると、とても面白い。 そして今、ここでKeynoteをしている人(Jan Leonhard Camenisch is a Swiss research scientist in cryptography and privacy at IBM Research – Zurich, Switzerland. He has published over 100 widely cited scientific articles and holds more than 70 U.S. patents)は、おそらく世界で一番、この部分(セキュリティを含む)の専門家なのである(IEEEのfellowだった)。
「スマート・コントラクト(Smart contract)とは、契約のスムーズな検証、執行、実行、交渉を意図したコンピュータプロトコルである。スマートコントラクトには第三者を介さずに信用が担保されたトランザクションを処理できるという特徴がある。1994年にNick Szaboにより提唱された」というのも勉強になった。 Conclusionの「我々はまだBeginningにいる」というのは、なかなかに重い。

そしてWCC2018のKeynoteが終わると、まぁ外国人にはそのぐらい必要なのか、ランチタイムが90分もあるので、サッサと済ませてセッション会場に戻ると、そこそこの時間がある。 そこで「MaxSummerSchool2018の復習」の続きをチェックすることにして、前回パスしていた、上の「7日晩・大谷」に再挑戦してみた。 GENねたという事で、ちょっとだけ 続・Max7日記(6) の後藤さんのところを復習してから上のように開いてみると、「GenTemplate」というのをコピーして改定することで、簡単なGUI付きのオリジナルGENツールが開発できそうだ、と判明した。 ただしディレクトリ直下にあった、「Dev_default.maxpat」・「Looper4OWL0807.maxpat」・「OWL_MIDIcc01.maxpat」という3つのパッチは全てエラーが出て、つまりこれは使えない、と判明した。 また、 この資料 によれば、どうもOWLというのは、オンラインコンパイラでGENの中身を.cppと.hにして返してくれるらしいが、まぁ当面は使わないだろう。

そしていよいよ探検の対象は、「OwlGenPatches-master」というディレクトリ内にずらりとある、22個のディレクトリという事になった。 上は、とりあえず最初の「ClingWrap」というプロジェクトを開いて、パッチ内の「gen~」を叩いて開いたところである。 スクリーンの倍率を50%にまで下げないと全部が見えないという、なかなか複雑なものだが、サンプルとして入っている音楽が軽快にエフェクトされている。

全てが完成された複雑なGEN応用ライブラリなのかと思ったら、たとえば上は「ComputedSine」というものだが、とてもシンプルな例だった。 「gen~」の中身を見てみると、どうやらこれは、「GENを使って44100Hzサンプリング周期でピッチに相当するラジアンを刻々と演算して位相量として「sin」に与えて、最終的にディジタルオーディオの「cycle~」と同じものを生成する」という優れものだった。 GENでなければ、とうていこのような高速演算は無理だろう。 MSPの「cycle~」は内部的にサインテープルを読み出しているが、こちらを使えば任意のWavetable Synthesisが実現できることになりそうだ。

そして、けっこう未完成というかパス出来るものも多いと判明してきたが、上の「SimpleFM」というあたりが、ちょうど詳しく様子を調べるのに向いている、と発見できた。 ただしその次の「SimpleSine」はあまり面白くなかった。まさに玉石混交である。 あと2つ、「TapeDelay」・「XFadeDelay」についても、調べた方がいいと思った。 ・・・というところで午後のセッションの時間となった。 まずまず「Max7日記」らしい時間が得られた。(^_^)

そして午後の最初は「IFIP-ICEC INVITED TALK, Prof. Aisling Kelliher」ということで、タイトルは「Aspirational Cyber Human Systems」(思考型サイバーヒューマンシステム)である。 上のように、WCC2018のInvited TalkのリンクにはShort Biographyしかなくて、Abstractが無かった。 アメリカン航空でアジア人が飛行機から引きずり降ろされた、というセンセーショナルな話題から始まったが、米国人の流暢な英語にまたまた苦しめられた。 掴みの話題としては「problematic algorithms」ということらしい。 AIのいろいろな形態と問題点を提起しているように受け取った。
深層学習やAIによって、人間の力を超えた成果が得られてきているが、我々はこれからどうデザインの領域(ユーザエクスペリメンス)に生かしていくべきか、という課題。 そして話題は「ヘルスケア」に移ったが、ちょうど僕がバイオフィードバック・リハビリテーションの専門家とコラボレーションしているのと同様に、多くの領域の専門家がテクノロジーの助けで「interactive neurorehabilitation」をあれこれ進めているというのが凄かった(Georgia Tech)。 ここのスクリーンショットの写真はかなり重要な資料ににりそうなので、また後でよく見直してみよう。
そして、この論文は ここ にあると探し出し、ACMの会員ではない(多過ぎる参加学会のリストラの一環で数年前に退会した)ので、クレジットカード(15ドル)でPDFを購入してしまった。 この資料 である。(^_^)

次にあったのは「Panel Discussion: Robot Competitions」ということで、「ロボコン」のパネルだった。 日本では高専ロボコンの番組が既に30年の歴史があるらしいが、どうもここでの話題はハッカソンのように1-3日程度の短期(合宿)形式のものらしい。 世界各地でやっているロボコンの情報を集めて、IFIP-ICECのワークショップとしてイベントを企画したい、というプロジェクトのようである。 YouTubeで調べてみると、出るわ出るわ、今では内外で多くのロボコンをやっているのだ、と驚かされた。

そして午後の次のセッションは「Session 4: Digital Games」ということで、遂に王道中の王道、ゲームの世界に突入である。 1件目の発表は「Games That Make Curious: An Exploratory Survey into Digital Games That Invoke」というタイトルで、残念ながらProceedingsに図が無かったので、AbstractをGoogle君に翻訳してもらうと、「好奇心は人生の重要な側面ですが、それを勉強することは信頼できる刺激がなければ困難です。デジタルゲームは、好奇心を引き起こす状況やその表現方法を調査する理想的な刺激を提供します。好奇心の研究をさらに進めるために、どのゲームタイトルとゲームジャンルを分析すべきかを評価するという目的で調査が行われました。さまざまな種類の好奇心を考慮するために、5次元の好奇心尺度(5DC)アンケートを取り上げました。この調査には113名の参加者が参加し、301の試合結果が発表されました。探検、社会シミュレーション、ゲーム内での収集タスクは、好奇心の引き金として高いランクであることが判明しました。さらに、個人の社会的好奇心は、社会シミュレーションによって引き起こされた好奇心と相関していることがわかりました」とのことだった。 分析テーマの研究では、好奇心をそそる画像が無いのも仕方ない。

2件目の発表は「Learning to Identify Rush Strategies in StarCraft」というタイトルで、対象の「StarCraft」というのを知らないので検索すると、上のようなものだった。 なんとこちらも筑波大のグループの発表で、この発表も、上のように何らかの「分析」の研究だった。 「StarCraft」というゲームの複雑さは「10の1685乗」だそうで、とにかく複雑らしい。 ストラテジーってことし戦略なので、ルールも分からなければ戦略もくそもない。 ここはメイルチェックなどでやり過ごした。

3件目の発表は「Virtual Reality as e-Mental Health to Support Starting with Mindfulness-Based Cognitive Therapy」というタイトルで、「e-Mental Health」とか「 Mindfulness-Based Cognitive Therapy」とか、とっってもソソラレル単語が並んでいたが、残念ながらAbstractをGoogle君に翻訳してもらうと、「Mindfulnessに基づく認知療法(MBCT)は、メンタルヘルスセラピーで使用されますが、患者の努力が必要です。このペーパーでは、MBCTでの起動をサポートするように特別に設計されたVirtual Reality(VR)アプリケーションであるOpen-MindEdの事前設計による探索について説明します。メンタルヘルス研究所と協力して、ターゲットグループの2人の有望なユーザーがデザインの縦方向の入力を行い、VRアプリケーションがマインドフルネスから始まる人々をサポートするツールとしてどのように役立つかという側面を定式化しました。続いて、Open-MindEdがMBCTでの開始を刺激できるかどうかを評価するために、一重盲検実験(N = 30)を行いましたが、有意な正の効果は見られませんでした。いくつかの限界にもかかわらず、この論文では、MBCTをサポートするための電子精神としてのVRの潜在的な設計上の考慮事項を示しています」ということで、どうも駄目だったらしい。(^_^;)
メンタルヘルスとして認知的セラピーするのに、「Mindfulness Homework」ということで自宅でトレーニングする際に「e-Mental Health」なのでHMDをかけて、上のような擬似的な3D-CG(そんなにぐるぐる回転しては映像酔いになりそう?)をいくら見ても、癒されないし治らないような気がするのだが・・・。 草原の3D-CGの中で、石を拾っては積み上げる、という作業が嬉しいのかどうかも微妙だった。 草原の3D-CGの鉢植えの葉っぱが成長して花が咲く、というのを眺めると癒されるのだろうか。

4件目の発表は「Engagement in Interactive Digital Storytelling: Sampling without spoiling」というタイトルで、残念ながらProceedingsに図が無かったので、AbstractをGoogle君に翻訳してもらうと、「インタラクティブ・デジタル・ストーリーテリング(IDS)を使用すると、ユーザは、ナレーション・パスを即時に生成してバランスをとるための人工知能技術を使用して、プロット・レベルでのストーリーの展開に影響を与えることができます。彼らの約束にもかかわらず、ほとんどのIDSシステムは依然として魅力的なユーザーエクスペリエンスを一貫して提供することができません。この新しいメディア、特にユーザーエンゲージメントの特性をさらに理解するために、継続セッションの間に動的にエンゲージメントをサンプリングするために、既存のインタラクティブナラティブにContinuation Desireの概念を適用します。ゲームプレイ中にユーザーを中断させることによる影響を評価するために、比較調査を使用します。この研究は、適切に行われれば、経験を妨害することがそれを損なうという証拠は見出されませんでした。私たちは中断を導入した結果、再びプレイしたいという願望に大きな影響はないことを発見しました」ということで、キーワードは「Continuation Desire」(継続欲求)ということらしい。

5件目の発表は「Playing with Empathy through a Collaborative Storytelling Game」というタイトルで、残念ながらProceedingsに図が無かったので、AbstractをGoogle君に翻訳してもらうと(seriousを「深刻な」としている部分はカット)、「このプロジェクトは、ストーリー体験によって共感にどのようにプラスの影響を与えるかについての理解を深めていくことを目的としています。このエクスペリエンスは、教育ゲームを使用してストーリーを伝えることに協力する人々のグループから成ります。本研究では、共感に関する教育ゲームの早期評価について報告します。 プレイヤーにストーリーを伝えることでコラボレーションさせることで、ゲームは共感的な能力を発揮することを目指しています。本研究では、ゲームコンセプトを証明し、さらに開発すべきポイントを特定するための探索段階を示します 試合は、12人の参加者によるワークショップ試行で評価されました。 この評価は、感情的な反応を促進する、より焦点を当てたバージョンへの開発を保証するのに十分な可能性を示しました」ということで、遂に「シリアスゲーム」というタームが登場した。 今回の海外出張はVS-Games2018への参加に始まってICEC2018への参加で終わるのだが、シリアスゲームに始まった10数日前からあれこれを経てまたまたシリアスゲームに帰ってきた、というのは感慨深い。 「Tappetina」というのを検索したら、上のようなキャラクターの登場するスマホゲームらしい。 こういう可愛いキャラの出てくるゲームの研究を、ごっつい身体をした男子がしている、というのがいかにもだった。 さすがに朝からずっと英語を聞き続けてきたが、夕方になって脱落しかけてきた。

そして本日の最後は「ICEC Doctoral Consortium」ということで、おそらくドクターを目指す学生の発表を募集したものらしい。 2人が発表するが、Proceedingsに論文は載っていない。 座長が冒頭に、「厳しい突っ込みや質問でなく、positiveな暖かいコメントをよろしく」と会場の笑いをとった。
1件目の発表は「Affecting Well-Being Through Digital Games」というタイトルで、ブラジルで多くの人が死んでいる「蚊」に対する衛生プロモーションをゲームで行う、というのがテーマらしい。 ここでの「Well-Being」とは公共衛生/公衆衛生ということで、社会的な健康増進のために、蚊の被害を実感できるゲームを作って、子供なら誰でもやっているゲームを通じて「蚊は駄目」と実感してもらおう、という事らしい。 ただし、CGでリアルな巨大ボウフラが出てきたり、キッチンにたくさんの蚊が飛んでいるのをシューティングする??とかいうゲームってのは、ちょっと気持ち悪いような気もするなぁ。 戸田クンの衝撃的な卒制映像作品「 Code : G 」を思い出した。(^_^;)

2件目の発表は「A Game-Based Plattform to Tackle a Public Health Problem」というタイトルで、タイトルだけだと上の発表と似た研究のように思えたが、こちらはもろシリアスゲームだった。 ゲームのデザイナをしながら博士を取りに行った彼女のテーマは「デジタルゲームがWell-Beingに対して有効である事を定量的に検証できるか」ということで、いやー真面目だった。 一人暮らしをしている55-75歳の高齢者をターゲットとして、ゲームをしてもらってのWell-Being状況の推移を長期にわたって計測するらしい。 こういう真面目なアプローチは、まさにシリアスゲームの王道だと思った。
その後、WCC全体で開催した「バーベキューパーティ」というのに自費参加して、僕のTutorialに参加してくれたオハイオ州立大の2人と大いにあれこれ語り合った。

2018年9月20日(木)

いよいよICEC2018の最終日、夕方には僕の発表もある、という日になった。 この日の午前のセッションは「Session 5, Storytelling, Narrative, and Behaviours」ということで、僕はちょっと苦手な「Storytelling, Narrative」というタイプのゲームについて並ぶのか・・・と身構えたが、1件目からちょっと違って「普通」だった。 ところで、Proceedingsに図が無い発表ではAbstractをGoogle君に翻訳してもらっているが、果たして自分の発表のAbstractはどうなのか、とGoogle君に入れてみると、「自動運転車両(ADV)は世界中で注目されています。ADVには多くのリアルタイムセンサーが含まれています。将来的には、周囲の状況に注意を払わずに(ドライバーを含む)人々がBGMを楽しむことができますが、既存の音楽から適当に選択するのではなく、リアルタイムで周囲の状況に対応するBGMの方がずっと優れています。著者は、既存の音楽を使わずにリアルタイムで音楽を生成する「自動運転車両用リアルタイム音楽システム」のアプローチを提唱しているため、著作権の問題はありません。リアルタイム合成システムは、リアルタイムでセンサ情報などのリアルタイムパラメータを用いて、生成する音楽的要因/要素をアレンジ/変更することができるので、「ADVの音楽」に最適なソリューションです。本稿では、トヨタ中央研究所との共同研究(2015-2017)として行ったADVのためのリアルタイム作曲システムの最初の試作について報告します」ということだった。 実は1箇所、大きな間違いがあったので訂正したのだが(^_^;)、まぁまぁ、正しいようだ。

1件目の発表は「Design and evaluation of a fall prevention multi-player game for senior care centres」というタイトルで、高齢者が足腰から弱ってくるのを防ぐトレーニングのためのゲームについてのものだった。 対象は個人が自宅でやるエクササイズでなく、高齢者ケアセンターで使用されるマルチプレーヤー転倒防止ゲームプラットフォーム「FallSensing Games」の設計と評価についての報告だった。 上のように、太もものあたりにセンサを付けて、スポーツ的でなく遊び感覚で足腰を鍛える、というもののようだった。

2件目の発表は「Comedy in the Ludonarrative of Video Games」というタイトルで、残念ながらProceedingsに図が無かったので、AbstractをGoogle君に翻訳してもらうと「ユーモアは数多くのビデオゲームの流行している要素ですが、これまでのところ、それ自体の確立されたジャンルとして認識されていません。コメディ - ユーモアを活用して実行するための意図的な行為は、1つを表しますが、ビデオゲームがカバーするべき感情的な範囲の重要な部分です。しかし、挑戦は、コメディに貢献するさまざまな要素を分析しようとすることにあります。特に、ビデオゲームの基本要素としてインタラクティブに含めることが重要です。本論文では、ビデオゲームにおけるコメディ分析の基礎として、幼児教育の概念を用いることを提案します。私たちは、物語と遊戯(ゲームプレイ関連)の要素を通してユーモアを導入するゲームから見分けられる傾向を示す例を通して、啓蒙的なコメディにアプローチします」ということで、古今東西のゲームを分析したものだった。

3件目の発表は「Construction of mixed reality story environment based on real space shape」というタイトルで、筑波大の星野先生のところの研究だった。 実際の環境に基づいたMixed Reality(MR)環境を構築するシステムについての要素的な研究で、上のように3D-CG内で物と物のぶつかり具合などを調整して、現実の映像とミックスした時の不自然さとか矛盾を回避する、というようなもの。 ホロレンズ(上の写真)を使って現実世界の状態をスキャンして、これをUnity内で3D-CGデータと照合して衝突/矛盾を自動的に解決して、最終的にはまたホロレンズに戻して体験する、ということらしい。 これまでけっこう質疑に盛り上がっていた会場だが、この発表には質疑が出なかった(^_^;)。

4件目の発表は「Digital Therapies」というタイトルで、上のような図があったがAbstractをGoogle君に翻訳してもらうと「今日、デジタル変換と仮想化プロセスは社会に大きな影響を与えました。社会経済的混乱の観点だけでなく、精神的健康問題の増加という観点からも、本稿では、養育・公立学校教育の領域での予防措置(本書では「デジタルセラピー」と呼ぶ)の社会的有用性としてのデザイン面と"育成ゲーム"の使用に焦点を当て、そして幸福。多くの精神的な問題を治療するために使用される認知行動療法(CBT)は、ここでは精神的健康を改善し、若者の行動の挑戦の防止を支援するゲームの設計を支える基本的な精神療法として考えられています」とのことで、なんだか大きく構えたテーマである。
日本でもあったが、海外でも「ネットいじめ」で自殺した少女が話題になったようで、こういう社会的な「人間性の欠如」を解決するゲームは出来ないか? というものらしい。 プレゼンを聞いた感じでは、オンラインゲームの仮想的な3D環境内で、ユーザがどのような振る舞いをしたのかを記録して、そのログを解析することで「心の闇(病み)」を自動分析する、という「Digital Therapies」の可能性を提起しているようだ。 背景となっている理論は「意思決定(Decision Making)は感情の反映である」ということで、なんとここでまたまた内受容感覚のキーワードが登場した。(^_^)

そして3日目の「WCC 2018 Keynote」(今日もこの基調講演だけは一般に公開)である。 上のように、タイトルは「What Needs to be Added to Machine Learning?」ということで、機械学習にまったくソソラレない僕がまさに聞きたいことなのだ。 AbstractをGoogle君に翻訳してもらうと「教師あり学習は認知的現象であり、理論的分析と技術としての搾取の両方に従順であることが証明されている。しかし、すべての認知が監督下の学習によって説明されるわけではない。ここで質問するのは、人工知能の広範な目標に対処するために機械学習の成功を築くことができるかどうかということである。推論は、認知の主要な要素として追加する必要がある。したがって、これらの2つの現象、すなわち学習と推論の定式化を、共通のセマンティクスを持つ単一のフレームワークに統一することが中心課題であることを示唆している。我々は、この役割のためにロバストロジックを、満足できる理論的基礎を持つフレームワークとして提案する。重要なスケールで実験的にテストすることは、今後も大きな課題である」とのことで、もっともな話だ。
アリストテレスも言っていたらしいが、認知や確信のためには数学的な理論が必要なのだという、これは大賛成。 しかし、そこからのお話はなんだかよくある話題かと思えばなんだかわからない話になったりで、次第に眠気がやって来た。 結局、冒頭に当たり前のことを言って、あとはロパストな学習の事例を紹介して、ウォールストリートジャーナルの50万件の記事から任意の単語を伏せたものを再現できる・・・みたいな紹介があったものの、機械学習/深層学習に対して何もソソラレない、という僕は微動だにしないまま終わってしまった。

そしていよいよ、ICEC2018の一般発表の最後のセッション「Session 6, Entertainment Business, Information Systems, and Media Studies」である。 なんと座長は筑波大の星野先生だった(^_^)。 このセッションでは最後に自分の発表があるので、他の3件についてはこれまでのように聞きながらWebを作っていく・・・という作業(内職)をしない、と決めていたので、とりあえずタイトルとAbstractの翻訳だけ並べる。
1件目の発表は「Physiological Affect and Performance in a Collaborative Serious Game between Humans and an Autonomous」というタイトルで、AbstractをGoogle君に翻訳してもらうと「このペーパーは、どのように誘発された生理学的影響が、共通の深刻なゲーム課題でロボットのパートナーと協力する人間参加者のパフォーマンスにどのように影響するかを調べることを目的としている。さらに、そのような人間とロボットとの近接した協働の基礎となる生理学的影響を調査すること。参加者は協力して、ハノイの塔Tower of Hanoiのターンアラウンドバージョンを行った。そこでは、価値観喚起空間で生理学的影響が調査された。覚醒は、皮膚電気応答データから推測され、原子価は、心電図データから推測された。ロボット共同作業者は、人間の協力者とは対照的に、覚醒と価数の両方に関してより高い生理学的影響を引き出すことが分かった。さらに、深刻なゲーム課題では、すべての協力者間で同等のパフォーマンスが見られた」である。

2件目の発表は「Analysis of the effect of number of players on the excitement of the game with respect to fairness」というタイトルで、AbstractをGoogle君に翻訳してもらうと「ゲームは誰かと遊んでもゲームが楽しくなると想定していますが、ゲームのプレイヤー数が公平なゲームの楽しさにどのように影響するかについてはあまり知られていません。この研究から、ゲームのプレイヤーが増えるにつれて、ゲームの予測不能性と全体的な興奮が高まることが概説されました。ゲームの洗練理論を適用することで、プレイヤーの数がゲームの興奮にどのように影響するかを見ることができます。我々はまた、ストレスをかけすぎることなくゲームがどのようにプレイヤーに動機付けを与えるのかをさらに理解するために、フォース・イン・マインド理論を利用することによって、プレイヤーのゲームのプレッシャーを検討しました」である。 北陸先端科学技術大学院大学の飯田先生が代打?で発表していた。

3件目の発表は「Sensor Ball Raffle – gamification of billboard advertising: How to engage the audience?」というタイトルだが、発表キャンセルだった。 そして4件目の発表が、僕の「Realtime Musical Composition System for Automatic Driving Vehicles」である。 直前のshortがキャンセルになったのと、座長が星野先生だったこともあり、ほぼ2倍、つまりfull paperと同じぐらいの時間をくれて、タップリと久しぶりに試作システムをデモ出来た。 上の写真はTutorialを受講してくれたオハイオ州立大の研究者にカメラを渡して撮ってもらったが、詳しくは フォトレポート を参照されたい。

・・・終わってしまえばあとはいつもの脱力感(と幸福感)である。 Coffee Brekに続く最後のセッションは30分と短い「KEYNOTE, Nikolay Nikolov」でタイトルは「AR and VR Near You」であるが、論文もなく概要も「増強現実とバーチャルリアリティは、今日の人々の想像力を開放します。誰もがスマートデバイスを使ってそれを探索することができます。スマートなARとVR技術にあなたの時間を投資し、あなたの製品やサービスに新たな地平をもたらします」というだけだったので、ようやく明日の帰国日に関しての調べ物などの内職を開始した。 上のように明日からのPoznznの天気を見てみると、明日まで最高気温は高いものの明日はちらっと雨も降りそうだし、さらに明後日からはグググッと寒くなるのだそうだ。
ここまで精進してくると、たぶん今夜はいつもの旧市民広場のレストランで打ち上げの一人ディナーに行くとして、もう明日にPoznan観光という気もしない。 調べてみると、Poznan空港には Business Executive Lounge がある(50PLN)と判明したので、午前中にタクシーで空港に行って、まずはカフェで、荷物をチェックインしてセキュリティ内に入ったらこのラウンジでお仕事モードにする、という作戦を立てた。

そして最後の最後は、「CLOSING SESSION, Best Papers, IFIP-Award」ということで、無事に今年のICEC2018が終わった。 半日のチュートリアルをした2009年のICEC2009(パリ)では、学生2人が同行していてパリを案内したりしたので、自分のチュートリアル以外にICECセッションに参加した記憶がほとんど無いのに対して、今回はタップリと中身が濃かったし、自分の研究と関係した収穫も多かった。 たまにはこういう超真面目な出張もいいものだ。

上は、毎日のようにモバイルWiFiルータの会社からメイルが届いていた「本日の使用量」である(後で20/21日を追加)。 特に、ここPoznan工科大学では、学内のフリーWiFiが超強力だったので、9/17の使用量はゼロだった。 他も、たいていホテルのフリーWiFiが生きているものの、時間帯によってはサーバへのFTPがfailしたりしたので、適宜、ホテルの部屋でも切り替えて使った。 あとは、モバイルWiFiルータを繋いで、さらにiPadのGPSをONにしてGoogle MapとMapアプリを同時に走らせて、現在地と照合しながらホテルとか別会場企画にスムースに辿り着けたのも助かった。 ホテルでも空港でも電車やバスでも、フリーWiFiが飛んでいる、いい時代である。(^_^)

そしてPoznan最後の晩は、また旧市民広場の同じレストランで一人慰労会をした。 思い出してみれば、Poznanに最初に到着した晩にもここに来たが、その時はスーツケースが戻って来るのか来ないのか・・・という、翌日のTutorial開催に不安を持ちつつのDinnerだった。 それが今夜は祝勝会(*^o^*)である。 当然、とっっっっっっても、美味しかった。

2018年9月21日(金)

帰国日の朝9時となった。 といっても、Poznanを発つのは夕方で、ミュンヘンで乗り継ぐ帰国便は夜に出発して、羽田に到着するのは明日の午後というか夕方の16時、つまりちょうど24時間後になる、という「長い帰途」である。 朝にSketchingコミュニティに届いていたメイルは、この渡欧ツアーの冒頭、 続・Max7日記(7) の「2018年9月7日(金)」のところに書いていたMITメディアラボのCalra Diana女史の続報で、「Hi everyone, I'm excited and wanted to share that the latest robot I've designed for Diligent Robotics was written up in IEEE Spectrum. And thanks again for all the ideas about the LED diffusion. I'm still talking with our engineers about the approach for the next version」とのことで、その記事は ここ にあった。

YouTube動画は これ である。 上の写真のように、あの「LED顔で表情」ロボットがこういう形になったというわけで、どうも病院内で薬などを運ぶ「癒し系ロボット」らしいのだが、異常に長い腕が1本だけ、という不思議なフォルムは、おそらく日本ではデザインされないものだろう。 なかなか不思議な、しかしクールな仕事である。

この欧州ツアー2018の最終日は結局、ポーランドでも有数の歴史ある観光地だというのに観光をまったくせず、ホテルのチェックアウトのぎりぎりまで部屋に篭って、さらにタクシーを呼んで空港に直行してから数時間、電子情報通信学会から届いた8月のHIP研究会の抄録登録依頼への対応とか、事務局から名指しで依頼されたので教授会を欠席して行ってくる、10月下旬の「 高蔵寺高校・模擬授業 」のプレゼンの準備とか(→これはPosnan空港のカフェでとりあえず完成)、後期「インタラクティブブロダクト演習」に関する的場先生からの連絡メイルに反応したり・・・と、あれこれお仕事モードへの復帰に費やした。

そして今は、ミュンヘンから羽田への10時間50分のフライトの途中、東経100度、残り4時半、というロシアの上空である。 上の写真は実は帰路でなく往路のフライトであるが、半年前から座席指定した「最後尾の席」からの眺めとしては同じようなものである。 いつもと同様にワイン3杯で無理矢理に爆睡してから目覚めて(この瞬間の「意識が蘇ってくる感じ」がまず好き)、スグ後ろのキャビンに行って首・肩・足腰の入念なストレッチをして(この時の「身体が目覚めてくる内受容感覚」がまた好き)、冷たいオレンジジュースを1杯もらって身体中に染み渡り(これもハッキリと自覚できる内受容感覚)、さらにストレッチをしてから今度はブラックコーヒーを1杯もらって飲みつつさらにスクワット(脹脛[ふくらはぎ]は第二の心臓と言われているがこれを実感)、といういつものルーチンを1時間以上かけて行って、ようやく席でMacBookAirを開いたところだ。 このページをWebに上げるのはたぶん帰国日でなく日曜か月曜(祝日)の予定である

機内の座席の脹脛の裏あたりのところでグリーンのLEDが点灯していて、ここから電源を取れる・・・と気付いたので、過去には暗い機内で(キートップも最小照度で点灯)バッテリ消耗を気にしてあまりMaxをしていなかったのが解決していたということで、残り時間は「MaxSmmerSchool2018」の復習シリーズから、上の「6日初級・後藤」というディレクトリの中身を全部眺めてみた。 初日の初級ということは超初心者向けなのに、MSPとかjitterでは容赦なく凄いものが並んでいたようだ。 まず、 Max(J).pdf というPDFがこの後藤さんのセッションのプレゼンである。 そしてもっとも最初は「Maxを使ったことがない人」のための「Max Tutorials」というディレクトリ(中身は このZIP )内の「Very Beginner」というディレクトリで、「print」オブジェクトから始まって、まぁさすがにこれは超簡単過ぎるのでパスしていいだろう、という品揃えだった。 しかしその次の「MIDI」というディレクトリでは、最後には以下のようなゴージャスな「ソフトGM音源楽器」パッチにまで成長していた。 これは来年の「サウンドデザイン」の講義で活用するかもしれない。

そして次の「MSP Examples」というディレクトリ(中身は このZIP )からはもう、容赦ない本気モードが全開である。 以下は、「01.Sound Synthesis」内の3つのうちの「01.Reson Synthesis」というディレクトリにあった2つのMaxパッチを叩いたところであるが、いやいや、騒音の機内で耳栓をした上からヘッドセットを被っても、なかなか美味しい音が聞こえてきた。 「*Reson Synthesis1.pat.mxt」というパッチはかなり古いもののようだが、改訂版の「*Reson Synthesis1a.maxpat」では、ホワイトノイズにレゾナンスフィルタをかけた16音ポリフォニックのサウンドが得られる。

以下は、「01.Sound Synthesis」内の「FMInter」というディレクトリに1個だけある「FMInter.maxpat」というMaxパッチであるが、いやいや、これこそ僕が2000年ごろのDSPSSで、IRCAMで活躍する後藤さんのFMテクニックをゲットした、あの時代のものである。 スタートさせると自動でいい感じのFMアンビエント音響を生成してくれる。 膨大な数のサブパッチがあって、とても画面に入りきれないので、このパッチだけ代表させている。 MSPの格好の教材なので、これは「メディア数理造形演習」で紹介してもいいかも。

そして以下は、「01.Sound Synthesis」内の「WaveFlange」というディレクトリに1個だけある「WaveFlange1.maxpat」というMaxパッチであるが、これも後藤さんテイスト全開である。 スタートさせると自動でいい感じのフランジング・アンビエント音響を生成してくれる。 これまた膨大な数のサブパッチがあって、とても画面に入りきれないので、このパッチだけ代表させている。 上の例と同様に、フォントサイズを落として、ぎりぎりまでサプパッチを駆使して、パッチャーウインドウのサイズを、当時のMacの画面の中に収めていたのがよく分かる。 今ならこれが「gen~」だったり「プレゼンテーションモード」だったりで効率的に階層化/構造化できるわけだ。

さらに以下は、「03.Formant Synthesis」というディレクトリに2個あるフォルマント音声合成のパッチで、「01.Formant Synthesis 00.maxpat」ではフォルマント(バンドパス・レゾネータフィルタ)を3バンドで、「01.Formant Synthesis 01.maxpat」ではフォルマントを5バンドで、それぞれ「a」「i」「u」「e」「o」がきちんとライヴ生成されている。 このフォルマントのサウンドに佐近田さんが魅了されて、「 フォルマント兄弟の長くまっすぐな道 」に至る歴史がスタートしたのに違いない。 佐近田さんとは、過去のDSPSSで「Max大喜利」に一緒に出たことがあった。 客席からのリクエストを受けて、その場で3分ぐらいで何かサウンドを出すMaxパッチを作り合う・・・という凄いものだった。

ここで機内は窓のシールドを開けて明るくなり、もう東京まて2時間ほどである。 「6日初級・後藤」というディレクトリの残りとしては、「Jitter Example」の中に「01. Video Effetcs」と「02. OpenGL rendering」がある。 これらは後期の「メディア数理造形演習」にも関係しているので、じっくりと吟味したいところだ。 しかし機内では着陸前のサービスとかが始まったので、ここで中途半端に眺めることを断念して、機内のお勉強はここまで、とした。 続きがいつになるかは不明だが、なかなか充実した帰途のフライトになった。(^_^)

2018年9月24日(月/祝)

9月22日の晩にセントレアから浜松に向かうe-wingはとても空いていて、車内の「Hamamatsu Free WiFi」も快適で、上のところまでを帰国当日の9月22日の晩にWebに上げておいたが、そこからが長かった。 帰宅して夜23時から丸1日半、31時間ほどひたすら寝て、まだまだ時差ぼけも身体各部の鈍痛もある中、今日は朝8時前には研究室に出てきて、まずはデジカメに残った写真とともに フォトレポート のページを上げて完成させた。 しかし身体全体を包む微熱感と疲労感は半端なく、色々残った事務作業などは午後にまで引きずった。 たまたま帰国日が日曜で、さらに翌日の今日が祝日で、本当によかった。

そんな中、またまたそれはやってきた。 OMMF(Ogaki Mini Maker Faire)2018 の参加募集のメイルである。 SUACからは、過去4回の全てのOMMFに皆勤参加しているので、いくら体調がズタポロの今日であっても、ここから逃げるわけにはいかない。 どのようにでも読めるように応募の文章を作ってエントリーして、さらにいつもの大垣駅前のAPAホテルを、とりあえずダミーとしてゼミの長田さん永田さん平田クンの名前で土曜1泊、僕は翌日に高速を帰るので土曜から2泊を予約した。 これからメンバー募集大会が始まる。 前回、OMMF2016に参加した模様は ここ にあった。
ただしそこで事務局に行ってみると、公用車の借用予約簿は、いつものステップワゴンも、先日奈良にブンちゃんと行ったウイングロードも1日だけの予約があって駄目で、結局、プリウスという事になった。 学生を3人としておいて良かったが、トランクだけとなるので、今回は「持ち込む機材のサイズを小さく」という視点で展示作品の検討を進めることになった。

しかし ここ を見てみると、前回の「43虎」からちょうど2年が経っていて、それも当時は新入生だった「43虎」のうち2人が僕のゼミに来てくれたのだから、ちょっと感慨深いものがある。 出来れば今回のOMMF2018は2回生あたりから募集してみたいものの、この2人に平田クンを加えて「上回生の味」を目指す・・・というのもアリかもしれない。 来週の後期ゼミ初日に、相談してみよう。

2018年9月25日(火)

いよいよお仕事復帰日である。 ただし昨日は午後3時あたりに突然に視野が異常になって急激な眠気が襲ってきたので帰宅したが(おそらくあれが体内時計の超深夜)、その後は夕方から夜になってもまったく眠くならず、結局、朝4時から2時間ほどの睡眠だけで出勤した。 これではまだまだ時差ぼけは続きそうだ。

そんなモヤモヤを吹き飛ばす情報がネットから届いたが、なんと遂に来年のNIME2019はブラジルだという。 7月3日から7月7日というから、向こうは冬である。 「In its nineteenth edition, NIME crosses the Equatorial line, happening for the first time in South America, being held at the Federal University of Rio Grande do Sul, in Porto Alegre, Brazil」ということで、Porto Alegreという街も知らないのでGoogle Mapで検索して、さらに次第に拡大してその位置を確認したのが上の図である。 そんな直行便は飛んでいないが、SUACからこの「Federal University of Rio Grande do Sul」という大学までのフライトは「1日と15時間」ということだ。(^_^;)

そして、午前中にあれこれ残っていた細かいお仕事を数件こなしていると、午後になって再び強烈に眠気が襲ってきた。 こうなるとどうしようもないので適当に細かく眠りつつ(^_^;)、せっかくなのでANAのサイトに行って、仮に来月に1ヶ月ほどセントレアからPorto Alegreに行ってくるとどうなるのか(過去最大のマイルが稼げそう)・・・と調べてみると、なんとエコノミーの料金は欧米便よりも、とても安かった。 途中で成田からシカゴとかニューヨークに飛んでいるのに、通常のシカゴ便やニューヨーク便より安い、というのはかなり謎だが、まぁ経済活動というのはそういうもんなのだろう。 このチケットでシカゴとかニューヨークに飛んで、そこで途中降機はたぶん許されないのだ。
さらに、この行程表ではそれぞれの飛行機が実際にどれだけ飛んでいるのかは不明(現地時間で表示)なのだが、まぁおよそ行きは24時間後に、帰りは48時間後に着くので、つまりは「1日+半日」ということで、Google Mapの見立てはおよそ正しかった。 ブラジルなんて遠いからフライトが高くて・・・と勝手に思い込んでいたが、なるほど、時間は膨大にかかるものの、ANA系列(スターアライアンス)でもこんなに安いとなると、もっと安さ優先の怪しいルートを発掘したら、かなり安いのかもしれない。

2018年9月26日(水)

ようやく昨夜は就寝/起床時間だけは日本の日常になってきたが、朝6時に起きても視界に靄がかかり、普段はまったく経験の無い「頭痛」を体験して、とても新鮮である。 午後は眠くなるので午前中にと、あれこれの事務仕事をこなしているところに、またまた衝撃的なメイルが2本も届いた。
順序としては後になるが、このページを含む僕の全コンテンツを置いている[nagasm.org]のサーバ業者から、「【重要】VPSサービス終了のお知らせ 2018 年 12月 31日 12:00まで」というタイトルのメイルが届いたのだ。 去年の2月に年会費を値上げしていたし、まぁ苦しいんだろうなぁ・・・とは思っていたが、あまりに一気、これぞアメリカナイズ・ベンチャーの判断なのだろう。 夜逃げトンズラでないだけ、マシである。 とりあえずバックアップの必要はないので、共同管理者である、東大の中村先生に「お助け」メイルを出した。 彼は僕にとって、Unixの師匠なのだ。

そして先に届いていたのが、遂に来た、「Max8」登場、である。 まず、SUACのアカデミックライセンスの全数のserial番号とともにSUAC代窓口としての僕への「upgradeはいかが?」というメイルが最初に届き、次に8分後にMax7ユーザ全員への定期的レターとして「Max8登場」の案内メイルが届き、さらに8分後にMax7登録ユーザ(個人)宛に「upgradeはいかが?」というメイルが届き、計3本となった。 この順序はきわめて礼儀的で正しいものだ。 いずれのメイルでもリンク先はただ1箇所、 ここ に行く。 上のようなYouTube動画がその先頭にあった。 そして、最初のメイルに対して「SUACは次の大幅更新は2021年3月なのでそれまではMax7で行きますが、とりあえずupgrade総額の見積もりを下さい」・「個人的にクレジットカード払いでMax8を入手して試してみたい」などと返信した。 まだ「MaxSummerSchool2018の復習」が中途半端な状態だし、実際にはMax8を入手して動かしたわけではないので、引き続きまだ「Max7日記」を進めていこう。

そして、強烈に眠い「魔の」13-15時の時間帯を過ぎたところで、 このページ をなぞってみる事にした。 とりあえず先頭にあった YouTube動画 (mp4化したものが これ ) は、「MaxSummerSchool2018」に出ていたこともあるが、それほど目新しいものもなかったので、ちょっと気抜けした。
そして、動画のすぐ下には、上のように、「What's New in Max 8?」として、以下の8つのポイントが示されている。

      1. Tap into sonic complexity with MC
      2. Noticeably improved performance
      3. Simplified MIDI and keyboard control with Mappings
      4. Vizzie 2, completely rebuilt with OpenGL
      5. Open your patches to the world with Node for Max
      6. Experience a streamlined patching workflow
      7. Uncover the secrets to Max mastery with search
      8. 37 more features including VST3 and Gen for events
1番目は「Tap into sonic complexity with MC」とあった。 「MC」とは何ぞや??と思ったら、「multiple audio channels」だった。 これまでMaxでは、「普通(灰色)」・「リアルタイム・オーディオ[MSP](黄色と黒)」・「リアルタイム・グラフィック[jitter](緑と黒)」という3種類のパッチコードがあったが、なんとMaxで第4の「空色と黒」というパッチコードが登場した。 これがMCであり、「同時に多数の(100チャンネルとか)リアルタイム・オーディオを一気に束ねる」というものらしい。 その様子は以下の図で明らかである。 あまりマルチチャンネル・オーディオにそそられてこなかった僕としてはあまりそそられないが、この手のマルチチャンネル・オーディオ技を駆使してきた人にとって、苦労して多重化してきたものが一気にスッキリする(そのため素人が参入してきて差別化が難しくなる)、という意義は大きいだろう。 どうやらこれがMax8の最大の「売り」らしい。

2番目の「Noticeably improved performance」は、まぁupgrageなら当然だが、「起動がMaxで最大2倍、Windowsで最大20倍、速くなった」・「巨大なパッチの読み込みが最大4倍、速くなった」・「UIの反応がより速くなった」という、そんなの当然じゃん、というスピードアップの話である。 Windowsの20倍というのが、これまでどれだけWindowsでMaxを使うユーザを泣かせてきたのか・・・と思い遣ってしまった。
そして3番目の「Simplified MIDI and keyboard control with Mappings」というのは以下のようなもので、それをやったらオシマイだ・・・と僕が嫌うパターンである。 色々なMIDIコントローラが出てきて、そのMIDIメッセージを受けてあれこれする・・・というのがMaxプログラミングの最初の楽しみなのに、そのマッピング設定を一気にお手軽にやってくれるものらしい。 これは少なくとも僕は今後とも使わないし、教育的に言えば学生にも使わせたくない機能だ。

4番目の「Vizzie 2, completely rebuilt with OpenGL」はそのまま。 以下のような、超お手軽のjitterライブラリ「Vizzle」がさらに機能向上・高速化してOpenGLまでがっつり盛り込まれているらしい。 これはVJ屋は大歓迎だろう。 Webカメラからの画像認識で、どのぐらい性能が上がっているのかをチェックしてみたい。

5番目の「Open your patches to the world with Node for Max」で、以下のようにようやくMax8になって、正式にnode.jsに対応したらしい。 これまでも何度となく(記憶によればMax5の時代から)、トリッキーに「Maxとnode.jsによるサーバの連携」を実現する、というチャレンジが話題になってきたが、ようやく正式に実装されたのだろう。 過去の色々な時に、何度となく「node.js」を調べてきたが、いよいよちゃんと使えるのであれば、どこかで挑戦してみようかな。

6番目の「Experience a streamlined patching workflow」とは、Maxプログラミング・エディタ上の「より効率的に出来る」ための機能追加/改良である。 以下のいちばん最初のは笑ってしまうが、オブジェクトAとオブジェクトBとが繋がっている間にオブジェクトCを「挿入」したい場合に、これまでだったら、ラインを消して新しく2本繋ぐか、ラインの片方を移動してもう1本を繋ぐか、ということだったが、どうやらまた謎のショートカットとともにオブジェクトCをラインに突っ込むと、なんとインレットもアウトレットも同時に付け加わって、つまりは「ラインへのオブジェクトの挿入」が出来るらしい(^_^;)。
この他にも、一群のオブジェクトを任意にグループ化したり(そんなのはどこのエディタでもある)、Max consoleでの表示にタイムスタンプを付けたり表示情報にフィルタをかけたり(そんな事も出来なくてMaxプログラミング出来るのか?)、ライン内の情報をモニタできたり(同)、GUIのカラーリングを自在に(同)、編集モードで特定のオブジェクトだけ実行させたり、と涙ぐましいほどの「改良」をアピールしているが、ほぼ無内容である。

7番目の「Uncover the secrets to Max mastery with search」とは、以下のMaxパッチの右上にあるサーチ窓が、そのコンピュータ内だけでなく、ネットを越えてCycling'74のMaxユーザーフォーラムとか、さらにはインターネット上の全ての関連Max情報を検索することで、世界中の「Maxのベテラン」のノウハウをゲット出来ますよ・・・というような事らしい。 ブラウザがあればいいだけの事で、そんなのはMax3の時代から常識である。(^_^;)

そして最後の「37 more features including VST3 and Gen for events」として、以下のような色々な改良が加わりました、という事らしいが、まぁこれは過去にさんざん多数のユーザの希望が累積していたのを消化しただけで、別にそれほど偉いことではないだろう。

ということで、要するにMax8は、これまで色々と蓄積していたMaxユーザの希望などを取り込みつつ、それほどドラスティックには変わっていない。 「Max7で作ったパッチはそのままMax8で走る」のは間違いなく、差分(機能が向上した新しい仕様)の部分を記述しなければ、逆も可能であるような気がする。 少なくとも僕は、「Max8でここが新しくなった」という部分に今のところソソラレナイので(^_^;)、Max8を実際に使うとしても、後でそのままMax7でも使えるようなプログラミングをしていくのでは・・・と思った。 予算制度の関係で、SUACではあと2年半はMax7のままで行きそうだが、Max8がこの程度であれば、まだまだMax7で「ほぼ先端」はキーブ出来そうな気がする。

2018年9月27日(木)

まだまだ時差ぼけの抜けない日々である。 午前中は頭痛が酷いので、残っていたオープンキャンパスの振休届けを提出して、午前の会議は欠席して研究室で静養に努めた。 そしてCycling'74からは、スタッフの熱烈なメイルが届いて、通常は30日であるMaxの「お試し期間」を、Nagashimaは12ヶ月に設定したので、まずは試してみてくれ・・・とのことだった。 そしてMax8をダウンロードしている間に、フト見つけたのが mira というiPadのアプリで、存在は昔から知っていたものの、おそらく僕のiPadではiOSのバージョンを上げていないので無理だろう・・・と思っていたらOKだった。 そこで App Store で9.99ドル(1200円)でゲットしてみたら、なんとあっさりと以下のようなことになってしまった。(^_^)

この様子の全貌は YouTube に上げたが、ついでに、「USB接続」だけでなく「WiFiによるAd Hoc接続」というのにも成功してしまった。 これはなかなかのものである。 10本指のマルチタッチの座標がわらわらと出てくるのはなかなか壮観で、これはまずはゼミで、あるいはアイデアコンペで選ばれた学生に貸し出して何か制作するネタにしてもらおう。

2018年9月30日(日)

Max8はあいかわらずSUAC内では使えないまま、Cycling'74の担当者からのメイル待ちである。 サーバ引っ越しの方は、既に別の業社と契約して、東大の中村先生とやりとりしながら、既に直接IPアドレスを指定することでSSHログイン出来たり、SFTP出来たりしていて、コンテンツ全体の引っ越しもほぼ終わっている。 ドメイン管理者としてマスターDNSの参照IPを書き換えると、おそらく2-3日で世界中のDNSに回って、ユーザは気付かないものの[nagasm.org]の実体は従来のカリフォルニアから、どこか知らない別の場所のサーバから、に切り替わる予定である。

金曜日はデザイン1回生/2回生の後期開始前のガイダンスがあって、一気に後期モードに突入した。 土曜日はアカペラ有志5人と久しぶりの9時間マラソンカラオケでようやく通常モードへの復帰を体感した。 そして今日は「伊勢湾台風並み」などと台風24号の接近のレーダー画像をずっと開いた状態で、ぎりぎり浜松に近づくまでお仕事を、と大学に出てきた。 的場先生から「インタラクティブプロダクト演習」の初日の2限に「色々な楽器を見せる」というお題を頂いていて、とりあえず上の3点をセレクトしたところである。 ついでに、これまで★印をクリックしていたのを写真を直に並べるように「 Hand Roll Piano をMIDI化してみました 」のページの見てくれを改訂してみた。

2018年10月2日(火)

日曜日の夜に台風24号は静岡県を吹き抜けて月曜日には後期初日が台風一過の晴天でスタートするかと思いきや、歴史的な大規模停電で浜松市や県西部が壊滅的に停電したことで全学休講、今日が後期初日となった。 調べてみるとまだ「浜松市中区」だけでも20000戸が停電しているとかで、完全復旧までには4日かかるという。 電気が無いとどれだけ不便か、というのが身に沁みた。 電気が来なくて水も出なくて途絶対策に・・・と1日契約のUQモバイルWiFiルータを契約したお陰で、新しいサーバ業種の設定確認などが出来たが、ついでにお仕事Mac miniと2台のMavBookAirに入れたMax8を、defaultの「30日間お試し」でなく、Cycling'74が特別に設定してくれた(将来の導入のテスト)12ヶ月というライセンスでAuthorizeできたのも収穫となった。 以下は、初めてMax8を起動した時にだけ、選ぶと出てくる「Max8ってこんなもの」というサンプルパッチのスクリーンショットである。

昨日はそんな中、まず午前中には実習指導の前田さんと高見さんと協力して、マルチメディア室のMacを全て、(1)Mac OSX 10.11.3から10.11.6に上げて、(2)最新のセキュリティアップデートとSafari等も全て最新に、という作業を50台に対して行った。 その後、「インタラクティブプロダクト演習」初日2限のための準備をさらに拡充して、以下の写真のように提供する材料の品揃えを拡張して、 講義ページの解説 も作って載せた。

そして、以下のように3台のMacを並べてぼちぼちお仕事しているところに、1冊の本が届いた。 ハテ、今はAmazonに注文している本は無かった筈だけど・・・と開けてみると、なんと「情報システム概論」という教科書だった。 同封の手紙で、著者から僕への「献本」だと判明した。 著者の一人が、いままさに1日何往復もメイルを行き来させている、東大の中村文隆さん(僕のUnixの師匠)である。 なかなかきちんとまとまった本なので、皆んな、ぜひ買ってみて欲しい。 「2進接頭辞」なんて、知らなかった。(^_^;)

2018年10月3日(水)

いよいよ後期のゼミ初日の日である。 明日の「インタラクティブプロダクト演習」の初日の2限に「色々な楽器を見せる」という企画も、伊豆先生・佐々木先生の出展も出揃って、以下のように豪華なラインナップとなった。 手回しオルゴールは僕も持っていたが、まぁ、同じようなものなので、いいっか。

そしてその後、フト思い付いて、「Max7とMax8とを同時に走らせてみる」という実験を行った。 Max8はおそらくMax7の上位コンパチブルでパッチの互換性はあるが、別アプリになっているという事の確認である。 そして以下のように両方を立ち上げてそれぞれ同じパッチを走らせてみたが、予想通り、「send」・「receive」オブジェクトで同じ名称を定義しても、相互には無関係であると確認できた。 さらに両方に「udpsend」・「udpreceive」を入れてOSCで相互通信させてみると、基本的にはちゃんと通信した。 ただしProcessingとMaxとの混在の際に確認した現象として、両者は別のアプリなので、パッチを立ち上げた時に「 同じポート番号で"udpreceive"を指定している他のアプリ/パッチが立ち上がっていると、拗ねて、そのポート番号でのOSC受信をしない 」( 同じポート番号を指定していた他のアプリ/パッチを消すと、そのポート番号でのOSC受信を開始する )という現象も確認した。詳しくは以下のYouTubeを参照されたい。

YouTube

そして2限のゼミでは、M2馬ブンちゃん、4回生・山本さん西村クン、3回生・長田さん永田さん平田クン、という後期6人の陣容が集った。 山本さんは早くも卒制に取り掛かっていたが、ここから全員、スタートダッシュといきたいものだ。 それぞれ全力で支援していくので、頑張って成長していって欲しい。

そして午後には、この日記の「2018年9月21日(金)」、つまり渡欧ツアー2018の帰途のフライト内でやっていた「MaxSmmerSchool2018」の復習シリーズの最後に残っていた、「6日初級・後藤」というディレクトリの中の、上の「Jitter Example」というディレクトリ(中身は このZIP )のチェック、という宿題に取り掛かってみた。 その結果、大部分はjitterのシンプルなビデオエフェクトのサンプル集であり、Open-GLもごくごく最初の紹介だけ、と判明した。

唯一、使えそうなものとしては、上の「jit.mxform2d-videocube.maxpat」があったが、これは3次元空間の立方体の3面に動画をマッピングするものだった。 このままでは肝心の立方体も動かせなかったので、まぁサンプル(元々、6日というのは初日のMax7紹介なので当然)だった。 これで「6日初級・後藤」ディレクトリが「再チェックすべし」領域から出て、ちょっとした区切りとなった。 その次の「7日上級・後藤」はGEN大会なので、これは大きな区切りである。

2018年10月4日(木)

この日は世間的には後期第1週、1-2限に「インタラクティブプロダクト演習」の初日があった、というような「よくある日」なのだが、全く人知れず、僕にとっては10年に一度あるかどうか・・・という記念日となった。 僕のドメイン「nagasm.org」(あとsuac.netというのもあるがこれは数年後に放棄予定)のサーバが引っ越し完了したのである。 Webをアクセスするお客さんからすれば何の変化もないのだが、作り手の側からは、以下のように、これまでFTPでコンテンツを送っていた先のサーバ業者が変わったことで、今度からはSFTPで異なるIPアドレスのサーバにコンテンツを送るということで、この日記も新サーバに送らないとWebで見えない。

稼働してしまえば上のようにSFTPクライアントのIPアドレスが変わっただけだが、このドメイン管理は業者に丸投げしているわけではないので、東大の中村先生のサポートを受けつつ、ドメインホルダーである僕が以下のようにドメイン管理者画面で、「nagasm.org」がリクエストされたらこのIPに行く、という対応の部分を編集して、この情報が世界中のDNSに約24時間で行き渡ると、ようやく稼働するのだ。 今朝、この変更をしてから「インタラクティブプロダクト演習」の講義に行き、途中で研究室に戻って確認したら移行が完了していた・・・という感じである。

これまでの業者はサーバの実体がアメリカ西海岸の某所にあったということだが、今度の業者のサーバの実体が世界中のどこにあるのかは不明である。 例えば今後、日本でピンポイントの地震が起きて僕のWebが止まれば、その地域にあるデータセンタの可能性がある・・・という程度で、基本的にはサーバ契約しているユーザだってサーバの場所は知らないのだが、中村先生によれば「東京近郊」とのこと(東大からのpingが5msecで返ってくる[京大なら11msec]らしい)。 ちなみに今回の引っ越し先は「お名前.com」というところで、サーバ維持費はかなり安くなった。 「家賃がグッと安くなる引っ越し」ということで、まぁ、こういう引っ越しも悪くないのだ。

2018年10月5日(金)

昨日の「インタラクティブプロダクト演習」に続いて、いよいよ4-5限に「メディア数理造形演習」の初日を迎えるということで、昨日からかなり気合いを入れて講義ページを作ってきた。 とても初日にこんなに出来ない・・・という内容を盛り込んで(残った部分は来週に移動するパターン)、なんとかやっつけたところで、懸案の宿題、「MaxSmmerSchool2018」の復習シリーズに取り掛かった。 続くディレクトリは「7日上級・後藤」であり、「GEN大会」である。 さっそく 後藤さんのテキストPDF を改めて眺めてみたが、だいぶ忘却の彼方になっていた。

後藤さんの提供してくれたサンプル等は このZIP にあるが、上はその中の「SimpleExamples.maxpat」というパッチを開いてデスクトップ左上に置き、その中にある全ての「gen~」をさらに叩いて開いた様子である。 これを眺めてMaxSmmerSchool2018の時の記憶がうっすらと蘇ってきたものの、なかなか実際に何かを作る、という着手がしにくい。 つまり、まったくモノになっていないのだった。

上のパッチは、MaxSmmerSchool2018の時に後藤さんが出した「課題」で、それぞれ上のパッチ内にある「gen~」を叩いて出てきたものをその下に置いている。 これもなかなか上手くいかず、高見さんは左側のようにサッと出来たものの、僕は苦闘して真ん中のものを作ったのだった。 後藤さんの解答例が右側にある。 「GENはMSPより断然速い」というのは分かっているのだが、後藤さん作品のように高密度なサウンドシンセシスを追求していない僕にとって、なかなかGENは活用の必然性に迫られない、というのが弱点なのだ。 その理由は、過去の非力なMacでCPU専有率にヒヤヒヤしながら「軽量化」をしてきた貧乏体質が抜けないところにもありそうだ。

次のディレクトリは「8日晩・後藤」であり(中身は これ )、これはプレゼンテーションということで、基本的には後藤さんのパフォーマンス作品の紹介のセッションのため、その裏で仕事していた、後藤さんが20世紀に作っていたディジタル音響信号処理の関係のサンプルが並んでいた。 「4 speakers」というディレクトリには、たくさんのspatializationパッチやドップラー効果のバッチが並び、「All-pass filter」というディレクトリには、tapinとtapoutによる実験パッチがあった。 そして「Comb filter」というディレクトリにあったのが上のパッチであり、ホワイトノイズに3段にわたって「櫛形フィルタ」をかけていて、いい感じにフランジングサウンドが聞こえたので、さっそくこれを頂いて「Max7お勉強」ディレクトリにコピーした。

「Panning」というディレクトリには、ステレオと4チャンネルのpannerパッチがあったが、これは一目瞭然だったのでパス。 続く「PitchShifter」というディレクトリには、上の左の「Simple Pitch Shifter.maxpat」と、上の右の「pitch-shifter.maxpa」とがあった。 前者はtapinとtapoutによるディレイの時間をズラすという簡単なものだったが、後者はサインテーブルを使ったなかなかトリッキーなものでさらに解析の必要あり、とさっそくこれも「Max7お勉強」ディレクトリにコピーした。

そして最後の「Reverb」いうディレクトリには、実質的には「reverb-experiment1.maxpat」というパッチがあり、ここまで地味に実験パッチみたいに置かれていた「All-passFilter.maxpat」・「CombFilter.maxpat」・「direct-reverb.maxpat」がここに集結して、サンプルサウンド生成の「Amplitude Mod.maxpat」とともに、もっともストレートにシンプルなリバーブを教科書通りに作ったサンプルとなっていた。 これも頂いて「Max7お勉強」ディレクトリにコピーして、これで「8日晩・後藤」のお勉強(見直し)まで完了である。 東京藝大に行っていた時に書いていたこの日記(part2[6])で、すっかり忘れていた重要なテクを発見したのでここで再録しておこう。 パッチ内であるブロックを指定した状態で、「command + shift + e」によってそのブロックがサブパッチ「p」になる。 それを元に戻すのは「command + shift + d」 というスゴ技である。 これはどこかで実際に使うことで身につけていきたい。

そして、上のメモもこの日記(part2[6])の再録だが、完全に忘れていたので、ここにまた置いた。 「大事なことなので2度」というやつである。 あと、「パッチコードを迂回させる」のは「パッチコードを選択してcommand + y」というのもあったが、この逆は仲井さんも知らなかったのだった。 そっちが欲しいのだが。

そして、最後に残ったディレクトリのうち「9日中級・仲井」については、上のような簡単なjitterの実験で、画素の差分値によるテルミンと、8分割した領域スイッチで鳴らすもの、という2つがメインであり、 このように まとめて(→これは「メディア数理造形演習」で学生に紹介しよう(^_^))、ここも完了となった。

YouTube

あと最後に残ったのは、大変な「9日上級・後藤」というディレクトリであり、その中に2つある「Interactive Music」・「OpenGL and Shader」という膨大なサンプルがずっしりと待ち構えている。 その中には、上のような、謎のOpen-GLっぽいグラフィックのサイトがあったりする(上手くやると、これらのグラフィクスもMax7で実現できるらしい)ので、かなーーーり深い世界である。 これはまた後日。

2018年10月8日(月/祝)

一昨日の土曜日には、先週土曜日のアカペラ有志5人との21曲に続いて、アカペラ有志2人との9時間カラオケで36曲を完走し、昨日はその休養日だった。 そして今日は3連休最後の体育の日ということだが、SUAC恒例の「月曜祝日講義日」である。 講義はないものの、2回生の井上さんのアポが午後にあり、それ以外は邪魔も入らず「お勉強」の日となった。 そうなれば、いよいよ残ったMaxSmmerSchool2018の復習シリーズの最後の「9日上級・後藤」というディレクトリの攻略ということになる。 以下のように、既に他のディレクトリは全て「再チェックすべし」というディレクトリから外に出ていて、中には「9日上級・後藤」だけが残っているが、そのサイズたるや「MaxSmmerSchool2018」ディレクトリ全体の972MBのうちの623MB、とほぼ大部分なのだった。

残りで大きいのは「8日上級・三輪」ディレクトリだが、上のようにここにはMacアプリとして書き出した巨大な「BKPTSJSynth.app」(105MB)と、動画「フォルマント兄弟の長くまっすぐな道.mp4」(93MB)がそのほとんどなので、まさに最後の大物ということになる。 ここにあるコンテンツは大きく2種類、「Interactive Music」・「OpenGL and Shader」というものだが、前者はどうも後藤さんがIRCAMで色々と実験したりしたものをとりあえず「詰合わせ」として素材置き場に提供しただけで、MaxSmmerSchool2018の期間中はコメントも無かった。 覗いていくと、以下のように、どうもMaxコンソールに膨大にエラーが出たりMaxパッチ内に「そのexternal objectは見つからない」という斜線の入った空白オブジェクトが出たりして、実質的にはそのまま使えるかもしれない(とりあえずエラーが出ない)ものはかなり少ないのかも???と不安になった。

しかしその後、「File Preferences」で、ファイルサーチパスに追加してこの「9日上級・後藤」のディレクトリ以下を全て検索するように指定してみると、一部のエラーメッセージは残るものの、「オブジェクトが見つからない」というほとんどのエラーが消えて、なんとか追いかけられるようになった。 色々と眺めてみると、どうやら「モーショントラッキング」とか「Granular」とか、ちょっと使えそうなテクニックが、IRCAMの総力を上げて掘り下げられている宝庫である、という確信を持った。 そして、この中の「Partial Tracking」というディレクトリについては、既に色々と解析して「お勉強」ディレクトリに収められた「bonk」・「fiddle」・「sigmund」という3つのピッチトラッキングのネタで、僕はネットから完全なパッケージを入手していたものの、ここにあるのはちょっと抜けて不完全だったので、調査対象から除外した。 これで、IRCAMの研究成果として調査する対象は、以下の8つのディレクトリとなった。 かなり大きな体系のようなので、8項目それぞれをヘッダとして独立させて調査していくことにしよう。

FTM.2.6.0.BETA-Max6-7

 「FTM」とは"faster than music"という意味でIRCAMが作った造語で、元々はIRCAMで「FTS」("faster than sound")という概念で、今で言えば「MSPの無かった時代(コンピュータが非力で遅かった)に、サウンドをリアルタイム処理するために効率的にデータ処理する体系」として出来たものらしい。 「FTM is a set of objects that extend the capabilities of Max, similarly to the way that MSP objects (for audio) and Jitter objects (for matrices and visualization) added new capabilities. FTM provides objects for storing, modifying, and accessing data—especially audio and other time-based data—and additional objects for using those data structures for sound analysis, synthesis, and processing, as well as for mapping, gesture following, and score following.」とあるが、要するに多種多様なデータをMax環境で効率的に一気に扱うための「取り決め」みたいなものであり、FTMに従ってデータを扱うと良い事があるとしても、FTM自体は何をしてくれるものでもない。 解説一式の入ったディレクトリ(のzip)は これ であり、解凍してもxmlがないので「f00-TOC.maxpat」パッチから叩いても出てこないが、この中の「f00-Introduction.html」から「f07-FFT.html」までをブラウザに投げ込むと、解説テキストになっている。 せっかくなので以下にリンクを置いてみた。 ちなみに「Gabor」というのは「ガボールフィルタ」のことで、WikiPediaによれば「線型フィルタの一種で、そのインパルス応答は調和関数とガウス関数をかけたものになっている。畳み込み属性があるため、ガボールフィルタのインパルス応答のフーリエ変換は、調和関数のフーリエ変換とガウス関数のフーリエ変換の畳み込みになる」ということで、まさにIRCAMの得意な畳み込みの世界なのだった。 HTML以外に、それぞれのサンプルMaxパッチがあるのをzipにまとめたのが これ であり(多数のexternalsとかにファイルサーチパスが通っていないと見えないカモ)、その全てを開いた様子が以下である。

この他に、「FTM Extras」というディレクトリには、以下の「ExamplesOverview.maxpat」・「FTMOverview.maxpat」・「GaborOverview.maxpat」・「MnMOverview.maxpat」という、そこから多数のサブパッチに繋がっているOverviewパッチがあり、さらにマークをクリックすると「SDIF」のヘルプも出てきた。 Maxはパッチ自体、さらにサブパッチ自体をヘルプ(マニュアル)に出来るのでこういう世界はよくあるが、とても全体を見渡せないという深い深いダンジョンとなっていた。 FTMは単にデータを効率的に扱う「定義」だが、GaborはGranular Synthesisに繋がりそうだし、MnMとかはパターンマッチング/トラッキングに繋がりそうなので、これだけでこのディレクトリを去るわけにはいかない。 例えば、FTMで「(random 0 10)」などと関数をコール出来る(この場合には整数ランダムを返す関数)が、その関数だけで こんなに あるという。 さらにFTMで記述できるクラスには こんな ものがあり、例えばその中の「fmat(matrix of floats)」のクラスには こんなに あるという。

ここで2時間ほどかけて、上のサンプル類をあれこれ眺めていて気付いたのは、どうやらこれは、「Maxライクでない、IRCAM古来のマナー」ということで、たぶんPureData(Pd)はこういう感じなのだろう・・・という事だった。 FTMはデータもテキストもベクトルも多様なクラスも、全て柔軟に定義して一気にドカッと送るのに適しているが、それはFFTとかGaborとかの処理にはまさに必須のことで、これをいちいちスキャンしていたら遅くなるのは過去に何度も実感してきた。 なんとも初歩的なところから障壁は高いが、これはなんとかして攻略する意義アリ、と感じた。

そして、改めて f00. FTM Basics — Introduction をじっくり読んだ上で、さらに明日からの空き時間をかけて、上の残りもきちんと読みつつサンプルパッチを理解していくしかない、という結論に達した。 そこで、f00から含めて8本のHTML全てをプリントして、持ち帰って眺めてみる事にした。 これはなかなか長い道のりになりそうだが、25年ぶりにGranular Samplingでもやってみようか・・・という突破口になるかもしれない。

2018年10月9日(火)

・・・というわけで持ち帰ったHTMLプリントをちょっとだけ眺めていて分かってきたのは、FTMはメモリ内に多種のデータ/メッセージ/ベクトル等を配置して、それをMaxのワイヤリングで逐次処理(順にアクセスして処理して順に再格納)しないで、どうもメモリ内で一気に処理して上書き(実際にはおそらく、処理→コピー保存→完了→スワップ[ポインタ変更]→元を消去、という手順)するので、Maxライクな信号処理シーケンスとは異次元の考え方が必要なものの、処理速度(効率)は圧倒的に向上する「体系」である・・・というように理解できた。 こうなると、単なるデータ定義の新種、というのでなく、本当にディジタル信号処理がGENどころではなく効率化されそうである。 そこで、今日は午後に院生の馬ブンちゃんのアポがあるだけなので、朝からじっくりと、 f01. FTM Basics — fmat から順になぞって(自分なりに和訳して)いくことにした。 FTMがMax7のパレットに追加したのは、上の4種の新しいオブジェクトである。 Maxのオブジェクトboxの中に色々な種類のクラスを書き込むことで多種の機能を実現できるのと同じように、ftm.object box内にクラスを書き込むことで、FTMでもftm.objectの多種な機能を呼び出して実現することが出来る。 ここではその理解のために、ものすごくたくさんある中から、代表として「fmat」というクラスを例として取り上げて、理解を進めることにする。 「fmat」とは「2次元の浮動小数点数(実数)マトリクス」を扱うものであり、jitterの「jit.matrix」はほぼ同じ機能を実装しているものの、FTMではその機能(可能性と能力)に大きな違いがあるという。

YouTube

そしてまずは上のように、新しいMax7パッチに新しいオブジェクトboxを出して「ftm.object」としてみると、なんと見慣れない「箱」が現れて、ここに今回のクラス「fmat」と「3×3」とダミーの名前を打ち込んで、さらにMaxコンソールに出力する専用の「ftm.print」を繋いでbang入力してみると、見事に中身が配列として表示された。 また「fmat」の箱そのものを叩くと、中身が編集可能で見えることも分かった。 ただしインスペクタがdefaultでは、中身は保存されず全てゼロになった。

YouTube

次に上のように、「fmat」にパラメータを与えるのに、元々のMax7のメッセージboxとFTMで用意されているメッセージboxとを比較してみた。 共通するのは、「ftm.print」の左アウトレット出力は、インレットにbangが来たときだけなのに対して、「ftm.print」の右アウトレット出力は、入力としてパラメータを設定しただけで一気に全ての情報(内部の配列が書き換わったもの)を出力する、という点である。 メッセージとして「random」を送ると、マトリクスとして定義された全ての要素にそれぞれrandomが届いて、一気に全要素がrandomになった。 過去にはそれぞれのマトリックス要素をいちいちインデックス指定して「uzi」で一巡させていたのに対して、さらにタイムラグ(uziで回る総演算時間)を気にしなくていいわけだ。 また、「random 21 108, floor」とパラメータを送ると、まず21から108までの実数値でrandomizeされたマトリックスを右アウトレット出力して、続いてfloor(切り捨て)で整数化されたマトリックスを右アウトレット出力してきた。 つまり、メッセージをコンマで切ると、左から順に処理するようである。

上で「元々のMax7のメッセージbox」と「FTMで用意されているメッセージbox」と書いてきたが、後者は実は「ftm.mess」である。 そして「ftm.object」はパラメータを送ったりbangを送ったり、つまりMaxのワイヤリングが繋がっていたが、「繋がずに処理を送る」事が出来るのが「ftm.mess」であり、Max7のメッセージboxではこれは出来ない。 繋がっていないので、パラメータの先頭に「$」を付けて送り先の「ftm.object」の名前を指定し、その後にメソッドやパラメータのメッセージを入れて、その全体をカッコで囲むという事のようだ。 そして、直接にパラメータを与えて「fmat」に送っただけでは違いが無かったのに対して、パラメータを「fmat」の名前を指定しつつ送るというメッセージについては、遂にMaxのメッセージboxとFTMの「ftm.mess」とで挙動に違いが出てきた。

ftm.print from_ftm.mess」からの出力をみると、先頭に「$」を付けて「fmat」の名前とともにパラメータを送ってみると、Max7のメッセージboxから送った場合には「ftm.print from_ftm.mess」からは「from_ftm.mess '($test1' random '128)'」とそのまま中身が表示されれるだけで何も起きないのに対して、FTMのメッセージbox「ftm.mess」に同じ中身を入れて送ると、ちゃんと「ftm.print from_ftm.mess」から、マトリックスの全要素に対して演算処理した結果のリストが出てきた。 ということは、 FTMでは「Max7のメッセージboxを使ってはイケナイ」(FTMのメッセージbox「ftm.mess」を使うべし) という事になる。 ここの違いはとりあえず重要だ。

そして「($test1 random 21 108), ($test1 floor), ($test1 random)」と送ってみると、まず21から108までの実数値でrandomizeされたマトリックス、次にfloor(切り捨て)で整数化されたマトリックス、最後に0.0以上1.0未満のランダム・マトリックスという順に出力された。 ところが「($test1 random 21 108); ($test1 floor)」と送ると、出力結果は整数化されたマトリックスだった。 これは、コンマでなくセミコロンで切った場合には、最初の結果に対して次のメソッドが作用されて、その最終結果だけが出てくる、というもののようである。 「($test1 random 21 108); ($test1 floor); ($test1 random)」と送ってみると、最初に21から108までの実数値のrandomを出し、それをfloorで整数化するものの、最後のものが有効ということで、0.0以上1.0未満のランダム・マトリックスだけが出力された。 これはもしかして、多数のメソッドの演算をセミコロンで切って並べたら、たった1個の「ftm.mess」で相当な演算処理をやってしまう、という事なのかもしれない。

f01. FTM Basics — fmat の最後には「Comparison with Jitter」という項目があった。 jitterオブジェクトはここでのFTMの例と同じように「2次元の浮動小数点数(実数)マトリクス」を用意する。 そしてbang入力があったたびにマトリックスの中身をまとめて処理して出力して、それが次のjitterオブジェクトに渡っていく。 FTMでは同じ「2次元の浮動小数点数(実数)マトリクス」を定義したとしても、特にワイヤリング無しに色々なメソッドを作用させることが出来る「ftm.mess」を使えば(そしてセミコロンで切ってどんどん[同時に施す]処理を追加してやれば)、ワイヤを流れるbang(qmetroなどで生成)のシステムクロックよりもずっと速く、そのマトリックスの中身の全てに対する信号処理結果を得られることになり、まさにこれが「FTM」や「FTS」そのものの発想なのだった。

続く f02. FTM Basics — ftm.mess では、引き続き「ftm.mess」の持つ可能性を深く広く紹介している。 なんせこの解説HTMLとセットになっている、上の「f02-messages.maxpat」というサンプルパッチ、右下の鍵盤オブジェクトのあるほんの一角が、なんと僕がかつてハマッた「ロジスティック関数によるカオス生成演奏パッチ」そのものと等価になっている、というのをチラッと見つけただけで注目していたものなのだ。

YouTube

上はその「f02-messages.maxpat」というサンプルパッチの前半、左側の部分をオリジナル化して、なるべく普通のMax7オブジェクトになるものはMax化した、という実験パッチの「FTM_test_03.maxpat」様子である。 普通のメッセージや「1 + 2」などというのはそのまま出力される。 ただしカッコで囲んで「(1 + 2)」とすると途端に「ftm.mess」としての機能を発揮して、その演算結果が「ftm.print」によって表示出力される。 さらに、「ftm.mess」で「($1 * $2)」などとしてやって、そのインスペクタで「All Inlets Trigger」をマークすると、Maxのマナーと違って、左右どちらのインレット入力に対してもトリガされてアウトレット出力してくれる。

そして「f(t) = Asin(2πft)」という関数として「ftm.mess」で「($2 * (sin ($3 * (($1 * 0.001) * $pi * 2.0))))」というような記述を行うと、3つのインレットに数値を与えれば、これだけでサイン関数を刻々と生成してくれる。 たった1個の「ftm.mess」だけで、である。 この実数出力に対して「(floor (($1 * 64) + 64))」とすれば、その出力はMIDIでお馴染みの「0-127」という整数になり、上のグラフのようなものが簡単に実現できた。これは過去に普通に作っていたものより、たぶんかなり高速なのだ。

YouTube

上は「f02-messages.maxpat」というサンプルパッチの後半、右側の部分をオリジナル化して、なるべく普通のMax7オブジェクトになるものはMax化した、という実験パッチ「FTM_test_04.maxpat」の様子である。 上はまず、「fmat 128 1」という「ftm.object」の1次元配列を定義して「array128」と名付けている。 そしてここに「(list (($array128 fill (new expr '($row / 127.)')) pow $1))」ということで、指数部の数値(power)を与えつつ指数関数的な128個のデータのリストを生成する、というのを一気にやっている。 「$1」で与えた数値に従って、最小値0.0と最大値1.0は変わらないものの、色々な指数関数特性の128データテーブルが簡単に「一気に生成」されている。

そして下の例が「ロジスティック関数によるカオス生成」である。 かつて20年以上も前にMaxで作っていたものだが、なんと「(floor (($x * 61.) + 36.)),($x = (((1. - $x) * $x) * $2));」と記述することで、たった1行の「ftm.mess」だけで実装されてしまった。 鳴っているサウンドは馴染みのカオスであり、表示も同じなのだが、うーーむ、ここまでスマートに行くとは。 private変数として内部的に回す変数を「$x」と記述する、というのがここでの収穫のテクニックという事である。 インスペクタでの初期定義などもあるが、これはマスターすると活用度はかなり高いものになりそうだ。

2018年10月10日(水)

昨日の午後には院生のブンちゃんの修了制作に向けてのミーティングがあり、また新しいテーマがいくつか出てきた。 それを受けて、今日の2限は長嶋ゼミの日であり、ブンちゃんも進捗報告する予定だ。 後期のゼミは結局、インタラクション領域で前期に卒制関係で準ゼミ参加していた木村さんは別テーマとなって長嶋ゼミを離脱、それに代わってビジュアルサウンド領域2回生の井上さんが意欲的に「勉強したい」とわざわざ水曜2限の予定を空けて、今日から準ゼミとして参加することになった。 井上さんとともにインタラクション領域2回生の持田さんが「OMMF2018」への参加に興味があって明日にmeetingの予定となり、こうなれば僕は全力で支援するのみだ。

多くの学年が一緒に混在する、という形態のゼミmeetingはたぶんSUACデザインの他教員では例がなく、少人数ゼミだからこその特権である。 今日は企画審査に向けた4回生/3回生の報告もあるし、僕もまだゼミで紹介していなかった「mira」のデモ、さらにシリアスなテーマとして「死」を提起してみるつもりで、朝イチで電子制御機器制作室のロッカーに置いていた「ブツ」を研究室に持ってくるとともに、深く深く探し回って このFLASH を発掘してきた。 ゼミ3回生の長田さんが、今春ゼミを卒業してUSJに就職した高橋うららと同様に「ホラーに興味がある」とのことで、まぁホラーと言えば和田先生が第一であるものの、僕もちょっと思うところ(過去の遺恨)があり、ゼミでの話題として取り上げたいのである。

そして色々と盛り上がって充実した ゼミ の後、実質的には午後になったが、FTMのお勉強の続きは、上のサンプルバッチ「f03-vectors.maxpat」とともに f03. FTM Basics — Vectors という事になる。 「ftm.object」のうち「fmat」というクラスは、昨日やったように2次元配列、あるいは「fmat 128 1」とすればcolumnが1なので1次元の配列を簡単に扱うためのものであるが、「In situations having to do with audio, 1D arrays are commonly used for storing samples of audio, or waveforms, or envelopes and windows for shaping and processing audio, or control functions of arbitrary shape.」というように、オーディオ関係の情報は時間というパラメータで参照される1次元マトリクスと考えられる。 そしてここではなんと、「A matrix with only one column or one row is also called a vector. Since this is the most common format used in audio, FTM provides a class called fvec—a vector of floats.」ということで、浮動小数点(実数)のデータからなる「行か列が1である」マトリックスとして「fvec」という名の「a vector of floats」という1次元マトリクスのクラスを特別に定義しているらしい。

YouTube

クラス「fvec」の「(info class fvec)」を叩くと、またまたズラズラと こんな情報 が出てきた。 「fvec (a reference to a chosen vector within a fmat)」は、ほぼ「1D fmat」であるという。 そしてstaticな「fvec」オブジェクトは「ftm.object」から作れるが、「fmat」クラスからは「colref」と「rowref」というメソッドでdynamicにベクトルを参照できる。 そして解説を読んでいて、これまでちょっと謎だった以下のいくつかの点が、上のようにようやく解決した。

既に上のサンプルパッチでも使っていたが、「Vector Display」のためのオブジェクトが「ftm.vecdisplay」である。 これはたぶん普通のMaxオブジェクトで「ftm.vecdisplay」とやってみても出てくると思うが(実際にやってみたら出てきた(^_^))、まぁ普通にサンプルパッチからのコピペだろう。 そしてベクトルを可視化するもう一つのツールが「ftm.editor」である。 これも普通のMaxオブジェクトで「ftm.editor」とやったら出てきたが、中に何も描けなかった。 だいぶ慣れてきたので推定すると、これはおそらく、対応したマトリックスを定義して「ftm.editor」に関係付ける必要があるのだろう。 対象のマトリクス次元が未定義では、描くことは出来ないからである。
・・・今日はここまでで、また続きは明日である。 明日は2限になんと3回生で「メディア数理造形演習」を取ってきた榎本さんのMax特訓初日、そして昼休みは「OMMF2018」挑戦(第44期・虎の穴)の、井上さん・持田さん・平田クンとの初回meetingの予定が決まった。 あれこれさっそく動き出してきた、いい感じの後期スタートである。

2018年10月11日(木)

FTMという入り口から、IRCAMの研究成果に関するMax7での「深い」お勉強が始まった矢先、Cycling'74のMaxユーザ宛のMLでは、早くも「Max8でのレシピ」という情報が届いた。 ちょうど2限にMax補習アポのあった榎本さんから延期希望のメイルが届いたので、佳境の「Max7でFTM」の途中ではあるものの、「どれどれMax8とは?」ということで、これを試してみる事にした。 対象となるのは MC Recipe 00: FilterTargetsMC Recipe 01: GenTargets という2つのTutorialである。

上はその最初の MC Recipe 00: FilterTargets にあった、「00.FilterTargets.maxpat」というパッチと、そのパッチ内にある「mc.#####」といういくつかのサプパッチのHELPパッチを75%に縮小して並べたものである。 いきなりMax8になって凄いデモが登場したらどうしよう・・・と身構えていたが、これはそれ程のものではなかった。 どうも「MC」というのはmulti-channelsの事のようで、Max8の最大の売りである、「多数のオーディオチャンネルを1本の[水色と黒の縞模様]ワイヤーで表現」という部分を強調したのが、このサンプルパッチ「00.FilterTargets.maxpat」だった。 出てくる音は普通にオーディオにレゾナンスフィルタをかけているだけなのだが、実際には

というような事をしている。 単一の「reson~」でなく、残響のように残った音が6チャンネル回るまでは途切れない・・・というのがメリットのようだ。 まぁ確かにMax8でなければここまでスッキリとしたパッチにはならないが、どうしてもこの処理をしないとイケナイという状況は想定しにくく、「Max8ならではの機能を無理矢理に前面に出した」デモ、という感じである。

上は2番目の MC Recipe 01: GenTargets にあった、「01.GenTargets.maxpat」というパッチと、そのパッチ内にある「mc.gen~ littleblips.gendsp @chans 8」というGENオブジェクトなどであるが、これはスペースキーを押すといい感じのサウンドが鳴ったものの、これまた「Max8ならではの機能を無理矢理に前面に出した」デモ、という感じだった。 チャンネル数に7を乗じて48を加算して、これをmtofで周波数にする、というのは、なんだか三輪さんのアレも想起させたが、それほど面白いというサウンドでもない。 とりあえず、まだまだMax8じゃないと出来ないので悔しい、というデモが無かったことに一安心した。

さて、昼休みの「OMMF2018meeting」を経て、昨日の続きである。 上のような実験パッチを作っていたが、どうも挙動は理解しきれていなかった。 クリックした度に表示が変わったのは、「showing a history of the vectors it has received in a given inlet as well as allowing the user to scrub through a vector like a lookup table」という機能のためだったと判明したが、まだまだ「ftm.vecdisplay」の話が続く。 「With additional arguments to colref you can specify not only which column you want to access, but what row you want to start with and how long you want the vector to be. These attributes of the fvec are called its index (which column), its onset (where in the column to start), and its size (how many elements long it is).」ということで、

と置き換えられた用語でもマトリックスの中身をダイナミックに呼び出すことが出来るらしい。 「($waveforms colref 1 256 128)」とすると、「column 1 of $waveforms」のマトリックスに対して、「row 256 of the column (halfway in)」とすると512個のデータの中間からスタートして、「128 values (1/4 of the column's length)」ということで1/4周期だけを表示する。 さらにメッセージとして「size 256」を送れば、attributeとしてのマトリクスのサイズを変えられるらしいが、これは余計に混乱する(^_^;)。

これに続く2つの記述には、かなり悩まされた。 「how to view just the first half of the vector without changing the existing vector reference」ということで、「you can just dynamically create a new temporary fvec, set it the same as the existing one, then shorten it with the size method」というのが可能であり、「(((new fvec) set $sine) size 256)」というメッセージを送ると臨時に半分にされた表示が出てくるが、実際の「sine」の中身は変わらずに保持されているという。 この「new fvec」というのが「temporary fvec」のキーワードらしい。 同様に、「new fmat」もtemporaryなので、中身を変えずに、「(($sine * (((new fmat) set $square) rotate 128)))」とやると、1/4周期(128)だけずらしたsquareとsineを乗算した結果を「ftm.vecdisplay」に表示させるらしい。 ちょっと謎めいてきて混乱している。

fmat」にはオーディオの波形をimportできる、というのは、まぁ理解できるというか当然だろう。 単なる「fmat」に「import」メッセージを与えるとサウンドファイルを読み込む場所を聞いてきて、「fmat」のサイズは自動的にサウンドファイルのサイズになり、ステレオサウンドであればちゃんと2Dマトリックスになるという。 上のように実験してみたが、一応、想定した動作をしてくれた。 これでようやく、マトリックスの部分が終了である。

2018年10月12日(金)

もう週末である。 本来であれば明日からの土日は京都に行って「バイオフィードバックセミナー」という予定だったが、共同研究者の辻下先生の忙しさ(ようやく奈良学園大看護学部にリハビリテーション学科の新設が正式認可となってそれはもう大変)もあり、延期ということで会場とか宿とかをキャンセルして、この土日はぽっかりと空白になった。 ただし些事がそこに入り込んで、けっこう窮屈な週末を過ごすことになりそうだ。 4-5限の「メディア数理造形演習」までの時間は、限られているものの「Maxお勉強」の貴重な時間である。

FTMのお勉強の続きは、昨日までの f03. FTM Basics — Vectors がとりあえず終わって、いよいよ f04. FTM Basics — Buffer for MSP ということで、FTMで作った「ftm.object」がリアルタイム・オーディオ信号処理のMSPと結びつく、重要なところに差し掛かった。 メソッドに「FFT」というのを見つけていたので、これは一気に凄いことになる予感がある。 上のように、「ftm.buffer」とか「ftm.copy」とかが登場するらしいサンプルパッチ「f04-buffer.maxpat」を眺めつつ、ここでもTutorialをじっくり読んでいこう。 「To access that data as sound in MSP, there is a whole family of FTM objects called the Gabor collection, which we will delve into in the following chapters. For now, this tutorial just demonstrates how to make a matrix accessible in a MSP buffer.」という。 FTMでMSPのサウンドを扱うには「Gabor collection」を使う(遂にガボールだぁ!!)がこれは次のchapterということで、ここではFTMのマトリクスがMSPのbuffer~をアクセスする部分だけを紹介するらしい。

ここでのサンプルパッチ「f04-buffer.maxpat」は、周期波形のバッファの波形とともにスペクトルを表示するということで、これはつまりFFTである。 どこかにバグがあって、4種類の波形を切り替えると波形表示とスペクトル表示は切り替わるのに、鳴らしているサウンドは切り替わらないのはご愛嬌かな(謎★)。 4種類の「fmat」の左端には、プリロードされたデータがある事を示す鼻くその点が付いていて、そこで設定した「blsawtooth」などの名称を「$」を付けて参照してさらに「blsaw」などと名付けているのが、「ftm.buffer」である。 この名前を「cycle~ blsaw」のように参照するのに「prepend set」で「cycle~」に与えているのに、何故かサウンドは切り替わらないのである。 ちなみに「buffer~」と違って、「ftm.buffer」は叩いても波形が表示されない。 これは「fmat」を参照しているからで、「fmat」を叩くと実際の数値データがずらずらと出てくるので、波形を見るには「ftm.vecdisplay」に表示させる必要がある。

そして、この謎★の現象を解明しようと、上のように実験パッチを作って試していたら(波形は切り替わってくれない)、Max7がクラッシュして落ちた。 さらに再度起動させると、Maxコンソールに「ftm.buffer: the functioning of ftm.buffer has changed (please refer to the help patch)」と出てきた。 どうやら「ftm.buffer」の仕様が変わっているらしく、こうなるとヘルプから実験を進めないといけない事になった。 そして、サンプルパッチ、ヘルプパッチ、実験パッチの相互であれこれとオブジェクトのコピペをしていると、頻繁に(確実に)Max7がクラッシュして落ちるという現象が続いた。 せっかくFFTまで表示できているものの、そのマトリクスをMSPからサウンド出力するbuffer~へと繋いでくれないと、「FTMを活用してサウンドシンセシス」という当初の大目標が実現できないので、これはかなり困った現象である。 4-5限の「メディア数理造形演習」の時間が来たので、今日は中途半端なまま、ここで終わりとなった。

2018年10月13日(土)

この週末は予定が空いたものの、ウチの用事で細切れのプチ予定が入って、あまりじっくりMaxお勉強に取り組めないのだが、当面の懸案だけはクリアにしておかないと先に進まないし、忘れてしまいそうだ。 状況を確認すると、 f04. FTM Basics — Buffer for MSP について、サンプルパッチ「f04-buffer.maxpat」を起動するとMaxコンソールに「ftm.buffer: the functioning of ftm.buffer has changed (please refer to the help patch)」とエラーメッセージが出てきて、どうやらこのIRCAMバージョンの時代と「ftm.buffer」の仕様が変わったことが、うまく行かない原因らしい。 そして実験パッチを作ってこのあたりを確認しようと、HELPパッチとかサンプルパッチからオブジェクトをコピペして実験しようとすると、Max7がクラッシュして落ちる、というところまでだった。

チュートリアル f04. FTM Basics — Buffer for MSP ではまず、ポップアップメニューで波形を選択するとサウンドが変わるよ、と書いてあるが、表示は変わるもののサウンドは変わらない。 ここにバグがあるのだが、そこに関係しそうな「ftm.buffer」についての記述の前に、まずは「ftm.copy」を使ってFFTをする、という記述がある。 そこでとりあえず、実験パッチとしては後退しているものの、上の実験パッチで、こちらの話題を先に追いかけてみることにした。 上の実験パッチを開いても、ここにはMSPとの橋渡しの「ftm.buffer」が無いので、エラーが出なくなるのである。

4つ並んだ波形の左端のsawtoothを例にすると、鼻くそ付きの「fmat」で「blsawtooth」というう名前でマトリクス(1次元配列)データが定義されているので、これを「$blsawtooth」という「ftm.mess」メソッドで呼び出して「ftm.vecdisplay」に繋げば波形が表示される。 しかし「ftm.vecdisplay」のインスペクタで「View Mode Inlet」を普通の「Lines」から「0-Peeks」に変えると、スペクトルを表示する棒グラフになるようだ。 そして「$blsawtooth」という「ftm.mess」メソッドで呼び出した先に「ftm.copy」を置いてここにコピーを作って格納するが、これは「((new fmat) set $1)」という「ftm.mess」メソッドと等価であるという。 これは、オリジナルを残しつつ「ftm.copy」の中身にFFTメソッドと表示の処理を施すためにダイナミックに複製するというものである。 ここまではまずOK。

ftm.copy」の出力が「($1 fft)」という「ftm.mess」メソッドに繋がっているので、ここで「ftm.copy」の中身がFFT処理されて上書きされる。 このFFT処理についての技術的解説として[Technical but important details: The size of the FFT performed by fmat's fft method is determined by the number of rows in the fmat. The FFT is calculated using a size that is the smallest power of 2 that's greater than or equal to the number of rows in the fmat. If the number of rows in the fmat is not a power of 2, fft will supply and zero-pad extra elements of the matrix up to the next power of 2. (For example, if the fmat has 513 rows, the FFT will be calculated using 1024 points, with the last 511 points set to 0.) In this particular case, the matrix has 512 elements in it, which is exactly a power of 2, so the FFT is calculated using 512 points. Also... Because for audio signals the magnitudes of the negative frequencies (in bins 257-511 of the FFT in this case) are the same as the positive frequencies (in bins 1-255 of the FFT), fft actually only returns bins 0-256 (257 bins). In all cases, the number of rows in the matrix returned by the fft method will be equal to the FFT size divided by 2 plus 1 (in this case, 512/2+1=257).]とあった。 要するにFFTとして正の周波数成分だけを返すので、ここでの512要素マトリクスの波形に対して1024ポイントの内部処理を行って0-256のbinを返す。

この出力は次に「($1 cabs)」という「ftm.mess」メソッドに入って「the absolute values of those complex numbers (i.e. the magnitudes)」を計算して「ftm.copy」の中身が上書きされる。 この出力が次段の「($1 div $2)」という「ftm.mess」メソッドの第1インレットに行くとともに、「(($1 rows) - 1)」という「ftm.mess」メソッドに入った結果が次段の「($1 div $2)」という「ftm.mess」メソッドの第2インレットに行くのは、「since the fft method only returns the positive frequency bins, we should multiply the magnitude values by 2. So, what we really want to do is divide all the magnitudes by the one half the size of the FFT, which can be found by taking the rows of the matrix minus 1.」という理由による。 「rows」はマトリクスの長さを得るための指定である。 マトリクスの大きさは512と分かっているので256としてもいいのだが、ここでの方法はより一般的になっている。

この出力は最後に「($1 colref 0 0 16)」という「ftm.mess」メソッドに入ってスペクトラム表示の成分に変換されて「ftm.copy」の中身が上書きされ、これが「ftm.vecdisplay」(インスペクタで「View Mode Inlet」は普通の「Lines」でなく「0-Peeks」)に行って表示されている。 ここでサンプル波形は全て15倍音までで合成されているので「only the first 16 elements (0-15)」として表示した。 そこで16でなく32、64、128、256とやってみると、ちゃんと上のように表示してくれた。 ギターの音だけは15倍音まででなく実際の音を切り出しているので高次倍音成分が見えた。 ここまでは、まずOKである。

その後、いよいよチュートリアル f04. FTM Basics — Buffer for MSP にある「FTM provides an object called ftm.buffer that makes a fmat available for use as a MSP buffer. You can think of it as the FTM equivalent of the MSP buffer~ object because it can be accessed by all the MSP objects that normally access a buffer~ such as cycle~, index~, lookup~, wave~, play~, groove~, waveform~, etc. It actually creates an invisible (globally available) named buffer~, and refers to a fmat for its contents.」に立ち向かってあれこれ試行錯誤の実験パッチを作ってはMax7がクラッシュして落ちる・・・というのを繰り返したが、結局、Maxコンソールに現れるエラー(warning)メッセージを含めて解決せずに終わってしまった。 ここでは周期波形のマトリックスをMSPに繋げる、という話題であり、連続音声サンプリング等の場合にはこれを使わないので、この部分はとりあえずスキップしてみるという手もあるが、なんか「仕様の不整合のため、これ[ftm.buffer]は使わずパスしていく」という対応は、なんか嫌ーーーな感じである。(^_^;)

2018年10月14日(日)

些事が入って午後だけ出てきた研究室で、昨日の問題点について往生際が悪くあれこれあれこれ試行錯誤したが、何度も何度もMax7がクラッシュして落ち、Maxコンソールに現れるエラー(warning)メッセージも出たり出なかったりしつつも、「ftm.buffer」のヘルプにある「Copy values between buffer~ and fmat」という機能を実現するには至らなかった。 ちょっとした進展として出来たのは「Copy values from buffer~ to fmat」であるが、その逆の「Copy values from fmat to buffer~」が駄目だったので、やはり駄目である(^_^;)。 気をとり直して f05. Gabor — Adding a Matrix into MSP に着手してみると、サンプルの「f05-audiograins.maxpat」を噛み砕いて、以下のような実験パッチで、問題となっている「ftm.buffer」を素通りして、ちゃんと動作してくれた。

ここでは「gbr.」というprefixの一群を取り扱う、いよいよ「ガボール」の世界、「a collection of Max objects for processing FTM matrices as audio」である。 「The Gabor objects provide a powerful interface between FTM data and MSP, including some things that are difficult to do well with just Max and MSP.」というのだから、気合いを入れて解読していきたい。 「The Gabor objects are named after Dennis Gabor, who theorized the consideration of sound as particles, and whose work led to the exploration of granular synthesis --- synthesizing sound by combining a multitude of small "grains" of sound. Thus, the gbr. objects particularly facilitate granular synthesis and related types of audio processing that require windowing small bits of sound with great temporal precision. That precision of timing is difficult to achieve in Max/MSP because of the disparate scheduling of Max messages and MSP audio, but certain Gabor objects help to resolve that discrepancy.」という解説は、過去にGranular Sunthesisにハマッた僕としては読むだけでフムフム状態なので、ここでは訳さず進んでしまう(悪しからず)。

上の実験パッチに新しく登場するのは「gbr.fire~」と「gbr.ola~」というオブジェクトである。 「gbr.ola~」というのは「overlap-add buffer」ということのようで、FTMの「fmat」で定義/指定されたマトリクスに入っているオーディオを、"buffer into the future"というイメージでMSPに引き継いで出力する。 内部的には「convolution filtering with the "overlap-add (OLA)" method」をしているので、まぁFIFOバッファリングのように、インレットで入力されるFTMマトリクスのオーディオ信号を、ずっと連続的にMSPに出力するリングバッファに刻々と畳み込み加算しているらしい。 「gbr.fire~」は、MSPのオーディオレートに対応したスピードで、繰り返しFTMバッファのデータを「gbr.ola~」に送るオブジェクトで、「samples or milliseconds, or as a rate in Hertz」という3種類のいずれかでその繰り返しの長さ(幅/時間間隔)を指定できる。 ただしこのサンプルでは、グレインは矩形のウインドウでスパッと切っているので、繰り返しが早くなれば単なる連続インパルスみたいな音で、あまり「使えない」。 ウインドウニングは次のTutorialである。

ということで、次の f06. Gabor --- Capturing a matrix from MSP を見てみたところ、なんとサンプルパッチ「f06-audioslice.maxpat」をコピペ改訂した上の実験パッチで、なんとも懐かしい、なんだかいい感じのGranular Sunthesis的サウンドが出てきた。 これはちょっと、じっくりパラメータを吟味して味わいたいので、さらに明日に続けることにした。

2018年10月15日(月)

この日は久しぶりに全く予定が入っていない「勉強日」となったが、12月に某プレゼンの予定が決まって、そのための論文執筆というお仕事が確定したので、Max7お勉強と交互に並行して進めることになった。 そして f06. Gabor --- Capturing a matrix from MSP である。 テーマは「Putting a slice of audio into a matrix」ということで、新しく登場するのは「gbr.slice~」というオブジェクトである。 このオブジェクトは、MSPから受け取るオーディオシグナルを、「a slice of audio」または「a bite」または「a chunk」または「a grain」とどう呼んでも構わない細かい単位にスライスしてFTMのマトリックスに格納するとともに、そのマトリクスへのリファレンスを送る。

上の実験パッチの例では「gbr.slice~ 2205 1102.5」としているが、第一パラメータが「the size of the slice」(サンプル数)であり、第二パラメータが「the period at which slices are captured」(サンプル数)である。 とりあえず後者は前者の半分にしておくとよさそうだが、「gbr.slice~」のヘルプの中にあった「more」という謎の解説パッチでは「gbr.slice~ 24 5000 @order 2」などとしているし、Granular Soundが聞こえてくるのは実験パッチで「size $1」と「period $1」で与える数値を適当に変えた時なので、まぁ任意のようである。 上の「gbr.slice~」のヘルプは次のトピックのFFTをリアルタイム表示しているのでちょっとパスすることにした。

そして、「gbr.slice~」は矩形でスパッとオーディオをスライスしてノイズの元となるので、お約束として上のようなウインドウをかけて前後をなめらかにゼロに持って行くのが、「gbr.wind=」である。 上の図では「trapezoid (similar to a rectangular window, but with a certain amount of fade-in and fade-out time)」ウインドウと「a Hann window (an offset cosinusoid)」を示しているが、「gbr.wind=」のヘルプを見てみると、以下のようにズラズラと多数のウインドウが出てきた。 まぁ、ハミングとハニングぐらいでいいと思うのだが、このあたりを多数用意するあたりがIRCAMらしい。

YouTube

そしてTutorialは「Using Captured Grains」に進む。 「Once a slice of audio has been grabbed, placed in a matrix, and tapered with a window function, it's available for use in granular synthesis. This patch shows a very simple example of that.」ということで、ここらは快適にサクサク行こう。 実験パッチ(サンプルをやや改訂しただけ)では、「gbr.slice~ 2205 1102.5」でスライスした出力を「ftm.vecdisplay」の第二インレットに入れているので、これが黄緑色で表示される。 さらに「gbr.slice~ 2205 1102.5」の出力は「gbr.wind= hann」によってハニング窓をかけて「ftm.vecdisplay」の第一インレットに入れているので、これが赤で表示されるとともに、「ftm.mess」の「($aslice set $1)」によって、「fmat」で定義されていた「aslice」というマトリクスに刻々と上書きされて、これが「gbr.fire~ 1102.5 $aslice @unit samp」で呼び出されては「gbr.ola~」にオーバーラップ上書きされてMSP出力されている、という図式である。 こちらは動作もよく理解できるし、何よりWarningもErrorも出ないで安定動作してくれているのが嬉しい。(^_^)

MSPはサンプリングが44100kHzなので、「gbr.slice~」は「2205-sample slices (50-millisecond chunk)」でGrainを刻々と切り出して、これを「1102.5 samples (25 ms)」ごとに出力し、これを「gbr.wind= hann」によってハニング窓をかけて「$aslice」マトリクスに書き出す。 この「aslice」マトリクスが「gbr.fire~ 1102.5 $aslice」の初期値で「gbr.ola~」にオーバーラップ上書きされると、ちょうど入力はそのままMSP出力されることになる。 FFTとか後に色々と出てくるであろうガボール関係に対して、ここのGranular Synthesisの部分はとても解りやすいので、実験パッチを色々といじって感触を掴んでおくのも重要だ・・・という感想である。

ここでちょっとGranular Synthesisを遊びたい、という気分もあるが、長らく追いかけてきた「FTM Tutorial-Dobrian」も、次の f07. Gabor — FFT for Sound Analysis でオシマイだ(その後にようやく「GaborExamples」とか「GaborTutorial」とか「hmm」という本格的なFTM応用が待っている)、ということでチラッと眺めてみると、なんと「f07-FFT.maxpat」は、さっき見ていた「gbr.slice~」のヘルプとほぼ同じようなものだった。 そこで f07. Gabor — FFT for Sound Analysis の長大な解説はとりあえずパスして、何度かMax7をクラッシュさせつつ(^_^;)も、上のような実験パッチで、刻々とMSPで再生しているサウンドファイルをリアルタイムにFFTスペクトル解析したグラフと、リアルタイムにソノグラム表示する、というものが出来た。 気付いてみれば、サンプルにあった「ftm」も無くなってしまったが、まぁこのぐらい動いていれば、区切りとしてはいいだろう。

2018年10月16日(火)

ニュースで以下のように「魅力度調査、茨城県が6年連続最下位」というのが流れてきた。 僕は茨城県勝田市(現・ひたちなか市)出身で、小中高と水戸に通っていたし、ちょうどたまたま今週末は水戸に行って、水戸一高の同学年同窓会で「歩く会」をして、さらに晩には「還暦同窓会」というのにも参加する予定だが、高校卒業とともに18年暮らした茨城県を離れて、その後は京都市民を4年間、後は静岡県民となっているので、人生の中で茨城県民歴は1/3を切ってしまった。

それにしても何故、「6年連続最下位」なのかとちょっと調べてみたら、以下のように、なんと茨城県には世界遺産が一つも無かった。 1位の北海道には「知床」があるし、京都にはなんと「仁和寺」・「金閣寺(鹿苑寺)」・「龍安寺」・「清水寺」・「延暦寺」・「銀閣寺(慈照寺)」・「東寺(教王護国寺)」・「西本願寺(本願寺)」・「二条城」・「上賀茂神社(賀茂別雷神社)」・「下鴨神社(賀茂御祖神社)」・「醍醐寺」・「平等院」・「宇治上神社」・「高山寺」・「苔寺(西芳寺)」・「天龍寺」と17件もあった。 ここ静岡県でも「富士山-信仰の対象と芸術の源泉」と「韮山反射炉-明治日本の産業革命遺産」があるし、先月の 欧州ツアー2018 でも、いくつもいくつも世界遺産に行ってきた(世界遺産の中で暮らした)ので、これはまぁ仕方ないのかなぁ・・・と納得した。

そして検索していて発見したのは、以下の茨城県教育委員会の「世界遺産暫定一覧表記載資産候補の提案について」というもので、「水戸藩の学問・教育遺産群」というのを提案したらしい。 さすがに梅まつりの季節になるとイカ焼きの匂いが充満する「偕楽園(+千波湖)」とか誰でも登れる「筑波山」を提案するわけにもいかず、水戸藩の藩校「弘道館」を持ってきたのだろうが、小学校(茨城大附属小 - 水戸城二の丸跡)と高校(水戸一高 - 水戸城本丸跡)に通って、よく県立図書館(水戸城三の丸跡)に行っていた身からすれば、市民に「第二公園」と呼ばれているあのショボい「常磐公園」と隣の「弘道館」だけで世界遺産というのは、あまりに無茶な話で笑止千万と言うしかない。 これまで国内でも海外でも多くの世界遺産に行ってきたので、これは確信を持って断言できる。

だいたい茨城県というのは、徳川300年、親藩の「水戸徳川家」のお膝元で政治的にも経済的にも優遇され、さらに広大な関東平野で「稲を撒くだけでいい稲作」を謳歌してきたことで、「骨の髄まで甘ったれた」県民性が染み付いている、というのが僕の持論である。 これは高校1年の時、「水戸」発「水戸」行という切符を作って、4泊5日本州一周、ずっと列車にただ乗りづめという 一人旅 をした時に(以下はその切符)、国土の狭い日本はどこに行っても海の近くまで山裾が迫り、その猫の額のような耕地に棚田とか段々畑を切り開いて必死に百姓をしていたのを本州ぐるっと見続けていて、いたく痛感したのである。 甘ったれた茨城県民から静岡県民になったものの、ここも「駿河徳川家(徳川秀忠の三男徳川忠長、駿府藩)」という「一門」なので、基本的には県民性に似通ったところを感じている。

・・・というような火曜日であるが、午後には院生の馬ブンちゃんの修了制作アポ、さらに「メディア数理造形演習」に参加した建築系3回生・榎本さんのMax補習講座などの予定があり、午前は某論文に着手したこともあり、Maxお勉強はパスとなった。 水面下(意識下)では、昨日の進展を受けて、Gabor関係とGranular Synthesisの漠然としたアイデアがもやもやと渦巻いている。 これはたぶん遠いプランと関係していて、来年1月には締め切りがやってくるNIME2019(ブラジル)に応募するための新作(+新楽器)の作曲に繋がって結実することになれば最高なのだが、まだまだ何とも言えない。

という1限の後半になって、院生のブンちゃんが早めにやってきた。 上のように、修了制作の作品の一つに関係して、いい感じのぬいぐるみをゲットしてきたが、これがなかなか面白い良い感じで、真っ先に思い浮かんだのは「TWE-Liteを内蔵」というテクニックだった。 OpenBCIとともに、この日記シリーズのどこかで相当に実験と解析を進めてきたが、たしかUSBシリアルドライバがチップメーカからAppleに移行されて、色々なシステムで不整合が起きて、「Appleが最新版で対応するまでは放置」としてきた、あの一連の厄介な問題児である、というのが記憶に浮上してきた第一印象である。 今であればもっと便利な新しいデバイスが出ている可能性もあり、これは当面の宿題として僕が抱えることにした。 まずは日記シリーズを発掘して、どこまで出来ていて、どこが出来てしなかったかを思い出さないといけない。(^_^;)

YouTube

そしてここからあれこれWebショップ等を調べて、「新しい安価な[加速度→WiFi]センサは出ていない」と確認した上で、 Max日記(6) の「2017年3月21日(火)」のところで止まっていたのを発見して、USBシリアルドライバはOpenBCIの関係で「下げる」ことに成功したものの、そのまま実験システム(さぶろさんの書きこんでくれたMonoStickと連続センサモードを書き込んだP2525のペア)がWiFi経由でデータを送ってくれる事を確認した。 そしてMaxパッチの改訂に取り組んで、xyzの3軸加速度データだけを抽出する上のパッチ「TWE-Lite_005.maxpat」を作った。 これは多量のデータから加速度データだけをピンポイントに取り出す暫定的なもので、出力も3軸でなく2軸であるが、ブンちゃんの用途には十分ということで妥協している。 パッチの中身は以下のようなものである。

これでとりあえずセンサ部分は出来たが、ぬいぐるみにMax生成サウンドを飛ばして鳴らすというワイヤレス+アンプ+スピーカ、というのを仕入れることになりそうだ。 一瞬、またあの「TWE-Light地獄」にハマるのか・・・と身構えたが、まずは進展したので、今日もまずまずという感じとなった。

2018年10月17日(水)

毎朝、研究室に出てきてパソコンを立ち上げるとおよそ20本程度のメイルが届いており(SUACのスパムフィルタが効いているからで、ダミー転送先で見ると50本以上が毎日必ず届いている)、その中に自分が参加しているコミュニティからの新しい情報が届く(おそらく世界中にニュースとして届くよりも1週間とか1ヶ月早い)、というのが楽しみである。 今日は2件も素晴らしい情報が届いたので、ここで忘れないように記録しておこう。

NIMEコミュニティのMLに届いたのは、スタンフォード大のGe Wang氏からの「こんな本を出しました」という案内だった。 本の情報は ここ 、著者のGe Wang氏のプロフィール(TEDでの講演のYouTubeあり)は ここ である。 NIMEコミュニティの若きスーパースターであり、何度もNIMEで会っているが、こんな本を出すとはさすがだ。 本人曰く、「It's nerdy. It's philosophical. It's a core dump of my brain in comic form.(不気味です。哲学的です。漫画の形での私の脳のコアダンプです)」との紹介に、さっそくAmazonで購入して、ファンレターとして「Congratulations!」をメイルした(ついでに自分の 英語版自己紹介ページ も改訂した)。 英語の本は買ってもなかなか読めないのだが、これは初めてのコミックであり、テーマは「もろNIME」である。 届いたらゼミなどの皆んなと楽しみたい。

次はSketchingコミュニティMLからのものである。 実はここには伏線があって、一昨日、あるメンバーから「Looking for a grid of pressure sensors that are integral to the textile」という簡単な質問の投げかけがあった。 これに対して、たった2日で この情報 はどう? とか、 この情報 はどう? とか、 この情報 はどう? とかが続いて、遂に今朝は決定版とも言うべき、上のページ How To Get What You Want が紹介されたのである。 どうもDIYあれこれのサイトらしいが、手作りの「Sensors」だけでも、以下のようにズラズラと、かなーーーり、ソソラレル情報がリンクされている。

3D Printed Sensors
Adjustable Slider
Analog Pin Stroke Sensor
Anti-Static Foam Pressure Matrix
Balloon Sensor
Bonded Bend Sensor
Button Buttons
Capacitive Fabric Slider/Wheels
Circular Knit Inflation Sensor
Circular Knit Stretch Sensors
Conductive Pompom
Constructed Stretch Sensors
Crochet Button
Crochet Conductive Bead
Crochet finger Sensor
crochet pressure sensor
Crochet Tilt Potentiometer
Crochet/Knit Pressure Sensors
Crochet/Knit Squeeze Sensors
Danish Krown Slide-Switch
Dataglove Flex Sensor Rig
Resistive Sensors
Elastic Button Fabric
Embroidered Potentiometers
Fabric Button
Fabric Potentiometer
Fabric Stretch Sensors
felted crochet pressure sensor
Felted Pompom Pressure Sensor
Finger Sensor
Fingertip Contact Switch
Fish Scale Sensor
Fleckerlteppich Pressure Sensor
Position Sensing on the Body
JoyButton
Knit Ball Sensors
Knit Contact Switch
Knit Stroke Sensors
Knit Touchpad
Knit Wrist Sensors
Knit Accelerometer
Knit Stretch Sensors
Light Touch Pressure Sensor
Neoprene Bend Sensor
Neoprene Pressure Sensor
Neoprene Pressure Sensor Matrix
Neoprene Stroke Bracelet
painted stretch sensor
Piezoresistive Fabric Touchpad
Pin Stroke Gauntlet
Pompom Tilt Sensor
Pressure Button
Sheath Bend Sensor
Simple Pressure Sensor Matrix - by hand
Simple Pressure Sensor Matrix - by machine
Simple Fabric Pressure Sensors
Spikey Stroke Sensors
Stickytape Sensors
Stroke Sensor
Textile Sensor Demos for Summer School
Tilt Potentiometer
Tilt Sensor
Wimper Switch
Woven Pressure Matrix (stretchy)
Woven Pressure Sensor Matrix
Woven Pressure sensors
Wrist Flick Drum
Zebra Fabric Stroke Sensors
Zipper Slider
Zipper Switch
とんでもないサイトである。 プロジェクト例のページ も、凄いことになっている。 これは「シーズ指向」として最適な題材なので、ゼミとかOMMFとか演習でも紹介して調べていくことにしたいが、まずは軽く棚上げである。 OMMF2018は参加OKの連絡が来てから・・・といったん棚上げし、MaxSummerSchool2018の積み残した宿題はFTMからGaborへ・・・というところで中断して棚上げし、12月に向けての某論文執筆は合間にやっていこう・・・と棚上げし、来年のNIME2019(ブラジル)に向けた準備もどこかでやっていいかなくては・・・と棚上げしていて、ぼちぼち棚が落ちそうな感じになってきた。

そういえば、Facebookで世界中の多数のユーザの個人情報が流出したというニュースがあったが、最近届いているスパム(ネット詐欺)に、以下のものがあったので記録しておこう。 メイルの差出人が僕自身になっている、というのがポイントで、「差出人がお前であるこのようなメイルを出せるということは、お前のアカウントをハッキング出来ているという証拠で、お前の恥ずかしい記録を流出させられたくなかったら50時間以内に509ドルをビットコインで支払え」というものである。 せっかくなので、以下にその全文とGoogle翻訳を置いておこう。

Hello! My nickname in darknet is neron90.
こんにちは! ダークネットの私のニックネームはneron90です。
I hacked this mailbox more than six months ago, through it I infected your operating system with a virus (trojan) created by me and have been monitoring you for a long time. If you don't belive me please check 'from address' in your header, you will see that I sent you an email from your mailbox. Even if you changed the password after that - it does not matter, my virus intercepted all the caching data on your computer and automatically saved access for me.
私は6か月以上前にこのメールボックスをハッキングしました。私はあなたのオペレーティングシステムに私が作成したウイルス(トロイの木馬)を感染させ、あなたを長い間監視してきました。 あなたが私のことを信じていない場合は、あなたのヘッダーの「アドレスから」をチェックしてください。私はあなたのメールボックスからあなたにメールを送ったことがわかります。 それ以降はパスワードを変更しても、それは問題ではありません。私のウイルスはあなたのコンピュータ上のすべてのキャッシングデータを傍受し、私のために自動的にアクセスを保存しました。
I have access to all your accounts, social networks, email, browsing history. Accordingly, I have the data of all your contacts, files from your computer, photos and videos. I was most struck by the intimate content sites that you occasionally visit. You have a very wild imagination, I tell you! During your pastime and entertainment there, I took screenshot through the camera of your device, synchronizing with what you are watching. Oh my god! You are so funny and excited!
私はすべてのあなたのアカウント、ソーシャルネットワーク、電子メール、ブラウジング履歴にアクセスできます。 したがって、私はすべてのあなたの連絡先、あなたのコンピュータからのファイル、写真、ビデオのデータを持っています。 私はあなたが時折訪れる親密なコンテンツサイトに最も襲われました。 あなたは非常に野生の想像力を持っている、私はあなたに言う! あなたの娯楽やエンターテインメントの間、私はあなたのデバイスのカメラを通して、あなたが見ているものと同期してスクリーンショットを撮りました。 何てことだ! あなたはとても面白く興奮しています!
I think that you do not want all your contacts to get these files, right? If you are of the same opinion, then I think that $509 is quite a fair price to destroy the dirt I created. Send the above amount on my BTC wallet (bitcoin): 19D67Tgb3neJiTHd8pZDEBYmUn2qSjxEeB As soon as the above amount is received, I guarantee that the data will be deleted, I do not need it.
私はあなたの連絡先がこれらのファイルを手に入れたくないと思っていますね。 もしあなたが同じ意見を持っていれば、私は509ドルが私が作った汚れを破壊するのにかなり公正な価格だと思います。 上記の金額を私のBTCウォレット(bitcoin)に送ってください:19D67Tgb3neJiTHd8pZDEBYmUn2qSjxEeB上記の金額を受け取るとすぐに、私はデータが削除されることを保証します。私はそれを必要としません。
Otherwise, these files and history of visiting sites will get all your contacts from your device. Also, I'll send to everyone your contact access to your email and access logs, I have carefully saved it! Since reading this letter you have 50 hours! After your reading this message, I'll receive an automatic notification that you have seen the letter. I hope I taught you a good lesson. Do not be so nonchalant, please visit only to proven resources, and don't enter your passwords anywhere! Good luck!
そうしないと、これらのファイルとサイト訪問の履歴によって、デバイスからすべての連絡先が取得されます。 また、あなたの連絡先にあなたの電子メールとアクセスログをすべての人に送信します。私は慎重にそれを保存しました! この手紙を読んでから50時間あります! あなたがこのメッセージを読んだ後、あなたはその手紙を見たことを自動的に通知します。 私はあなたに良いレッスンを教えてくれることを願っています。 それほど心配しないでください。実績のあるリソースのみを訪問し、どこにでもパスワードを入力しないでください! がんばろう!
こんなのに動揺してお金を支払う人がたくさんいるというのも驚きだが、それだけ誰でも「人に言えないところ」(^_^;)を覗いているのかもしれない。 しかし、メイルの差出人を詐称するというのはとても簡単であり、昔からこの手は詐欺メイルの古典的なものなのだ。 さらに、支払いをビットコインで、と言われても、ビットコインなんて知らず使わずの僕にはまったく関係ない。 このポイントは、後ろめたさから「ビットコインなんて使ったことがないのでどうやって支払ったらいいですか」などと間抜けな質問を差出人に返す善良な市民がいることで、その善良な被害者のメイルアドレスは「ネット詐欺に引っ掛かる特上の上客リスト」として、その業界で高値で売買されるのだろう。

そして全員が揃った2限のゼミは盛り上がり、各自が来週へのテーマを抱えて終了した(3限には平田クンのアポで相談継続)。 普通の講義よりもゼミは中身が濃くて充実感があるが、ヘトヘトになって午後の後半は軽く流して、機材貸し出し学生のアポの入った5限まであれこれしていて(キャストパズルの解法を忘れて1時間ほどハマッたりしつつ)、穏やかに終了した。 藤井7段が新人王・・・というニュースも届いたが、LIVEのabema.tvを眺める暇もない、充実の日だったということにしよう。

2018年10月29日(月)

前回の日記から12日が経過したが、あれこれ猛烈に忙しくなってきて、とても続きを書いている余裕がない。 余裕があれば追記しよう・・・とこのHTMLの余白にコメントアウトして置いていたメモもちょっと無理である。 以下に、この10日間ほどで進展してきた事や、途中経過でメモしていた事などを整理しておいて、もしかすると次にここから話題を拾ってスタートする、という事にした。 当面、某論文の執筆と、ゼミやOMMFや「メディア数理造形演習」などの制作支援、そして遠く来年のNIME2019を視野に入れたあれこれ、などに没頭する日々となる。 既にこのHTMLは目安の200kBを大幅に超えているし、次に再開する時には「Max8日記」となって、ときにMax7の話題も加える方がスマートなので、ここで区切りとして「続・Max7日記」として続いたシリーズを終了することにしよう。

「日記」シリーズ の記録