Tag: audio

多个DCSliders发送不同的控制值(Xcode)

这个问题可能是非常具体的,但我是新来的,真的需要一些帮助。 我正在构buildiPhone合成应用程序。 我正在使用DCSliders一个DCKnobs(他们看起来比标准的UISliders更好)。 https://github.com/domesticcatsoftware/DCControls#readme 我也在使用libpd(一个纯数据库),所以audioDSP由一个embedded式纯数据补丁处理。 https://gitorious.org/pdlib 我的界面中有多个DCSliders和DCKnobs。 我可以通过将一个类作为DCSlider的委托,将控制值从滑块/旋钮发送到Pure Data … – (void)loadView { [super loadView]; self.mySlider = [[[DCSlider alloc] initWithDelegate:self] autorelease]; self.mySlider.frame = CGRectMake(10.0, 10.0, 20.0, 120.0); [self.view addSubview:self.mySlider]; } 然后我实现一个方法来发送控制值到接收器在纯数据… – (void)controlValueDidChange:(float)value sender:(id)sender { [PdBase sendFloat:value toReceiver:@"beatvol"]; } 这一切工作正常。 问题是,所有的滑块发送相同的控制值。 我如何让每个DCSliders在纯数据中向独立的接收器发送独立的控制值?

iOS:如何产生超声波?

我想从iPhone设备产生超声波声音。 如何在Cocoa Touch / Obj-C中做到这一点?

如何读取Objective-C for iOS中的audio文件的属性?

如何在Objective-C for iOS中以编程方式获取audio文件的属性(如通道数量,采样率和比特率)?

为什么iOS上的Codename One将audio录制为CAF?

我的问题是关于这个其他SO问题 。 我试图通过Capture.captureAudio()在iOS中录制audio。 它输出一个audio文件,可以在计算机上读取,但在iOS(iPhone 4S)和Android上都不能。 ffmpeg -i得出: Input #0, caf, from 'myFile.m4a': Duration: 00:00:07.04, start: 0.000000, bitrate: 37 kb/s Stream #0:0: Audio: aac (aac / 0x20636161), 16000 Hz, mono, s16, 23 kb/s 如果我通过Voice Recorder应用程序loggingiOS的文件,我从ffmpeg获得: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Test.m4a': Metadata: major_brand : M4A minor_version : 0 compatible_brands: M4A mp42isom creation_time : 2017-04-03 19:01:32 date : […]

如何正确填充立体声AudioBuffer

所以我使用苹果公司的MixerHost示例代码为立体声合成做一个基本的听觉设置。 我有一些麻烦,搞清楚如何填补缓冲区。 具体来说,我只在左声道中获取audio,右声道是沉默的: AudioUnitSampleType *buffer = (AudioUnitSampleType *)ioData->mBuffers[0].mData; SInt16 sampleValue; for(UInt32 i = 0; i < inNumberFrames; i++) { sampleValue = sinf(inc) * 32767.0f; // generate sine signal inc += .08; buffer[i] = sampleValue; } if(inc > 2e10) inc -= 2e10; 这在左声道上播放正弦波…音调types每10秒左右改变一次,另一个指标是我做错了:] 我已经尝试了其他的方法来通过数组。 这产生了离正弦信号很远的有趣声音。 有一次,我在两个频道上都输出了糟糕/不连贯的结果,这有点像成功。 如果我检查AudioBuffer结构,它确认有2个通道,每帧的字节数是4.所以每帧有两个SInt16,对吧? 一个用于左侧,另一个用于右侧通道..他们应该交错? 请注意,我使用的是与Apple示例不同的stream格式,因为我不知道定点math。 stream格式设置如下: size_t bytesPerSample = sizeof (AudioUnitSampleType); stereoStreamFormat.mFormatID […]

从audio数据均衡器

我有一个mp3文件,所以我需要播放它,并显示一个均衡器(如附图)。 所以玩不是问题,但是我不知道如何根据频率来测量当前播放样本的dBs的功率。 通过哪些步骤,我可以获得显示当前采样的dBs的数据? 据我猜,我需要以不同的频率获得一些权力,对吗? 这里是我想要实现的例子: https://www.youtube.com/watch?v=7oeb-OIOe-0 https://www.youtube.com/watch?v=PwmUhTDr0Y0

AVAssetReader和AudioFileReadPackets如何读取audio之间的区别

考虑从audio文件读取/写入数据的这两种情况(用于通过networking发送): 场景1:audio文件服务: 从audio文件服务使用AudioFileReadPackets 。 这会生成您可以通过networking轻松发送的audio数据包。 在接收端使用AudioFileStreamOpen和AudioFileStreamParseBytes来parsing数据。 AudioFileStreamParseBytes然后有两个callback函数: AudioFileStream_PropertyListenerProc和AudioFileStream_PacketsProc 。 当在stream中发现一个新的属性,并分别从stream接收到数据包时,这些家伙被调用。 一旦你收到数据包,你可以使用audio队列服务将它提供给audio队列,播放文件就好了。 注意:此方法不适用于存储在iPod库中的音乐文件,这会将我们带到第二个场景: 场景2:AVAssetReader: 借助AVAssetReader,您可以从iPod音乐库中读取数据并通过networking发送数据包。 通常情况下,您将直接在类似于上面的audio队列中加载数据包。 但是,在这种情况下,您将不得不创build一个线程,以确保在队列已满时阻止接收数据包,并在队列缓冲区可用时解除阻塞(请参阅此示例)。 题: 是否有可能使用AVAssetReader发送数据包,只有通过AudioFileStreamParseBytes读取? (动机是AudioFileStreamParseBytes的callback将处理线程/阻塞业务,并节省您的痛苦)。 我试图这样做: 1.首先使用AVAssetReader读取audio文件 //NSURL *assetURL = [NSURL URLWithString:@"ipod-library://item/item.m4a?id=1053020204400037178"]; AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL:assetURL options:nil]; NSError * error = nil; AVAssetReader* reader = [[AVAssetReader alloc] initWithAsset:songAsset error:&error]; AVAssetTrack* track = [songAsset.tracks objectAtIndex:0]; // Note: I don't supply an […]

本地通知声音没有播放?

我遇到了本地通知的问题,他们没有播放声音。 我用默认的和自定义的那个进行了testing,显然是我想玩的,但没有任何东西! 我看了很多人面对这个问题,但他们的解决scheme没有为我工作。 UILocalNotification *local – (IBAction)Dateaction:(id)sender { local = [[UILocalNotification alloc]init]; local.timeZone = [NSTimeZone defaultTimeZone]; local.alertBody = [NSString stringWithFormat:@"%@ Recuerda que tienes que: %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"user"], [[NSUserDefaults standardUserDefaults] objectForKey:@"selected"]]; local.fireDate = [self.DatePicker date]; /* if ([[self.userdefaults objectForKey:@"sound"]isEqualToString:@"sound1"]) { local.soundName = @"sound1.caf"; }else if([[self.userdefaults objectForKey:@"sound"]isEqualToString:@"sound2"]){ local.soundName = @"sound2.caf"; }else if([[self.userdefaults objectForKey:@"sound"]isEqualToString:@"sound1"]){ local.soundName = @"sound3.caf"; […]

Cordova媒体插件打破了iOS上的HTML5audio标签

我正在研究一个离子应用程序,现在面临一个奇怪的问题。 在视图上,我可以录制audio。 在同样的观点,我有很多的HTML5audio标签。 audio标签运作良好,直到我开始logging。 一旦startRecord执行,我不能再播放HTML5audio。 播放button不起作用。 录制的audio录制得很好,重新启动我的应用程序,我可以播放它,就像在页面上的其他audio。 Android上没有这个问题 我认为每件事情都做得很好(我已经读过,在iOS上你必须使用HTML5 APi在filesytem上创build文件,我没有成功),我在录制后发布媒体(但问题发生在stopRecord)。 有人曾经有过这个问题吗? 任何线索? Cordova:5.1.1插件媒体:1.0.2 iOS:8.3 问候,

使用AVAudioTime调度将来播放的audio文件

我试图找出如何纠正在不久的将来安排一个audiofile。 我的实际目标是发挥同步化的多个轨道。 所以如何正确configuration'aTime',从现在开始大约0.3秒。 我想我可能也需要hostTime,但我不知道如何正确使用它 func createStartTime() -> AVAudioTime? { var time:AVAudioTime? if let lastPlayer = self.trackPlayerDictionary[lastPlayerKey] { if let sampleRate = lastPlayer.file?.processingFormat.sampleRate { var sampleTime = AVAudioFramePosition(shortStartDelay * sampleRate ) time = AVAudioTime(sampleTime: sampleTime, atRate: sampleRate) } } return time } 这是我用来开始播放的function: func playAtTime(aTime:AVAudioTime?){ self.startingFrame = AVAudioFramePosition(self.currentTime * self.file!.processingFormat.sampleRate) let frameCount = AVAudioFrameCount(self.file!.length – self.startingFrame!) […]