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

木曜日, 12月 20, 2007

Reading newsfeeds

GainerでおなじみアカデミーDSPの小林さんがnodeboxワークショップやってる。
DSP

天気情報のrssを取得して表示。webライブラリを使う。
NodeBox | Web

text()メソッドに渡す際にstr()メソッドを使うんだけど、utf-8にdecodeしないとエラーになる。デフォルトのエンコーディングがutf-8になってないから?
3. 形式ばらない Python の紹介

文字コードは常に悩みの種。いつも何となく解決してるので、ちゃんと理解せねばと思う。


web = ximport("web")
fontsize(10)
news = web.newsfeed.parse("http://weather.livedoor.com/forecast/rss/21/40.xml")
y=0
xoff=10
yoff=10
for i in news.items:
s = str(i.description).decode('utf-8')
text(s, xoff, y*30+yoff)
y+=1


同じことをprocessngでやるとこうかな。もっと泥臭い感じ。
関係ないけど文字表示する場合PFont.list()で一覧とって配列の一番最初のを指定してあげればいちいちメニューからCreate Font...しなくて済む。


import processing.xml.*;
XMLElement xml;
XMLElement[] siteData;
xml = new XMLElement(this, "http://weather.livedoor.com/forecast/rss/21/40.xml");
XMLElement site = xml.getChild(0);
siteData = site.getChildren();
PFont font;
String[] fontlist = PFont.list();
font = createFont(fontlist[0], 10);
textFont(font);
size(400, 400);
int y = 0;
for(int i=0;i<siteData.length;i++) {
if(siteData[i].getName().equals("item")) {
XMLElement[] items = siteData[i].getChildren();
for(int j=0;j<items.length;j++) {
if(items[j].getName().equals("description")) {
text(items[j].getContent(), 10, y*30);
println(items[j].getContent());
y++;
}
}
}
}

土曜日, 9月 01, 2007

a digital remake

» A Digital Remake

装飾イニシャル文字をプログラムで生成。洒落た論文だな。
これぐらいやってみたい。

で、装飾に使われてるのがCornuってライブラリ。それっぽいのが簡単に作れそう。
NodeBoxのライブラリの使い方は

~/Library/Application Support/NodeBox/

にフォルダごと入れてしまえばいい。もしくはスケッチと同じ階層。

Core Imageライブラリとか使ったら結構簡単に面白おかしいことができるんじゃないだろうか?
今何となくjavaでフィルタとかやってる(完全に趣味)んだけど、こっちにしようかな。python覚えたいし。
Java Image Processing - Blurring for Beginners

cornuをほんの少し触ってみた。リストを入れ子にして位置指定すれば簡単。
あとは一発でjpgなりgifに書き出せたらなー。

cornu = ximport("cornu")

size(400, 400)

path = [[(0.1,0.1),(0.15,0.3),(0.4,0.2),(0.6,0.6),(0.4,0.4),(0.5,0.4)],
[(0.1,0.1),(0.15,0.25),(0.4,0.2),(0.8,0.6),(0.35,0.2),(0.5,0.4)],
[(0.1,0.1),(0.15,0.35),(0.4,0.2),(0.8,0.6),(0.2,0.4),(0.5,0.4)]]
nofill()
stroke(0)
for i in range(0, 3):
cornu.drawpath(path[i], tweaks=20, points=False)

月曜日, 6月 11, 2007

sketch20070611_3


tutorialそのままでgoogleのhtmlをpathとって加工。Export as PDF...で普通にillustratorでpathの編集ができる。

from urllib import *
page = urlopen('http://www.google.com/')
data = page.read()
size(400, 800)

fontsize(9)
path = textpath(data, 0, 10, WIDTH)
points = []
for point in path:
if point.cmd == CURVETO:
point.ctrl2.x += 5
point.ctrl2.y -= 10
point.y += 5
points.append(point)
drawpath(points)

page.close()

木曜日, 6月 07, 2007

sketch20070607

NodeBox、まだ何するかは決めてないけど何となく役に立ちそうと思ったのは、当たり前かもしれないけど普通にpythonが動くこと。「初めてのPython」読みながらちょっと試す。

urllibモジュール使ったりすれば簡単にネットからデータを取得できる。google.co.jpのトップページ。wordscountのとこで適当な言葉を指定して、使われてる回数分四角を表示する。

from urllib import *
page = urlopen('http://www.google.co.jp')
data = page.read()
size(400, 800)
wordscount = data.count('google')
for i in range(wordscount):
rect(i*15, 0, 10, 10)
fontsize(9)
text(data, 0, 10, WIDTH)
page.close()

こういうのをもっと洗練させていけば色々面白い視覚化ができそう。pythonとかネットワークの勉強にもなるし。pdfとquicktimeムービーが書き出せるのもいい。mail用のモジュールもある訳だし、スパムメールの視覚化とか。こういうの。もうちょいポップなやつ作りたい。

他パラパラとめくりながら試してたやつ。

word = 'xo'
z = eval("word*10")
text(z, 0, 13, None)

とか。便利。

import os
print os.listdir(os.getcwd())

とかでカレントディレクトリにあるディレクトリのリスト出したり。os.mkdir('filename')でディレクトリ作ったりもできる。まだコンソールに出してるだけだけど、グラフィックにすぐ反映させられるはずで、それはやっぱ面白い。

こういうのは結構無駄っぽいけど、無駄な分あんまり人がやらない感じで、それによってあんまり見たことないようなグラフィックなりサウンドが生成できたらいいなぁと思う。同時にアルゴリズムとかコンピュータのコアな部分の勉強にもなりつつ。

あと、processingだとこれは多分こんなに簡単にはできないってのは、NodeBoxのfiles()メソッド使ってマウスダウンしてる間指定したフォルダ(絶対パス)内のjpgファイルをランダム表示。結構脳にくる。

size(600, 600)
speed(30)
def setup():
global f
f = files("/Users/poki_j/Documents/downloads/clipping/*.jpg")

def draw():
global f
if mousedown:
image(choice(f), 0, 0)

processingだと基本的にはスケッチフォルダ内にdataってフォルダ作ってそこに画像ファイル入れて読み込むし、読み込むファイルも拡張子だけの指定な場合、多分javaから何かしらをimportしないといけなさそう。そういう方法も知っといた方がいいような気はするけど。

火曜日, 5月 22, 2007

nodebox

pythonで書くprocessingみたいなやつ。前から気にはなってたんだけど、久しぶりに見てみたら結構すごいことになってるっぽく、動かしてみた。コマンドキー+Rですぐ実行できるのが嬉しい。pythonのコーディングも気に入ってるので楽しい。OSXのみなのが喜びを分かち合えなくて残念。(追記:かと思いきやwindows版がここからdownloadできる。動作確認はしてないけど。てか3.0がすげー!)

NodeBox

あんましコンピュータに慣れてないけどプログラム使ってグラフィックとかやりたい人が、制御構造とか覚えるのに成績入力して合格点以上の人をリストアップするとか延々やらされても辛いんだよね。比較的僕はそれも楽しめるタイプではあったんだけど。こういうのだと楽しく勉強できて、可能性もわかってもらえるんじゃないかな。

tutorial
のadvancedとかやれば結構すごいことできそう。音も鳴らせる。

svg書き出せるライブラリもある(が、マウス操作しかないっぽい...コードで生成したPathを別のアプリケーションで扱いたいんだけどなー。何か方法あるのかしら。以前リンク先にしてたSVGライブラリは読み込みのみでした。ごめんなさい。)
sc3と連携するっていう熱いライブラリもあった(sc3のtutorial書いてるMark Polishookさん作)みたいなんだけど、今どうなってるかは不明。

6/11追記
普通にpath使った場合、Export as PDF...したらイラレで編集できました。便利ー。
sketch20070611

processingのexampleみたいなやつ。メソッド名とかも似てる。

size(200, 200)
speed(30)

def setup():
global frame
frame = 0

def draw():
global frame
if frame>200:
frame=0
stroke(0)
line(0, frame, 200, frame)
frame += 1