music-videos-in-r



music-videos-in-r

0 0


music-videos-in-r


On Github tlevine / music-videos-in-r

Music Videos in R

Presenting high-dimensional data in a web browser

Brian Abelson, Data Scientologist

Thomas Levine, Data Superhero

CSV Soundsystem

Big Data

Data music videos are the answer.

Why?

Reason 1: Static images are limited

Multisensory experiences are the future.

Dynamic experiences increase dimensionality

Reason 2: Audience

  • Vision
  • Hearing
  • Touch

Reason 3: Accessibility

Reason 4: Reaching young people

R is the best language

for data music videos

Reason 1: Vector graphics

Reason 2: ddr library

    __     __       
.--|  |.--|  |.----.
|  _  ||  _  ||   _|
|_____||_____||__|

Reason 3: Data

str(iris)
'data.frame':   150 obs. of  5 variables:
$ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

Two case studies

Christmas Gifts

Architecture

Generate one page per frame.

pdf('gifts_slideshow.pdf', width=3*16, height=3*9)

for (day in 1:12) {
    #Frame with ordinal before gifts
    giftframe(0,day=day-1,daylabel=F)
    giftframe(0,day=day-1,daylabel=T)
    sapply(day:1,giftframe,day=day)
}

#Final frame with everything
giftframe(0,day=12,daylabel=F)

dev.off()

And then I made a screencast with ffmpeg.

Frame composition

Making pretty base R plots

(live coding)

Side note

Use ggplot

Federal spending

Architecture

Download fixies from the FMS site, and convert them into CSV. Load into R, and produce the audio and video tracks.
  • Generate 1877 plots, one per frame.
  • Generate a song.
Combine the frames and the song in a website.

Architecture

Generate one image per frame.

for (i in 1:nrow(table2.toplot)) {
    png(sprintf('slideshow/%d.png', i), width = 1200, height = 600)
    frame(i)
    dev.off()
}

Frame components

The full video

Frame components

The part that we generate in R

Frame components

Chernoff face hack

(live coding)

Website

(live coding)

Brian's turn