blob: cc4abb50f201f66ebd69e95c58d939d1b215d6f4 (
plain) (
blame)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
//
// GenTrig.swift
// PrySDR
//
// Created by Jacky Jack on 26/10/2024.
//
import Foundation
/// Generate sin function as float array
/// - Parameters:
/// - sample_rate: sample rate, how many samples per second
/// - freq: sin frequency
/// - ampl: amplitude
/// - phase: phase of sin
/// - sample_num: number of samples to generate
/// - Returns: Array of floats within range [-ampl ... apml]
///
func genSin(_ sample_rate: Int,_ freq: Int,_ ampl: Float,_ phase: Float,_ sample_num: Int) -> Array<Float32> {
//let one_sec = sample_num/sample_rate
let sample_per_hz:Float32 = Float32(sample_rate)/Float32(freq)
let hz_step: Float32 = 2*Float32.pi/sample_per_hz
var out_signal:[Float32] = Array(repeating: Float(0.0), count: sample_num)
var start = phase
for i in 0..<sample_num {
out_signal[i] = ampl * sin(start)
start += hz_step
}
return out_signal
}
/// Generate Cos function as float array
/// - Parameters:
/// - sample_rate: sample rate, how many samples per second
/// - freq: sin frequency
/// - ampl: amplitude
/// - phase: phase of sin
/// - sample_num: number of samples to generate
/// - Returns: Array of floats within range [-ampl ... apml]
///
func genCos(_ sample_rate: Int,_ freq: Float,_ ampl: Float,_ phase: Float,_ sample_num: Int) -> Array<Float32> {
//let one_sec = sample_num/sample_rate
let sample_per_hz:Float32 = Float32(sample_rate)/Float32(freq)
let hz_step: Float32 = 2*Float32.pi/sample_per_hz
var out_signal:[Float32] = Array(repeating: Float32(0.0), count: sample_num)
var start = phase
for i in 0...sample_num {
out_signal[i] = ampl * cos(start)
start += hz_step
}
return out_signal
}
|