Files
AudioStreaming/AudioExample/AudioExample/Controllers/EqualizerViewModel.swift
T
2022-02-27 00:05:15 +02:00

67 lines
1.6 KiB
Swift

//
// EqualzerViewModel.swift
// AudioExample
//
// Created by Dimitrios Chatzieleftheriou on 15/11/2020.
// Copyright © 2020 Dimitrios Chatzieleftheriou. All rights reserved.
//
import AVFoundation
struct EQBand {
let frequency: String
let min: Float
let max: Float
let value: Float
}
final class EqualzerViewModel {
private var bands: [EQBand] = []
private let equalizerService: EqualizerService
var equaliserIsOn: Bool {
equalizerService.isActivated
}
init(equalizerService: EqualizerService) {
self.equalizerService = equalizerService
bands = equalizerService.bands.map { item in
var measurement = item.frequency
var frequency = String(Int(measurement))
if item.frequency >= 1000 {
measurement = item.frequency / 1000
frequency = "\(String(Int(measurement)))K"
}
return EQBand(frequency: frequency, min: -12, max: 12, value: item.gain)
}
}
func enableEq(_ enable: Bool) {
if enable {
equalizerService.activate()
} else {
equalizerService.deactivate()
}
}
func resetEq(updateSliders: (_ value: Float) -> Void) {
equalizerService.reset()
updateSliders(0)
}
func update(gain: Float, for index: Int) {
equalizerService.update(gain: gain, for: index)
}
func numberOfBands() -> Int {
equalizerService.bands.count
}
func band(at index: Int) -> EQBand? {
guard index < numberOfBands() else { return nil }
return bands[index]
}
}