Reads Resource Interchange File Format (RIFF) files from Common Lisp.
Common Lisp
Failed to load latest commit information.
LICENSE.txt Acknowledged Patrick Stein Oct 29, 2015
package.lisp Started adding writing functionality. Oct 27, 2015
riff.lisp Started adding writing functionality. Oct 27, 2015
write.lisp Started adding writing functionality. Oct 27, 2015


The Resource Interchange File Format (RIFF) is a generic file container format for storing data in tagged chunks. It is primarily used to store multimedia such as sound and video, though it may also be used to store any arbitrary data.

I wrote this code as a cross-platform way of processing WAV audio files. (See cl-wav).

Use read-riff-file to load a whole file, returning it's content as a list of chunks, where each chunk is a plist.

Alternatively, open the stream yourself and call read-chunk successively until NIL.

Chunks are represented as plists, with accessor methods defined for chunk-id, chunk-data-size, chunk-data and file-type.


> (ql:quickload :cl-riff)
> (riff:read-riff-file "c:/windows/media/ding.wav")
> (riff:riff-file-type (first *))

> (riff:write-riff-file (riff:read-riff-file "c:/windows/media/ding.wav")


Resource Interchange File Format, Wikipedia

Resource Interchange File Format Services, MSDN

Resource Interchange File Format (RIFF), MSDN


Write functionality by Patrick Stein.