Initially created for Code Poetry Slam 2.0, where I plan to tribute to the KC & The Sunshine Band for Give It Up. Yes, this is a fun project -- but I'm happy to merge serious pull requests :)
This will probably never end up on CRAN:
devtools::install_github('daroczig/singR')
The minimal version:
while (TRUE)
give_up(it)
The refrain of the classic "Give It Up" song:
rep(NA, 11)
give_up(what = it, who = Baby)
give_up(what = it)
give_up(what = it, who = Baby)
rep(NA, 11)
give_up(what = it, who = Baby)
give_up(what = it)
give_up(what = it, who = Baby)
verify(give_up(what = it, who = you), times = 2)
give_up(what = it)
Some parts of the above pseudo-R script actually works, e.g. the "Na, na, na, na ..." part:
> rep(NA, 11)
[1] NA NA NA NA NA NA NA NA NA NA NA
And we can also implement e.g. a minimal give_up
function easily:
give_up <- function(what, who = '')
sprintf('%s give %s up', who, what)
After loading the singR
package, the above psuedo-code should work:
> library(singR)
> rep(NA, 11)
[1] NA NA NA NA NA NA NA NA NA NA NA
> give_up(what = it, who = Baby)
[1] "Baby give it up!"
> give_up(what = it)
[1] "Give it up!"
> give_up(what = it, who = Baby)
[1] "Baby give it up!"
> rep(NA, 11)
[1] NA NA NA NA NA NA NA NA NA NA NA
> give_up(what = it, who = Baby)
[1] "Baby give it up!"
> give_up(what = it)
[1] "Give it up!"
> give_up(what = it, who = Baby)
[1] "Baby give it up!"
> verify(give_up(what = it, who = you), times = 2)
[1] "Can you give it up?" "Can you give it up?"
> give_up(what = it)
[1] "Give it up!"
Building on the koRpus
package, we can easily find all the syllables that can be written to the standard output in a timely manner:
sing(
capture.output(
rep(NA, 11),
give_up(what = it, who = Baby),
give_up(what = it),
give_up(what = it, who = Baby),
rep(NA, 11),
give_up(what = it, who = Baby),
give_up(what = it),
give_up(what = it, who = Baby),
verify(give_up(what = it, who = you), times = 2),
give_up(what = it)
)
)
Resulting in:
Using the following note figures, accompany your rythms with lyrics and hear a beeping sound giving you the rythm:
- w : whole note
- wd : whole note, dotted
- h : half note
- hd : half note, dotted
- q : quarter note
- qd : quarter note, dotted
- e : eight note
- ed : eight note, dotted
- t : triplet
- s : sixteenth note
heyjude <- list()
heyjude$lyrics <- c(rep(NA, 11), "Hey", "Hey","Jude")
heyjude$time.pattn <- "h, q, q, s, s, e, hd, s, s, e, h, s, ed, w"
heyjude$tempo <- 60
heyjude$repet <- 8 # I hesitated between this and "Inf"
do.call(what = tap.along, args = heyjude)
NA NA NA NA NA NA NA NA NA NA NA Hey Hey Jude
NA NA NA NA NA NA NA NA NA NA NA Hey Hey Jude
NA NA NA NA NA NA NA NA NA NA NA Hey Hey Jude
(ad infinitum)
But there's a lot more to do: my idea is to create a reference class for it
with a function called give
etc, which will end up in a beautiful, object-oriented R poetry! Or something else.