#!/usr/bin/env python3

import audalign as ad

# https://github.com/benfmiller/audalign
# Correlation is more precise than fingerprints
# and will always give a best alignment
# unlike fingerprinting, which can return no alignment.
# max_lags is very important for fine aligning.
# locality can be very useful for all alignments and recognitions.

fingerprint_rec = ad.FingerprintRecognizer()
correlation_rec = ad.CorrelationRecognizer()
cor_spec_rec = ad.CorrelationSpectrogramRecognizer()
# visual_rec = ad.VisualRecognizer() # requires installting optional visrecognize dependencies

fingerprint_rec.config.set_accuracy(3)
# recognizer.config.some_item



r'''
results = ad.align("target/folder/", recognizer=fingerprint_rec)
results = ad.align("target/folder/", recognizer=correlation_rec)
results = ad.align("target/folder/", recognizer=cor_spec_rec)
results = ad.align("target/folder/", recognizer=visual_rec)
results = ad.recognize("target/file1", "target/file2", recognizer=fingerprint_rec)
results = ad.recognize("target/file1", "target/folder", recognizer=fingerprint_rec)
# or
results = ad.target_align(
    "target/files",
    "target/folder/",
    destination_path="write/alignments/to/folder",
    recognizer=fingerprint_rec
)
# or
results = ad.align_files(
    "target/file1",
    "target/file2",
    destination_path="write/alignments/to/folder",
    recognizer=correlation_rec
)

# results can then be sent to fine_align
fine_results = ad.fine_align(
    results,
    recognizer=cor_spec_rec,
)

# TypeError: target_align() got multiple values for argument 'destination_path'
results = ad.target_align(
    "a0",
    "a1",
    "en/a0",
    destination_path="aligned_files",
    recognizer=correlation_rec,
    # recognizer=cor_spec_rec,
)
r'''

recognizer = correlation_rec
# recognizer = cor_spec_rec

results = ad.align("a0", recognizer=recognizer)

print("results", results)