Tag: audio

适用于带有AVFoundation的AVAudioUnitSampler的正确音量信封

如何正确创buildAVAudioUnitSampler的卷信封? 基本上我想添加一个攻击阶段,其中的体积在几毫秒内消失,以避免点击。 另外,我想添加一个释放阶段,以便在播放音符后音量消失。 我到目前为止做了什么: 我设置了一个代表我的采样率的全局计时器。 为此,我使用了一个间隔长度为1个样本的NSTimer(对于样本率44100,一个样本持续时间是1/44100)。 这样一个人不应该听到音量“跳跃”导致“点击”。 也许我需要过采样两倍的采样率。 只要增益低于某个阈值,定时器就会调用一个增加masterGain的函数。 通过将期望和当前增益的差值除以采样率,然后将该值除以所需的衰减时间,来计算增加的​​量。 (在下面的例子中,我使用一个固定的值来简化阅读) 达到阈值后,取出计时器并停止笔记。 – >我认为这种方法非常复杂,尤其是在我使用发布阶段的时候。 请检查我的示例代码。 我用UIButton touchDown来触发弹奏的音符。 请告诉我,如果你知道一个更简单的方法随着时间的推移自动化的价值/build立一个淡入/淡出的体积。 谢谢 import UIKit import AVFoundation class ViewController: UIViewController { var engine: AVAudioEngine! var sampler: AVAudioUnitSampler! var error: NSError? var timer: NSTimer = NSTimer() override func viewDidLoad() { super.viewDidLoad() engine = AVAudioEngine() sampler = AVAudioUnitSampler() engine.attachNode(sampler) engine.connect(sampler, to: […]

在AudioUnit中内置哪些可以重新采样audio?

我有一个应用程序需要快速改变audio采样率。 通过对样本进行简单的线性插值导致的音高偏移是完全正确的。 是否有一个audio单元实时重新采样软件(即:不需要改变硬件采样率)。

iOS xcode4 AVQueuePlayer不能播放声音

我试图在iPhone4上使用AVQueuePlayer播放.m4a声音文件,但是没有声音。 如果我用相同的文件尝试AudioServicesPlaySystemSound,所有的作品没关系。 这是代码。 (AVFoundation framework is installed.) #import <AVFoundation/AVFoundation.h> -(void) play_sound_file: (NSString *) sound_file_m4a { printf("\n play_sound_file 1: '%s' ", [sound_file_m4a UTF8String] ); AVPlayerItem *sound_file = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:sound_file_m4a ofType:@"m4a"]]]; AVQueuePlayer *player = [AVQueuePlayer queuePlayerWithItems:[NSArray arrayWithObjects:sound_file, nil]]; [player play]; return; } 最新的代码截至2012年8月28日………..(注意:两个声音文件均可与AudioServicesPlaySystemSound配合使用) AVPlayerItem *sound_file1 = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[[NSString alloc] […]

在Xcode 7中播放audio/ Swift 2不工作

我目前在Xcode 7 beta 4上使用Swift 2,试图播放audio。 我的代码中没有出现任何错误,但是当按下播放button时,audio不能播放。 我弄不清楚什么是错的。 import UIKit import AVFoundation class VesuviusViewController: UIViewController { @IBOutlet weak var PausePlay: UIButton! func playVes() { do { _ = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Ves", ofType: "m4a")!)) } catch { print("Error") } } @IBAction func playButtonPressed(sender: AnyObject) { playVes() } override func viewDidLoad() { super.viewDidLoad() // Do any additional […]

.aifaudio文件转换的kAudioFormat?

我想从AAC格式转换/保存audio文件为AIFFaudio格式。 默认我想用LineraPCM。 。 但audio格式保存为AAC格式。 。 我想以AIFF格式保存audio文件。这是我的代码 NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey, [NSNumber numberWithFloat:44100.0], AVSampleRateKey, [NSNumber numberWithInt:2], AVNumberOfChannelsKey, [NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey, [NSNumber numberWithInt:16], AVLinearPCMBitDepthKey, [NSNumber numberWithBool:NO], AVLinearPCMIsNonInterleaved, [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey, [NSNumber numberWithBool:NO], AVLinearPCMIsBigEndianKey, nil]; 任何人都可以请kAudioFormat或audio设置的build议来使用AVAssetWriterInput写入文件保存在AIFFaudio格式?

如何更改iPhone发送到蜂窝networking的语音数据?

我有这个代码,在iPhone中logging一个语音电话。 我想要的是改变到蜂窝networking的数据。 具体来说,我想我需要访问语音数据,他们是调制在DSP,并准备发送到蜂窝networking。 我想对已调制的数据应用一些stream密码。 这是正确的类寻找? 任何build议,欢迎。 如何在iOS上录制对话/电话? #import <AudioToolbox/AudioToolbox.h> #import <libkern/OSAtomic.h> //CoreTelephony.framework extern "C" CFStringRef const kCTCallStatusChangeNotification; extern "C" CFStringRef const kCTCallStatus; extern "C" id CTTelephonyCenterGetDefault(); extern "C" void CTTelephonyCenterAddObserver(id ct, void* observer, CFNotificationCallback callBack, CFStringRef name, void *object, CFNotificationSuspensionBehavior sb); extern "C" int CTGetCurrentCallCount(); enum { kCTCallStatusActive = 1, kCTCallStatusHeld = 2, kCTCallStatusOutgoing = […]

在更改为3.1.0之后,PhoneGap不会播放声音

我有一个phonegap应用程序,播放声音,当你点击和图标。 它工作正常之前我升级我的phonegap内部版本从2.9.0到3.1.0(ios 7构build支持)。 这是我的代码 //Play Audio function playAudio(src) { if (device.platform == 'Android') { src = '/android_asset/www/' + src; } var media = new Media(src, success, error_error); // Set Volume media.setVolume('0.7'); media.play(); } function success() { // Default the icon $('#sound-icon').removeClass('sound-icon-active').addClass('sound-icon-default'); //Ga tracking ga_storage._trackEvent('Sound Played', 'Play', 'Sound Played succesfully.'); } 代码神秘地停止工作。 我可以在这里丢失一些东西,或者在iOS SDK中有什么改变 编辑:我解决了这个问题根据来自Dawson Loudon的input,在电话3.x你必须包括不同的插件访问设备的具体function。 […]

当spritekit swift中的节点被触摸时声音不播放

点击一个节点时,我想要一个声音。 目前的代码是: let sndButtonClick = SKAction.playSoundFileNamed("button_click.wav", waitForCompletion: false) 从触动开始 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { for touches: AnyObject in touches { let location = touches.locationInNode(self) if playButton.containsPoint(location) { playButton.runAction(sndButtonClick) playButton.removeFromParent() let nextScene = GamePlayMode(size: self.scene!.size) nextScene.scaleMode = self.scaleMode self.view?.presentScene(nextScene) } } 我做了两个在gameplaymode节点相同的事情,它的工作原理,但在主菜单不起作用! 我试过了 self.runAction(sndButtonClick) 然后 playbutton.runAction(sndButtonClick) 两个都没有工作

EZAudio:如何从FFT窗口大小(希望更高的频率分辨率)中分离缓冲区大小。

https://github.com/syedhali/EZAudio 我已经成功地使用了这个audio库,但是现在我想提高读入的麦克风数据的分辨率,以便FFT分辨率或频率分辨率降低到10Hz。 要做到这一点,我需要一个缓冲区大小为8820而不是512.麦克风的缓冲区大小和FFT窗口大小是否可分开? 我看不到一个方法来分开它。 如何设置audiostream描述,以便能够用更大的窗口计算FFT? 任何帮助将非常感激。

从iOS上的“audio单元渲染过程”触发UI代码

我有一个多通道混音器audio单元在iOS应用程序中播放audio文件,我需要弄清楚如何更新应用程序的用户界面,并执行重置,当callback命中最长的audio文件的结尾(设置为在公共汽车0上运行)。 由于我的代码如下所示,我正在尝试使用KVO来实现此目的(使用布尔variablestapesUnderway – tapesUnderway是必要的,因为此Objective-C代码在其正常域之外运行,请参阅http://www.cocoabuilder.com/ archive / cocoa / 57412-nscfnumber-no-pool-in-place-just-leaking.html )。 static OSStatus tapesRenderInput(void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData) { SoundBufferPtr sndbuf = (SoundBufferPtr)inRefCon; UInt32 bufferFrames = sndbuf[inBusNumber].numFrames; AudioUnitSampleType *in = sndbuf[inBusNumber].data; // These mBuffers are the output buffers and are empty; these two lines are just setting the […]