23.08.2009

Dokunmatik Web

Firefox’ın yeni multitouch özelliği dokunmatik ekranlarda web tarayıcı kullanılabilmesini sağlıyor. Mozilla programcılarından Felipe Gomes‘un geliştirdiği Firefox multitouch’un demosunda tarayıcı içinde çalışan uygulamalarla çok noktadan dokunarak etkileşim kurulabildiğini görüyoruz. Böylece web artık sadece tıklanabilir bir “sayfa” değil parmaklanabilir bir medyum’a dönüşüyor.

Bu yazının geri kalanını okuyun »

20.11.2008

Open Sound Control ile Processing – Pure Data Haberleşmesi

Yeni Formlar: Reaktif Müzik yazısında konu Pure Data‘dan (PD) açılmışken, işlemsel ses ve müzik konusunda oldukça kuvvetli olan bu gerçek-zamanlı grafiksel programlama ortamını, şahsen grafik ve video işleme konusunda daha doğrudan kontrol sağladığını düşündüğüm Processing ile haberleştirmenin ve bu iki alemin güçlerini birleştirmenin yolunu gösteren bir yazı yazmaya karar verdim. Burada vereceğim örneği elbette sadece Processing veya sadece Pure Data (pd-extended paketinin içinde gelen veya PD’ye ayrıca ekleyebileceğiniz OSCx ve GEM kütüphanelerini kullanmak suretiyle) ile yapmak da mümkün ama daha karmaşık uygulamalar için (mesela ağ üzerinden, değişik platformlarda yazılmış programların entegrasyonu) bir örnek olma amacı taşıyor.

Hem PD hem de Processing (Python, Ruby, Java, Microsoft.Net, vvvvMaxMSPLiveAPI, OSCulator vb. sayısız ortam gibi) Open Sound Control – OSC protokolünü destekliyor. OSC, bilgisayarlar, synthesizer’lar ve bilimum çeşit multimedya cihazını birbirine bağlamayı kolaylaştırmak için geliştirilmiş, modern ağ teknolojileri ile hatasız, birlikte çalışan, esnek sistemler kurmak için birebir bir protokol. Bunun yanında ağlar üzerinde çalıştığı icin MIDI’nin sunamadığı yeni türden etkileşimlere de (İnternet üzerinden gerçek-zamanlı etkileşim, değişik veri tiplerini ve donanımları birbirine bağlamak gibi) imkan sağlıyor.

İşin Processing ayağından başlayalım:

Önce oscP5 kütüphanesini indirmek gerekiyor. Normalde yapılanın aksine, sıkıştırılmış dosyaları açtıktan sonra libraries klasörüne değil, sketches klasörü içine atıyoruz. Bu kütüphane birçok örnekle gelse de, buradaki amacımız için aşağıdaki gibi sade bir kod yazabiliriz:

import oscP5.*;
import netP5.*;

OscP5 oscP5;
NetAddress myRemoteLocation;

void setup() {
size(400,200);
frameRate(25);
stroke(255);
oscP5 = new OscP5(this,12000);
myRemoteLocation = new NetAddress("127.0.0.1",9999);
}

void draw() {
background(0);
}

void mouseDragged() {
line(mouseX, 0, mouseX, height);

OscMessage msg1 = new OscMessage("/msg1");
OscMessage msg2 = new OscMessage("/msg2");

msg1.add(map(mouseX, 0, width, 69, 100));
msg2.add(50);

oscP5.send(msg2, myRemoteLocation);
oscP5.send(msg1, myRemoteLocation);
}

void mouseReleased(){
OscMessage msg2 = new OscMessage("/msg2");
msg2.add(0);
oscP5.send(msg2, myRemoteLocation);
}

Bu örnek tek bilgisayarda lokal olarak çalışıyor ama IP adresini değiştirerek ağ üzerinde çalışır hale getirmek de olası. Burada 9999 numaralı porta iki mesaj yolluyoruz. Birincisi mouse’un x koordinatını okuyarak 69 ile 100 arasında bir değer ile eşleştiriyor. Daha sonra PD, bu değerleri MIDI girişi olarak alıp frekansa çevirecek.

Bu program çalışırken PD’yi açıp oynamaya başlayabiliriz. Herşeyin düzgün çalışabilmesi için PD_extended–>Preferences–>Startup içinde “oscx”in olması gerekiyor. Pure Data ile haşır neşir olmamış ama bu vesileyle girişmeye niyetlenmiş olan varsa buradan ve buradan başlayabilirler. Temel nesneler dışında dumpOSC ve OSCroute nesnelerini kullanıyoruz ve 9999 no’lu portu dinleyip Processing’den gelen mouse değerine göre frekansı değişen bir kosinüs dalgası yaratıyoruz:

PD kodunu da aşağıya ekleyip ilk eğitsel-öğretsel yazımı burada noktalıyorum:

Diğer yönde, PD’den Processing’e mesaj göndererek, Processing ekranına daire veya kare çizdiren örnek kod:

Düğümküme’de yayımlanan ilgili yazılar:

22.06.2008

OpenFrameworks ile Yüksek Performanslı İşlemsel Sanat ve Tasarım

OpenFrameworks yüksek performanslı grafik ve video programlamak için geliştirilen bir düzine C++ kütüphanesi. Sizi düşük seviye karmaşık fonksiyonlarla uğraştırmadan, tasarladığınız kompozisyona odaklanmanızı sağlıyor. OpenFrameworks sitesinde yeni başlayanlar için film endüstrisinden şöyle bir analoji yapılıyor:

Kendi filminizi tasarladınız ve bir film yapımcısı şirketle çalışmaya karar verdiniz. Yapımcı şirket çekim mekanlarını, kameramanları, ışıkçıları, sesçileri, ve tüm altyapıyı hazırlıyor. Herkesin aynı anda aynı zamanda çekim alanında bulunmasını ve işini yapmasını sağlıyor. Size kalan filmi çekmek. OpenFrameworks geliştireceğiniz programlar için bir film şirketi. Lojistik ayrıntıları ve idareyi hallediyor, siz de yaratıcı vizyonunuza odaklanıyorsunuz.

OpenFrameworks ile yapılan işlerden örnekler ve kullanan sanatçılarla kısa söyleşiler:


made with openFrameworks from openFrameworks on Vimeo.

Processing kullananlar bilirler, böyle yalınlaştırılmış iskeletler işlemsel ürünler yaratan tasarımcılar ve sanatçılar için büyük kolaylık sağlıyor. Processing Java programlama dili üzerine geliştirildi. Yalınlığıyla bizi karmaşık işlerle uğraşmaktan kurtarıp esas işimize odaklamıştır. OpenFrameworks arayüzünde, yani kullanılacak metodların ve değişkenlerin isimlendirilmesinde, Processing’den etkilenmiş. Processing geliştiricileri ve bütün bu programlamayı yaratıcı insanlara yakınlaştıran iskeletlerin anası sayılan Design By Numbers bu tür programlama arayüzlerinin temelini atmıştır.

C++ üzerine geliştiriliyor olduğundan OpenFrameworks öncekilerden farklı olarak yüksek performanslı işlere imkan sağlıyor. İsmi üzerine açık kaynaklı bir proje OpenFrameworks. Zach Lieberman ve Theo Watson tarafından başlatıldı ve dünyanın farklı yerlerinden kişilerin katkılarıyla büyüyor. Eyebeam, Parsons School of Design, MediaLabMadrid, ve Hangar Center for the Arts projeye destek veriyor.

OpenFrameworks kullanmaya nasıl başlarım?

Önce son sürümünü burdan indir. Mac, Windows, ve Linux üzerinde çalışıyor. İndireceğiniz paket tüm kaynak kodu ve örnekleri içeriyor. OpenFrameworks kullanabilmek için tavsiye edilen programlama ortamı (SDK) her işletim sisteminde farklı. Mac için Xcode, Windows ve Linux için Code::Blocks kullanabilirsiniz. Her bir SDKyı kurmak ve üzerinde OpenFrameworks kullanmak için adım adım takip edebileceğiniz yardımlar var, bunları takip ederek ilk OpenFrameworks programınızı çalıştırabilirsiniz:

Mac için adım adım Xcode kurmak ve OpenFrameworks kullanmak
Xcode, http://www.openframeworks.cc/setup/xcode

Windows için 3 SDK seçeneği ve OpenFrameworks kullanımı
Dev-C++, http://www.openframeworks.cc/setup/devcpp
VC++ 2005, http://www.openframeworks.cc/setup/visual_studio
Code::Blocks, http://www.openframeworks.cc/setup/codeblocks_setup_guide

Linux için Code::Blocks
Makefile yardım, http://www.openframeworks.cc/setup/linux-makefile
Code::Blocks, http://openframeworks.cc/setup/linux-codeblocks

Processing’den openFrameworks’e nasıl geçilir?

Eğer bir süredir Processing kullanıyorsanız ve daha önce Class –nense tabanlı programlama– kullandıysanız, openFrameworks ile rahat rahat çalışabilirsiniz. Biri Java biri C++. Sözdizim (“syntax”) birbirine çok yakın. API Processing’den alınmış. Yani rect() mesela ekrana diktörtgen çiziyor, setup() ile program giriş yapıyor draw() ile döngüye giriyor. Bazı farklılıklar var mesela programın derlenmesi Java’da ve C’de farklı işliyor. C’de gelişmiş hafıza kontrolu için “pointer” kavramı var. openFrameworks denemeyi düşünüyorsanız öncelikle “OF for Processing Users” wiki‘sini okumanızı tavsiye ederim.

Nerede yüksek performans gerekir?

Yüksek performans en çok resim ve video işlemede lazım oluyor. Mesela kameranın önünde el sallayarak kontrol edeceğiniz bir yazılım için openFrameworks kurduğunuz sistemin hızlı ve dolayısıyla akıcı çalışmasını sağlar. Kamera ile fiziksel etkileşim işleri en çok performanslarda kullanılır. Kamera vücudunuzu veya her ne kullanıyorsanız onu takip eder, hareketten yakalanan bilgiler geliştirdiğiniz yazılma girer, ve yazılımın kontrol ettiği dinamik görsel projektörden ortama yansıtılır. Bu tür etkileşimli performans senaryolarında openFrameworks ironik bir şekilde performansınızı yükseltecektir…

Vücut etkileşimi ve video işleme konusuna ne gibi teknikler var, nasıl kullanılır öğrenmek isterseniz Golan Levin’in yazdığı “Computer Vision for Artists and Designers” PDF kitapçığına bakmanızı tavsiye ederim.

İlgili bağlantılar:

15.10.2006

"Further Processing" Sergisi

Avusturya’nın Graz şehrinde yapılan Further Processing Sergisi‘nde yeralan işler karmaşa kavramını konu alan işlemsel estetik araştırmalardan oluşuyor. Zaman ve mekana dair parameterlerle kontrol edilen bu yazılımlar elektronik görsel kültür ve klasik çizim/boyama arasında bağlantılar oluşturuyor.

Sandro Droschl and Marius Watz’ın kuratörlüğünü yaptığı sergiye katılan sanatçılar Processing programlama diline dayanarak bu işleri üretmişler. Medya sanatları tarihinde programlama çoğu zaman işin önemli bir parçası olmuştur, ancak şimdilerde bilgisayar kodu giderek üzerinde durulan ana malzeme oluyor. Mikro işlemci programlama ve Internet de işe karışınca medya sanatlarında yeni bir akımdan bahsetmeye başlıyoruz.

Further Processing

Kaynak: Generatorx.no / Further Processing

14.04.2006

Sanat ve Tasarım Odaklı Programlama

Medya Programalama

Bugun pek cok sanatci ve tasarimci paketlenmis yazilimlar (Photoshop, Illustrator v.s. Adobe serisi) kullanarak gorsel ve isitsel is uretiyor. Bu yazilimlar onlari ureten kisiler tarafindan tanimlanmis sinirlarda is uretilmesine izin veriyor, haliyle bu durum birbirini takip eden banal isler uretilmesine sebep oluyor. Oysa uzerinde calistigimiz bilgisayara bir arac degil de bir medya olarak baktigimizda pek cok yeni dusunceyle karsilasiyoruz. Bir medyaya sekil vermek yaratici faaliyetin en onemli noktasi oldugundan bilgisayara sekil verebilmek onu programlayabilmekten geciyor. Ancak bir sanatci veya tasarimci olarak programlama ogrenmek zaman alan, cogu zaman da “teknik” oldugundan uzak durulan bir sey. Bu duruma cozum ayni seyleri yasamis olan ancak emek verip programlama ogrenmis kisilerin gelistirdigi basitlestirilmis programlama dillerinden ve ortamlarindan geliyor. Bu diller yuksek seviyede (dogal dile yakin) olduklarindan kullanmasi kolay ve cabuk prototip programlar yazmaya skecler yapmaya yariyor. Bu programlari deneyip hemen bir iki saat icinde dinamik gorseller programlayabilirsiniz:

Processing
http://www.processing.org

Design By Numbers (Hemen Internet uzerinden kullanilabilir)
http://dbn.media.mit.edu

Context Free
http://www.ozonehouse.com/ContextFree

Scriptographer
http://www.scriptographer.com

VVVV
http://vvvv.meso.net/tiki-index.php

Jitter
http://www.cycling74.com/products/jitter

Puredata
http://puredata.info

Supercollider
http://www.audiosynth.com

Chuck
http://chuck.cs.princeton.edu