Skip to contents

Reads audio files from "wav" and "mp3" files, using tuneR::tuneR methods. Commodore Amiga native formats "8svx" and "raw" can also be read.

Usage

# S4 method for class 'character'
read.sample(filename, what = c("wav", "mp3", "8svx", "raw"))

Arguments

filename

A character string representing the filename to be read.

what

A character string indicating what type of file is to be read. Can be one of the following: "wav" (default), "mp3", "8svx" or "raw". The AmigaFFH package needs to be installed in order to read 8svx files.

Value

Returns a PTSample object based on the file read.

Details

This method provides a wrapper for the tuneR::readWave and tuneR::readMP3 methods from tuneR::tuneR. It also provides the means to import audio from file formats native to the Commodore Amiga. Simple 8svx files (also known as "iff" files) can be read. This uses the AmigaFFH::read.iff method from the AmigaFFH::AmigaFFH package. It was also common practice to store audio samples as raw data on the Commodore Amiga, where each byte simply represented a signed integer value of the waveform.

All audio will be coerced to 8 bit mono with a maximum length of 2*0xffff = 131070 bytes (= samples) as per ProTracker standards.

Note

As per ProTracker standards, a sample should have an even length (in bytes). If a sample file has an odd length, a raw 0x00 value is added to the end.

See also

Author

Pepijn de Vries

Examples

data("mod.intro")

f <- tempfile(fileext = ".iff")
## create an audio file which we can then read:
write.sample(PTSample(mod.intro, 2), f, "8svx")

## read the created sample:
snare <- read.sample(f, "8svx")
print(snare)
#> 
#> PTSample Object:
#> 	Sample name:			a.k.a. freeze ii			
#> 	Sample length (samples):	1930	
#> 	Sample length (seconds):	0.116445510791833	
#> 	Sample volume (0-64):		64		
#> 	Loop start position:		0		
#> 	Loop length:			2			
#> 	Finetune:			0