Skip to content

Commit 677fc32

Browse files
committed
add support for voice changer
1 parent b2db93e commit 677fc32

5 files changed

Lines changed: 1222 additions & 1 deletion

File tree

macOS/APIExample.xcodeproj/project.pbxproj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
034C629C25295F2800296ECF /* AudioMixing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034C629A25295F2800296ECF /* AudioMixing.swift */; };
4444
034C62A025297ABB00296ECF /* audioeffect.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 034C629E25297ABB00296ECF /* audioeffect.mp3 */; };
4545
034C62A125297ABB00296ECF /* audiomixing.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 034C629F25297ABB00296ECF /* audiomixing.mp3 */; };
46+
034C62A5252ABA5C00296ECF /* VoiceChanger.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 034C62A3252ABA5C00296ECF /* VoiceChanger.storyboard */; };
47+
034C62A6252ABA5C00296ECF /* VoiceChanger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034C62A4252ABA5C00296ECF /* VoiceChanger.swift */; };
4648
036D3A9A24FA395E00B1D8DC /* KeyCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036D3A9924FA395E00B1D8DC /* KeyCenter.swift */; };
4749
036D3A9E24FA3A1000B1D8DC /* LogUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036D3A9D24FA3A1000B1D8DC /* LogUtils.swift */; };
4850
036D3AA024FA40EB00B1D8DC /* VideoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 036D3A9F24FA40EB00B1D8DC /* VideoView.xib */; };
@@ -124,6 +126,8 @@
124126
034C629A25295F2800296ECF /* AudioMixing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AudioMixing.swift; sourceTree = "<group>"; };
125127
034C629E25297ABB00296ECF /* audioeffect.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = audioeffect.mp3; sourceTree = "<group>"; };
126128
034C629F25297ABB00296ECF /* audiomixing.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = audiomixing.mp3; sourceTree = "<group>"; };
129+
034C62A3252ABA5C00296ECF /* VoiceChanger.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = VoiceChanger.storyboard; sourceTree = "<group>"; };
130+
034C62A4252ABA5C00296ECF /* VoiceChanger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VoiceChanger.swift; sourceTree = "<group>"; };
127131
036D3A9924FA395E00B1D8DC /* KeyCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyCenter.swift; sourceTree = "<group>"; };
128132
036D3A9D24FA3A1000B1D8DC /* LogUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogUtils.swift; sourceTree = "<group>"; };
129133
036D3A9F24FA40EB00B1D8DC /* VideoView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VideoView.xib; sourceTree = "<group>"; };
@@ -308,9 +312,19 @@
308312
path = Resources;
309313
sourceTree = "<group>";
310314
};
315+
034C62A2252ABA5C00296ECF /* VoiceChanger */ = {
316+
isa = PBXGroup;
317+
children = (
318+
034C62A3252ABA5C00296ECF /* VoiceChanger.storyboard */,
319+
034C62A4252ABA5C00296ECF /* VoiceChanger.swift */,
320+
);
321+
path = VoiceChanger;
322+
sourceTree = "<group>";
323+
};
311324
036D3AA524FB797700B1D8DC /* Advanced */ = {
312325
isa = PBXGroup;
313326
children = (
327+
034C62A2252ABA5C00296ECF /* VoiceChanger */,
314328
034C629425295F0700296ECF /* AudioMixing */,
315329
034C628D2528327800296ECF /* ChannelMediaRelay */,
316330
034C628825282D5D00296ECF /* JoinMultiChannel */,
@@ -553,6 +567,7 @@
553567
034C62732525A3AC00296ECF /* StreamEncryption.storyboard in Resources */,
554568
0301D31D2507C0F300DF3BEA /* MetalVideoView.xib in Resources */,
555569
034C62692525859F00296ECF /* JoinChannelAudio.storyboard in Resources */,
570+
034C62A5252ABA5C00296ECF /* VoiceChanger.storyboard in Resources */,
556571
034C62A025297ABB00296ECF /* audioeffect.mp3 in Resources */,
557572
03896D3424F8A011008593CD /* Assets.xcassets in Resources */,
558573
03896D3724F8A011008593CD /* Main.storyboard in Resources */,
@@ -696,6 +711,7 @@
696711
03B321DB24FC0D5E008EBD2C /* AgoraCameraSourceMediaIO.swift in Sources */,
697712
034C628A25282D5D00296ECF /* JoinMultiChannel.swift in Sources */,
698713
0301D31B2507B60B00DF3BEA /* CustomVideoRender.swift in Sources */,
714+
034C62A6252ABA5C00296ECF /* VoiceChanger.swift in Sources */,
699715
03267E1A24FF399A004A91A6 /* CustomVideoSourcePush.swift in Sources */,
700716
034C629C25295F2800296ECF /* AudioMixing.swift in Sources */,
701717
0336A1CF250354F600D61B7F /* CustomAudioRender.swift in Sources */,

macOS/APIExample/Commons/AgoraExtension.swift

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,90 @@ extension AgoraEncryptionMode {
104104
return [.AES128XTS, .AES256XTS, .AES128ECB, .SM4128ECB]
105105
}
106106
}
107+
108+
extension AgoraAudioVoiceChanger {
109+
func description() -> String {
110+
switch self {
111+
case .voiceChangerOff:return "Off"
112+
case .generalBeautyVoiceFemaleFresh:return "FemaleFresh"
113+
case .generalBeautyVoiceFemaleVitality:return "FemaleVitality"
114+
case .generalBeautyVoiceMaleMagnetic:return "MaleMagnetic"
115+
case .voiceBeautyVigorous:return "Vigorous"
116+
case .voiceBeautyDeep:return "Deep"
117+
case .voiceBeautyMellow:return "Mellow"
118+
case .voiceBeautyFalsetto:return "Falsetto"
119+
case .voiceBeautyFull:return "Full"
120+
case .voiceBeautyClear:return "Clear"
121+
case .voiceBeautyResounding:return "Resounding"
122+
case .voiceBeautyRinging:return "Ringing"
123+
case .voiceBeautySpacial:return "Spacial"
124+
case .voiceChangerEthereal:return "Ethereal"
125+
case .voiceChangerOldMan:return "Old Man"
126+
case .voiceChangerBabyBoy:return "Baby Boy"
127+
case .voiceChangerBabyGirl:return "Baby Girl"
128+
case .voiceChangerZhuBaJie:return "ZhuBaJie"
129+
case .voiceChangerHulk:return "Hulk"
130+
default:
131+
return "\(self.rawValue)"
132+
}
133+
}
134+
}
135+
136+
extension AgoraAudioReverbPreset {
137+
func description() -> String {
138+
switch self {
139+
case .off:return "Off"
140+
case .fxUncle:return "FxUncle"
141+
case .fxSister:return "FxSister"
142+
case .fxPopular:return "Pop"
143+
case .popular:return "Pop(Old Version)"
144+
case .fxRNB:return "R&B"
145+
case .rnB:return "R&B(Old Version)"
146+
case .rock:return "Rock"
147+
case .hipHop:return "HipHop"
148+
case .fxVocalConcert:return "Vocal Concert"
149+
case .vocalConcert:return "Vocal Concert(Old Version)"
150+
case .fxKTV:return "KTV"
151+
case .KTV:return "KTV(Old Version)"
152+
case .fxStudio:return "Studio"
153+
case .studio:return "Studio(Old Version)"
154+
case .fxPhonograph:return "Phonograph"
155+
case .virtualStereo:return "Virtual Stereo"
156+
default:
157+
return "\(self.rawValue)"
158+
}
159+
}
160+
}
161+
162+
extension AgoraAudioEqualizationBandFrequency {
163+
func description() -> String {
164+
switch self {
165+
case .band31: return "31Hz"
166+
case .band62: return "62Hz"
167+
case .band125: return "125Hz"
168+
case .band250: return "250Hz"
169+
case .band500: return "500Hz"
170+
case .band1K: return "1kHz"
171+
case .band2K: return "2kHz"
172+
case .band4K: return "4kHz"
173+
case .band8K: return "8kHz"
174+
case .band16K: return "16kHz"
175+
@unknown default:
176+
return "\(self.rawValue)"
177+
}
178+
}
179+
}
180+
181+
extension AgoraAudioReverbType {
182+
func description() -> String {
183+
switch self {
184+
case .dryLevel: return "Dry Level"
185+
case .wetLevel: return "Wet Level"
186+
case .roomSize: return "Room Size"
187+
case .wetDelay: return "Wet Delay"
188+
case .strength: return "Strength"
189+
@unknown default:
190+
return "\(self.rawValue)"
191+
}
192+
}
193+
}

0 commit comments

Comments
 (0)