ラベル note の投稿を表示しています。 すべての投稿を表示
ラベル note の投稿を表示しています。 すべての投稿を表示

土曜日, 3月 07, 2009

steering behaviorのメモ

seekがターゲットに向かう動き、fleeがターゲットから遠ざかる動き。まずこれを押さえる。
ここからflockするために、cohesion、separation、alignmentを加えるんだけど、

cohesionは仲間の平均の位置をseekすることで、separationは近づき過ぎた仲間からfleeすること、alignmentは仲間の平均の速度に合わせること。

基本はAdvanced ActionScript 3.0 Animationで勉強した。
最近また新しいサンプルが増えたnature of codeもよくわかる。
どちらも大元にあるのはcraig reynolds。
Steering Behaviors For Autonomous Characters

nature of codeは夏に本が出るらしい。
Nature of Code Book at daniel shiffman

早速メーリングリスト登録した。

日曜日, 6月 29, 2008

py-appscript

面白そうなのでやってみた。
py-appscriptでiTunesで再生中の曲を取得する

sh setuptools-0.6c8-py2.5.eggのとこでzlibがなくてinstallできない。ここで少しはまった。
zipimport.ZipImportError: can't decompress data; zlib not available

わざわざzlibをインストールしたけど、pythonをコンパイルし直すとかよくわからず。
もういいやと思ってpythonのバイナリ入れ直そうかと思ったけどエラーでインストールできない。

macportsでpythonを入れてあるのが原因ぽく、Python macports zlib で検索。
» ( ゚∀゚)o彡° Python! Python! easy_install! MacPorts! | ヲゾゾ wozozo blog

ということで、terminalから

sudo port install py25-zlib

すればうまくいって、

sh setuptools-0.6c8-py2.5.egg

も無事できた。

わからないことだらけ。

>>> import appscript
>>> itunes = appscript.app('iTunes')
>>> print itunes.current_track.album.get()
Baby cruising Love/マカロニ

でも安心できるの(一応動いたので)。
いまさらながらtwitter自動ポストとかもできるな。やらないけど。これとあれを組み合わせればできるなとか、別の言語でやる場合はこれに似た何かを探せば(できることなら作れば)いいんだなとかがわかれば収穫。やった気になって何もしないのは駄目だと思うけど。

これやりたい。
pachube :: connecting environments, patching the planet - Map of feeds

ipod、通勤中聴くけど、朝と夜ではあんまり意識してないけどボリュームが違ってて、朝に聴くと音量でかかったりして、前の日の夜の気分とかテンションみたいなものが音量として残ってる感じがして、何となく世界中の人々の音量を知りたいと思った。

bloggerの話だけど、preタグのline-heightとか日によって変わるの何で?

木曜日, 11月 22, 2007

AudioIn with MacBook built-in-microphone

MacBook Proに移行して、SuperCollider3も3.1にして、processingと連携させて遊んだりしたんだけど、
ある時マイクを使おうとしたら入力ができなかった。
解決法をwebで発見したので記録しておく。

アプリケーション>ユーティリティ>Audio MIDI設定を起動して、メニューから機器セットエディタを開く
+ボタンで機器セット追加。名前をsupercolliderとでもつけておく
内蔵マイク、内蔵出力にチェックして、完了
デフォルトの入力と出力をsupercolliderにしておく

で、SC3起動(既に起動してる場合は再起動)。
Serverをbootするとこんなメッセージが出るはず。
Number of Devices: 4
0 : "Built-in Microphone"
1 : "Built-in Input"
2 : "Built-in notification is on


"supercollider" Input Device
Streams: 1
0 channels 2

"supercollider" Output Device
Streams: 1
0 channels 2

新規ファイルを開いて、

{Out.ar(0,AudioIn.ar(1))}.play;

で無事左チャンネルから音が聞こえて録音もできましたとさ。

月曜日, 11月 19, 2007

today's glitch 3


この間、youpyさんに教えてもらったOSXで超簡単にglitchする方法で、

cat ファイル名 | sed 's/9/1/g' > ファイル名

てのがある。
sedコマンドで

s/検索文字列/置換文字列/g

って感じで数値を置換してる。数値を変えると結果も変わる。ファイルはmp3とかもいける。

同じようにprocessingでも単純にバイナリ形式で開いて、if文で置換。
数値は色々試さないとできたファイルがうまく開けなかったりする。finderのプレビューで見るのと、アプリケーションのプレビューで見るのと、photoshopで見るので結果が違ってたりする。

byte[] b = loadBytes("hysysk.jpg");
for(int i=0;i<b.length;i++) {
//println(b[i]);
if(b[i]==18) {
b[i]=1;
} else {
b[i]=b[i];
}
}
saveBytes("glitch.jpg", b);

土曜日, 11月 17, 2007

jython + p5#2

後半。本当にやりたかったのはここから。
irbでやってるみたいに、インタラクティブにコードを書き換える。
Processing by Ruby #2 - Quietstar

コードはrubyとほとんど同じ。下のコードをSketchTest2.pyとか名前付けて、保存。
jythonを起動して、

>>> from SketchTest2 import *

これでjrubyのloadと同じなのかな。

>>> applet = Sketch()

で、Sketchクラスのインスタンスを作る。

>>> run(applet)

とするとアプレットが動きます。ランダムな位置に四角が描かれては消される。
jrubyでの例と同じように

applet.stop()

とかすれば止まるし、

applet.strokeWeight(5)

とかすれば線が太くなる。これは楽しい。
GUIもCUIもPhysical Computingも全部組み込みたいものだ。

from javax.swing import JFrame
from processing.core import PApplet

class Sketch(PApplet):
def __init__(self):
pass
def setup(self):
self.size(200, 200)
self.rect(0, 0, 100, 100)
def getField(self, name):
return self.class.superclass.getDeclaredField(name).get(self)
def draw(self):
self.background(255);
self.rect(self.random(self.width), self.random(self.height), 10, 10)

def run(applet):
frame = JFrame(title="Processing",
resizable = 0,
defaultCloseOperation=JFrame.EXIT_ON_CLOSE)
frame.contentPane.add(applet)
applet.init()
frame.pack()
frame.visible = 1

if __name__ == '__main__':
run(Sketch())

jython + p5#1

jrbでprocessingっていうこの記事読んで同じことがjythonでもできないかと思った。
Processing by Ruby - Quietstar

jythonのインストール
Installation

ここからリンク先をクリックしてjarファイルをダウンロード
Downloads

jarファイルをダブルクリックするか、terminalで

java -jar jython_installer-2.2.1.jar

と打ち込む。
GUIが出てきて色々聞いてくるので、色々答える。Installation typeはStanderdにした。
あとはひたすら光ってるとこをクリックしてくと、jython2.2.1というフォルダが作られる。

PATHを通す(コマンドサーチパスに加える、というのか)。terminalで

open .bash_profile

して、bash profileを開く。jython2.2.1フォルダ内にjython実行ファイルがあって、ホーム(hysysk)のすぐ下に置いたので、

export PATH="/Users/hysysk/jython2.2.1:${PATH}"

とすればよい。他に色々ある場合は:でつないでいく。${PATH}は忘れずに。
これでterminalから

jython

と打ち込むだけで起動するようになる。

Processingの方。
.bash_profileにprocessingのCLASSPATHを書いておくと実行する時に楽。
ここを参考に。
JRuby上のirbでインタラクティブにProce55ingを動かす:TKMR.blog.show

export P5_HOME=/Applications/Processing¥ 0133
export CLASSPATH=$CLASSPATH:$P5_HOME/lib/core.jar

こんな感じで。exportってのは変数の宣言みたいなものか。
Processing 0133じゃなくてProcessing¥ 0133。\か¥を入れる。フォルダ名変えればいいのか?試さない。

jythonでの書き方はここを参考に(via koyachiさん。いつもありがとうございます!)。
Backspaces: Processing: .. with Jython

ただ四角を描くだけのコード。SketchTest.pyとか名前付けて保存して、

jyhton SketchTest.py

で実行される、はず。上のサイトの人もあんましいいコードじゃないけどとりあえず動くからいいよね的なこと言ってるけど、僕もそんな感じです(僕の場合、どこがどう悪いかもわからない)。ご了承下さい。後半へ続く。

from javax.swing import JFrame
from processing.core import PApplet

class Sketch(PApplet):
def __init__(self):
pass
def setup(self):
self.size(200, 200)
self.rect(0, 0, 100, 100)
def getField(self, name):
return self.class.superclass.getDeclaredField(name).get(self)

if __name__ == '__main__':
frame = JFrame(title="Processing",
resizable = 0,
defaultCloseOperation=JFrame.EXIT_ON_CLOSE)
panel = Sketch()
frame.add(panel)
panel.init()
while panel.defaultSize and not panel.finished:
pass
frame.pack()
frame.visible = 1

水曜日, 8月 29, 2007

note20070829

eclipse + flex 2(actionscript 3)
Aaron Spjut » Blog Archive » Continuous Integration with Flex 2 (Actionscript 3), FlexUnit, CruiseControl, Apollo and subversion on OS X

build.xmlのfailonerror="true"をなくしたらビルド通った。

eclipse + CDT(C/C++)
HelpからSoftware UpdatesのFind and Install...
Search for new features to ins...をチェックして、Next>
New Remote Site...でNameにCDTとか名前付ける、
URLはhttp://download.eclipse.org/tools/cdt/releases/europa

OpenGL
ProjectのPropertiesでTool settingsのMacOSX C++ LinkerからMiscellaneousを選び、Linker Flagsに
-framework OpenGL -framework GLUT
と追加。
あとはこの辺で遊ぶ。
OpenGL Video Tutorial - Home

OpenALもこんな感じでやってこう。

木曜日, 8月 09, 2007

ess vs minim

processingで音を扱うライブラリのessとminimのどっちがどっちだって話。徹底比較した訳ではないので、自分が使った範囲で覚えておこうと思うところのメモです。

ess
メリット
FFTを使う場合、damp()メソッドで値を滑らかにできたりして、ビジュアライゼーションには便利。
envelopeクラスがあるので、オシレータを組み合わせて音を作っていくのには向いてるかも。フィルターなどエフェクトもminimよりかは充実してる。

デメリット
サウンドファイルを読み込む場合、モノラルでしか扱えない。
mp3ファイルを読み込みたい場合は下記のファイルが必要。
tritonus_share.jar
mp3spi1.9.2.jar
jl1.0.jar
スケッチのあるフォルダにcodeというフォルダを作って入れておく。

長いサウンドファイルを読み込む場合はAudioStreamクラスを使う。その際

void audioStreamWrite(AudioStream theStream) {
// read the next chunk
int samplesRead=myFile.read(myStream);
}

というようなメソッドを作ってFileクラスから読み込んだ音をチャンクに入れていく(theStreamという仮引数は何をしてるんだろう...)。

minim
メリット
サウンドファイルが使いやすい。mp3ファイルが外部ファイルなしでそのまま使える。AudioSnippetクラス、AudioSampleクラス、AudioPlayerクラスなど用途に合わせていくつかクラスが存在する。AudioPlayerクラスはステレオでファイルが扱えてleftやrightというフィールド変数を持っているので、FFTなどで左右の値を取得できる。

BeatDetectクラスもあったりして解析系は便利(精度は怪しいかも知れない)。

デメリット
envelopeなどがなく、複雑な音の加工には向いてないかも。envelope、自分で用意するのだろうか(pythonだけど、ここのSound11 Kick drumみたいに)...。

僕の場合、現状ではできることとかやりやすさに合わせて使うライブラリを変えてます。まだまだどちらも発展途上。

興味があるのは、相変わらず自分で波形を定義する方法。
ess
Processing 1.0 (BETA) - Functional example of ESS Generative Audio

minim
exampleにUserDefinedSignalってのがあります。UserDefinedEffectってのもある。面白そう。

知らなかったけど、processing公式サイトにライブラリのサンプルコードがありますね。ライブラリの配布元とは違う内容で、参考になります。今日記事書いて良かった!
Learning \ Processing 1.0 (BETA)

土曜日, 7月 07, 2007

note20070707

Max/MSP
ubumenuでQuickTimeMovieファイルだけを表示したい場合はInspectorでFiltered TypesにMooVと書く。

css
共通スタイル、各ページ毎のスタイルでファイルを分ける。
共通のとこで全称セレクタ使ってmarginとpaddingを0にしておくと便利。

html
見出し要素は順番を守る。文字の大きさではなく、構造。
定義リストが便利。会社概要とかはこれで書く。

javascript
MDC
メインページ - MDC
brazilさんに教えてもらったbookmarkletのわかりやすい解説
Bookmarklets - Browser Power

misc
Arkitip™ | Intelligence
複数の色んな肩書きの人達が記事や写真をアップしてる。サイトが綺麗。
Magazineのissue0032でexpelimental jetset特集。高かったけど良かった。

プロサッカー選手はスルーパスを受ける時、観客の目線が自分の目線のように感じられて、動くべき場所とタイミングがわかるらしい。

ふんわり何とかが食べたい。