Sonic Pi ile Ses süresi ve Genliği Ayarlama

nafi durmuş
Kodcular
Published in
5 min readApr 23, 2020

Sonic Pi uygulaması ile kod yazarak müzik yapma serisine başlamıştım. 1. bölüme aşağıdan ulaşabilirsiniz.

Kaldığımız yerde devam edelim.

İlk bölümde play ve sleep metotlarını kullanmayı öğrenmiştik. Şimdi bu bölümde ilk olarak döngülerden bahsetmek istiyorum. Örneğim bir ses dizimini oluşturduk ve bunu birden fazla tekrar etmek istiyoruz. O zaman döngüleri kullanmamız gerekiyor. Aşağıdan bir döngü örneğini görebilirsiniz.

2.times do
play :C
sleep 0.5
play :D
sleep 0.5
play :E
end

Yukarıdaki kodda 2 yerine farklı değerler yazarak istediğimiz sayıda tekrar ettirebiliriz.

Siz benim müziğim hiç susmasın diyorsanız sonsuz bir döngü kullanabilirsiniz. Sonsuz döngü örneği ;

loop do
play 60
sleep 0.5
end

Sonsuz döngüyü durdurmak için ekranımızda sol üst köşede yer alan stop ya da alt + S tuşlarına basmalıyız.

Eee biz sıkıldık biraz da farklı bişeyler öğrenmek istiyoruz diyebilirsiniz. Yavaş yavaş ilerliyoruz ama güzel öğreniyoruz. 😃

Şimdi küçük bir şeye değinip sağlam metotlar öğreneceğiz.

play 50, beans: 0.5, cheese: 3, eggs: 0.1

Yukarıda seçim sırası önemli değildir. 2 değer yazarsak en son yazdığımız değeri kabul ediyor uygulama.

Şimdi farklı bir şeyler deneyelim. Eğer çıkan sesin genliğini değiştirmek istersek amp metodunu kullanmalıyız.(Genlik : Bir dalga tepesi ile dalga çukuru arasındaki mesafenin yarısına denir. Ses dalgalarının genliği arttıkça sesin enerjisi ve şiddeti artar.Genliği fazla olan ses dalgalarının oluşturduğu sese şiddetli ses denir) Aşağıdaki kodu çalıştıralım (kod alanına yazdıktan sonra run ya da alt + R )

play 60, amp: 0.5

Çalıştırdıktan sonra amp: 2 yaparak tekrar deneyelim ve aradaki farkı bakalım. Sonra ilk bölümde yaptığımız gibi melodi oluştururken de amp metodunda kullanabiliriz. Aşağıdaki örnekte olduğu gibi.

play 50, amp: 0.1
sleep 0.25
play 55, amp: 0.2
sleep 0.25
play 57, amp: 0.4
sleep 0.25
play 62, amp: 1

Diğer öğreneceğimiz metot pan. Sesin hoparlörden çıkışını ayarlamak için kullanılır. 3 kullanım şekli vardır.

play 60, pan: -1 #sol hoparlör
sleep 1
play 60, pan: 1 #sağ hoparlör
sleep 1
play 60, pan: 0 #her ikisi içinde (merkezden)

Yukarıdaki gibi yazıp çalıştırırsanız farkı anlayabilirsiniz.

Şimdiye kadar sadece bip sesi duyduk. Sıkıldık dediğinizi görür duyar gibiyim. Sonic Pi nin muhteşem seslerini keşfetme zamanı geldi.

Synth adlı kütüphaneden önceden kayıt edilmiş seslerden bazılarını göreceğiz. Kullanım şekli aşağıdaki gibidir.

use_synth :saw
play 38
sleep 0.25
play 50
sleep 0.25
play 62

Yukarudaki kod parçasından da gördüğünüz gibi kayıtlı sesleri kullanmak için use_synth : şeklindedir. : dan sonra yazıdığımız sesi belirliyor. Başka ne gibi sesler var dediğinizi duyar gibiyim. : sonra prophet , dsaw , piano , fm gibi 20 den fazla ses vardır. Tüm listeyi görmek için sırasıyla

Sağ üstte yer alan help -> sol atta yer alan Synths sekmelerine tıklayalım. Görselde 3 numara ile gösterdiğim alanda yer alan bütün yardımcı sesleri uygulamamızda kullanabiliriz.(daha fazla ses var görsele sığmadı.) 4 numaralı alanda ise ses hakkında bilgilere ulaşabilirsiniz.

Buradaki farklı sesleri birleştirerek güzel melodiler oluşturmaya çalışalım.

İlk bölümde sesler arasını bekletmek için sleep metodunu kullanmıştık.Bu bölümde daha ayrıntılı bir şekilde sesin süresini ve genliğini kontrol etmeyi öğreneceğiz.

İlk olarak sesin süresine değiştirmek içinrelease metodunu inceleyelim.

play 70veplay 70, release: 1 gösteriminin aynı olduğu yazmak istiyorum. Biz burada release: 2 ve release: 5 yazarak sürenin değiştiğini görelim.

Yani sayı ne kadar büyükse süre o kadar fazladır.

Genlik bütün durumlar için 0 dır. Yani genlik 0 dan 1 e hemen geçer. Genliği kontrol etmek için attack metonunu kullanacağız.

play 60, attack: 2
sleep 3
play 65, attack: 0.5

Çıkan sesin zayıfladığını duyabilirsiniz.

Bu bölümün başlarında birden fazla metodu aynı satırda kullanabileceğimizden bahsetmiştim hadi deneyelim.

play 60, attack: 0.7, release: 4
kısa genlik ve uzun süre (yukarıdaki kodun grafiği diyebiliriz)

Şimdi tam tersini deneyelim.

play 60, attack: 4, release: 0.7
uzun genlik kısa süre

Son olarak genlik ve süre için eşit değeri vererek deneyelim.

play 60, attack: 0.5, release: 0.5
her ikisi için de eşit

Şimdiki göreceğimiz metot sustain ile sürdürme süresini belirleyebiliriz.

play 60, attack: 0.3, sustain: 1, release: 1

Eğer istersek bozulma süresini de belirleyebiliriz.decay metodu ile ayarlayacağız. Belirtmezsek bu değer 0 dır.

play 60, attack: 0.1, attack_level: 1, decay: 0.2, sustain_level: 0.4, sustain: 1, release: 0.5

Ekstra kontrol için attact level ve sustain level metotlarını kullanabiliriz.

play 60, attack: 0.1, attack_level: 1, decay: 0.2, decay_level: 0.3,
sustain: 1, sustain_level: 0.4, release: 0.5

Otomatik değerli attact level ve sustain level için aynı olsa da biz bunları değiştirebiliriz.

decay_level metotunuda ayarlabilir ama tek şart sustain_level den büyük olmalı.

Şimdi bu bölümde öğrendiğimiz metotları kısaca tekrar edelim.

  • attack — 0 genlikattack_level,
  • decay — genliği hareket ettirmek için attack_level decay_level,
  • sustain genliği hareket ettirmek için decay_level sustain_level,
  • release tgenliği hareket ettirmek için sustain_level 0

Bir sesin süresi yazdığımız metotlara verdiğimiz toplam değerler olduğunu bilelim. Örnek olarak ;

play 60, attack: 0.5, attack_level: 1, decay: 1, sustain_level: 0.4, sustain: 2, release: 0.5

hesaplama yukarıdaki koyu renkli sayılar -> 0.5 + 1 + 2 + 0.5 = 4

Bu öğrendiklerimizle kulağa hoş gelen melodiler oluşturmaya çalışalım.

Bu bölümü burada bitiriyorum. Diğer bölüm daha eğlenceli olacak bol bol denemeler yaparak beklemede kalın arkadaşlar.

bu yazıyı alkışlayarak bana destek olabilirsiniz.

Bana ulaşabileceğiniz iletişim adresleri,

nafidurmus.com| Twitter | Instagram | Facebook | Medium

Github| Linkedin | Youtube | Mail

Yararlandığım kaynaklar ;

ekran görseli

--

--