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))))