AnhP's picture
Upload 170 files
1e4a2ab verified
raw
history blame
638 Bytes
import torch
import scipy.stats
CENTS_PER_BIN, PITCH_BINS = 5, 1440
def bins_to_frequency(bins):
if str(bins.device).startswith("ocl"): bins = bins.to(torch.float32)
cents = CENTS_PER_BIN * bins + 1997.3794084376191
return 10 * 2 ** ((cents + cents.new_tensor(scipy.stats.triang.rvs(c=0.5, loc=-CENTS_PER_BIN, scale=2 * CENTS_PER_BIN, size=cents.size()))) / 1200)
def frequency_to_bins(frequency, quantize_fn=torch.floor):
return quantize_fn(((1200 * torch.log2(frequency / 10)) - 1997.3794084376191) / CENTS_PER_BIN).int()
def seconds_to_samples(seconds, sample_rate):
return seconds * sample_rate