2015年4月5日日曜日

RIFFT 1

開発環境:AndroidStudio1.1.0

簡単にリフ(音楽のフレーズ)を記録しておけるようなアプリを作ろうかと。
セッションで役立ったりするので。


・音を鳴らす

音ファイルの挿入は実エクスプローラ上でコピーしてオブジェクトエクスプローラのRawへ直接コピー(ドラッグ等は不可、なんだそら)

MediaPlayerは長めの音系、単発でクリック音出したいならSoundPoolを使う。

sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
 第一引数:ロードするファイルの数
 第二引数:ストリームのタイプ
  ストリームタイプ一覧
  AudioManager.STREAM_ALARM アラーム音
  AudioManager.STREAM_MUSIC 音楽音
  AudioManager.STREAM_NOTIFICATION 通知音
  AudioManager.STREAM_RING 着信音
  AudioManager.STREAM_SYSTEM システム音
  AudioManager.STREAM_VOICE_CALL 通話音
 第三引数:サンプリングレートのクオリティを指定します。(デフォルトは0)

(http://ougiitirou.web.fc2.com/AndroidMain/bgm.htmlより)

onCreateでリソースを読むよりアプリがアクティブになるonResumeで読み込みし、
onPauseで解放、がメモリ節約になるそう。ふむふむ。
したがって、onCreateはいたってシンプルにレイアウト読み込みとボタンのリスナ登録のみ。

後々読み込む音が増えてきたときに見直しが必要かも。


・簡易メトロノーム作成まで

4・8・16の3パターンを用意して実験。
ボタンを3つ作っておく。
あと小節区切りの4つ目の音リソースも追加。
ついでにSoundpoolのロードファイル数を1→5へ。
onClick時のイベントでcase分岐、条件はR.idで。

メトロノームなのでBPM調節機能もプログレスバーで実装する。

BPMは、1分間に鳴る四分音符の数なので、BPMがたとえば100なら
音符の間のsleep(msec) = 60sec / 100 = 0.6秒(sleepの引数は600)となる。
これでメトロノームまでは完成。




とりあえず。