2017年12月29日

PARTY SOUND GRIDS | 制作後記 (2) | 録音データをWAVファイルとして保存

忘・新年会の余興にピッタリ♪

では、今回は録音したデータの WAV ファイルフォーマットでの保存です!


最初は重要性に気がついてなかったんですけど、これがないと、アプリをリスタートするたびに、音声データがなくなっちゃいますよね!

もう、それは大変です。アプリとして致命的な欠陥になっちゃうんで、データの保存の対応をして行きたいと思います。


これに関しても、基本的には、Unity Editor でも、iOS デバイスでも挙動は同じだったんで、Unity Editor 上で動かす事に重点を置いて行きますね。



で、早速ネットで探してみたんですが....

素晴らしいです! Unity コミュニティ!!


似た様な問題を抱えてる人はたくさんいたみたいで、随分と前から、コードがアップされてたみたいです。

ここ なんですが、SavWav class を作ってくれていました!!


このクラスで、前回 マイクから保存された Audio Clip を、.wav ファイルとしてデバイス上に保存して、いつでも Audio Clip 上に読み出して、再生できる様になりますよー!!


コメントによると、機能的には問題ないけど、ちょっとしたファイル情報のバグはあるみたいなんで、もし気に入らない人は、

var samples = new float[clip.samples];
のところを
var samples = new float[clip.samples*clip.channels];
に変えればオッケーみたいです。

で、アプリ側からのコールはこんな感じです。
WavFileManager となってるのが、上にあるGitHub から取ってきた SavWav class になります。
WavFileSave.png

Line 137 で、まずデータの無音部分を削除してます。これがないと、録音時に指定した長さのデータになってしまうんで、必須です。
2番目の引数で、無音を判別する音の大きさを設定してるんですが、色々試した結果、やっぱり 0 が具合良いみたいでした。

その後、Line 143 でセーブするだけ。
セーブ先のパスは、

GetDataPass.png

こんな感じで、
Application.persistentDataPath 
から取ってきた物を使えば、Editor でも、デバイスでも問題なく動きました。

ロードはコルーチンで、こんな風になってて、
LoadSavWav.png
WWW クラスを使って AudioClip としてロードしてます。
必要なければ、_callback はなくても全然問題ないんですけど、あったほうが UI のアップデートに便利ですよねー。

これで、アプリの再起動後も、録音データの再生は問題なくできる様になりました!!

では、次回は、デバイスでの実行時に出てきた問題の解決方法の巻!
ではまた〜

簡単な、操作説明ビデオですよ


Version 1.0.1 絶賛公開中!!
弾幕系よけ x よけゲーム

Version 1.2.0 絶賛公開中!!
iOS デバイスの人は、上のアイコンからダウンロードしてみてね!!
基本無料。ゲーム内課金有り(無料で十分遊べます)

Version 1.1.0 絶賛公開中!!
すくすく教育シリーズ第一弾


初めてみました。よかったらクリックお願いしますね ♪
        にほんブログ村 ゲームブログ×PlayNCBlogへ 

posted by やまけん at 16:44| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: