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:

13.11.2008

Yeni Formlar: Reaktif Müzik

Tamamıyla emprovizasyona açık, bulunduğunuz ortama ve o anki ruh halinize göre şekillenen bir müzik türü hayal edin. Her dinlediğinizde farklı deneyimlediğiniz, bu deneyimlerinizi kayıt edebildiğiniz ve paylaşabildiğiniz playlistleri düşünün. Belirli bir süre içerisinde bitmeyen, sonsuza kadar çalan şarkılar, parçalar, mırıltılar ve gürültüler gibi. Siz ona eşlik ettikçe gelişen tamamıyla dinamik kompozisyonlar, bugüne kadar deneyimlemeye alışkın olduğunuz müziklerden oldukça farklı olaylar… Şu an iPhone’lar için piyasaya sürülen ve iTunes’dan bedava indirebildiğiniz RJDJ adlı uygulama yeni bir kategori tanımlıyor: Reaktif Müzik.

RJDJ dünyasında şarkılar ‘scene’ adını alıyorlar. Sceneler sanatçılar tarafından yazılmış programlar. Scene’leri indirip RJDJ playerınıza yüklediğiniz etkişimli müzik parçaları olarak düşünebilirsiniz. Çalarken, ona eşlik ederken deneyimlediğiniz şeyi, onu tasarlayan sanatçı ile ortak çalışmanız gibi görebilirsiniz.

Pure Data ile Hello World örneği

RJDJ için kendi scenelerinizi oluşturabiliyorsunuz (ve iTunes’da satabiliyorsunuz.) RJDJ aslında Pure Data patchlerinin iPhone’da kullanılmasını sağlıyor. Pure Data, 1990 yılında Miller Puckette (Max/MSP) tarafından yazılmaya başlanmış açık kaynaklı ses, video ve grafik işleme programı. Pure Data diğer görsel programlama dillleri gibi objeleri birbirine ipler ile bağlayarak programlama yapmanıza imkan veriyor. Basitçe frekans düzleminde aklınıza ne geliyorsa Pure Data ile yapabilirsiniz.

Amen Shake” adlı RJDJ scene’ini iple çekiyorum.

RJDJ platformu, etkileşimli jeneratif üretim temelleri üzerine kurulu ve bunu müzik bağlamında gerçekleştiriyor. Eski müzik medyası ile yeni dinamik medyayı harmanladığı için hem tanıdık ama garip bir şekilde bir o kadar da değişik bir deneyim sunabiliyor. RJDJ dünyasında yine sanatçılar, albümler ve parçalar mevcut. Kulaklık ile dinliyorsunuz. RJDJ’in sunduğu şey geçmişte deneysel olarak defalarca denenmiş veya sanatsal bağlamda sergilenmiş birşey olabilir ama insanların yanında taşıyabildikleri bir aygıta uygulanması, scenelerinin iTunes’dan satılmaları ile yakın gelecekte oldukça popüler olacağına inandığım ’reaktif müzik’ etiketli bir kategoriden bahsediyor oluyoruz.

 

Düğümküme Arşivinden:
Sanat ve Tasarım Odaklı Programlama

İlgili Bazi Diğer Projeler:
Ambient Addition
RJDJ Hack