The (local fingerprints) library is fairly general, and could be used for just about any audio fingerprints that can be thought of as sequences of real numbers.

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      ;;;
      ;;; An R6RS Scheme library for representing audio fingerprints.
      ;;;
      ;;; An audio fingerprint is a record object that records
      ;;;     full path name for the original file
      ;;;     offset in seconds
      ;;;     a vector of integers (the raw fingerprint)
      ;;;     a locality-sensitive hash of that vector
      
      (library (local fingerprints)
      
        (export make-fingerprint
                fingerprint:pathname
                fingerprint:offset
                fingerprint:asVector
                fingerprint:hash
                display-fingerprint
                fingerprint-distance)
      
        (import (rnrs base)
                (rnrs control)
                (rnrs io simple)
                (srfi :9 records)
                (local parameters))
      
        (define-record-type :fingerprint
          (make-fingerprint0 pathname offset vec hash)
          fingerprint?
          (pathname fingerprint:pathname)
          (offset   fingerprint:offset)
          (vec      fingerprint:asVector)
          (hash     fingerprint:hash))
      
        (define (make-fingerprint pathname offset vec)
          (let ((vec (fingerprint-normalized vec)))
            (make-fingerprint0 pathname
                               offset
                               vec
                               (fingerprint-hash vec))))
    

For debugging: Click here to validate.