#3 C4で音楽を(割りと自由に)取り回すーC4でAudio Playerをつくる(1)
この記事は「一人アドベントカレンダー2013〜Lonely Advent Calender 2013〜」の2日目の記事です。
前回はC4Timerを使ったサンプルを紹介し、どれだけシンプルにつくることができるかが少しお分かりいただけたのではないかと思います。
今回から4回に渡りC4がメディアの扱いに非常に長けているということを説明するために簡単なAudio Playerを何種類か作ってみようと思います。
Audio関連を扱うC4Sample
クラス
C4でAudio関連を扱うには、C4Sample
クラスを使います。
手っ取り早く音を鳴らすためにはとにかくこのクラスということになります。
C4Sample.hの中身を見てみると、
#import "C4Object.h" #import <AudioToolbox/AudioToolbox.h> #import <AVFoundation/AVFoundation.h> // @interface C4Sample : C4Object <AVAudioPlayerDelegate>
となっており、AVAudioPlayerをラップしたようなクラスになっているようです。
今回、C4Sampleができることを簡単に体験してもらえるようにSampleプロジェクトを用意しました。
といっても、C4WorkSpace.m
を置き換えるだけです。
まず、setupメソッドにて音の再生を開始します。
音源はC4テンプレートからプロジェクトを新規作成すると勝手に含まれている"C4Loop.aif"
を使います。
-(void)setup { sample = [C4Sample sampleNamed:@"C4Loop.aif"]; sample.loops = YES; [sample play];
mediaのファイル名を指定してC4Sample
オブジェクトをつくってplayメソッドを呼ぶだけ。ちゃんと再生されたでしょうか?
rate(再生速度)
pan(左右に振る)
volume(音量)
で遊ぶ
つづいて、再生しているC4Sampleオブジェクトをいじってみましょう。
いじるためのUIの設定をします。
ここでは詳細な説明は省きますが、C4Slider
をつかってrate(再生速度)
pan(左右に振る)
volume(音量)
の値を自由に変えられるようにUIを作っていきます。
-(void)setupUI { //UI(rate) rateSlider = [C4Slider slider:CGRectMake(0, 0, 300, 44)]; rateSlider.center = CGPointMake(self.canvas.width/2, self.canvas.height/4); rateSlider.value = sample.rate - 0.5; [self.canvas addSubview:rateSlider];
slider
に対応するメソッドchangeRate:
を設定します。
//つづき [rateSlider runMethod:@"changeRate:" target:self forEvent:VALUECHANGED]; }
slider
の変更に応じて、C4Sample
のプロパティであるrate
を変化させます。
-(void)changeRate:(C4Slider *)aSlider { sample.rate = aSlider.value + 0.5; }
簡単ですが、主に実装する中身は以上です。
UIまわりでごちゃごちゃと書いていますがslider
の値で今再生している音源を直接操作するというサンプルができました。
今回は以上です。明日は音源のシークとUIの更新を行いたいと思います。