An interactive soundwave player and visualizer with rich set of plugins. It works well with pipe (%>%) and can be used in Shiny. It is an interface of ‘wavesurfer.js’ JavaScript library and it is based on ‘htmlwidgets’ R package.
# install.packages("remotes")
remotes::install_github("Athospd/wavesurfer")
Usage at shiny app:
library(wavesurfer)
library(shiny)
ui <- fluidPage(
wavesurferOutput("my_ws"),
tags$p("Press spacebar to toggle play/pause."),
actionButton("mute", "Mute", icon = icon("volume-off"))
)
server <- function(input, output, session) {
output$my_ws <- renderWavesurfer({
wavesurfer(audio = "http://ia902606.us.archive.org/35/items/shortpoetry_047_librivox/song_cjrg_teasdale_64kb.mp3") %>%
ws_set_wave_color('#5511aa') %>%
ws_spectrogram() %>%
ws_cursor()
})
observeEvent(input$mute, {
ws_toggle_mute("my_ws")
})
}
shinyApp(ui = ui, server = server)
The goal of annotator_app()
is to provide an quick way to one start
annotating their audio. It requires two inputs:
wavs_folder
a string with the path to the wave files folder.annotations_folder
a string with where to store the annotations (as a.rds
contaning atibble
)
# This is a working code!
annotator_app(
wavs_folder = system.file("wav", package = "wavesurfer"),
annotations_folder = tempdir()
)
live app: athos.shinyapps.io/wavesurfer_annotator/
wavesurfer::runExample("annotator")
live app: athos.shinyapps.io/wavesurfer_plugins/
wavesurfer::runExample("plugins")
live app: athos.shinyapps.io/wavesurfer_decoration/
wavesurfer::runExample("decoration")
The main actors that made this package possible were:
- htmlwidgets package;
- This tutorial by Dean Attali and his timevis package from which I copy pasted massively.
- wavesurfer.js library by katspaugh.
- This annotator that inspired me for make the spectrogram visualization for wavesurfer.js 3.0.0. A lot of ctr+C/ctr+V too.
- wikiaves.com.br from where I took audio examples for the showcases.
Thank you very much for your work.