SORU
3 AĞUSTOS 2015, PAZARTESİ


Nasıl doğum günü müzik R kullanarak oynayabilir miyim?

Benim için müzik kullanarak R. R Süre olmayabilir en iyi araç bu amaç için, bu aracı olduğumu bilir ve güzel olurdu göstermek için başkalarının esnekliğini böyle bir mutlu günde.

Bunu nasıl yapabilirim?

CEVAP
3 AĞUSTOS 2015, PAZARTESİ


Eğer bunu gerçekten yapmak istiyorsa:

library("audio")
bday_file <- tempfile()
download.file("http://www.happybirthdaymusic.info/01_happy birthday song.wav", bday_file, mode = "wb")
bday <- load.wave(bday_file)
play(bday)

3 ** ilk gerekir unutmayın. Eğer zaten belirli bir dosya varsa, bu biçimi ilk WAV dönüştürmek gerekir.

Eğer bir şey bir WAV dosyası oynarken biraz daha fazla programmery istiyorsan, burada sinüs dalgası bir dizi: melodi üreten bir versiyonu

library("dplyr")
library("audio")
notes <- c(A = 0, B = 2, C = 3, D = 5, E = 7, F = 8, G = 10)
pitch <- "D D E D G F# D D E D A G D D D5 B G F# E C5 C5 B G A G"
duration <- c(rep(c(0.75, 0.25, 1, 1, 1, 2), 2),
              0.75, 0.25, 1, 1, 1, 1, 1, 0.75, 0.25, 1, 1, 1, 2)
bday <- data_frame(pitch = strsplit(pitch, " ")[[1]],
                   duration = duration)

bday <-
  bday %>%
  mutate(octave = substring(pitch, nchar(pitch)) %>%
           {suppressWarnings(as.numeric(.))} %>%
           ifelse(is.na(.), 4, .),
         note = notes[substr(pitch, 1, 1)],
         note = note   grepl("#", pitch) -
           grepl("b", pitch)   octave * 12  
           12 * (note < 3),
         freq = 2 ^ ((note - 60) / 12) * 440)

tempo <- 120
sample_rate <- 44100

make_sine <- function(freq, duration) {
  wave <- sin(seq(0, duration / tempo * 60, 1 / sample_rate) *
                freq * 2 * pi)
  fade <- seq(0, 1, 50 / sample_rate)
  wave * c(fade, rep(1, length(wave) - 2 * length(fade)), rev(fade))
}

bday_wave <-
  mapply(make_sine, bday$freq, bday$duration) %>%
  do.call("c", .)

play(bday_wave)

Nota birkaç nokta var. Varsayılan notalar için oktav A4 440 Hz (not ayarlamak için kullanılan Orkestrası) nerede 4, oktav. Oktav C3 B2 daha bir yarım ton daha yüksek, yani C ' de değişim içinde. make_sine fade için bir neden yok sesli olmadan ve notlar başlatma ve durdurma ne zaman kalkar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly

    Elly

    3 EKİM 2005
  • Google Analytics

    Google Analy

    25 ŞUBAT 2008
  • HTC

    HTC

    12 Ocak 2006