-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
42 lines (29 loc) · 1018 Bytes
/
main.py
File metadata and controls
42 lines (29 loc) · 1018 Bytes
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
39
40
41
42
import math
import numpy
from scipy.io import wavfile
def generate_sine_pure_python(num_samples: int, frequency: float) -> list[float]:
values: list[float] = list()
for s in range(0, num_samples):
v = s / num_samples
values.append(math.sin(v * frequency * 2 * math.pi))
return values
def generate_sine_numpy(
duration: float,
frequency: float,
amplitude: float = 1.0,
sample_rate: int = 44100,
) -> numpy.ndarray:
num_samples = int(sample_rate * duration)
angles = numpy.linspace(0.0, duration, num_samples)
values = numpy.sin(angles * frequency * 2 * numpy.pi)
values *= amplitude
return values
def main():
# values = generate_sine(1024 * 1024 * 1024, 4)
# print(values[:16])
values = generate_sine_numpy(amplitude=0.3, duration=2.0, frequency=400)
values += generate_sine_numpy(amplitude=0.3, duration=2.0, frequency=600)
print(values)
wavfile.write("test.wav", 44100, values)
if __name__ == "__main__":
main()