タグ

codezineとprogramingに関するucqのブックマーク (5)

  • 少ないディレイタップ数で厚みのある残響音を作るテクニック

    はじめに リバーブサウンド(残響音)を作りたいと思った時に、思い浮かぶアルゴリズムといったら、畳み込み(convolution)が真っ先に来るかも知れません。サンプリングリバーブ全盛というか、最近はいわゆるデジタルリバーブさえも、いったんインパルス応答に落としてから、畳み込みエフェクトとして入力波形を処理するようなありさまです。ハードウェア資源が限られていた時分の、少ないディレイタップ数で、ゴージャスな響きを作り出すアルゴリズムの工夫なんかは、かえってあまり詳しく知られていないかもしれません。 しかし、アルゴリズムによるインパルス応答の生成は、中々捨てがたい魅力があるものです。もっとも大きな魅力の1つに、リアルタイムで響きをコントロールできるというものがあります。リバーブ長や、密度、ルームサイズ、フィルタ、スプレッドなどなど、リバーブのパラメータは多種多様で、数あるオーディオエフェクトの中

    少ないディレイタップ数で厚みのある残響音を作るテクニック
  • C++で線を描画する際のさまざまなテクニック

    描画先の画素配列 「glbuffer2d.h」で実装しています。 今回解説するプログラムが線分を描く先はメモリです。メモリを2次元配列的な構造として扱い、碁盤の目のように並んだ格子にドット(画素、ピクセル)を配置していくやり方で擬似的に線分を表現します。 何はともあれ、まずキャンバスとなる画像クラスを作成することにします。2次元配列なのでまず必要となる要素は、 横幅 縦幅 が考えられます。実際にプログラム上で扱うには、これ以外にさらに2つの変数を管理する必要があります。 確保したメモリを指すポインタ変数 1行分移動するのに必要なバイト数 場合によってはクラスの外で確保したメモリも扱えるようにする必要があるので、ポインタ変数を外部から設定できるようにもしておきます。また処理速度を追求すると、安全性を犠牲にしてメモリを直接操作したいこともあるので、メソッドを用意して取り出せるようにします。 1

    C++で線を描画する際のさまざまなテクニック
  • 物理エンジンを使ってDirect3Dアプリケーションをつくる

    はじめに PCのスペックの向上によって3Dゲームでは力学(衝突処理やアニメーションで利用します)や流体(水などの液体の表現に利用します)などの物理を使った演出がよく使われるようになってきました。物理をゲームを取り入れる際に、力学や流体のモデルを元に3Dのオブジェクトの制御用のプログラムを組み込むわけですが、ゲームでは物理の処理だけにCPUなどの計算リソースを取られるわけにはいかないので、品質とパフォーマンスのバランスをとるのはなかなか手間がかかる仕事です。そこで、そうした処理を楽にしてくれるライブラリが物理エンジンになります。 物理エンジンには、今回の記事で紹介するAGEIA社のPhysXの他にオープンソースのOpen Dynamics Engine(ODE)やHavokと言ったものがあります。AGEIA PhysXが他の物理エンジンと違って特徴的なのは、PhysXハードウェアという専用の

    物理エンジンを使ってDirect3Dアプリケーションをつくる
  • WAVEファイルにリアルタイムで加工を施し再生する

    はじめに マルチメディア系のプログラムを作成していると、音のデータをリアルタイムで処理したいときもあるでしょう。今回は「WAVEファイルからデータを読み込み、加工を施した上で再生する」方法を紹介します。 もちろんWAVEデータ全部をメモリに展開するような手抜きはしません。必要応じてファイルを読み込んでいきます。 対象読者 稿ではC言語を利用します。WINAPIでウィンドウプログラムを作成したことがある人が対象です。それと、内容が応用系なので、参考資料で一度勉強してからの方が理解できると思います。 「waveOut~」「mmio~」が分かる方は大丈夫でしょう。分からない方も参考資料に載っているページに行けば、すぐに分かると思います。 必要な環境 WINAPIを利用するのでWindowsが必要です。動作はXPのみで確認していますが、他のバージョンでも動くでしょう。それと、コンパイル時に「wi

    WAVEファイルにリアルタイムで加工を施し再生する
  • 正規表現エンジンを作ろう (2)〜NFAとDFAを実装する〜:CodeZine

    はじめに こんにちは。hirataraです。 稿は、正規表現エンジン作成の第2回目です。前回は正規表現の数学的な側面を説明しました。今回は正規表現エンジンの実際の評価器となる、NFAとDFAを実装します。 対象読者 正規表現をもっと知りたい方 情報科学分野に興味がある方 正規表現エンジンを実装する必要がある方 必要な環境 サンプルはPython2.5で開発しましたが、2.4の環境でも動くはずです。 Python2.5 が動作する環境 実装する正規表現の仕様 今回から正規表現エンジンの実装に入りますが、実際に手を動かし始める前に、到達すべきゴールを明確にしておきましょう。まず、連載中に実装する正規表現の仕様を決定します。この連載では数学的な定義である3つの正規表現のみを実装し、正規表現が当にDFAと等価であり、DFAをシミュレートすることで実装できることを確かめます。 文法 これから作る

    正規表現エンジンを作ろう (2)〜NFAとDFAを実装する〜:CodeZine
  • 1