iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
30秒以下の音声ファイルを再生するサービスで、主に警告音や操作音に使用される。
追加するフレームワークは『AudioToolbox.framework』。インポートするヘッダ・ファイルは『AudioToolbox/AudioToolbox.h』だ。
beep.aifファイルを再生するコードは、以下のとおり。
NSString *path = [[NSBundle mainBundle] pathForResource:@"beep" ofType:@"aif"];
NSURL *fileURL = [NSURL fileURLWithPath:path];
SystemSoundID systemSoundID;
AudioServicesCreateSystemSoundID((CFURLRef)fileURL, &systemSoundID);
AudioServicesPlaySystemSound(systemSoundID);
beep.aif ファイルのパスから NSURL 変数を生成して、 AudioServicesCreateSystemSoundID() でNSURL 変数に関連づけられた SystemSoundID 変数を取得する。この SystemSoundID 変数を AudioServicesPlaySystemSound() に渡すと再生される。
一度、再生したら停止するのではなくて、ループ再生させたい場合は、再生の停止時に呼ばれるコールバック関数を設定すれば行える。
- (void)viewDidLoad
{
:
AudioServicesAddSystemSoundCompletion(self.systemSoundID,
NULL,
NULL,
MyAudioServicesSystemSoundCompletionProc,
self);
:
}
static void MyAudioServicesSystemSoundCompletionProc(SystemSoundID ssID, void *clientData)
{
SystemSoundServicesViewController *systemSoundServicesViewController
= (SystemSoundServicesViewController *)clientData;
:
AudioServicesPlaySystemSound(systemSoundServicesViewController.systemSoundID);
:
}
System Sound Services はループ再生をすることは出来るが、録音機能はなく、正確に指定された周期で、指定したタイミングに再生するという観点からは、ループペダルの実装は難しいと思われる。