# Bugün sabahtan beridir cross-platform, realtime, open source bir ses kütüphanesi, API'si arayışındayım. Aslında epey zamandır bu arayıştayım. Farklı zamanlarda portaudio'yu indirip Windows'ta build etme denemelerim hep hüsranla sonuçlandı.
# Alpar Hoca'nın Beauchamp'a zamanında gösterdiğim freqazoid projeme yeniden başlamam konusundaki ısrarları üzerine bu işi baştan, dil olarak Java yerine C/C++ kullanarak, hızlı grafikler için (osiloskop, spektroskop vs.) Java2d yerine OpenGL, javasound yerine de şu anda aramakta olduğum bir ses API'si kullanarak yapmaya karar verdim.
# Aslında Juce kullanarak bu işe başlamıştım. Ama ne oldu? Galiba ses sinyallerini programın modülleri arasında taşımak için uygun class'lar olmayınca, kusursuz bir istikrarla çalışması gereken bu modülü yazmaya üşenip işi yarıda bırakmıştım.
# Piyasadaki denk geldiğim kütüphaneler şunlar (editlenecek):
Low-Level, Platfrom Dep.
==================
Windows: ASIO, MME, directsound
Linux: ALSA, OSS, Jack
Mac: CoreAudio(?)
High-Level, Cross-Platform
====================
Open Source: RtAudio, PortAudio, Juce, OpenAL, Audiere, sndlib, Pulseaudio, libao,
Closed Source: Irrklang, fmod
Bir yaşam tarzı olarak procastination (ve tarzancanın aktif kullanımı YA DA dilsel dumur)
23 Ocak 2009 Cuma
Global Game Jam Türkiye
# Barış'ın hatırlatmasıyla son anda Global Game Jam'in Türkiye bölümüne başvurmayı başardım. GGJ'de Dünya'nın muhtelif şehirlerinde toplanan insanlar aynı anda, verilen tema üzerinde iki gün gibi kısıtlı bir zaman içerisinde doğaçlama oyun geliştiriyorlar. O gün kurdukları küçük gruplarla kısa zamanda yazılan oyunların ilginç bir şekilde özgün, yenilikçi ve deneysel oldukları görülmüş.
# Biz Başar, Barış ve ben ayrı ayrı başvurmuştuk. Bugün öğrendik ki üçümüz de kabul edilmişiz. Heyecanlandık. Haftasonu toplaşıp prova yapacağız. Bakalım neler yapabileceğiz. Ben de o zaman bilgisayarıma .xm formatında parça yapabileceğim bir Tracker kurayım. SuperCollider ile ses dizaynı yapayım. Laylay...
# Biz Başar, Barış ve ben ayrı ayrı başvurmuştuk. Bugün öğrendik ki üçümüz de kabul edilmişiz. Heyecanlandık. Haftasonu toplaşıp prova yapacağız. Bakalım neler yapabileceğiz. Ben de o zaman bilgisayarıma .xm formatında parça yapabileceğim bir Tracker kurayım. SuperCollider ile ses dizaynı yapayım. Laylay...
vxi11 Ethernet Protocol üzerinden Tektronix AFG'ı kontrol etmece
# Dönemin bitmesiyle Taylan Hoca'nın bana verdiği ilk mini-proje, Tektronix marka sinyal üretecimizi ethernet üzerinden bilgisayarla kontrol etmek. Modelimiz AFG3000 serisinden. AFG: Arbitrary Function Generator. Yanisi aslında osiloskop ama sinuzoid, kare dalga, terstere gibi dalga biçimleriyle kısıtlı değiliz. Hafızasına N tane 16-bit integer gönderiliyor ve alet istenen frekansa gelecek şekilde interpolasyon uygulayarak sinyali üretiyor.
# Pek de marifetli. "Burst Mode"unda "1-Cycle" seçeneği seçildiğinde hafızadaki dalga şeklini trigger edildiğinde tek bir kez gönderebiliyor. Ardışık trigger'lar arasındaki süre de ayarlanabiliyor. Bilgisayardan paratmetreleri belli bir aralık içinden rastgele seçilmiş dalga biçimleri (muhtelif pulse'lar ve ardışık darbe'ler arası süreler) üretilip alete gönderilecek. Alet de bu sinyali test aşamasında bizim tasarlayacağımız donanıma, gerçek dünya verisi yerine verecek ki analiz ederek darbenin üretim parametrelerini bulsun.
# Deney edevatları için standart iletişim kanalı GPIB denen nane imiş. Özel bir kablosu ve kartı var bilgisayarlar için. Ama aynı komutlar ethernet üzerinden de gönderilebiliyor. vxi11 protokolü sayesinde ağ üzerinden de gönderilebiliyor. Bu kütüphaneyi hazırlayan kardeş linux için doğru dürüst bir programlama ortamı olmadığından dert yanmış. Dert yanmakla kalmayıp oturup "madem yok, ben de kendi kütüphanemi yazarım" demiş ve sorunu halledip kamuyla paylaşmış. Kendisine bolca teşekkür. Böyle bir kütüphane olmayınca bu aleti (sadece üzerindeki düğmelere basarak) tüm gücünün hakkını vererek kullanmak imkansız.
# Epey ilerledim. Pazartesi günü bu iş biter herhalde.
# Pek de marifetli. "Burst Mode"unda "1-Cycle" seçeneği seçildiğinde hafızadaki dalga şeklini trigger edildiğinde tek bir kez gönderebiliyor. Ardışık trigger'lar arasındaki süre de ayarlanabiliyor. Bilgisayardan paratmetreleri belli bir aralık içinden rastgele seçilmiş dalga biçimleri (muhtelif pulse'lar ve ardışık darbe'ler arası süreler) üretilip alete gönderilecek. Alet de bu sinyali test aşamasında bizim tasarlayacağımız donanıma, gerçek dünya verisi yerine verecek ki analiz ederek darbenin üretim parametrelerini bulsun.
# Deney edevatları için standart iletişim kanalı GPIB denen nane imiş. Özel bir kablosu ve kartı var bilgisayarlar için. Ama aynı komutlar ethernet üzerinden de gönderilebiliyor. vxi11 protokolü sayesinde ağ üzerinden de gönderilebiliyor. Bu kütüphaneyi hazırlayan kardeş linux için doğru dürüst bir programlama ortamı olmadığından dert yanmış. Dert yanmakla kalmayıp oturup "madem yok, ben de kendi kütüphanemi yazarım" demiş ve sorunu halledip kamuyla paylaşmış. Kendisine bolca teşekkür. Böyle bir kütüphane olmayınca bu aleti (sadece üzerindeki düğmelere basarak) tüm gücünün hakkını vererek kullanmak imkansız.
# Epey ilerledim. Pazartesi günü bu iş biter herhalde.
20 Ocak 2009 Salı
Lost'un senaryo tutarlılaştırıcısı
# Lost'un 5. sezonunun başlamasına bir gün kaldı. Heyecan dorukta.
# NY Times'ta Greg Nations diye biriyle bir söyleşi yayınlanmış. Nations'ın görevi daha önce yayınlanan bölümlerde tüm olanların bir arşivini tutmak, geçmişte, şimdide ve gelecekte olanları tarihlemek ve yeni bölümlerin yazımında oluşacak mantık hataları ve kopuklukları engellemek. "Keşke bilgisayar mühendisi olsaydım da bir database kurup insanlar, olaylar ve mekanları ilişkilendirebilseydim. Her şeyi hödö hödö düz yazıyla dökümanlara yazıyorum." diyor. Ki Net'te bolca "hatalar" sitesi mevcut.
# Diziyi o kadar karmaşıklaştırdılar ki, herkes tek bir insanın tüm külliyatı aklında tutamayacağı konusunda hemfikir. Laylay...
# NY Times'ta Greg Nations diye biriyle bir söyleşi yayınlanmış. Nations'ın görevi daha önce yayınlanan bölümlerde tüm olanların bir arşivini tutmak, geçmişte, şimdide ve gelecekte olanları tarihlemek ve yeni bölümlerin yazımında oluşacak mantık hataları ve kopuklukları engellemek. "Keşke bilgisayar mühendisi olsaydım da bir database kurup insanlar, olaylar ve mekanları ilişkilendirebilseydim. Her şeyi hödö hödö düz yazıyla dökümanlara yazıyorum." diyor. Ki Net'te bolca "hatalar" sitesi mevcut.
# Diziyi o kadar karmaşıklaştırdılar ki, herkes tek bir insanın tüm külliyatı aklında tutamayacağı konusunda hemfikir. Laylay...
17 Ocak 2009 Cumartesi
Opengl
# Yükseklisans zorunlu derslerimin bitmesi, hem de ilk defa bir temel fizik dersinden AA almam, hem hem de dönem ortalamamın 4.0 olması beni epey motive etti. Dün gece yılları özlemi OpenGL kullanabilen bir program yazma hevesimi sonunda gerçekleştirdim. Başlangıç adımlarını daha sonra bakıp hatırlayabilmek üzere buraya "tespit" edeyim.
# Netbeans 6.5'in C/C++ paketi kurulur. (Nasıl kurulur? vs.)
# Cygwin'in setup.exe'si indirilir ve şu paketler kurulur: gcc-core: C compiler, gcc-g++: C++ compiler, gdb: The GNU Debugger, make: the GNU version ve opengl. Cygwin'in bin klasörü "system environment"taki PATH'e eklenir.
# Nehe'ye gidilir. İlk derslerden birinin Cygwin kodu indirilir. Cygwin'deki user'in altinda bir klasöre açılır. .exe dosyası denenir, çalışınca mutlu olunur. Sonra .exe'nin ismi değiştirilir ve "make" denerek kendi .exe'mizi oluşturabiliyor muyuz diye bakılır. Olumlu netice alınınca göbek atılır.
# Netbeans açılır, Tools > Options > C/C++ > Build Tools'ta cygwin'nin bin/ klasörü eklenir ve geliştirme programları Netbeans'e tanıtılmış olur.
# "existing code" seçeneği seçilerek yeni proje yaratılır. makefile olarak Nehe dersiyle gelen makefile seçilir. Run Project'te tıklanır. Build edilip çalıştığı görülünce IDE kullanabilmenin rahatlığıyla huzura kavuşulur.
# Evet, Visual Studio kullanmamak, Windows kütüphanelerine bağlı kalmadan sanırım platformdan bağımsız kod yazabilmek için ilk adımı attık.
# Netbeans 6.5'in C/C++ paketi kurulur. (Nasıl kurulur? vs.)
# Cygwin'in setup.exe'si indirilir ve şu paketler kurulur: gcc-core: C compiler, gcc-g++: C++ compiler, gdb: The GNU Debugger, make: the GNU version ve opengl. Cygwin'in bin klasörü "system environment"taki PATH'e eklenir.
# Nehe'ye gidilir. İlk derslerden birinin Cygwin kodu indirilir. Cygwin'deki user'in altinda bir klasöre açılır. .exe dosyası denenir, çalışınca mutlu olunur. Sonra .exe'nin ismi değiştirilir ve "make" denerek kendi .exe'mizi oluşturabiliyor muyuz diye bakılır. Olumlu netice alınınca göbek atılır.
# Netbeans açılır, Tools > Options > C/C++ > Build Tools'ta cygwin'nin bin/ klasörü eklenir ve geliştirme programları Netbeans'e tanıtılmış olur.
# "existing code" seçeneği seçilerek yeni proje yaratılır. makefile olarak Nehe dersiyle gelen makefile seçilir. Run Project'te tıklanır. Build edilip çalıştığı görülünce IDE kullanabilmenin rahatlığıyla huzura kavuşulur.
# Evet, Visual Studio kullanmamak, Windows kütüphanelerine bağlı kalmadan sanırım platformdan bağımsız kod yazabilmek için ilk adımı attık.
8 Kasım 2008 Cumartesi
An Exceptionally Simple Theory of Everything
# Garrett Lisi, 86'da fizik doktorasını bitirmiş. Akademide tüm ilgi alanlarını ortak olarak içeren tek konu String Theory imiş. O konuda çalışmak istemediğinden akademiyi bırakmış. Bir vagonla muhtelif turistik/otantik adaları, mekanları gezerek, sörf vs. yaparak, minimum masrafla hayatını yaşamış, arada da kendi başına fiziğe devam etmiş. İlginç bir hikayesi var.
# Anlattıklarından anladığım kadarıyla, varolan kuvvetlere bir kaç tane yeni kuvvet ekleyerek standart modelin SU(3)xSU(2)xU(1) yapısının altyapısı olduğu daha büyük gruplara doğru çıkıyor. Geçen gün Asım Barut Anma Dersi'nde Feza Gürsoy'un da zamanında uğraşmış olduğu gruplardan biri olan E8'in tüm bu yapıyı açıklayacak bir grup olduğunu söylüyor.
# Ama bu E8 öyle büyükmüş ki, grup elemanları N=200bin küsur, NxN elemanlı bir matris ile temsil edilebiliyorlarmış. Kendisi ayrıca en basit exceptional group olma özelliğini taşıyormuş. vs. vs.
# Bu işle uğraşırken anladığım kadarıyla matematiksel yapının karmaşıklığıyla denklemler kurarak boğuşmak yerine, parçacıkları görselleştirebileceği, 8 boyutlu grubu kendi içinde döndürebileceği bir yazılım hazırlamış.
# Kurduğu model 20 küsur yeni parçacık, bir kaç yeni kuvvet öngörüyor. "Deneyle gözlenirse ne güzel, ama gözlenmezse benim için kötü tabii." diyor.
# Kendi ağzından dinleyelim:
Differential geometry is the study of smooth manifolds, usually in many dimensions -- it's calculus on steroids. There are ways of classifying symmetric manifolds, and this links up with all other branches of mathematics; so differential geometry is sort of a hub where a lot of mathematics comes together. Now, there is one manifold in particular -- the largest simple exceptional Lie group manifold, E8 -- that is the most beautiful. The system of roots in the picture I sent you describes the 248 symmetries of E8. What I'm working on is identifying each of the elementary particle fields of the standard model and gravity as one of these symmetries. It turns out that this match is... perfect, as far as I've been able to tell.# Makalesi şurada: http://arxiv.org/abs/0711.0770
# Fizik camiyasında çok etki bulmamış. Amca'yı hor görmüşler. Ben pek bir şey anlamadığım için bir şey diyemiyorum. ama şekiller güzeldi :-)
# Ayrıca geçen gün Metin Hoca Asım Barut Dersi'nde anlatılanlar hakkında şöyle bir yorum yapmıştı: "Eğer uğraştığın konu çok karmaşıklaşmaya başlarsa, onu bir tek sen anlıyorsan, kimseye anlatamıyorsan o konuyu bırak" Büyük sözü...
7 Kasım 2008 Cuma
Fibonacci serisi ve altın oran
# Fibonacci serisindeki n. elemanın (altın oran)^2/kök(5)'e en yakın tam sayı olduğunu biliyor muydunuz? Şüphesiz düşünen için bunda çok hikmetler vardır.
# Fibonacci sayıları şu Octave script'i ile:
# Bunun ispatıyla uğraşıyorum şimdi. Structure and Interpretation of Computer Programs'ta "ispatı induction'la yaparsınız ancak" diyor.
# Fibonacci sayıları şu Octave script'i ile:
function y=fibonacci(n)# Altın oran'ın üsleri de round(((1+sqrt(5))/2)^n/sqrt(5)) ile hesaplanabilir ve şaşırılabilir.
if n>2
y = fibonacci(n-1)+fibonacci(n-2);
else
y = 1;
end
# Bunun ispatıyla uğraşıyorum şimdi. Structure and Interpretation of Computer Programs'ta "ispatı induction'la yaparsınız ancak" diyor.
Kaydol:
Kayıtlar (Atom)