タグ

ブックマーク / objective-audio.jp (9)

  • AVAssetReaderとAVAssetWriter | Objective-Audio

    iOS4.0のAVAssetExportSessionでiPod Libraryからファイルの書き出しができるようになったことは以前のエントリーに書きましたが、さらにiOS4.1からは、AVAssetReaderによって事前にコピーすること無く、直接iPodLibraryのオーディオファイルのデータを生のデータで読み込むことが出来るようになっています。また、AVAssetWriterという、オーディオファイルを作ることの出来るクラスも追加されています。 AVAssetExportSessionMP3などを読み込むのにかなり使い勝手の悪いものだったのですが、AVAssetReaderはExtAudioFile的に簡単に好きなフォーマットに変換していろんなファイルが読み込めるので、かなり良さげな感じです。 ちなみに、ここではオーディオファイルだけを扱いますが、ビデオの読み込みや書き出しも出来

  • iPodライブラリからのファイル書き出し その1 | Objective-Audio

    iOS 4.0になってようやくiPodライブラリにある音楽を生のデータとして扱うことができるようになりましたので、その方法をまとめておきたいと思います。ムービーも同じような方法でできるようですが、とりあえずここではオーディオに限定して説明していきます。ちなみにシミュレータにはiPodライブラリがないので試せません。コードは実機で実行してください。 大まかな手順としては以下のような感じです。 ① MPMediaItemを取得 ② AVURLAssetを生成 ③ AVAssetExportSessionを生成 ④ Exportを実行 では、やっていきましょう。 ① MPMediaItemを取得 MPMediaItemは、iOS3.xのときからありましたのでご存知の方も多いと思いますが、iPodライブラリに中にあるひとつひとつの曲(音楽の場合)の情報をもっているクラスです。これの取得の仕方は、い

  • ngmoco:)直伝 OpenGL高速化テクニック - Objective-Audio

    Perfumeニューアルバム「トライアングル」発売記念エントリー! トライアングルと言えばOpenGLと無理矢理こじつけて、スタンフォード大学の講義でngmoco:)の中の人がOpenGLの高速化テクニックを語っていたので、その内容を自分なりにまとめてみました。 といっても、僕は講義のビデオを見ても英語で何を言ってるのか全然分からないので、あくまでpdfとコードを見て勝手に理解しているだけです。日語の資料がほとんどないプログラミングの世界にもなれてきて、ソースさえあれば大体分かりますしね。 自分でプログラミングしていくうちに経験則で分かっていた事も含まれていましたが、やっぱりプロは徹底的にやっているなぁという感じがします。半年前に知っておけばBigStopWatchつくるのに役立ったのに...。 講義のpdfとサンプルソースは以下のところにありますので、参考にしてください。Appleのi

  • iPod touchのInterruption Callback | Objective-Audio

    iPhoneでアラームとか通話とかが割り込んできてアプリのオーディオが停止してしまうときの通知を受け取るにはAudioSessionでInterruption Callbackを登録するって感じなのですが、サンプルソースなどは以下のようなコードになってまして… void rioInterruptionListener(void *inUserData, UInt32 inInterruption) { AudioUnit *remoteIO = (AudioUnit*)inUserData; if (inInterruption == kAudioSessionEndInterruption) { AudioSessionSetActive(true); AudioOutputUnitStart(*remoteIO); } if (inInterruption == kAudioSessi

  • 文字列のイメージを作成する | Objective-Audio

    OpenGL ESで文字列を表示しようと思ったのですが、OpenGL自体にそんな機能は無さそうなので、テクスチャに文字列を描画する方法を調べてみました。 テクスチャをCGContextから作って貼付けるところはDev Centerのサンプルソースを参考にしていただくとして、その前段階でCGImageの文字列を作成するコードです。 CGRect imageRect; //文字列用の画像の大きさ CGContextRef bitmapContext; //文字列用のコンテキスト Byte *bitmapBuffer; //コンテキストのバッファ というのが用意されているとして、以下のような感じです。 memset(bitmapBuffer, 0, imageRect.size.width * imageRect.size.height * 4); CGContextSetRGBFillColo

  • 再提出 | Objective-Audio

    Touch the Waveのバージョン0.5をApp Storeに再提出しました。 アラートつけるだけだったら一瞬で終わる変更だったんですけど、以前からiPod touch第2世代でまれに再生が止まるという不具合があって、解決するのに時間がかかってしまいました。 どうやら原因は、CALayerだったようです。波形の画像を表示するのにCALayerのcontentsにCGImageを渡して、position.xで動かすってことをやっていたのですが、このposition.xの頻度を上げていくと再生(というかアプリ全体の動作)が止まってしまう確率が高くなるという感じでした。自分のコードが根的に悪かったという可能性もありますが、第1世代だとまったく出ないんですよねぇ。 解決策として、波形の表示をマルッとOpenGLに差し替えてしまいました。OpenGLはまだ研究途中だったのですが、Apple

    griffin-stewie
    griffin-stewie 2008/12/01
    AppleのサンプルソースのaurioというのがOpenGL ESを使っていたので参考にさせてもらいました。
  • さっそくAVAudioPlayerを使ってみた | Objective-Audio

    iPhone OSが2.2にアップデートされまして、Frameworkに新しくAVFoundationなんてものが追加されていました。今のところAVAudioPlayerというAPIしか無いようですが、AVと名がついているだけに今後映像がらみでも機能が増えそうな気がします。 そのAVAudioPlayerを早速試してみたところ、お手軽BGM再生APIという感じのようです。オーディオファイルのパスを渡してやるだけでWAV、AIFF、mp3、AAC、ロスレスあたりはいとも簡単に再生できます。これがあればやたらめんどくさいAudio Queue Serviceなんていりません。 ということでとりあえず再生してみるコードです。バンドルにmp3を入れてから実行すると延々とループして再生します。2つ以上あればミックスして再生されます。ちょっとお行儀の悪いコードですので、そのへんは適当に流してください。

  • NSOperationによるバックグラウンド処理 - Objective-Audio

    NSOperationってCoreAnimationみたいな派手な機能と違って、あまり解説されていない気がするので、使い方を書いておきます。オーディオのアプリケーションでも、読み込んだオーディオファイルの波形の画像をバックグラウンドで作っておいて、出来上がったら表示するみたいな事にも使えると思いますので。(※2008/5/12 記事にNSInvocationOperation等いろいろ修正を加えています。GCなしにも対応のはず。) NSOperationを使う NSOperationのサブクラスのmainメソッドにバックグラウンドで行いたい処理を記述しておき、そのインスタンス(以後、オペレーション)を作成して、NSOperationQueueのインスタンス(以後、キュー)のaddOperationメソッドに渡すと、あとは勝手にバックグラウンドで処理してくれます。キューへ渡した後にオペレーシ

  • ジョグホイール | Objective-Audio

    iPodのクリックホイールのように、グルグルと円を描いて値を増減させる例です。NSViewのサブクラスで以下のような感じに。1周まわすと1.0増減します。 // // YKJogWheelView.h // #import <Cocoa/Cocoa.h> @interface YKJogWheelView : NSView { CGFloat gStartAngle; CGFloat gPreAngle; NSInteger gRotCount; } @end // // YKJogWheelView.m // #import "YKJogWheelView.h" @implementation YKJogWheelView - (id)initWithFrame:(NSRect)frame { self = [super initWithFrame:frame]; if (self) {

    griffin-stewie
    griffin-stewie 2008/10/21
    iPodのクリックホイールのように、グルグルと円を描いて値を増減させる例です。NSViewのサブクラスで以下のような感じに。1周まわすと1.0増減します。
  • 1