PiCoGen / sheetsage /align.py
Vansh Chugh
vendor jukebox+sheetsage source and recovered weights, use_jukebox=True
ff7b988
Raw
History Blame Contribute Delete
885 Bytes
import numpy as np
from scipy.interpolate import interp1d
def _extrapolating_linear_interp1d(a, b, safe=True):
if safe:
if isinstance(a, np.ndarray):
a = a.tolist()
if isinstance(b, np.ndarray):
b = b.tolist()
if a != sorted(a):
raise ValueError()
if b != sorted(b):
raise ValueError()
if len(a) != len(b):
raise ValueError()
if len(np.unique(a)) != len(a):
raise ValueError()
if len(np.unique(b)) != len(b):
raise ValueError()
return interp1d(a, b, kind="linear", fill_value="extrapolate")
def create_beat_to_time_fn(beats, times, safe=True):
return _extrapolating_linear_interp1d(beats, times, safe=safe)
def create_time_to_beat_fn(beats, times, safe=True):
return _extrapolating_linear_interp1d(times, beats, safe=safe)