-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathroll_off.py
37 lines (25 loc) · 930 Bytes
/
roll_off.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import essentia
from essentia.standard import *
import sys
from os import listdir
from os.path import isfile, join
def generate_roll_off(file, file_name, path):
loader = essentia.standard.MonoLoader(filename = file)
audio = loader()
w = Windowing(type = 'hann')
spectrum = Spectrum(size = 4096)
roll_off = RollOff()
pool = essentia.Pool()
for frame in FrameGenerator(audio, frameSize = 2048, hopSize = 512):
c = roll_off(spectrum(w(frame)))
pool.add('lowlevel.roll_off', c)
output = YamlOutput(filename = join(path, 'roll_off', str(file_name) + '.json'), format = 'json')
output(pool)
def main():
mypath = sys.argv[1]
files = [join(mypath, f) for f in listdir(mypath) if isfile(join(mypath, f))]
file_names = [f for f in listdir(mypath) if isfile(join(mypath, f))]
for file, file_name in zip(files, file_names):
generate_roll_off(file, file_name, mypath)
if __name__ == '__main__':
main()