« STM32 - Primer2 | トップページ | PSoC - PSoCマイコン・スタートアップ »

Proce55ing - CircleCubes

Proce55ingのバージョンがv1.0.9になっていたので、久しぶりにv1.0.1からアップデート。

Circlecubes2_3

約1年ほど前に制作したものを動作確認したら、一部の表示がおかしくなってしまいました。

というわけで、修正ついでにアップしておきます。

まずこれは何をするものかというと、入力されたオーディオ信号をFFTして、周波数に応じて色分けされたオブジェクトが音の大きさによって動くという、いわゆるスペアナというやつです。

で、下の画像はv1.0.1の場合で、放射している点や上に伸びる点はGL_POINTSによって1頂点を描画しています。

Circlecubes2_a

しかし、v1.0.9になると下のように頂点のみが反転してしまってます。

Circlecubes2_b

他にもboxやrectによる描画も行っているのですが、それらは問題ありませんでした。

この違いは標準APIを利用しているかによるようで、boxやrectなどはProce55ing標準APIを使用し、問題のある頂点の描画はPGraphicsOpenGLを使用してOpenGLの命令を直接使ってました。

仕方ないので標準APIで書き直したのですが、点の描画のために何故直接OpenGLを使っていたかと言うと、点の大きさを指定する方法がglPointSizeしか思いつかなかったからです。。。sweat02

ちょっと勉強不足だったというのもありますが、strokeWeightで大きさを変えられることを知り、それに合わせて修正しました。

具体的には、

pgl.beginGL();
gl.glColor4f(cr, cg, cb, ca);
gl.glPointSize(_siz.y / 1.5);
gl.glBegin(GL.GL_POINTS);
gl.glVertex3f(0.0, 0.0, 0.0);
gl.glEnd();
pgl.endGL();

と、オブジェクトの色・大きさ・頂点を指定していた部分を、

strokeWeight(_siz.y / 1.5);
stroke(objcol);
point(0.0, 0.0, 0.0);

これだけで済みました。Cでプログラミングしていた癖が抜けきらないんでしょうかねえ。

pglはPGraphicsOpenGL、glはPGraphicsOpenGLから取得したjavax.media.opengl.GLがセットされてます。これらについてはソースを置いときますので適当に理解して下さい。

 

使い方の説明。

  • X軸 : カットオフ周波数
  • Y軸 : カメラの高さ
  • 左クリック : 回転停止
  • 中クリック : 回転速度2倍
  • 右クリック : 停止
  • ホイール : ズーム
  • シフト+ホイール : 各オブジェクトの拡大/縮小
  • スペース : テキストの表示/非表示
  • 1 : ボックス
  • 2 : パネル
  • 3 : 点

1~3は1つのオブジェクトの形状で、以下の画像の上からボックス・パネル・点となっています。負荷もボックス>パネル>点という具合です。

Circlecubes2_1 ボックス(Box)

Circlecubes2_2_2 パネル(Panel)

Circlecubes2_3_2 点(Point)

カットオフ周波数ではIIRFilterのローパスフィルター(SinglePole)を設定してます。

窓関数は設定してません。

オーディオ入力はPCに入力されてくる音声なので、ラインインマイク入力になりますが、再生リダイレクト(Vistaだとステレオミキサー?)にすると内部の音声からも入力されます。

音声処理にはJavaSoundAPIであるMinimライブラリを使用してます。(Proce55ingに標準でついてきます)

toxi氏のジオメトリ・ライブラリを使用していますので、予めtoxiclibscoreをインストールしておいて下さい。(後述にリンクあり)

フォントを使用しているので、Proce55ing側でフォントを生成して下さい。

 

描画はひたすら回転しているだけです。

レンダリング結果にエフェクト掛けたりパーティクルで飛び散るようにしようとしたんだけど、ものすごく重くなってしまい初期段階で止めましたsweat01

先にも言ったように単なるスペアナなので面白みはないですが、改変は自由なので窓関数を設定してみるとかエフェクトを搭載してみるとかしてお楽しみ下さい。

  

 

なんかいつの間にかココログでの1ファイルのアップロード容量が1MBになっていた!このご時世に1MBまでってどゆこと?

これじゃ動画や音楽は元より、ヘタすれば画像だって分割しなければならない可能性もある。せめて10MBくらいにして欲しい。

正直こういう部分で不便を感じるのが嫌なので移転先を検討するか無料のオンラインストレージを探そう。

で、MicrosoftのSkyDriveを利用してみることにしました。

LiveID持っていればすぐに利用可能(無料)で、25GBもの容量があります(!)。1ファイルのアップロード容量も50MBあるので十分です。

でも、アップロードした日付がGMTのままでおかしいんだけど、これって日本時間に設定出来ないのでしょうか??

 

Processing - v1.0.9

Processing.jp

Minimライブラリ - v2.0.2

toxiclibs - toxiclibscore v0015

|

« STM32 - Primer2 | トップページ | PSoC - PSoCマイコン・スタートアップ »

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/204580/47195668

この記事へのトラックバック一覧です: Proce55ing - CircleCubes:

« STM32 - Primer2 | トップページ | PSoC - PSoCマイコン・スタートアップ »