1#!/usr/bin/env python3
2
3import numpy as np
4import librosa
5import math
6import sys
7
8print("Loading file")
9audio, sample_rate = librosa.load(sys.argv[1], duration=60, offset=0, sr=15360)
10
11print("Getting spectrum")
12spectrum = librosa.stft(audio)
13S = np.abs(spectrum)
14
15fout = open("spectrum.h", "w")
16
17print("Writing file")
18fn = 36
19fs = int(len(S) / fn)
20fout.write("const uint16_t spectrum[][4] = {\n")
21for t in range(0,len(S[0]-1)):
22  fout.write("{ ")
23  f_prev = 0
24  for f in [8, 45, 300, 600]:
25    v = 0
26    for i in range(f_prev, f): v += S[i][t]
27    if v != 0: v = int(v/30)
28    if v < 0:  v = 0
29    f_prev = f
30    fout.write(str(int(v)) + ", ")
31  fout.write("},\n")
32fout.write("};\n")
33fout.close()
34
35print("Finished")