SilentBonusTrackを作成するのに使ったフレームワーク

iPod Library Access
[MPMusicPlayerController applicationMusicPlayer]を使うか[MPMusicPlayerController iPodMusicPlayer]を使うか。
音楽を流しながら、他のアプリを実行する使い方も出来るようにしようと思っていました。
バックグラウンドでも動作させたかったので[MPMusicPlayerController iPodMusicPlayer]にしました。[MPMusicPlayerController applicationMusicPlayer]はバックグランドでの動作は出来ません。
「頭The抜き」「頭a抜き」「頭an抜き」は自作で行っています。

AVQueuePlayer
アプリがバックグラウンドになった時には主導権を剥奪されるので細かい制御をさせることが出来ない。バックグラウンドでA面の曲、空白、AB切り替え、空白、B面の曲という流れを行おうとすると、iPod Libraryの曲と自分で用意した音(形式は曲、中身は空)を一緒のリストにあらかじめ入れて置かないといけない。これがiPod Library Accessの機能でどうやるのかやりかたが見つからず、それらを同列に扱えるものとして、AVQueuePlayerを使う。
こちらに一つのアプリをほぼまるごと解説しているサイトがある。
http://mtl.recruit.co.jp/blog/2012/07/iphone_dev_jpup.html

AudioSession
カテゴリはMediaPlayback。そしてmixOthersプロバティを1にする。
再生すべきものは
AVAudioPlayer-操作音
AVQuerePlayer-空き時間を含めたファイル
iPodからの再生音。
バックグランドになっても再生したかったので、この設定になった。

Core Animation
カセットテープの動きを表現するのに使用。
リールの回転と、テープ巻き込み、白テープと黒テープの切り替え。

Core Text
カセットケースについているインデックスカードで曲の情報を表示します。
やりたいことは
  • 余ったスペースに再生時間表示。スペースが小さい時は次の行へ。
  • 長い曲名は複数行に表示
  • 言語毎にフォントを変える
必要な技術は
  • 文字のポジションを把握する
初めはUILabelを多く作って表示させていましたが、これが出来ないということで、CoreTextによる描画に切り替えました。アルバムのインデックスを書く人はどうかくか、というところを出来るだけ再現したいので。

画像処理
アルバムの色を分析するときに
CoreImageにもいい機能があったが、対象がiOS6からだったので使ってない。

CoreData
各アルバムの情報(停止位置、A/B振り分けなど)を保存するのにCoreDataを使った。
CoreDataを使うほどではないかもしれないが、念の為に。
Webで検索するといくつか解説してあるページが出てくる。中には昔のCoreDataテンプレートから作るものがあるが、今(Xcode4.6.2)はCoreDataテンプレートは無くなっている。出来れば今の仕様に対応したページを参照したい。
やることは
1,モデルエディターでモデル作成
2,ソースコードでCoreDataの用意、登場人物の役割を把握しておけばあとはだいたいコピペでいける。
3,ソースコードで作成、上書き、削除、検索の実行

参考
http://blog.livedoor.jp/d_timps/archives/21535180.html
http://www.yoheim.net/blog.php?q=20120616

レタリング
カセットのアルバムタイトルを書く所はレタリングする場合がよくあり、このアプリでもそれを再現した。
全フォントのデータをベジエ曲線を使って作成し、その各ポイントが斜めの描画面上でどこか計算して描画。単純な計算方法なのでよく見ると改善の余地がある。
とにかく全フォントのデータを打ち込むのが大変だった。とくにS,&,Q,G。H,E,Tなどは一瞬で終わる。

コメント