{howler}
is a package that utilises the howler.js library to play audio on the modern web.
This package is not yet available on CRAN. To install the latest version:
install.packages("devtools") devtools::install_github("ashbaldry/howler")
The HTML way to include an audio file in any shiny application/web page is to use the <audio>
tag. This can generally only handle one audio file, and cannot (easily) be manipulated from the server side.
tags$audio(src = "audio/sound.mp3", type = "audio/mp3", autoplay = NA, controls = NA)
howler.js uses the Web Audio API, and with this we are able to create an audio player that can solve both of the above issues and more:
library(shiny) library(howler) ui <- fluidPage( title = "howler Example", howler( elementId = "sound", tracks = list("Track 1" = "audio/track_1.mp3", "Track 2" = "audio/track_2.mp3"), auto_continue = TRUE, auto_loop = TRUE, seek_ping_rate = 1000 ), howlerPreviousButton("sound"), howlerPlayPauseButton("sound"), howlerNextButton("sound") ) server <- function(input, output, session) { observe({ req(input$sound_seek) if (round(input$sound_seek) == 10) { pauseHowl("sound") } else if (round(input$sound_seek) == 20) { changeTrack("sound", "Track 2") } }) } shinyApp(ui, server)
The {howler}
package also includes a lightweight module howlerModuleUI
and howlerModuleServer
that adds a bit of styling to replicate the style of a standard <audio>
HTML player.
All examples are available in the Examples directory and can be run locally by installing the {howler}
package:
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.