knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(sonicscrewdriver)
SonicScrewdriveR introduces several tools for working with audio data, such as the TaggedWave
and TaggedWaveMC
formats. Inside SonicScrewdriveR the Tagged and non-Tagged versions of Wave
-like objects can be used interchangeably, however this is not necessarily true for functions from other packages.
This guide is aimed both at end users and package developers who want to convert their code to work with SonicScrewdriveR.
# Generate a `Wave` and `TaggedWave` sine w <- tuneR::sine(440) tw <- tagWave(w)
If we try to use a function that expects a Wave
object with a TaggedWave
object, we will get an error.
# This will fail seewave::oscillo(tw)
As an end user you can use the untagWave
function to convert a TaggedWave
object to a Wave
object.
# This will work seewave::oscillo(untagWave(tw))
The untagWave
function can also be used to 'untag' a TaggedWaveMC
object.
To fix this in your own function or package you can make use of inherits()
rather than alternative methods.
# Methods that fail is(w, "Wave") class(w) == "Wave" # Method that works inherits(w, "Wave")
As TaggedWave
inherits from Wave
it can be treated like a Wave
in your code.
The same technique can be used for TaggedWaveMC
objects with inherits(w, "WaveMC")
.
If you want to add a process to a TaggedWave
object you can use the addProcess
method. This can either be called by the end user, or by functions that are aware of the Tagged versions.
# End user using non-Tagged aware function seewave::oscillo(untag(tw)) addProcess(tw, "seewave::oscillo") # Inside a Tagged aware function addProcess( tw, process = "mypkg::functionToCountChannels", output = list(channels = 2) )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.