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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
#[cfg(feature = "objc2-audio-toolbox")]
#[cfg(not(target_os = "watchos"))]
use objc2_audio_toolbox::*;
use crate::*;
extern_class!(
/// an AVAudioUnitTimeEffect that can be used to control the playback rate
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/avfaudio/avaudiounitvarispeed?language=objc)
#[unsafe(super(AVAudioUnitTimeEffect, AVAudioUnit, AVAudioNode, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(all(
feature = "AVAudioNode",
feature = "AVAudioUnit",
feature = "AVAudioUnitTimeEffect"
))]
pub struct AVAudioUnitVarispeed;
);
#[cfg(all(
feature = "AVAudioNode",
feature = "AVAudioUnit",
feature = "AVAudioUnitTimeEffect"
))]
extern_conformance!(
unsafe impl NSObjectProtocol for AVAudioUnitVarispeed {}
);
#[cfg(all(
feature = "AVAudioNode",
feature = "AVAudioUnit",
feature = "AVAudioUnitTimeEffect"
))]
impl AVAudioUnitVarispeed {
extern_methods!(
/// controls the playback rate of the audio signal
///
/// Since this unit resamples the input signal, changing the playback rate also changes the pitch.
///
/// i.e. changing the rate to 2.0 results in the output audio playing one octave higher.
/// Similarly changing the rate to 0.5, results in the output audio playing one octave lower.
///
/// The playback rate and pitch can be calculated as
/// rate = pow(2, cents/1200.0)
/// pitch in cents = 1200.0 * log2(rate)
///
/// Where, 1 octave = 1200 cents
/// 1 musical semitone = 100 cents
///
/// Range: 0.25 -> 4.0
/// Default: 1.0
/// Unit: Generic
#[unsafe(method(rate))]
#[unsafe(method_family = none)]
pub unsafe fn rate(&self) -> c_float;
/// Setter for [`rate`][Self::rate].
#[unsafe(method(setRate:))]
#[unsafe(method_family = none)]
pub unsafe fn setRate(&self, rate: c_float);
);
}
/// Methods declared on superclass `AVAudioUnitTimeEffect`.
#[cfg(all(
feature = "AVAudioNode",
feature = "AVAudioUnit",
feature = "AVAudioUnitTimeEffect"
))]
impl AVAudioUnitVarispeed {
extern_methods!(
#[cfg(feature = "objc2-audio-toolbox")]
#[cfg(not(target_os = "watchos"))]
/// create an AVAudioUnitTimeEffect object
///
///
/// Parameter `audioComponentDescription`: AudioComponentDescription of the audio unit to be initialized
///
/// The componentType must be kAudioUnitType_FormatConverter
#[unsafe(method(initWithAudioComponentDescription:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithAudioComponentDescription(
this: Allocated<Self>,
audio_component_description: AudioComponentDescription,
) -> Retained<Self>;
);
}
/// Methods declared on superclass `NSObject`.
#[cfg(all(
feature = "AVAudioNode",
feature = "AVAudioUnit",
feature = "AVAudioUnitTimeEffect"
))]
impl AVAudioUnitVarispeed {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}