MacのHomebrewでimagemagickを入れているとgem install rmagickが失敗するようになったメモ

最近、homebrewでimagemagickをインストールすると、imagemagickの7がインストールされるようになりました。rmagickを利用している場合、rmagickがimagemagick7に対応していないため、エラーが出るようになります。

この問題は既に議論され解決策が提示されています(Now RMagick 2.15.4 can’t be built with ImageMagick 7.0.x · Issue #256 · rmagick/rmagick · GitHub)。そのメモです。とりあえずbrew link –forceはやめよう。

“MacのHomebrewでimagemagickを入れているとgem install rmagickが失敗するようになったメモ”の続きを読む

AndroidでFFTはJTransformsが楽だった

最近Androidアプリの開発をいまさらながらはじめました。今回作ったのは、音声をAndroidスマートフォンに入力し特定の音が鳴っていないか検出するアプリ。FFTで周波数解析して、周波数領域でピーク検出をするのが簡単そうです(時系列データだとノイズの影響が大きく難しそうだった)。それで、AndroidでFFTって、何がいいのかな…と調べると、標準APIのVisualizerの話がよく出てきました。…が、単純にFFTするだけなら、JTransformsが使いやすかった、という記事です。

“AndroidでFFTはJTransformsが楽だった”の続きを読む

Androidアプリ開発:3.5mmイヤホン端子からマイク録音(ライン録音)

Androidのアプリ開発で、3.5mmイヤホン端子の外部入力をマイク録音するためのメモです。いわゆるライン録音です。しかし、AndroidのAPIでは明示的にライン録音を指定するのが難しいらしく、ヘッドセット用のマイク-イヤホン分岐アダプタを購入しました。

“Androidアプリ開発:3.5mmイヤホン端子からマイク録音(ライン録音)”の続きを読む

ruby-openglで英数字の文字列を描画

ちょっとハマったのでメモ。結論から言うと、文字列オブジェクトをeach_byteで分解して、GLUT.BitmapCharacterを用いる。hogeと描画したかったら、

'hoge'.each_byte{ |x|
GLUT.BitmapCharacter(GLUT::BITMAP_HELVETICA_18, x)}

となる。なお、文字列の場所はGL.RasterPos2dなどで指定する。全体ソースコードで例。

#!/usr/bin/ruby
require 'opengl'
display = proc {GL.Clear(GL::COLOR_BUFFER_BIT)
GL.RasterPos2d(0.0,0.0)
'hoge'.each_byte{|x|
GLUT.BitmapCharacter(GLUT::BITMAP_HELVETICA_18,x)
}
GL.Flush()
}
resize = proc {|w,h|
GL.Viewport( 0, 0, w, h)
GL.LoadIdentity()
}
keyboard = proc {|key, x, y|
case key
when 'q','Q','\033'
exit 0
end
}
GLUT.Init()
GLUT.InitDisplayMode(GLUT::RGBA)
GLUT.CreateWindow($0)
GLUT.DisplayFunc(display)
GLUT.ReshapeFunc(resize)
GLUT.KeyboardFunc(keyboard)
GL.ClearColor(0.0, 1.0, 1.0, 0.0)
GLUT.MainLoop()

この方法だと日本語は無理。

参考:
ruby-opengl/examples/misc/font-glut.rb at master · lazyatom/ruby-opengl · GitHub https://github.com/lazyatom/ruby-opengl/blob/master/examples/misc/font-glut.rb