ラベル Pd(Pure Data) の投稿を表示しています。 すべての投稿を表示
ラベル Pd(Pure Data) の投稿を表示しています。 すべての投稿を表示

2015年1月18日日曜日

ShaderJockey on Pure Data

GLSLで書かれたフラグメントシェーダーを読み込んで
VJ的にコントロールするツール "ShaderJockey" をPdで作ってみました.
一応GLSL sandbox互換です.


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のノブ型オブジェクトを作った

2017/08/14 Update:
Pd ver.0.46以降で動かなくなったので対応版に更新しました.
Pd自体のGUIの仕様が変わったので互換性はありません.

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

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

2014年4月8日火曜日

Pdで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しました.


以下,やったことメモ

2013年11月30日土曜日

Data structures 覚え書き(1)



PdのData structuresを使ったオブジェクト操作は,
・scalar(data structuresのインスタンス)自体を見れないこと
・何もワイヤーがつながっていないオブジェクトが動作しはじめること
というPdの基本的な処理フローと違う2要素の合わせ技が,まずワカリニクイところだと思う.

2013年11月27日水曜日

Pdのdata structures

プログラミング言語としてPdを理解するにあたり,上級編…というかある種の真髄みたいなものを感じられると目されている概念が「data structures」です.
弄りはじめたばっかりなので全くさっぱり使いこなせてないですが,とりあえず現状での自分の理解をメモしときます.


Pdはパーツとパーツを線で繋いでアルゴリズムを組めますが,そのようなデータフロー的な処理だけでは,Object-oriented的な意味での「ダイナミックさ」みたいなものに欠けるとも言えます.
例えばデータフロー処理では,音を鳴らした時に「音を鳴らすよ〜」というメッセージを起点にして処理が進んでいくものの,音楽を構成する「音」一つ一つの機能やパラメータを抽象化する概念がそこには足りない,ということです.

そこでPdでは,data structuresという構造体に似た概念が導入されています.
コードの実行時にコード自身によってダイナミックに生成できるインスタンスは,このdata structuresに集約されていると思います.

Processing + Pure Data

メディアプログラミングの海は広大だわ(深淵)

Pure Dataを弄ってると,次から次へとインスピレーションというかアイデアが沸いてきて時間を忘れるほど楽しい.
学生の時に妄想してた「ぼくのかんがえたさいきょうのシーケンサ」とか,いくらでも作れるよなあ…

今,Processing + Pure Data の組み合わせでいろいろと遊んでます.
ProcessingのデザインセンスがPdのインターフェースにも欲しいところですねぇ…

動画の書き出しをするとフレームレートが安定せず,音と映像の同期が取れてないですが一応こんなのを作ってみてます.イマイチ面白くないですがとりあえずってことで.


2013年10月18日金曜日

How to embed pd-for-android in your libGDX project

libGDX supports cross-platform game development.
It is very convenient in the case of using your PC as a test environment of a mobile game application.

When you set up cross-platform project using gdx-setup-ui.jar,
following project folders will be made.
  • my-gdx-project : core project, includes main sources, common libraries and interfaces
    • your sources are connected to libGDX
  • my-gdx-project-android : Android project, includes only Android specific implementations and native libraries
    • libGDX is connected to Android: OpenGL ES, touch input, etc
  • my-gdx-project-desktop : Desktop project, includes only Win/Mac specific implementations and native libraries 
    • libGDX is connected to Win/Mac: DirectX, OpenGL, mouse input, etc
libpd is a library to embed the Data-Flow programming language Pd(Pure Data) in our application programs. Additionally, in Android systems, libpd supports OpenSL ES audio API expected to reduce audio latency after Jelly Bean.

libpd needs platform-specific implementations. So if you want to use libpd in the cross-platform projects, it would be better to trace the same way as above libGDX connection.

2013年10月16日水曜日

libpdでパッチ開いて鳴ったわー

鳴ったぜ.

libpdのJNI側のソースコードやAudio glueとサンプルプログラムを見比べてたら形が見えてきた.

2013年10月9日水曜日

Desktop環境(Mac)でJava上のlibpd


ハマり中~

PdBase.openAudio 等のオーディオ系のメソッドは,libpdに同梱されたJNIのNative関数を呼んでいます.
  1. 生のlibpdをデスクトップ環境向けにビルドするとNative関数の中身はカラッポ.jni/z_jni_plain.c
  2. Android向けにビルドすると,これが jni/z_jni_opensl.c に置き換えられる.
  3. PortAudio branch版のlibpdでのデスクトップ向けビルドでは, jni/z_jni_pa.c に置き換えられる.

2013年10月7日月曜日

libpdを始めるにあたっての前提知識

とりあえずlibpdが動いている所を見たいという方はこちらへどうぞ

Pdをコードに埋め込むという触れ込みの「libpd」ですが,これが具体的にどのレイヤの存在で,周りでどういう周辺サービスが動いてることになるのかをちゃんと押さえてないとマズかった.

まず,libpdは独自のサウンドAPIみたいな何かを持つわけではないです.一部ネットメディアで「libpdを使えばAndroidでもレイテンシが云々」みたいな紹介のされ方をしているので,あんまり詳しくない人は誤解をしてしまうかも(=私という説).

2013年8月29日木曜日

JK flip-flop on Pd(PURE DATA)

This article indicates examples of how to make JK flip-flop on Pd(PURE DATA),
without any DSP objects[~] and [expr].

JK flip-flop - Wikipedia(en)

The following circuit is a JK-FF circuit consists only of
arithmetic product, logical NOT, and basic PD objects [trigger] and [f].


This circuit simulates continuous feedback loops of logic circuit,
so a proper accuracy is expected.
Its logic context is pretty honest, and leaves the possibility of make more better.
Just do it as you like.
jkff1.pd

リアルタイムクォンタイザ

ボタン入力時に,効果音が自動的に16分音符に矯正されたリズムで発音される機能です.
これまでの設計の流れを継承しているので,当然シャッフル(リズムのヨレ)にも対応.
リズムよりわずかでも遅れると次のタイミングの入力と見なされてしまうのを防ぐため,
ボタンの入力に猶予をもたせる機構をつけてあり,これに少し手こずりました.
Pdでは,波形を作って任意のタイミングの値を読み出してANDをとるなど,
DSP出力をスカラの次元に持ってくる計算は途端にパフォーマンスが低下するので,
今回は全てスカラ値の計算でやりくりしたところがコダワリ.あとexprも不使用.

autoqnt.mp3

JKフリップフロップ的な構造になったので,いっそJKFFのモジュールも作って公開しようかな.
Pdはそこそこにして,ぼちぼちAndroid SDKのほうに移らないと(汗

2013年8月27日火曜日

OS X Tiger(10.4.11)でのPd-extended

Pdのワークショップや勉強会,ミーティングみたいなものが
国内でもたびたび開催されているらしく,勉強と情報収集も兼ねて
近々行きたいなあと思ったりしはじめました.

当然ながら,そういう場では自前でPdが動く端末を持参することが前提.
私はラップトップPCを持っていないので,どうしたものかと考えてたのですが…

いや,持ってなくはなかったです.
iBook G4の初期型を眠らせていたんでした.2003年発売なので10年前です(!)