jit.gl.lua の OpenGL で FFT データを可視化してみた:Max6, Jitter, Lua

OpenGLの修行という事で、一先ずOpenGLでFFTのデータを可視化するパッチを組んでみました。

パッチ

スクリーンショット 2013-10-11 02.57.50

FFTデータをリストにして、jit.gl.luaのfft関数に可変長引数として与えています。

jit.gl.luaは可変長引数の長さが83を超えると、Maxが予期しない理由で終了するバグがあるようです。注意です。サンプル数の多いFFTデータ(例えば1024)をどうやってjit.gl.luaに渡すかを検討していきたいです。

スクリーンショット 2013-10-11 03.04.28

※FFTampは、Maxオデッセイに書いてあったコードを使いました。

TestVisualizeFFT.lua

[js]

this.autowatch = 1
this.gc = 1

local gl = require("opengl")
local GL = gl
local _fft = {};

function fft(…)
_fft = {…}
end

function draw()

gl.ClearColor(0,0,0,1);
gl.Clear(GL.COLOR_BUFFER_BIT);
gl.Begin(GL.TRIANGLES)
–gl.Begin(GL.POLYGON)
–gl.Begin(GL.LINE_LOOP)
–gl.Begin(GL.TRIANGLE_STRIP)

for i = 1 , #_fft do
local a = _fft[i];
gl.Color(_fft[i],_fft[(i + 1)%#_fft + 1],_fft[(i+2)%#_fft + 1],_fft[i]);
gl.Vertex(a * math.cos(2 * math.pi * (i-1)/#_fft),a * math.sin(2 * math.pi * (i-1)/#_fft,0));
end

gl.End();
gl.Flush();

end

[/js]

参考図書

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です