トップ «前の日記(2013-04-04) 最新 次の日記(2013-04-24)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|

2013-04-22 [iOS]耳コピ用AudioPlayer

楽器の練習用にiOSのiPod Libraryに格納されている曲をスロー再生するアプリケーションが欲しくなり自作する事にした。
はるか昔、放送局向けの録音再生アプリケーションを製作した事があって、その時は、再生速度を上げる場合、音声データを間引いた事があったのだが、最新のCoreAudioのAVFoundationでは、自由に再生速度が変更できるようになっているようで、せっかくなので、それを利用しない手はない。
iOSのオーディオ関連のフレームワークは多数あり、かつ、変化も激しく、そして、似た名前の物があるので、一つ一つ、確認しながら作業を進める事にする。

いきなり、主要な機能の曲の再生に取りかかりたいのが人情だが、アプリケーションとしては、曲の選択のUIも重量な機能なので、どんな事が出来るのか、Appleのサンプルコードで確認する事にする。

このサンプルコードから、曲のリストを表示できるようにしてみた。

曲の一覧を取得し、それ表題を配列に格納する。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.songsList = [[NSMutableArray alloc] init];
    self.musicPlayerController = [MPMusicPlayerController iPodMusicPlayer];
    
    MPMediaQuery    *songsQuery = [MPMediaQuery songsQuery];
    NSArray         *mediaItems = [songsQuery items];
    for (MPMediaItem *mediaItem in mediaItems) {
        NSURL   *URL = (NSURL*)[mediaItem valueForProperty:MPMediaItemPropertyAssetURL];
        if (URL) {
            NSString    *title = (NSString*)[mediaItem valueForProperty:MPMediaItemPropertyTitle];
            [self.songsList addObject:title];
        }
    }
}

配列に格納した情報をテーブルに表示する。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}
 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.songsList.count;
}
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"SongsCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    
    NSString    *title = [self.songsList objectAtIndex:indexPath.row];
    cell.textLabel.text = title;
    
    return cell;
}

一覧が表示できた。

songslists

_ ソースコード

GitHubからどうぞ。
https://github.com/murakami/workbook/tree/master/ios/AudioPlayer - GitHub

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

トップ «前の日記(2013-04-04) 最新 次の日記(2013-04-24)» 編集