iOS用の音楽系アプリ「My Chord」をリリースしました。
私事の告知になりますが、下記のiOS用アプリをリリースしました。
ご興味ある方はぜひダウンロードして使ってみてください。
【アプリ名】
My Chord
【アプリの概要】
ピアノやギターの音で簡単にコード(和音)を鳴らすことができるアプリです。
作曲でコード進行やメロディを考えたり手軽に伴奏したい時などに使ってください。
【アプリの説明】
・機能
コード(和音)の変更
音色切り替え[ Piano, Guitar, Strings ]
タップしたコード履歴の表示、保存、読み込み
スライダーで音量調節
コード履歴のコピー、シェア
・主な使い方
コードのボタンをタップしてコードを鳴らします。
Editボタンでボタンごとにコードを変更することができます。
赤丸ボタンでタップしたコードの履歴を表示し、気に入ったコード進行が出来たらSaveボタンで保存できます。
Menuボタンで音色の切り替えと過去に保存したコード履歴を見ることができます。
Deleteボタンの長押しで表示中のコード履歴を一括削除できます。
・価格
無料です
・動作環境
iOS7 以上
iPhone と iPod touch
・App Storeリンク
https://itunes.apple.com/jp/app/my-chord/id953517029?mt=8
Cocos2d-x v3.3のAndroid NDK対応バージョンについて
1週間ほど前に、Cocos2d-x-v3.3のfinalがリリースされています。
Cocos2d-x 3.3 Final Released: Smaller Size, More 3D Features, New Audio Engine | Cocos2d-x
このニュースの記事を見ると、どうやらv3.3からAndroid NDK r10c 以上の利用を推奨しています。
Android5.0のバグに対応するのが推奨の理由のようですが、Android5.0の端末を持っていないので確認できていません。
自分の開発環境では、NDK r9dでCocos2d-x-v3.3を使っていますが、今のところ問題はない感じです。
最新版Android NDKのダウンロードリンクはここです
Android NDK | Android Developers
この記事を書いている時点では、最新版はNDK r10dとなっていました。
iBeaconの動作テスト用サンプルコード
個人的にiBeaconの検証した時のソースコードが残っていたので、iOS8対応の処理などを追加して基本自分用にGitHubに上げてみました。
iPhone2台を使った動作テスト用になります。
ご使用や改変などはご自由にどうぞ。
iBeaconの送信側、受信側の基本的な動作は確認できる状態になっていると思いますが、テストのパターンも定まっていなかったので、細かくテストはしていません。バックグラウンドやローカル通知関連の処理など配慮が不足している箇所や修正が必要な可能性がありますので、ご使用の際はご注意ください。
ペリフェラル用サンプル(Beacon送信側)
GitHub - travitu/iBeaconPeripheralSample
セントラル用サンプル(Beacon受信側)
GitHub - travitu/iBeaconCentralSample
SSZipArchiveでパスワード付きzipファイルを扱う
iOSアプリ開発でパスワード付きのzipファイルを扱う機会があったので、
SSZipArchiveというライブラリが便利そうだったので、扱い方のメモになります。
- SSZipArchiveのライブラリをダウンロード
- ダウンロードしたライブラリをプロジェクトに追加
- libz.dylibを追加
- パスワード付きzipファイルの用意
- 実装の解説
- サンプルコード
1. SSZipArchiveのライブラリをダウンロード
GitHub - ZipArchive/ZipArchive: ZipArchive is a simple utility class for zipping and unzipping files on iOS and Mac.
2. ダウンロードしたライブラリ内のSSZipArchiveフォルダごとプロジェクトに追加
3. プロジェクトのTARGETS>Build Phases>Link Binary With Libraries でlibz.dylibを追加
4. パスワード付きzipファイルの用意
ここではテストでphoto1.zipというzipファイルを用意しました。
中身はphoto1.jpgという画像ファイルです。
このzipファイルをプロジェクトに追加しておきます。
photo1.jpg→photo1.zipへのパスワード付きzip圧縮は、Macのターミナルで以下のコマンドで行いました。
$ zip -e -r photo1.zip photo1.jpg
5. 実装
#import "SSZipArchive.h"を記述して実装していきます。
パスワード付きzipを解凍するSSZipArchiveのメソッド
// Unzip + (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination overwrite:(BOOL)overwrite password:(NSString *)password error:(NSError **)error delegate:(id<SSZipArchiveDelegate>)delegate;
この他にも、SSZipArchive.hでいくつかメソッドが宣言されていますが、今回はこれを利用しました。
引数の種類はこんな感じです
unzipFileAtPath: プロジェクトに追加したzipファイルのパスの文字列
toDestination: 解凍したzipの中身を展開する場所のパスの文字列
overwrite: 上書きを許可するかどうかのBOOL値
password: zipのパスワードの文字列
error: エラー参照の設定
delegate: デリゲートの設定
デリゲートを設定しておけば、zip解凍の処理が完了した時に以下のメソッドが呼ばれるので、ここでzipの中身のファイルを読み込んで利用する処理を実装します。
- (void)zipArchiveDidUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo unzippedPath:(NSString *)unzippedPath
6. サンプルコード
例として、ViewController.m内に実装してみました。
#import "ViewController.h" #import "SSZipArchive.h" @interface ViewController () <SSZipArchiveDelegate> @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // パスワード付きzipを解凍する NSString *zipFilePath = [[NSBundle mainBundle] pathForResource:@"photo1" ofType:@"zip"]; NSString *destinationPath = NSTemporaryDirectory(); NSString *password = @"12345"; NSError *error = nil; [SSZipArchive unzipFileAtPath:zipFilePath toDestination:destinationPath overwrite:YES password:password error:&error delegate:self]; if (error) { // エラーが発生した場合 NSLog(@"error:%@", error); } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - SSZipArchiveDelegate - (void)zipArchiveDidUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo unzippedPath:(NSString *)unzippedPath { // 解凍したzipファイルから画像ファイルを読み込んでUIImageViewに設定する NSString *filePath = [NSString stringWithFormat:@"%@/photo1.jpg",unzippedPath]; NSData *photoData = [NSData dataWithContentsOfFile:filePath]; self.imageView.image = [UIImage imageWithData:photoData scale:[[UIScreen mainScreen] scale]]; }
今回のサンプルコード
GitHub - travitu/ZipArchiveSample
Cocos2d-x v3.2のAndroid NDK対応バージョンについて
Cocos2d-x v3.2の正式版がリリースされたので、Androidの開発環境もついでにアップデートしようと思い、EclipseとAndroid SDKとAndroid NDKの最新版を入れてみました。
その過程で、Android NDKのバージョンがここ
Android NDK | Android Developers
にあるのですが、どのバージョンがよいか少し迷ったのでメモを。
Mac OS X 64bit環境では、「android-ndk64-r10-darwin-x86_64.tar.bz2」というNDKが最新版になりますが、調べてみると、Cocos2d-xのv3.2の方がまだこのNDKは推奨しておらず、NDK r9dを使ってくださいとの事です。
参考
http://www.cocos2d-x.org/news
このページの「Compiling and linking error when using NDK r10 to build cocos2d-x v3.2」というタイトル部分あたりに説明があります。
ndk-r9dのダウンロードリンク
Mac
http://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2
Windows
http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip
USB端子&オーディオインターフェース搭載のFender製ギターが発売されました♪
DELUXE STRATOCASTER® HSS PLUS TOP WITH IOS CONNECTIVITY
http://www.fender.jp/topics/news/001732.php
iPhoneやiPadなどのiOSデバイスとUSBで接続して様々なアプリを通して音が出せるようです。
オーディオインターフェースもあるのでDTMでも使えそうです。
ギター本体はハイエンドなモデルではなさそうなので、鳴りやバランスとか気になります。
本体のボディー材はアルダー?でしょうか。
音のデモみたいなのがないかYouTubeで探したらありました。
https://www.youtube.com/watch?v=N77rNvP2Pas
これではちょっと分かりにくいですが、やはり音が気になるので
近くの楽器店に入荷したら試奏してこうようかと思います。