2014年12月16日火曜日

PdのGEMでGLSL

GEMでプログラマブルシェーダーを使う方法を,Pdパッチングサークルで紹介しました.
GLSLで絵を描く理屈についての基礎的な説明を作ったので貼っておきます.

2014年6月2日月曜日

libpdの紹介スライド

Pure Data Japanさんの第5回パッチングサークルでlibpdの紹介をしまして,その時に使ったスライドを公開しました.

細かいセットアップ方法とかは省略して,簡単さと旨みが伝わりやすいような内容にしてます.

2014年5月22日木曜日

Processingでお手軽Kinectプログラミング

KinectとPure Dataを連携させるための方法はいくつか考えられますが、まず正攻法としては、openFrameworksでアドオンをつけたC++のコードを走らせるというものがあると思います。

しかし、Pdはまぁ別として、JavaやObjective-Cをがんばって覚えている所にC++まで頭に詰め込む必要があるというのは、そろそろしんどいというか面倒になってきました。

そこでコイツが浮上。
Simple OpenNI
Processing上でOpenNIを使うラッパーです。

2014年5月16日金曜日

Kinect on OpenNI

いろいろあって,6月末までにモーションセンサーを使った音楽インスタレーションを仕込むことになりました.
しばらくゲーム制作のほうはストップして,そっちを仕上げることに時間を使おうと思います.

2014年4月18日金曜日

Pdのノブ型オブジェクトを作った


Pd-extendedの中には,実は数式評価[expr]の他にもGPLやLGPL適用のソフトが結構あって,普通のツマミ[knob](flatgui/knob)も何気にその1つです.

AndroidやiOSアプリは,上記のような感染性ライセンスとの相性が悪く,Pdを使う場合に留意する必要があることはたびたび強調されています.
公式メーリングリストでもトピックになっています:
[PD] Legal restrictions for apps

2014年4月8日火曜日

Reverbを作る

アルゴリズミック(もしくはパラメトリック)なReverbには,代表的な理論がいくつかあります.
その中でも、"diffusion" "decay" "dump" と呼ばれるような係数で記述される「コムフィルタ式」Reverbは,デジタルミュージックの世界では特に有名.DTMに触れたことがある人ならご存知かと思います.

今回,そのコムフィルタ式Reverbの代表的なモデルとして以下の3つを勉強してみました.

2014年3月14日金曜日

Pd-extendedの現行バージョンをPPC Macintoshで使う


Pd-extended 0.43.4 ubuntu ppc package apt repository

iBook G4の延命策としてSSDを入れたのに伴い,試験的にUbuntu 12.04を導入してました.

Ubuntuはaptのフロントエンドであるsoftware-centerやsynapticを完備しているので,基本的には欲しいアプリケーションは簡単にインストールできます.
(サウンドAPIは相も変わらずPulseAudio周りの癌っぷりが発揮されてますが…)

ただ,PowerPCという動作環境の都合から,aptの恩恵にはあずかり切れてません.
というのも,PowerPCコンピュータ向けに用意されているパッケージは今となっては限定的.Pure Dataもプレーンなvanillaバージョンしか供給されておらず,各種拡張機能がセットになったPd-extendedは入手できませんでした.Pdの公式リポジトリでも同様.

仕方がないので自前でBuildしました.


以下,やったことメモ

2014年2月26日水曜日

GPUと仮想化

近頃のパソコンは仮想化関係の機能がとても進んでいて驚いてます.
Parallels Desktopの現行バージョンでは,FireWireデバイスを仮想マシンに直接接続できるので,オーディオI/FをASIOで直接鳴らすことまでできてしまいました.

しかし,一番驚いたのがDirectX 10のサポート.
DirectXは,バージョン10でハード/ソフトの両レベルにプリエンプティブマルチタスクみたいな機構を取り入れたようで,「決め打ち一本処理ぶんまわし器」のようなDSP的な処理機構だったGPUも,なにやら抽象化されたタスクやメモリ空間を扱うような時代に.
仮想化界隈もこの技術の恩恵を受けて,劇的な実効性能の改善が図られているようです,

当初,最新のOSを仮想マシンで動かしても処理のオーバーヘッドが大きくなるだけで速くならないだろうと思ってたんですが,そんなこんなで話はもうすこし複雑でした

Windows XPがサポートしているのはDirectX 9まで.
最新のWindows 8.1を導入して,DirectX 10アクセラレーションを効かせてみると…

Parallels Desktop 9 on OS X Mavericks 10.9.1 
Xeon X5650 2.66GHz 6コア中2コア割り当て
Radeon HD7850 1GB中512MB割り当て
「ファイナルファンタジーXIV: 新生エオルゼア ベンチマーク キャラクター編」でテスト

Windows XP SP3


Windows 8.1


凄い!
最新のモバイル&ミニデスクトップ向け内蔵GPUであるIntel Iris Pro 5200を上回る性能.
MacBook Proのトップモデルでネイティブ起動したWindowsと同等以上のパフォーマンスが,仮想マシン上で手に入っていることになります.

(ちなみにネイティブ動作では,フルHDの最高品質設定でスコアは7400らへんでした)


2014年2月20日木曜日

x86のAndroidエミュレータでlibGDXを走らせてみた

Androidでのテストは「Nexus 7」の実機で行っているので,仮想環境は今のところ不要.
とはいえ,前のマシンで話にならなかったのがどの程度改善したかなと思い,仮想環境での動作を試してみました.

Atom仮想マシンを使ってAndoidを起動.ホーム画面やブラウザは結構スムーズに動く!

これはちょっと期待できるかもと思い,制作中のプロジェクトをx86向けにビルド.
libpdのpd-for-androidはx86向けのコンパイルオプションが最初から入っているので何も考えなくてOK.
libGDXは現在の安定板ではx86非対応ですが,タイミングの良いことに開発中のnightly buildがサポートを始めているので,ライブラリを最新のものに差し替え.ビットマップフォント表示の関数でバグが出ましたが,そこだけコメントアウトしてあっさり起動しました.



描画はせいぜい30fps.マシンパワーにはまだ余裕があるのでAVD側で間引いている気がします.音も一緒に間引かれたような感じで潰れた音になってますが,一応は止まらずに動いてます.取り急ぎのテストということで.

MacのGPU事情に関する疑問

Eclipseが重すぎるので、制作環境をMac Pro(アルミメッシュ筐体の旧式)にアップグレードしました。
DAWでゴリゴリ曲作るよりもテキストベースのコーディングのほうがマシンパワーを食うというのは,なんかすごい時代だなぁとつくづく思いますが…

旧式とはいえ久々のニューマシン.EclipseとLogicとPdを立ち上げて音楽プログラミングをしながら、ブラウザのタブを何十個も出してヘルプサイトを参照しつつ、ニコ動巡回しながらParallelsでエロゲやっててもまだまだ余裕があります!!すごい!!(集中しろよ


さて,Mac ProはCPUやビデオカードの換装が可能なので、中古相場が落ちついてきた2009年モデルをベースに色々とカスタムしたのですが、ビデオカード選びで少々悩みました.

2014年1月17日金曜日

libGDX framerate drops problem

libGDX projectをAndroidで走らせると,一部の機種でフレームレートが落ちる問題.
AppのActivityスタート時は 30〜45fpsなんですが,
・端末をスリープ→スリープ解除する
・ホーム画面や別のAppに切り替えてから戻す
・音量を変更するなどしてDialogを出す
等の操作をすると,60fpsで安定する状態になります.

以前の動画↓で最初に音量を変更しているのも,実は上記の理由があったんですが(笑)