Pd会#04

Pd会(PureDataソースコードを読んで何かする会)の第4回に参加してきました。会場を提供してくださった CRI ミドルウェア様ありがとうございます。

わたしは何も発表できなかったんですけど、今回もなかなか濃厚でした。気力が尽きてしまって箇条書きです。

その前に、iPhone Core Audio プログラミング を著者の永野さんから直々に先行販売していただきました。ありがとうございます! 今度あらためて書こうと思いますがすごい力作ですよ。 Mac or iPhone でオーディオやるなら必携の一冊になることでしょう。

iPhone Core Audioプログラミング

iPhone Core Audioプログラミング

  • Pd で信号線が循環するケースについて
    • message*1は実際に呼び出しが再帰して stack overflow を検出してる(検出は m_obj.c で outlet_xxx() 系の関数で毎回チェックされていて、STACKITER(1000に定義されている)を越えるネストでエラーにされている)。逆に言えば再帰が深くなりすぎずに停止するようなオブジェクトがあるなら循環した接続自体は可能かも
    • audio signal*2は 第3回で @yasos さんが解説されていたように接続が張られた時に処理順があらかじめ整列されるので、その解決に失敗して "DSP loop detected" と言われてエラーになる
    • audio signal の実行順序はオブジェクトを置いた順序だから tabreceive/tabsend 等は置く順序によって1block(=64sample)の delay が発生してしまうことがあるらしい
  • pmpd の紹介
    • 剛体シミュレーションができる external
    • mass(質点)とlinkのオブジェクトをリンクすることでかなり直感的に剛体シミュレーション(2D, 3D)ができる。やや接続は大変(必ず mass と link は相互に繋げないといけないとか)だけど実際のモデルと Pd のパッチ上の接続が一致していてある意味とてもわかりやすい。まあ数が増えると……
    • シミュレーションの結果は数値として取り出せるだけなので、単に可視化するだけでなくその数値を利用して音響効果に利用するなどの使い方もできる
    • examples に大量にサンプルあり
  • 雑談
    • またりさま http://www.iamas.ac.jp/~mmiwa/XORensemble.html
      • あるビット数の二進数をXORビット演算をぐるりと適用して次の数値を決める、という演算を繰り返した時にそのビット数で表現される数値の集合はどのようなグループに分割されるだろうかという話で、15bit(15人)の時には全ての数が1つのグループになる*3
    • またりさまBinary http://nagano.monalisa-au.org/?p=224
      • 数値を音圧として波形にするアプリケーション
      • 15人の時はノイズっぽくなる
    • 関連して「低食い違い量列(Low Discrepancy Series)」とか「準モンテカルロ(QMC)」
    • Nyquist 定理
  • iPhone Core Audio プログラミング の内容について
    • サウンドファイルの入出力
      • Audio Queue Service - Cベース。あまりおすすめしてない
      • AV Foundation Framework - Objective-C ベース
      • Extended Audio File Services - サウンドファイルのフォーマット毎の中身が生々しく見える。これと Audio Unit を組み合わせる方法を主に紹介している
    • サウンドバイス入出力
      • Audio Session Services - iPhone のサイレントモード時に音を鳴らすかどうかなどの制御
    • 解析
      • Audio File Stream Services - ヘッダ情報等取得
    • 変換
      • Audio Converter Services
      • MP3 への変換はできない
      • AAC への変換は iPod touch 2G または iPhone 3GS でないとできない
    • Mix, Effect
      • Audio Unit Processing Graph Services (Multi Channel Mixer, 3D Mixer, iPod EQ)
    • iPod Library Access
      • MediaPlayer Framework
      • iPod のプレイリスト等にアクセスして音楽やムービーの再生ができる
      • けどオーディオデータ(波形)は取得できない
  • dspobj~ の続編として、Pd の osc~ の実装をみる
    • 波形を 512 サンプルのテーブルにあらかじめ格納しておいて、osc_perform ではテーブルから線形補間しているのが主な違い
    • double 型の phase (位相)からインデックスを作ってるところがちょっとトリッキー
    • UNITBITS32(= 3*2^19) というマジックナンバーを加算することで、浮動小数点数を(充分に小さい数値しか扱わないという前提のもとで)固定小数点数っぽく扱えるようにした上で、簡単に整数部と小数部に分離してしまうところがミソ(d_osc.c)

*1:音声じゃないほうのsignalを Designing Sound では "message" と書いてあるのでそう呼ぶことにします

*2:同じく Designing Sound より

*3:巡回群みたいだ