Sonic Pi ile Rastgele Sayılar Kullanarak Müzik yapmak

nafi durmuş
nafidurmus-blog
Published in
3 min readApr 29, 2020

4.Bölümle karşınızdayım. Sonic Pi nin kod yazarak müzik yapmaya yaradığından bahsetmiştim. Önceki bölümlere göz atmak için bölüm 1(sonic pi nedir) , bölüm 2 (ses süresi ve genliği ayarlama) , bölüm 3 (örnek melodiler)bölümlere göz atabilirsiniz.

Bu bölüm de ilk olarak rastgele sayılar vererek ses oluşturacağız. Kullanacağımız metot rrand iki değer alıyor. İlk değer en küçük değer(min) , ikinci değer en büyük değer (max) şeklinde. Kullanımı aşağıdaki gibidir.

play rrand(50, 95)

Burada dönen sayının 83.7527 olduğunu sağ alt taraftan görmüşsünüzdür. Tekrar tekrar çalıştırırsak aynı değerin döndüğünü fark etmişsinizdir. Bunun nedeni Sonic Pi yi kullanan herkeste aynı sayının dönmesi için yapılmış bir ayarlamadır.

Farklı sesler duymak isteseniz bir döngü kullanabilirsiniz. Örnek ;

loop do
play rrand(50, 95)
sleep 0.5
end

Burada duraklama zamanı eklediğimiz için her dönüşte farklı bir ses üretiyor olacak. Deneyim ve görün. (Stop butonuna basarak durdurabilirsiniz.)

3. bölümde gördüğümüz sample metotuyla birlikte kullanırsak neler olabileceğine bakalım.

loop do
sample :perc_bell, rate: (rrand 0.125, 1.5)
sleep rrand(0.2, 2)
end

Güzel bir çan sesi melodisi oluşturduk.

2. bölümde gördüğümüz ön tanımlı sesleri rastgale sayılar ile kullanalım. Bunu cutoff metodu ile birlikte kullanacağız. Kullanımı aşağıdaki gibidir.

use_synth :tb303loop do
play 50, release: 0.1, cutoff: rrand(60, 120)
sleep 0.125
end

Daha farklı sesler çıktığını fark etmişsinizdir. Değiştirerek tekrar çalıştıralım.(örneğin saw kullanabiliriz tb303 yerine)

Rastgele sayıları beğenmediyseniz , beğeneceğinizi düşündüğüm farklı bir metoddan bahsetmek istiyorum.

use_random_seed

Denemeden önce ilk olarak aşağıdaki gibi çalıştıralım.

5.times do
play rrand(50, 100)
sleep 0.5
end

Sonra aşağıdaki metodu ekleyerek tekrar çalıştıralım.

use_random_seed 40
5.times do
play rrand(50, 100)
sleep 0.5
end

Aradaki farkı duymuşsunuzdur.

Sadece belli notaları çalmak isteyebilirsiniz. Ya da sadece belli sayıların karşılıklarına gelen sesleri çalmak isteyebilirsiniz. Bunu için choose metodunu kullanacağız.

loop do
play choose([:C, :D, :E])
sleep 1
end

Burada seçtiğimiz notaları 1. bölümde görmüştük.

Farklı bir kullanım olarak ;

loop do
play 60, amp: rand
sleep 0.25
end

Yukarıdaki kodda 0.25 lik zaman aralığı ile random genlik alabiliriz.

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

Sonraki bölüm ;

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 kaynak ;

ekran fotoğrafı

--

--