「Xamarin.iOS」で「Loop – 簡易ループシーケンサー」開発

超シンプルな作曲ツールのiOSアプリ「Loop 簡易ループシーケンサ」をApp Storeで公開しました。


https://xamarin.vixar.jp/ios/loop.html

以前までは、iOSとAndroidとWindowsでクロスプラットフォームする「Xamarin.Forms」を使ってアプリを作っていましたが、今回はiOS固有の機能を100%使える「Xamarin.iOS」を使って作成しました。
もちろんプログラミング言語は「C#」です。

今度は「Xamarin.iOS」と「Xamarin.Forms」のiOS固有の機能を使った入門書を執筆しようと、簡単なサンプルを開発しました。

Xamarinでサウンドファイルが再生できない場合

XamarinStudioやVisualStudioでサウンドファイルが鳴らない場合の設定方法があります。
プロジェクトビューのサウンドファイルを右クリックメニューの「ビルドアクション」で「Content」を選ぶだけです。
そうすれば「CCSimpleAudioEngine.SharedEngine.PlayEffect」でサウンドが再生できるようになります。
これはiOSの場合だけで、Androidでは無理にこうしなくても鳴らすことができるようです。

オリジナルの絵・音楽「Vixar Art」

以前まで「ビクサー」のWebサイトで公開していたオリジナルの3DCGの絵やmp3の歌やmidiの曲や歌詞を「ビクサーアート」のホームページに移転しました。


https://art.vixar.jp/

たくさんホームページを増やすために、テーマごとにホームページを分割していってます。
そうすることで何でもあるホームページでは訪問者が何のサイトか混乱するところ、それを回避できてホームページのテーマがはっきりしました。
さらにシンプルな構成になって検索エンジンがテーマを理解してくれてSEO対策になるんじゃないでしょうか?

XAudio2でアクセス違反が発生する問題

Visual Studio 2012のC++のMFCでしか確認していませんが、Xaudio2を使っていると必ずと言っていいほど、

初回例外が 0x5CCBA5E0 (CartoonD.exe) で発生しました: 0xC0000005: 場所 0x5CCBA5E0 の実行中にアクセス違反が発生しました。
ハンドルされない例外が 0x5CCBA5E0 (CartoonD.exe) で発生しました: 0xC0000005: 場所 0x5CCBA5E0 の実行中にアクセス違反が発生しました。

のようなエラーが出てプログラムが強制終了します。

原因はCOMが勝手にXAudio2のDLLをアンロードするためで、それを防ぐために、メモリーにXAudio2のDLLを明示的にLoadLibraryで読み込んだらいいようです。

以下の参考サイトに2種類の解決策のソースがあるので、いずれかを実装したらうまくいきました。

参考サイト:http://social.msdn.microsoft.com/Forums/vstudio/en-US/1833af9d-7f8c-4f77-a765-f626a3221f91/com-apartments-sta-object-corrupting-an-mta-object?forum=vcgeneral