sakareller etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
sakareller etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

8 Haziran 2008 Pazar

Karıncalar

# Karıncalar Sakareller'e, daha doğrusu Soluk'a, sunduğum ilk melodimdi. Şarkı haline getirmeye zorlayınca ABAB formunda bir şey çıkıyor. Bahadır o zaman "Uğur senden böyle bir şey beklemezdim, bu çok normal ve düz" yorumunu yaptıydı. Geçen gün parçanın konseptini oturtmaya ve sözlerini bitirmeye çalışım, şöyle bir şeyler çıktı:

Karıncalar mutfağa dolmuşlar
Karıncalar tezgahta dolanırlar
Karıncalar yatağıma dolmuşlar
Karıncalar rüyamda dolanırlar

Ekmek kırıntısı taşıyorlar yuvaya
Çekirdek kabukları sırtlarında

Sıra sıra, peş peşe, dizilmişler yollarında
Son vermişler keşmekeşe, (düzen/nizam belirten birşey birşey)

Anne onları sakın öldürme
Beslerim ben onları ekmek peynirle

Bulaşıklar yıkanacak
Düzen tekrar kurulacak
İstilacılar atılacak
Çünkü temizlik şart
# Önce anne'ye okudum şarkıyı. Onları öldürme, ben besleyeceğim kısmında, "ah çok zor" bakışı attı. Sonra düzenin tekrar kurulduğu kıtayı okuyunca da, "yaa işte mecburen" dedi. O zaman, Anne'nin verdiği içten tepkiyi görüp şarkının belli bir ruhu yakaladığını tespit ettim.
# Benim yazdığım sözlerdeki ana kusur, söyleyişinin akıcı olmayışı. Yani melodisine tam oturmadan, o yönü tam dikkate alınmadan yazılmışlar. Başar'a rahatsız edici geliyor. Önceden melodi üstüne failatün failün kalıplarının hazırlanmasını, sözlerin onlara göre yazılmasını önerdim.
# Arada da karıncaların yürüyüşünü, onların seviyesinden sembolize edecek bir bölüm olsun istiyorum. "Karıncaların Marşı" gibin.
# Dün Bahadır'ın zamanındaki yorumunu hatırlattım, Barış da "Bahadır dikkat et bak, Uğur travmatik bir deneyim yaşamış, o zamandan beridir acayip melodiler buluyor" dedi. Gülüştük.

23 Mayıs 2008 Cuma

Merdivenler (2)

# Anladığım kadarıyla Grace'te process içine process koymak doğru bir dizayn değil. Galiba her sprout edilen process için ayrı bir Juce thread'i açılıyor. Muhtemelen de thread açmak öyle zıt diye olan bir iş değil, 120 bpm'de vuruş başına iki yeni process açmaya çalışınca da senkronizasyon bozuluyor. Bütün işi tek process'le halletmek lazım.

(define-process (ritim2 n tempo)
(run with
patdur = (make-cycle '(.1 .05 .1 .05 .05)) and
pattimes = (make-weighting '((1 10) (2 2) (3 1))) and
rate = (/ (/ 60 tempo) 4)
repeat n
do
(loop
with times = (next pattimes)
with dur = (next patdur)
for i from 0 below times by 1
do
(send "cs:i" 1 (* i (/ rate times)) dur))
(wait rate)))

# Görüldüğü üzere her beat için (ikinci bir process yerine) ayrı bir loop açıyoruz. Tek bir (send ) ile işimizi hallediyoruz.
# patdur noise uzunluklarını içeren cycle. 5/8'lik havasını o veriyor.
# pattimes da her beat'te kaç davul vuruşu olacağını içeren olasılık dağılımı. En çok bir vuruş, az 2 vuruş, çok az üç vuruş. Muhtemelen bunu birinci dereceden bir Markov chain yapmak daha iyi olacak. 3 vuruş çalındıktan sonra tekrar 3 vuruş gelme ihtimali daha da azalsın deyu.

(sprout (ritim2 400 120) 0 1)
(stop 1)

# (sprout )'un son argümanı id. sonra stop'la durdurabilmek için...
# Örnek bir çıktı şuradan dinlenebilir.

20 Mayıs 2008 Salı

Merdivenler ve Grace ve Csound

# Merdivenler'e bilgisayardan ritim altyapısı hazırlamak istiyordum. Biraz önce proof-of-concept'i tamamladım. Yani Csound'la real-time ses sentezleyebiliyor, ses parametrelerini Grace ile (Common Music 3 ile) real-time üretip onun Csound'a açtığı port üzerinden gönderebiliyorum.
# Şimdilik olası en dandik 5/8'lik ritm üretecini yaptım. Ses kaynağı inen çıkan lineer bir envelope(üzeri 4) ile çarpılan white noise:

ritm.orc
sr=44100
ksmps=1
nchnls=1
0dbfs = 1.0

instr 1 ;untitled
idur init p3
aenv linseg 0, idur*.1, 1, idur*.9, 0
anoise noise 1, 0
out anoise*(aenv)^4
endin

# Değiştirilebilir tek parametre süre. metronom için iki farklı süre belirledim. 0.1*(2 1 2 1 1) pattern'i süre parametresi olarak n defa Csound'a gönderiliyor.

merdivenler-ritm.lisp
(define-process (ritim n tempo)
(run with
pat = (make-cycle '(.2 .1 .2 .1 .1)) and
rate = (/ (/ 60 tempo) 4)
repeat n
do
(send "cs:i" 1 0 (next pat))
(wait rate)))

(sprout (ritim 500 120))

# Bu da çalıştığına göre artık yatabilirim.