狠狠撸
Submit Search
Audio QueueでSin波再生
?
6 likes
?
7,891 views
Yuichi Fujishige
Follow
Audio QueueでSin波再生。 第49回 Cocoa勉強会関西の発表資料。
Read less
Read more
1 of 33
Download now
Download to read offline
More Related Content
Audio QueueでSin波再生
1.
Audio QueueでSin波再生 2013.03.30 ふじしげ ゆういち @nakiwo
2.
? ふじしげ ゆういち ?
@nakiwo ? 株式会社フィードテイラー http://feedtailor.jp/ そら案内 8bitter
3.
? ふじしげ ゆういち ?
@nakiwo ? http://www.nakiwo.com/ 洞窟物語 めがね (Mac AppStore)
6.
今日のテーマ ?Audio Queue Services
で Sin波を再生する ?https://github.com/nakiwo/ AudioQueueToneSample
7.
音の再生 ?System Sound Services ?AVAudioPlayer ?Audio
Unit ?Open AL ?Audio Queue Services
8.
Audio Queue Services ?Core
Audio ?AudioToolbox
9.
Audio Queue Services ?なにがうれしいか
10.
Audio Queue Services ?めんどくさいだけかも!
11.
Audio Queue Services ?単純にサウンドファイルを鳴らすだけ なら他の方法をお勧めします。
12.
Audio Queue Services ?録音と再生。今日は再生だけ。
13.
Audio Queue ?オーディオのキュー
14.
Audio Queue ?Audio Bu?erのQueue
15.
Audio Bu?er ?波形のバッファ
16.
?波形バッファに音を詰めてキューに放 り込むと音が鳴る
18.
波形データの フォーマット
19.
http://upload.wikimedia.org/wikipedia/commons/b/bf/Pcm.svg Linear PCM
20.
サンプリングレート:时间轴の解像度
21.
量子化产颈迟数:1サンプルの产颈迟数
22.
サンプル
23.
フレーム L R
24.
パケット ? フォーマット上都合のよいデータの区切り ? Linear
PCMは1パケット1フレーム Packet L R LPCM Packet L R L R L R L R AAC等
25.
Audio Queueで再生 ?AudioQueueNewOutput ?AudioQueueAllocateBu?er ?AudioQueueEnqueueBu?er ?AudioQueueStart ?コールバックが呼ばれるのでバッファ を詰める
26.
AudioQueueNewOutput ?再生するデータのフォーマットとコー ルバックを登録
27.
AudioStreamBasicDescription _outpufFormat; _outpufFormat.mFormatID =
kAudioFormatLinearPCM; _outpufFormat.mSampleRate = 44100; _outpufFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger|kAudioFormatFlagIsPacked; _outpufFormat.mBitsPerChannel = 16; _outpufFormat.mChannelsPerFrame = 1; _outpufFormat.mBytesPerFrame = 2; _outpufFormat.mFramesPerPacket = 1; _outpufFormat.mBytesPerPacket = 2; AudioStreamBasicDescription
28.
AudioQueueNewOutput(&_outpufFormat, audioQueueOutputCallback, (__bridge void *)self, CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &_audioQueue); UInt32
bufferSize = kFramesPerBuffer * _outpufFormat.mBytesPerFrame; for (int i = 0; i < kNumBuffers; i++) { AudioQueueBufferRef buffer; AudioQueueAllocateBuffer(_audioQueue, bufferSize, &buffer); [self audioQueueOutputWithAudioQueue:_audioQueue buffer:buffer]; } AudioQueueStart(_audioQueue, NULL);
29.
static void audioQueueOutputCallback( void
*inUserData, AudioQueueRef inAQ, AudioQueueBufferRef inBuffer) { AppDelegate *object = (__bridge AppDelegate *)inUserData; [object audioQueueOutputWithAudioQueue:inAQ buffer:inBuffer]; } 再生コールバック
30.
- (void)audioQueueOutputWithAudioQueue:(AudioQueueRef)inAQ buffer:(AudioQueueBufferRef)inBuffer { inBuffer->mAudioDataByteSize = _outpufFormat.mBytesPerFrame
* kFramesPerBuffer; float freq = 440.0f; float phasePerSample = freq / kSampleRate; int16_t *sampleBuffer = (int16_t *)inBuffer->mAudioData; for (int i = 0; i < kFramesPerBuffer; i++) { *sampleBuffer = (int16_t)((sinf((float)_frameIndex * phasePerSample * (M_PI*2.0f))) * 32767.0f); sampleBuffer++; _frameIndex++; } AudioQueueEnqueueBuffer(inAQ, inBuffer, 0, NULL); }
31.
?Audio Queue Services Programming
Guide ?WWDC 2010 - Fundamentals of Digital Audio for Mac OS X and iPhone OS
32.
?iPhone Core Audioプログラミング」 ?これを読めば無敵。しかし入手困難
33.
おわり
Download