So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

(AudioToolbox)音を鳴らそう [Xcode 4]

ボタンをタップしたり、何かのアクションが有った時に 音が出てほしいときがありますよね?

そんな時の短い音(効果音)を鳴らしてみましょう。

 09sounddate.png

とはいえ、音を鳴らすだけでもものすごいハードルが高かったです。

いろいろな事を試してみましたが、唯一簡単に音が出せた例でご紹介します。

 

 

1)ウインドーベースの新規プロジェクトを作成する。

  今回は Soundtest というプロジェクト名で作成しています。(解らない場合は以前のログ参照)

 

2)インターフェースビルダー(.xib)でウインドウ内にボタンを設置する。

01UIButton.png

ハッシュファイル(.h)で、ボタンアクションの設定をしておいて下さい。(こちらも解らない場合は以前のログ参照)

 

3)音をコントロールできるようにする。

  ここからがようやく本題です。

 今までにでてこなかったことの重要な内容に関して学びましょう。

 

 

 

『音』を操作・管理する為には、いままでやったままの 基本的に組み込まれているものと、

それ以外に 別の補助するファイルが必要になります。

『AudioToolbox.framework』というフレームワークを取り込んで使用します。

フレームワークというのは、C言語などの基本的なプログラムでは制御できない、そのマシン独自の機能を使用する為の補助パーツです。

それを使い、音や動画を動かしたり、外部装置などをコントロールする事ができるようになるものです。

 

「では、今までは入っていなかったの?」

 

いいえ、いままでも気にしていなかっただけで 色々と自動的に入っていました。

プロジェクトを新規作成した時に、WindowViewベースで作成するように選んだところがありましたよね?

あそこで選んだもので、作業する上で最適なフレームワークを含む基本的なファイルが用意してくれているのです。

02FrameworkWindow.png

上のような画面で確認ができます。(見方は下記で)

では、今回「音」を鳴らす事に必要なフレームワークを導入しましょう。

 

 ・画面左から自分が作成したプロジェクト名を選択

 ・すぐ右の中央の欄のTARGETSから同じプロジェクト名を選択

 ・さらに右の欄の上部のBuild Phasesをえらび「バイナリをライブラリにリンク」を開きます

   (これで現在すでに用意されている基本的なフレームワークを見る事ができます)

 ・必要なフレームワークを導入します。

  今開いたフレームワークのすぐ下にある「+」をクリックします。

03frameworkメニュー.png

 ・上のようなメニューがでてくると思いますので、AudioToolbox.frameworkを探しましょう。

  でも、色々あるのでなかなか見つからない場合は上部の検索エリアで検索して探してみましょう。

04framework検索.png

  見つかったら、選択し右下のボタン「Add」をクリック。

 

05framework実装.png

  実装されると思います。

  左メニューで、FrameWorkフォルダの中にうまく入ってくれない場合は、一度右のリンクより「-」をクリックして

  リンクから外し、AudioToolbox.frameworkをフォルダ内に移動してから ドラック&ドロップで「バイナリ・・・」

  に登録し直してみて下さい。リンクを外さずにAudioToolbox.frameworkだけ移動すると うまく認識しない場合があります。

 

 ・フレームワークがある事をハッシュファイルに教えます。

06 AudioToolbox接続.png

 

  上の写真のように

         #import <AudioToolbox/AudioToolbox.h>

  を追加します。 

 

 

   (これで、音を鳴らす為の準備ができました)

 


 あっ・・・。ボタンアクション忘れた。 2)でやっといてと書いておきながら…

07IBButtonアクション.png

 



4)音を組み込む。

 

  音を導入します。何でも良いのですが、30秒以内の小さな音声ファイルを用意します。

09sounddate.png

 今回はシステムの音声ファイルからコピーしています。(間違って移動や消去してしまわないように 必ずコピーね!)

 左メニューのどこでも良いのですが できればリソースフォルダ(無ければ新規グループで作成)にドラック&ドロップで登録。

10音コピー.png

  プルダウンメニューが表示されたら、一番上のチェックボックスを選択状態にして『Finish』ボタンをクリック。

11リソースにはいった.png

  入りましたね。

  前メニューの一番上のチェックは、今回のプロジェクトフォルダ内にコピーをする為です。

  これをしないと、ただリンクを覚えるだけなので、実際の音ファイルを移動してしまうと探せなくなってしまう

  場合がでてきてしまうため、それを防いでいます。

 

 ・ボタンアクション内に、音を鳴らすコードを入力

12メゾット編集.png

 

 

  メゾットファイルを選び、何も考えずに下記のコードを入力

- (IBAction)UserBut01

{

    SystemSoundID soundID;

    NSURL* soundURL = [[NSBundle mainBundleURLForResource:@"Purr"

                                              withExtension:@"aiff"];

    // AudioServicesCreateSystemSoundID ((CFURLRef)soundURL, &soundID); /*こちらでは動きはするもののエラーが出ます下の行を使用*/

    AudioServicesCreateSystemSoundID ((__bridge CFURLRef)soundURL, &soundID); /*ご指摘ありがとうございました m(__)m */

    [soundURL release];

    AudioServicesPlaySystemSound (soundID);

}

  注)違う音声ファイルを使う場合は、上記の  の部分を書き換えます。
    上はファイルネーム(拡張子無し)
    下は拡張子部分
  これで完成かな?

 

5)【完成】鳴らしてみよう!

 画面上の右向きの三角(ビルド&実行)をクリックして エミューレーターで確認してみよう。
13走らせてみた.png


ボタンを押して音がでたら成功です。
お疲れさまでした。

 

 


っと、メゾットの部分を ちょっとだけ追求しておきましょう。

 

ボタンアクション内に入力した下記のコード

 

    SystemSoundID soundID;

    NSURL* soundURL = [[NSBundle mainBundleURLForResource:@"PurrwithExtension:@"aiff"];

    AudioServicesCreateSystemSoundID ((CFURLRef)soundURL, &soundID);

    [soundURL release];

    AudioServicesPlaySystemSound (soundID);

 

何が何やらですよね?(私にも難しいです)

大まかにいうと、指定した音をシステムサウンド化して再生するものです。


普段、Beep音(警告音)やメールの受信音などでシステムの音を聞いていると思いますが、それと同じ扱いにして再生しようとしているのです。

1行目でシステム音の名前は?を決定し

2行目で鳴らしたい音のアドレスは?(URL)を設定しています。

(長いと切りのいいところで表示だけ切られる場合があります)

3行目で、アドレス指定した音とシステムサウンド名の結合(橋渡し)をしています。この名前で鳴らす音はこちらですとね。

4行目は、(今回簡単にしますが)アドレスの変数領域を解放しています。(いままで無視してましたが大事な作業です。いずれお話を・・・)

5行目で、音を鳴らしなさいと命令を出しています。(ここではじめて音がでます)


使えるサウンドファイルの種類には、約束事があります。使えるもの使えないファイルフォーマットがあります。

ご注意ください。


 


nice!(0)  コメント(2)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 2

R.S

ありがとうございます!
色々音を鳴らすプログラムをやっていたのですが、唯一鳴らすことができました。
ただ一点、
AudioServicesCreateSystemSoundID ((__bridge CFURLRef)soundURL, &soundID);
警告に従って上記の様に一部変更しました。
by R.S (2013-09-16 00:45) 

かのつ

情報ありがとうございます。
(亀レスすいません)

放置気味の情報ばかりで、新しいやり方など色々出てきているようなので 書き換えも含め、記事再会できればと思っています。
by かのつ (2013-10-17 22:33) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。