-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
38 lines (31 loc) · 914 Bytes
/
main.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
38
import acoustics as ac
import numpy as np
def generate_sample(
sec : int = 10,
sample_rate : int = 44100,
color: str = 'white',
weight: str = 'A',
) -> ac.Signal:
samples = ac.generator.noise(sec * sample_rate, color = color)
return ac.Signal(samples, sample_rate).weigh(weight)
def bandpass_filter(
samples : ac.Signal,
lowcut : int = 20,
highcut : int = 20000,
) -> ac.Signal:
return samples.bandpass(lowcut=lowcut, highcut=highcut)
def save_sample(
samples: ac.Signal,
db : int = 60,
file_name: str = 'sample',
):
current_db = samples.leq()
gain_db = db - current_db
samples = samples.gain(gain_db)
samples.to_wav(file_name + '.wav')
def run():
sample = generate_sample()
sample = bandpass_filter(sample)
save_sample(sample)
if __name__ == '__main__':
run()